summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Boddie <david.boddie@nokia.com>2010-12-07 14:57:38 +0100
committerDavid Boddie <david.boddie@nokia.com>2010-12-07 14:57:38 +0100
commitd8fb8ca3a378743eebb8464f7910a5e6d1870c01 (patch)
tree9c31a017163a532946f10107b8d9f4405ed1c9db
parentb5915ef3a6d0417440ad82e9369d6679505b953e (diff)
parent076bba6c901e292b61fffb7a91020075dcd84919 (diff)
downloadqt4-tools-d8fb8ca3a378743eebb8464f7910a5e6d1870c01.tar.gz
Merge branch 'qdoc-simplified' into mimir-simplified
Conflicts: doc/src/platforms/compiler-notes.qdoc tools/qdoc3/ditaxmlgenerator.cpp tools/qdoc3/ditaxmlgenerator.h tools/qdoc3/htmlgenerator.cpp tools/qdoc3/htmlgenerator.h tools/qdoc3/node.cpp tools/qdoc3/pagegenerator.h
-rw-r--r--.commit-template2
-rw-r--r--.gitignore3
-rwxr-xr-xbin/createpackage.pl27
-rwxr-xr-xbin/patch_capabilities.pl216
-rwxr-xr-xbin/syncqt14
-rw-r--r--config.tests/symbian/audio/audio.pro1
-rw-r--r--config.tests/symbian/simple/simple.pro1
-rw-r--r--config.tests/unix/doubleformat/doubleformattest.cpp4
-rwxr-xr-xconfigure26
-rw-r--r--demos/declarative/minehunt/minehunt.cpp2
-rw-r--r--demos/declarative/minehunt/minehunt.pro3
-rw-r--r--demos/declarative/samegame/SamegameCore/Button.qml4
-rw-r--r--demos/declarative/samegame/samegame.qml7
-rw-r--r--demos/declarative/snake/content/pics/pause.pngbin0 -> 4327 bytes
-rw-r--r--demos/declarative/snake/content/snake.js4
-rw-r--r--demos/declarative/snake/snake.qml12
-rw-r--r--demos/declarative/twitter/twitter.qml2
-rw-r--r--demos/qmediaplayer/main.cpp52
-rw-r--r--demos/qmediaplayer/mediaplayer.cpp24
-rw-r--r--demos/qmediaplayer/mediaplayer.h7
-rw-r--r--demos/qtdemo/itemcircleanimation.h2
-rw-r--r--demos/qtdemo/mainwindow.cpp2
-rw-r--r--demos/qtdemo/mainwindow.h2
-rw-r--r--demos/qtdemo/qmlShell.qml2
-rw-r--r--demos/qtdemo/textbutton.h2
-rw-r--r--demos/qtdemo/xml/examples.xml1
-rw-r--r--demos/spectrum/app/engine.cpp333
-rw-r--r--demos/spectrum/app/engine.h59
-rw-r--r--demos/spectrum/app/levelmeter.h2
-rw-r--r--demos/spectrum/app/main.cpp2
-rw-r--r--demos/spectrum/app/mainwidget.cpp67
-rw-r--r--demos/spectrum/app/mainwidget.h10
-rw-r--r--demos/spectrum/app/progressbar.cpp26
-rw-r--r--demos/spectrum/app/progressbar.h4
-rw-r--r--demos/spectrum/app/spectrograph.h2
-rw-r--r--demos/spectrum/app/spectrumanalyser.cpp4
-rw-r--r--demos/spectrum/app/utils.cpp4
-rw-r--r--demos/spectrum/app/waveform.cpp120
-rw-r--r--demos/spectrum/app/waveform.h14
-rw-r--r--demos/spectrum/app/wavfile.cpp199
-rw-r--r--demos/spectrum/app/wavfile.h35
-rw-r--r--demos/spreadsheet/spreadsheet.cpp2
-rw-r--r--demos/symbianpkgrules.pri9
-rw-r--r--dist/changes-4.7.1328
-rw-r--r--dist/changes-4.7.2162
-rw-r--r--doc/src/bughowto.qdoc2
-rw-r--r--doc/src/classes/phonon-api.qdoc50
-rw-r--r--doc/src/declarative/basictypes.qdoc87
-rw-r--r--doc/src/declarative/declarativeui.qdoc10
-rw-r--r--doc/src/declarative/dynamicobjects.qdoc6
-rw-r--r--doc/src/declarative/elements.qdoc108
-rw-r--r--doc/src/declarative/extending-tutorial.qdoc24
-rw-r--r--doc/src/declarative/extending.qdoc9
-rw-r--r--doc/src/declarative/integrating.qdoc2
-rw-r--r--doc/src/declarative/qdeclarativeintro.qdoc6
-rw-r--r--doc/src/declarative/qml-intro.qdoc2
-rw-r--r--doc/src/declarative/qmlinuse.qdoc499
-rw-r--r--doc/src/declarative/qtbinding.qdoc632
-rw-r--r--doc/src/declarative/qtdeclarative.qdoc2
-rw-r--r--doc/src/declarative/whatsnew.qdoc10
-rw-r--r--doc/src/development/designer-manual.qdoc156
-rw-r--r--doc/src/development/developing-with-qt.qdoc6
-rw-r--r--doc/src/development/qmake-manual.qdoc79
-rw-r--r--doc/src/development/qtestlib.qdoc27
-rw-r--r--doc/src/examples/webkit-bridge-imageanalyzer.qdoc5
-rw-r--r--doc/src/external-resources.qdoc7
-rw-r--r--doc/src/frameworks-technologies/dnd.qdoc2
-rw-r--r--doc/src/frameworks-technologies/model-view-programming.qdoc12
-rw-r--r--doc/src/frameworks-technologies/threads.qdoc29
-rw-r--r--doc/src/getting-started/examples.qdoc5
-rw-r--r--doc/src/getting-started/gettingstartedqml.qdoc21
-rw-r--r--doc/src/getting-started/installation.qdoc271
-rw-r--r--doc/src/index.qdoc2
-rw-r--r--doc/src/legal/opensourceedition.qdoc2
-rw-r--r--doc/src/legal/trademarks.qdoc12
-rw-r--r--doc/src/platforms/compiler-notes.qdoc266
-rw-r--r--doc/src/platforms/emb-deployment.qdoc2
-rw-r--r--doc/src/platforms/emb-directfb-EmbLinux.qdoc6
-rw-r--r--doc/src/platforms/emb-hardwareacceleration.qdocinc280
-rw-r--r--doc/src/platforms/emb-install.qdoc6
-rw-r--r--doc/src/platforms/emb-pointer.qdoc11
-rw-r--r--doc/src/platforms/emb-qvfb.qdoc4
-rw-r--r--doc/src/platforms/emb-running.qdoc2
-rw-r--r--doc/src/platforms/mac-differences.qdoc2
-rw-r--r--doc/src/platforms/platform-notes-rtos.qdoc8
-rw-r--r--doc/src/platforms/platform-notes.qdoc362
-rw-r--r--doc/src/platforms/qt-embedded-linux.qdoc2
-rw-r--r--doc/src/platforms/supported-platforms.qdoc5
-rw-r--r--doc/src/platforms/symbian-introduction.qdoc13
-rw-r--r--doc/src/platforms/wince-customization.qdoc2
-rw-r--r--doc/src/platforms/wince-introduction.qdoc6
-rw-r--r--doc/src/platforms/winsystem.qdoc4
-rw-r--r--doc/src/qt-webpages.qdoc4
-rw-r--r--doc/src/qt4-intro.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_emb-pointer.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_fdl.qdoc10
-rw-r--r--doc/src/snippets/code/doc_src_installation.qdoc13
-rw-r--r--doc/src/snippets/code/doc_src_properties.qdoc17
-rw-r--r--doc/src/snippets/code/doc_src_qmake-manual.qdoc20
-rw-r--r--doc/src/snippets/code/src_qtestlib_qtestcase.cpp18
-rw-r--r--doc/src/snippets/declarative/borderimage/borderimage-defaults.qml55
-rw-r--r--doc/src/snippets/declarative/comments.qml1
-rw-r--r--doc/src/snippets/declarative/flipable/flipable.qml17
-rw-r--r--doc/src/snippets/declarative/keys/keys-handler.qml2
-rw-r--r--doc/src/snippets/declarative/keys/keys-pressed.qml2
-rw-r--r--doc/src/snippets/declarative/loader/sizeitem.qml62
-rw-r--r--doc/src/snippets/declarative/loader/sizeloader.qml62
-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/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.h57
-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--doc/src/snippets/moc/myclass2.h7
-rw-r--r--doc/src/sql-programming/sql-driver.qdoc8
-rwxr-xr-xdoc/src/template/scripts/functions.js6
-rw-r--r--doc/src/template/style/narrow.css1
-rwxr-xr-xdoc/src/template/style/style.css105
-rw-r--r--examples/declarative/cppextensions/plugins/README2
-rw-r--r--examples/declarative/modelviews/listview/highlightranges.qml20
-rw-r--r--examples/declarative/positioners/positioners.qmlproject.user41
-rw-r--r--examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml34
-rw-r--r--examples/multimedia/audiodevices/audiodevices.h4
-rw-r--r--examples/multimedia/audioinput/audioinput.h5
-rw-r--r--examples/multimedia/audiooutput/audiooutput.h5
-rw-r--r--examples/network/bearermonitor/bearermonitor.cpp22
-rw-r--r--examples/network/bearermonitor/bearermonitor.h4
-rw-r--r--examples/network/bearermonitor/bearermonitor.pro7
-rw-r--r--examples/network/bearermonitor/bearermonitor_maemo.ui601
-rw-r--r--examples/network/bearermonitor/main.cpp9
-rw-r--r--examples/network/bearermonitor/sessionwidget.cpp4
-rw-r--r--examples/network/bearermonitor/sessionwidget.h5
-rw-r--r--examples/symbianpkgrules.pri10
-rw-r--r--examples/tools/echoplugin/echowindow/echowindow.pro4
-rw-r--r--examples/tools/styleplugin/plugin/plugin.pro4
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part0/Button.qml55
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part1/Button.qml97
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part1/EditMenu.qml76
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part1/FileMenu.qml91
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part1/SimpleButton.qml73
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_button.pngbin0 -> 1670 bytes
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_editmenu.pngbin0 -> 6177 bytes
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_filemenu.pngbin0 -> 6062 bytes
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_simplebutton.pngbin0 -> 1055 bytes
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part1/qml-texteditor.qmlproject16
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part2/Button.qml99
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part2/EditMenu.qml77
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part2/FileMenu.qml92
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part2/MenuBar.qml140
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part2/pics/qml-texteditor2_menubar.pngbin0 -> 6079 bytes
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part2/qml-texteditor2.qmlproject16
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part3/Button.qml99
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part3/EditMenu.qml77
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part3/FileMenu.qml92
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part3/MenuBar.qml140
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part3/TextArea.qml (renamed from doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h)71
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part3/TextEditor.qml68
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part3/images/arrow.pngbin0 -> 583 bytes
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part3/pics/qml-texteditor3_texteditor.pngbin0 -> 59345 bytes
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part3/qml-texteditor3.qmlproject16
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part4/Button.qml109
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part4/EditMenu.qml81
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part4/FileMenu.qml96
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part4/MenuBar.qml146
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part4/SimpleButton.qml (renamed from doc/src/snippets/declarative/qtbinding/custompalette/main.qml)25
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part4/TextArea.qml80
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part4/TextEditor.qml146
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part4/images/arrow.pngbin0 -> 583 bytes
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part4/pics/qml-texteditor4_texteditor.pngbin0 -> 63629 bytes
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part4/qml-texteditor4.qmlproject16
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/TextEditor.qml127
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/core/Button.qml109
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/core/EditMenu.qml110
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/core/FileDialog.qml170
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/core/FileMenu.qml232
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/core/MenuBar.qml148
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/core/TextArea.qml86
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/core/qmldir13
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/dialogPlugin.cpp57
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/dialogPlugin.h57
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/directory.cpp219
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/directory.h108
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/file.cpp56
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/file.h67
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/filedialog.pro17
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/qmldir1
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/images/arrow.pngbin0 -> 583 bytes
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/pics/qml-texteditor5_editmenu.pngbin0 -> 65123 bytes
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/pics/qml-texteditor5_filemenu.pngbin0 -> 21367 bytes
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/pics/qml-texteditor5_newfile.pngbin0 -> 76693 bytes
-rw-r--r--examples/tutorials/gettingStarted/gsQml/parts/part5/qml-texteditor5.qmlproject18
-rw-r--r--examples/webkit/imageanalyzer/imageanalyzer.cpp2
-rw-r--r--mkspecs/common/symbian/appCaptionForTranslation.cpp (renamed from tools/qdoc3/bookgenerator.cpp)28
-rw-r--r--mkspecs/common/symbian/packageNameForTranslation.cpp (renamed from tools/qdoc3/bookgenerator.h)29
-rw-r--r--mkspecs/common/symbian/symbian-mmp.conf4
-rw-r--r--mkspecs/common/symbian/symbian.conf76
-rw-r--r--mkspecs/features/default_post.prf10
-rw-r--r--mkspecs/features/link_pkgconfig.prf7
-rw-r--r--mkspecs/features/qt_functions.prf15
-rw-r--r--mkspecs/features/symbian/application_icon.prf51
-rw-r--r--mkspecs/features/symbian/default_post.prf34
-rw-r--r--mkspecs/features/symbian/localize_deployment.prf109
-rw-r--r--mkspecs/features/symbian/qt.prf6
-rw-r--r--mkspecs/features/symbian/sis_targets.prf26
-rw-r--r--mkspecs/features/symbian/stl.prf2
-rw-r--r--mkspecs/features/symbian/symbian_building.prf25
-rw-r--r--mkspecs/linux-g++-maemo/qmake.conf7
-rw-r--r--mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm4
-rw-r--r--mkspecs/win32-msvc2003/qmake.conf2
-rw-r--r--mkspecs/win32-msvc2005/qmake.conf2
-rw-r--r--mkspecs/win32-msvc2008/qmake.conf2
-rw-r--r--mkspecs/win32-msvc2010/qmake.conf2
-rw-r--r--qmake/Makefile.unix2
-rw-r--r--qmake/Makefile.win323
-rw-r--r--qmake/Makefile.win32-g++2
-rw-r--r--qmake/Makefile.win32-g++-sh2
-rw-r--r--qmake/generators/symbian/initprojectdeploy_symbian.cpp39
-rw-r--r--qmake/generators/symbian/initprojectdeploy_symbian.h6
-rw-r--r--qmake/generators/symbian/symbian_makefile.h10
-rw-r--r--qmake/generators/symbian/symbiancommon.cpp815
-rw-r--r--qmake/generators/symbian/symbiancommon.h44
-rw-r--r--qmake/generators/symbian/symmake.cpp47
-rw-r--r--qmake/generators/symbian/symmake.h5
-rw-r--r--qmake/generators/symbian/symmake_abld.cpp45
-rw-r--r--qmake/generators/symbian/symmake_sbsv2.cpp36
-rw-r--r--qmake/generators/win32/msbuild_objectmodel.cpp33
-rw-r--r--qmake/generators/win32/msvc_nmake.cpp2
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp14
-rw-r--r--qmake/generators/win32/winmakefile.cpp2
-rw-r--r--qmake/project.cpp26
-rw-r--r--qmake/qmake.pri6
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-buffer.h8
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-gdef-private.h9
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-gdef.h8
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-global.h4
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h8
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-gsub-private.h8
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-gsub.h9
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp2
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-open.h8
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-shaper.h8
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-stream.h8
-rw-r--r--src/3rdparty/phonon/ds9/videorenderer_evr.cpp12
-rw-r--r--src/3rdparty/phonon/mmf/abstractvideooutput.cpp14
-rw-r--r--src/3rdparty/phonon/mmf/videowidget.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/effectwidget.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/globalconfig.cpp2
-rw-r--r--src/3rdparty/phonon/phonon/mediacontroller.cpp4
-rw-r--r--src/3rdparty/phonon/phonon/pulsesupport.cpp146
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp38
-rw-r--r--src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp10
-rw-r--r--src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview_p.h2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri4
-rw-r--r--src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp14
-rw-r--r--src/activeqt/container/qaxwidget.cpp2
-rw-r--r--src/activeqt/shared/qaxtypes.cpp2
-rw-r--r--src/corelib/arch/armv6/qatomic_generic_armv6.cpp2
-rw-r--r--src/corelib/arch/symbian/heap_hybrid.cpp8
-rw-r--r--src/corelib/codecs/qutfcodec.cpp2
-rw-r--r--src/corelib/corelib.pro7
-rw-r--r--src/corelib/global/global.pri2
-rw-r--r--src/corelib/global/qglobal.h4
-rw-r--r--src/corelib/global/qlibraryinfo.cpp12
-rw-r--r--src/corelib/global/qmalloc.cpp16
-rw-r--r--src/corelib/global/qnamespace.qdoc14
-rw-r--r--src/corelib/io/qdiriterator.cpp6
-rw-r--r--src/corelib/io/qfilesystemwatcher.cpp10
-rw-r--r--src/corelib/io/qfilesystemwatcher_kqueue.cpp194
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp2
-rw-r--r--src/corelib/io/qiodevice.cpp5
-rw-r--r--src/corelib/io/qiodevice_p.h2
-rw-r--r--src/corelib/io/qprocess_symbian.cpp1
-rw-r--r--src/corelib/io/qsettings.cpp39
-rw-r--r--src/corelib/kernel/qabstractitemmodel.cpp18
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp9
-rw-r--r--src/corelib/kernel/qeventdispatcher_glib.cpp7
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian.cpp9
-rw-r--r--src/corelib/kernel/qeventdispatcher_symbian_p.h4
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp62
-rw-r--r--src/corelib/kernel/qmimedata.cpp2
-rw-r--r--src/corelib/kernel/qtcore_eval.cpp4
-rw-r--r--src/corelib/statemachine/qstatemachine.cpp2
-rw-r--r--src/corelib/thread/qthread.cpp4
-rw-r--r--src/corelib/thread/qthread_unix.cpp59
-rw-r--r--src/corelib/tools/qbytearray.cpp4
-rw-r--r--src/corelib/tools/qlocale.cpp9
-rw-r--r--src/corelib/tools/qlocale.h2
-rw-r--r--src/corelib/tools/qpoint.cpp6
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h14
-rw-r--r--src/corelib/tools/qsimd.cpp2
-rw-r--r--src/corelib/tools/qsimd_p.h11
-rw-r--r--src/corelib/tools/qsize.cpp6
-rw-r--r--src/corelib/tools/qstring.cpp4
-rw-r--r--src/dbus/qdbusabstractinterface.cpp2
-rw-r--r--src/dbus/qdbusargument.h2
-rw-r--r--src/dbus/qdbusconnection.cpp6
-rw-r--r--src/dbus/qdbusconnection_p.h13
-rw-r--r--src/dbus/qdbusintegrator.cpp37
-rw-r--r--src/dbus/qdbusmarshaller.cpp2
-rw-r--r--src/dbus/qdbusmessage.cpp6
-rw-r--r--src/dbus/qdbusmetatype.cpp4
-rw-r--r--src/dbus/qdbuspendingreply.h2
-rw-r--r--src/dbus/qdbusutil.cpp2
-rw-r--r--src/declarative/debugger/qdeclarativedebug_p.h30
-rw-r--r--src/declarative/debugger/qdeclarativedebugclient.cpp2
-rw-r--r--src/declarative/debugger/qdeclarativedebugclient_p.h6
-rw-r--r--src/declarative/debugger/qdeclarativedebuggerstatus_p.h4
-rw-r--r--src/declarative/debugger/qdeclarativedebughelper.cpp8
-rw-r--r--src/declarative/debugger/qdeclarativedebughelper_p.h6
-rw-r--r--src/declarative/debugger/qdeclarativedebugservice.cpp19
-rw-r--r--src/declarative/debugger/qdeclarativedebugservice_p.h4
-rw-r--r--src/declarative/debugger/qpacketprotocol_p.h8
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanchors.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativeanchors_p.h4
-rw-r--r--src/declarative/graphicsitems/qdeclarativeborderimage.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativeevents.cpp30
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable.cpp128
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable_p.h3
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflickable_p_p.h16
-rw-r--r--src/declarative/graphicsitems/qdeclarativeflipable.cpp27
-rw-r--r--src/declarative/graphicsitems/qdeclarativegridview.cpp82
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage.cpp43
-rw-r--r--src/declarative/graphicsitems/qdeclarativeimage_p.h1
-rw-r--r--src/declarative/graphicsitems/qdeclarativeitem.cpp28
-rw-r--r--src/declarative/graphicsitems/qdeclarativelistview.cpp211
-rw-r--r--src/declarative/graphicsitems/qdeclarativeloader.cpp60
-rw-r--r--src/declarative/graphicsitems/qdeclarativemousearea.cpp42
-rw-r--r--src/declarative/graphicsitems/qdeclarativepath.cpp2
-rw-r--r--src/declarative/graphicsitems/qdeclarativepathview.cpp52
-rw-r--r--src/declarative/graphicsitems/qdeclarativepathview_p_p.h4
-rw-r--r--src/declarative/graphicsitems/qdeclarativepositioners_p.h2
-rw-r--r--src/declarative/graphicsitems/qdeclarativerectangle.cpp18
-rw-r--r--src/declarative/graphicsitems/qdeclarativerectangle_p.h6
-rw-r--r--src/declarative/graphicsitems/qdeclarativerepeater.cpp4
-rw-r--r--src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h11
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext.cpp54
-rw-r--r--src/declarative/graphicsitems/qdeclarativetext_p.h4
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextinput.cpp29
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextlayout.cpp19
-rw-r--r--src/declarative/graphicsitems/qdeclarativetextlayout_p.h1
-rw-r--r--src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp36
-rw-r--r--src/declarative/qml/parser/qdeclarativejs.g4
-rw-r--r--src/declarative/qml/parser/qdeclarativejslexer.cpp15
-rw-r--r--src/declarative/qml/parser/qdeclarativejsparser.cpp4
-rw-r--r--src/declarative/qml/qdeclarativebinding_p.h4
-rw-r--r--src/declarative/qml/qdeclarativecompiledbindings.cpp2
-rw-r--r--src/declarative/qml/qdeclarativecompileddata.cpp6
-rw-r--r--src/declarative/qml/qdeclarativecompiler.cpp10
-rw-r--r--src/declarative/qml/qdeclarativecompiler_p.h7
-rw-r--r--src/declarative/qml/qdeclarativecomponent.cpp94
-rw-r--r--src/declarative/qml/qdeclarativecomponent_p.h7
-rw-r--r--src/declarative/qml/qdeclarativecontext.cpp25
-rw-r--r--src/declarative/qml/qdeclarativedata_p.h13
-rw-r--r--src/declarative/qml/qdeclarativedom_p.h26
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp60
-rw-r--r--src/declarative/qml/qdeclarativeengine_p.h2
-rw-r--r--src/declarative/qml/qdeclarativeenginedebug.cpp3
-rw-r--r--src/declarative/qml/qdeclarativeenginedebug_p.h8
-rw-r--r--src/declarative/qml/qdeclarativeglobal_p.h6
-rw-r--r--src/declarative/qml/qdeclarativeinfo.cpp3
-rw-r--r--src/declarative/qml/qdeclarativemetatype_p.h5
-rw-r--r--src/declarative/qml/qdeclarativeobjectscriptclass.cpp300
-rw-r--r--src/declarative/qml/qdeclarativeobjectscriptclass_p.h9
-rw-r--r--src/declarative/qml/qdeclarativeparser_p.h5
-rw-r--r--src/declarative/qml/qdeclarativeprivate.h5
-rw-r--r--src/declarative/qml/qdeclarativeproperty.cpp2
-rw-r--r--src/declarative/qml/qdeclarativeproperty_p.h8
-rw-r--r--src/declarative/qml/qdeclarativepropertycache.cpp138
-rw-r--r--src/declarative/qml/qdeclarativepropertycache_p.h9
-rw-r--r--src/declarative/qml/qdeclarativestringconverters_p.h22
-rw-r--r--src/declarative/qml/qdeclarativetypeloader.cpp19
-rw-r--r--src/declarative/qml/qdeclarativetypeloader_p.h2
-rw-r--r--src/declarative/qml/qdeclarativevaluetype_p.h4
-rw-r--r--src/declarative/qml/qdeclarativevme.cpp12
-rw-r--r--src/declarative/qml/qdeclarativeworkerscript.cpp43
-rw-r--r--src/declarative/qml/qmetaobjectbuilder.cpp12
-rw-r--r--src/declarative/qml/qmetaobjectbuilder_p.h10
-rw-r--r--src/declarative/util/qdeclarativeanimation_p.h4
-rw-r--r--src/declarative/util/qdeclarativeanimation_p_p.h2
-rw-r--r--src/declarative/util/qdeclarativebehavior_p.h2
-rw-r--r--src/declarative/util/qdeclarativefontloader.cpp24
-rw-r--r--src/declarative/util/qdeclarativelistmodel_p.h2
-rw-r--r--src/declarative/util/qdeclarativeopenmetaobject.cpp2
-rw-r--r--src/declarative/util/qdeclarativeopenmetaobject_p.h7
-rw-r--r--src/declarative/util/qdeclarativepixmapcache.cpp5
-rw-r--r--src/declarative/util/qdeclarativepropertychanges_p.h2
-rw-r--r--src/declarative/util/qdeclarativestate.cpp12
-rw-r--r--src/declarative/util/qdeclarativestate_p.h6
-rw-r--r--src/declarative/util/qdeclarativestate_p_p.h2
-rw-r--r--src/declarative/util/qdeclarativestateoperations.cpp2
-rw-r--r--src/declarative/util/qdeclarativetimer_p.h4
-rw-r--r--src/declarative/util/qdeclarativetransition.cpp6
-rw-r--r--src/declarative/util/qdeclarativetransitionmanager.cpp16
-rw-r--r--src/declarative/util/qdeclarativeview.cpp15
-rw-r--r--src/declarative/util/qlistmodelinterface.cpp8
-rw-r--r--src/declarative/util/qlistmodelinterface_p.h4
-rw-r--r--src/gui/accessible/qaccessible_mac_p.h4
-rw-r--r--src/gui/dialogs/dialogs.pri9
-rw-r--r--src/gui/dialogs/qabstractprintdialog.cpp3
-rw-r--r--src/gui/dialogs/qcolordialog.cpp21
-rw-r--r--src/gui/dialogs/qcolordialog_symbian.cpp107
-rw-r--r--src/gui/dialogs/qdialog.cpp6
-rw-r--r--src/gui/dialogs/qfiledialog.cpp68
-rw-r--r--src/gui/dialogs/qfiledialog_symbian.cpp196
-rw-r--r--src/gui/dialogs/qfilesystemmodel.cpp45
-rw-r--r--src/gui/dialogs/qinputdialog.cpp6
-rw-r--r--src/gui/dialogs/qmessagebox.cpp88
-rw-r--r--src/gui/dialogs/qpagesetupdialog.cpp3
-rw-r--r--src/gui/dialogs/qprintpreviewdialog.cpp2
-rw-r--r--src/gui/egl/qegl.cpp4
-rw-r--r--src/gui/embedded/qcopchannel_qws.cpp2
-rw-r--r--src/gui/embedded/qtransportauth_qws.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicsgridlayout.cpp11
-rw-r--r--src/gui/graphicsview/qgraphicsitem.cpp25
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h4
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem.cpp82
-rw-r--r--src/gui/graphicsview/qgraphicslayoutitem_p.h8
-rw-r--r--src/gui/graphicsview/qgraphicslinearlayout.cpp4
-rw-r--r--src/gui/graphicsview/qgraphicsproxywidget.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicssceneevent.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicstransform.cpp2
-rw-r--r--src/gui/graphicsview/qgraphicswidget.cpp2
-rw-r--r--src/gui/graphicsview/qgridlayoutengine.cpp299
-rw-r--r--src/gui/graphicsview/qgridlayoutengine_p.h39
-rw-r--r--src/gui/gui.pro3
-rw-r--r--src/gui/image/qimage_ssse3.cpp2
-rw-r--r--src/gui/image/qpixmap.cpp3
-rw-r--r--src/gui/image/qpixmap_x11_p.h2
-rw-r--r--src/gui/image/qtiffhandler.cpp1
-rw-r--r--src/gui/image/qxbmhandler.cpp25
-rw-r--r--src/gui/image/qxpmhandler.cpp2
-rw-r--r--src/gui/inputmethod/qinputcontextfactory.cpp4
-rw-r--r--src/gui/itemviews/qabstractitemview.cpp12
-rw-r--r--src/gui/itemviews/qdirmodel.cpp19
-rw-r--r--src/gui/itemviews/qitemselectionmodel.cpp15
-rw-r--r--src/gui/itemviews/qstandarditemmodel.cpp2
-rw-r--r--src/gui/itemviews/qtableview.cpp4
-rw-r--r--src/gui/kernel/qapplication.cpp21
-rw-r--r--src/gui/kernel/qapplication_p.h3
-rw-r--r--src/gui/kernel/qapplication_s60.cpp13
-rw-r--r--src/gui/kernel/qapplication_win.cpp4
-rw-r--r--src/gui/kernel/qapplication_x11.cpp26
-rw-r--r--src/gui/kernel/qclipboard_mac.cpp2
-rw-r--r--src/gui/kernel/qclipboard_s60.cpp84
-rw-r--r--src/gui/kernel/qclipboard_win.cpp2
-rw-r--r--src/gui/kernel/qclipboard_x11.cpp4
-rw-r--r--src/gui/kernel/qcocoamenuloader_mac.mm2
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm4
-rw-r--r--src/gui/kernel/qevent.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/qgesture.cpp27
-rw-r--r--src/gui/kernel/qgesturemanager.cpp16
-rw-r--r--src/gui/kernel/qgesturemanager_p.h3
-rw-r--r--src/gui/kernel/qguiplatformplugin.cpp2
-rw-r--r--src/gui/kernel/qkeymapper_mac.cpp4
-rw-r--r--src/gui/kernel/qkeysequence.cpp2
-rw-r--r--src/gui/kernel/qmotifdnd_x11.cpp5
-rw-r--r--src/gui/kernel/qsoftkeymanager_s60.cpp2
-rw-r--r--src/gui/kernel/qsound_s60.cpp2
-rw-r--r--src/gui/kernel/qstandardgestures.cpp25
-rw-r--r--src/gui/kernel/qt_x11_p.h1
-rw-r--r--src/gui/kernel/qwidget.cpp87
-rw-r--r--src/gui/kernel/qwidget_mac.mm50
-rw-r--r--src/gui/kernel/qwidget_p.h2
-rw-r--r--src/gui/kernel/qwidget_qws.cpp24
-rw-r--r--src/gui/kernel/qwidget_s60.cpp21
-rw-r--r--src/gui/kernel/qx11embed_x11.cpp2
-rw-r--r--src/gui/painting/painting.pri7
-rw-r--r--src/gui/painting/qbackingstore.cpp2
-rw-r--r--src/gui/painting/qblendfunctions_armv6_rvct.s222
-rw-r--r--src/gui/painting/qdrawhelper.cpp159
-rw-r--r--src/gui/painting/qdrawhelper_arm_simd.cpp332
-rw-r--r--src/gui/painting/qdrawhelper_arm_simd_p.h (renamed from src/gui/painting/qdrawhelper_armv6_p.h)19
-rw-r--r--src/gui/painting/qdrawhelper_armv6_rvct.inc496
-rw-r--r--src/gui/painting/qdrawhelper_armv6_rvct.s177
-rw-r--r--src/gui/painting/qgraphicssystem_qws.cpp2
-rw-r--r--src/gui/painting/qimagescale.cpp2
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp11
-rw-r--r--src/gui/painting/qpainter.cpp4
-rw-r--r--src/gui/painting/qpdf.cpp4
-rw-r--r--src/gui/painting/qregion.h2
-rw-r--r--src/gui/painting/qtextureglyphcache.cpp26
-rw-r--r--src/gui/painting/qtextureglyphcache_p.h4
-rw-r--r--src/gui/styles/qs60style.cpp182
-rw-r--r--src/gui/styles/qs60style_feedbackinterface_p.h (renamed from tools/qdoc3/sgmlgenerator.cpp)27
-rw-r--r--src/gui/styles/qs60style_p.h11
-rw-r--r--src/gui/styles/qs60style_s60.cpp98
-rw-r--r--src/gui/styles/qstyle.cpp10
-rw-r--r--src/gui/styles/qstyleoption.cpp4
-rw-r--r--src/gui/styles/qwindowsxpstyle.cpp2
-rw-r--r--src/gui/text/qfontdatabase_x11.cpp23
-rw-r--r--src/gui/text/qfontengine_p.h2
-rw-r--r--src/gui/text/qfontengine_win.cpp2
-rw-r--r--src/gui/text/qfontengine_x11.cpp2
-rw-r--r--src/gui/text/qfontsubset.cpp4
-rw-r--r--src/gui/text/qstatictext.cpp22
-rw-r--r--src/gui/text/qstatictext_p.h54
-rw-r--r--src/gui/text/qtextdocument_p.cpp4
-rw-r--r--src/gui/text/qtextformat.cpp10
-rw-r--r--src/gui/text/qtextlayout.cpp2
-rw-r--r--src/gui/util/qcompleter.cpp18
-rw-r--r--src/gui/util/qcompleter_p.h1
-rw-r--r--src/gui/util/qdesktopservices_s60.cpp180
-rw-r--r--src/gui/util/qundostack.cpp2
-rw-r--r--src/gui/util/util.pri19
-rw-r--r--src/gui/widgets/qabstractslider.cpp2
-rw-r--r--src/gui/widgets/qcombobox.cpp2
-rw-r--r--src/gui/widgets/qdatetimeedit.cpp4
-rw-r--r--src/gui/widgets/qmainwindow.cpp6
-rw-r--r--src/gui/widgets/qmainwindowlayout_p.h1
-rw-r--r--src/gui/widgets/qtextedit.cpp2
-rw-r--r--src/gui/widgets/qvalidator.cpp45
-rw-r--r--src/imports/folderlistmodel/folderlistmodel.pro1
-rw-r--r--src/imports/gestures/gestures.pro1
-rw-r--r--src/imports/particles/particles.pro1
-rw-r--r--src/multimedia/audio/audio.pri4
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp6
-rw-r--r--src/multimedia/audio/qaudiodeviceinfo_alsa_p.h2
-rw-r--r--src/multimedia/audio/qaudioengine.cpp4
-rw-r--r--src/multimedia/audio/qaudioinput.cpp2
-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.cpp2
-rw-r--r--src/multimedia/audio/qaudiooutput_win32_p.cpp2
-rw-r--r--src/network/access/qhttp.cpp2
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp167
-rw-r--r--src/network/access/qhttpnetworkconnection_p.h38
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp57
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel_p.h9
-rw-r--r--src/network/access/qhttpnetworkheader.cpp12
-rw-r--r--src/network/access/qhttpnetworkreply.cpp11
-rw-r--r--src/network/access/qhttpnetworkreply_p.h9
-rw-r--r--src/network/access/qnetworkaccessbackend.cpp15
-rw-r--r--src/network/access/qnetworkaccessbackend_p.h7
-rw-r--r--src/network/access/qnetworkaccesscachebackend.cpp12
-rw-r--r--src/network/access/qnetworkaccesscachebackend_p.h2
-rw-r--r--src/network/access/qnetworkaccessdatabackend.cpp6
-rw-r--r--src/network/access/qnetworkaccessdatabackend_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.cpp212
-rw-r--r--src/network/access/qnetworkaccesshttpbackend_p.h6
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp81
-rw-r--r--src/network/access/qnetworkaccessmanager_p.h6
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp47
-rw-r--r--src/network/access/qnetworkrequest.cpp20
-rw-r--r--src/network/access/qnetworkrequest.h3
-rw-r--r--src/network/bearer/qnetworkconfigmanager.cpp38
-rw-r--r--src/network/kernel/qauthenticator.cpp24
-rw-r--r--src/network/kernel/qauthenticator_p.h1
-rw-r--r--src/network/kernel/qnetworkproxy.cpp6
-rw-r--r--src/network/socket/qabstractsocket.cpp30
-rw-r--r--src/network/socket/qabstractsocket_p.h7
-rw-r--r--src/network/socket/qlocalserver_unix.cpp2
-rw-r--r--src/network/socket/qlocalsocket_win.cpp4
-rw-r--r--src/network/socket/qnativesocketengine_win.cpp2
-rw-r--r--src/network/ssl/qsslcertificate.cpp2
-rw-r--r--src/network/ssl/qsslsocket.cpp14
-rw-r--r--src/network/ssl/qsslsocket_openssl.cpp133
-rw-r--r--src/network/ssl/qsslsocket_openssl_p.h2
-rw-r--r--src/network/ssl/qsslsocket_p.h2
-rw-r--r--src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp5
-rw-r--r--src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h2
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadermanager_p.h4
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadersource_p.h5
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp44
-rw-r--r--src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp28
-rw-r--r--src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h17
-rw-r--r--src/opengl/gl2paintengineex/qtriangulator.cpp55
-rw-r--r--src/opengl/qgl.cpp30
-rw-r--r--src/opengl/qgl.h1
-rw-r--r--src/opengl/qgl_egl.cpp6
-rw-r--r--src/opengl/qgl_p.h87
-rw-r--r--src/opengl/qgl_x11egl.cpp5
-rw-r--r--src/opengl/qglextensions_p.h23
-rw-r--r--src/opengl/qglframebufferobject.cpp23
-rw-r--r--src/opengl/qglpixelbuffer.cpp4
-rw-r--r--src/opengl/qglpixelbuffer_egl.cpp1
-rw-r--r--src/opengl/qglpixmapfilter.cpp6
-rw-r--r--src/opengl/qpaintengine_opengl.cpp10
-rw-r--r--src/opengl/qpixmapdata_gl.cpp4
-rw-r--r--src/opengl/qpixmapdata_gl_p.h1
-rw-r--r--src/opengl/qpixmapdata_x11gl_egl.cpp4
-rw-r--r--src/opengl/qwindowsurface_gl.cpp141
-rw-r--r--src/opengl/qwindowsurface_gl_p.h1
-rw-r--r--src/openvg/qpaintengine_vg.cpp96
-rw-r--r--src/openvg/qpaintengine_vg_p.h1
-rw-r--r--src/openvg/qpixmapdata_vg.cpp27
-rw-r--r--src/openvg/qpixmapdata_vg_p.h2
-rw-r--r--src/openvg/qvg_symbian.cpp1
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.cpp6
-rw-r--r--src/plugins/bearer/connman/qconnmanengine.cpp84
-rw-r--r--src/plugins/bearer/connman/qconnmanengine.h27
-rw-r--r--src/plugins/bearer/connman/qconnmanservice_linux.cpp17
-rw-r--r--src/plugins/bearer/connman/qofonoservice_linux.cpp12
-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/icd/maemo_icd.cpp2
-rw-r--r--src/plugins/bearer/icd/qnetworksession_impl.cpp2
-rw-r--r--src/plugins/bearer/symbian/qnetworksession_impl.cpp10
-rw-r--r--src/plugins/bearer/symbian/symbian.pri2
-rw-r--r--src/plugins/bearer/symbian/symbianengine.cpp39
-rw-r--r--src/plugins/bearer/symbian/symbianengine.h6
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp86
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp18
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp36
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbscreen.h1
-rw-r--r--src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp11
-rw-r--r--src/plugins/graphicssystems/meego/dithering.cpp306
-rw-r--r--src/plugins/graphicssystems/meego/meego.pro4
-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.cpp244
-rw-r--r--src/plugins/graphicssystems/meego/qmeegographicssystem.h30
-rw-r--r--src/plugins/graphicssystems/meego/qmeegolivepixmapdata.cpp292
-rw-r--r--src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h (renamed from tools/qdoc3/apigenerator.h)38
-rw-r--r--src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp74
-rw-r--r--src/plugins/graphicssystems/meego/qmeegopixmapdata.h2
-rw-r--r--src/plugins/graphicssystems/meego/qmeegorasterpixmapdata.cpp (renamed from tools/qdoc3/ccodeparser.cpp)33
-rw-r--r--src/plugins/graphicssystems/meego/qmeegorasterpixmapdata.h (renamed from tools/qdoc3/loutgenerator.h)28
-rw-r--r--src/plugins/phonon/mmf/mmf.pro2
-rw-r--r--src/plugins/qpluginbase.pri2
-rw-r--r--src/plugins/s60/feedback/feedback.pro18
-rw-r--r--src/plugins/s60/feedback/qtactileFeedback.h (renamed from tools/qdoc3/command.h)28
-rw-r--r--src/plugins/s60/feedback/qtactileFeedback_s60.cpp83
-rw-r--r--src/plugins/s60/s60.pro4
-rw-r--r--src/qbase.pri13
-rw-r--r--src/qt3support/canvas/q3canvas.cpp2
-rw-r--r--src/qt3support/text/q3richtext.cpp2
-rw-r--r--src/s60installs/bwins/QtCoreu.def4
-rw-r--r--src/s60installs/bwins/QtDeclarativeu.def2325
-rw-r--r--src/s60installs/bwins/QtGuiu.def17
-rw-r--r--src/s60installs/bwins/QtOpenGLu.def11
-rw-r--r--src/s60installs/bwins/QtOpenVGu.def1
-rw-r--r--src/s60installs/eabi/QtCoreu.def1
-rw-r--r--src/s60installs/eabi/QtDeclarativeu.def2389
-rw-r--r--src/s60installs/eabi/QtGuiu.def12
-rw-r--r--src/s60installs/eabi/QtOpenGLu.def5
-rw-r--r--src/s60installs/eabi/QtOpenVGu.def1
-rw-r--r--src/s60installs/qt.iby5
-rw-r--r--src/s60installs/s60installs.pro16
-rw-r--r--src/script/api/qscriptcontextinfo.cpp2
-rw-r--r--src/script/api/qscriptvalue.cpp14
-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/sql/kernel/qsqldriver.cpp8
-rw-r--r--src/sql/models/qsqlrelationaldelegate.h10
-rw-r--r--src/testlib/qtestcase.cpp3
-rw-r--r--src/testlib/qtesttouch.h4
-rw-r--r--src/xmlpatterns/data/qabstractfloat.cpp2
-rw-r--r--src/xmlpatterns/data/qatomicvalue.cpp4
-rw-r--r--src/xmlpatterns/data/qschematime_p.h2
-rw-r--r--src/xmlpatterns/expr/qarithmeticexpression_p.h2
-rwxr-xr-xsrc/xmlpatterns/parser/createTokenLookup.sh15
-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/tst_collections.cpp2
-rw-r--r--tests/auto/declarative/examples/tst_examples.cpp1
-rw-r--r--tests/auto/declarative/qdeclarativedebug/tst_qdeclarativedebug.cpp5
-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/data/propertySplicing.qml10
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/data/scope.2.qml8
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/testtypes.cpp1
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/testtypes.h43
-rw-r--r--tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp74
-rw-r--r--tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp6
-rw-r--r--tests/auto/declarative/qdeclarativegridview/data/gridview-noCurrent.qml52
-rw-r--r--tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp43
-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/qdeclarativelanguage/data/AliasPropertyChangeSignalsType.qml20
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/aliasPropertyChangeSignals.2.qml10
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/insertedSemicolon.1.errors.txt1
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/data/insertedSemicolon.1.qml10
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/testtypes.h2
-rw-r--r--tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp55
-rw-r--r--tests/auto/declarative/qdeclarativelistview/data/listview-noCurrent.qml50
-rw-r--r--tests/auto/declarative/qdeclarativelistview/data/qtbug14821.qml31
-rw-r--r--tests/auto/declarative/qdeclarativelistview/data/sizelessthan1.qml26
-rw-r--r--tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp110
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/data/clicktwice.qml16
-rw-r--r--tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp49
-rw-r--r--tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp27
-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/qdeclarativeviewer/tst_qdeclarativeviewer.cpp3
-rw-r--r--tests/auto/declarative/qdeclarativevisualdatamodel/data/modelproperties.qml17
-rw-r--r--tests/auto/declarative/qdeclarativevisualdatamodel/data/modelproperties2.qml17
-rw-r--r--tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp132
-rw-r--r--tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp5
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/basic1.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/basic2.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/basic3.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/basic4.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/basic1.qml159
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/basic2.qml187
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/basic3.qml147
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/basic4.qml171
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.0.pngbin961 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.1.pngbin972 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.2.pngbin962 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.3.pngbin962 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.5.pngbin970 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.6.pngbin961 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.qml2203
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.0.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.1.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.10.pngbin1588 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.11.pngbin1575 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.12.pngbin1502 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.13.pngbin1583 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.14.pngbin1681 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.15.pngbin1524 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.16.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.17.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.18.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.19.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.2.pngbin1627 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.3.pngbin1524 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.4.pngbin1678 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.5.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.6.pngbin1573 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.7.pngbin1670 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.8.pngbin1658 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.9.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.qml3079
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-X11/basic1.qml159
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-X11/basic2.qml187
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-X11/basic3.qml147
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data-X11/basic4.qml171
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic1.0.pngbin0 -> 948 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic1.qml150
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic2.0.pngbin0 -> 948 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic2.qml178
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic3.0.pngbin0 -> 948 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic3.qml138
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic4.0.pngbin0 -> 948 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/basic4.qml162
-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 -> 680 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.2.pngbin0 -> 704 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.3.pngbin0 -> 695 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.4.pngbin0 -> 680 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.5.pngbin0 -> 710 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.6.pngbin0 -> 705 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/enforcerange.qml2119
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.0.pngbin961 -> 976 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.1.pngbin972 -> 976 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.2.pngbin962 -> 986 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.3.pngbin962 -> 977 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.4.pngbin962 -> 977 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.5.pngbin970 -> 977 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.6.pngbin961 -> 990 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.7.png (renamed from tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.4.png)bin962 -> 976 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml380
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.0.pngbin1510 -> 1525 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.1.pngbin1510 -> 1647 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.10.pngbin1588 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.11.pngbin1575 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.12.pngbin1502 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.13.pngbin1583 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.14.pngbin1681 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.15.pngbin1524 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.16.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.17.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.18.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.19.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.2.pngbin1656 -> 1584 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.3.pngbin1524 -> 1648 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.4.pngbin1678 -> 1613 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.5.pngbin1510 -> 1663 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.6.pngbin1573 -> 1666 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.7.pngbin1669 -> 1579 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.8.pngbin1658 -> 1579 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.9.pngbin1510 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/data/listview.qml2618
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/enforcerange.qml31
-rw-r--r--tests/auto/declarative/qmlvisual/ListView/listview.qml13
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.0.pngbin714 -> 766 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.1.pngbin798 -> 797 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.10.pngbin773 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.11.pngbin773 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.12.pngbin754 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.13.pngbin742 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.14.pngbin733 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.15.pngbin712 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.16.pngbin730 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.17.pngbin730 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.18.pngbin730 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.19.pngbin744 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.2.pngbin757 -> 794 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.20.pngbin754 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.21.pngbin721 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.22.pngbin732 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.3.pngbin813 -> 822 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.4.pngbin756 -> 801 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.5.pngbin752 -> 803 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.6.pngbin752 -> 774 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.7.pngbin774 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.8.pngbin774 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.9.pngbin754 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.qml3194
-rw-r--r--tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml16
-rw-r--r--tests/auto/declarative/qmlvisual/TEST_GUIDELINES7
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/bindinganimation.qml6
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.0.pngbin817 -> 832 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.1.pngbin815 -> 830 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.2.pngbin817 -> 829 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.3.pngbin815 -> 830 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.4.pngbin813 -> 830 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.5.pngbin815 -> 832 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.6.pngbin817 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.qml1178
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.pngbin627 -> 622 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.pngbin626 -> 627 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.pngbin625 -> 626 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.3.pngbin0 -> 625 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml16
-rw-r--r--tests/auto/declarative/qmlvisual/animation/easing/data/easing.0.pngbin3393 -> 1267 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/easing/data/easing.1.pngbin3381 -> 1648 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/easing/data/easing.2.pngbin3101 -> 1617 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/easing/data/easing.3.pngbin16542 -> 1267 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/easing/data/easing.qml494
-rw-r--r--tests/auto/declarative/qmlvisual/animation/easing/easing.qml21
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.0.pngbin508 -> 502 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.1.pngbin507 -> 508 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.2.pngbin508 -> 507 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.3.pngbin508 -> 508 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.4.pngbin505 -> 508 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.5.pngbin508 -> 507 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.6.pngbin0 -> 508 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/loop/data/loop.qml26
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation-visual.0.pngbin0 -> 379 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation-visual.qml338
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.0.pngbin774 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.1.pngbin762 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.2.pngbin773 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parallelAnimation/parallelAnimation-visual.qml19
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.0.pngbin0 -> 1635 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.1.pngbin0 -> 1619 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.2.pngbin0 -> 1586 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.3.pngbin0 -> 1635 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.4.pngbin0 -> 1653 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.qml1216
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.0.pngbin3742 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.1.pngbin3727 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.2.pngbin3742 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.3.pngbin3628 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.4.pngbin3610 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.5.pngbin3742 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation/parentAnimation-visual.qml18
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.0.pngbin2046 -> 2011 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.1.pngbin2059 -> 2047 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.2.pngbin2052 -> 2058 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.3.pngbin2011 -> 2052 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.qml16
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.0.pngbin0 -> 3224 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.1.pngbin0 -> 3226 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.2.pngbin0 -> 3229 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.3.pngbin0 -> 3224 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.4.pngbin0 -> 3226 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.5.pngbin0 -> 3229 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.6.pngbin0 -> 3229 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.qml26
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.0.pngbin1418 -> 336 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.1.pngbin1430 -> 335 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.2.pngbin1431 -> 344 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.3.pngbin0 -> 336 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml552
-rw-r--r--tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction-visual.qml13
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.0.pngbin1149 -> 1131 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.1.pngbin1173 -> 1135 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.2.pngbin1173 -> 1141 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.3.pngbin1149 -> 1147 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.4.pngbin0 -> 1132 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.qml870
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug10586/qtbug10586.qml6
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug13398/data/qtbug13398.0.pngbin1265 -> 1281 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug13398/data/qtbug13398.1.pngbin0 -> 1265 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/qtbug13398/data/qtbug13398.qml6
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.0.pngbin637 -> 637 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.1.pngbin642 -> 637 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.2.pngbin637 -> 642 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.3.pngbin637 -> 647 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.4.pngbin647 -> 637 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.5.pngbin637 -> 646 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.6.pngbin637 -> 637 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.7.pngbin637 -> 637 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.8.pngbin642 -> 647 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.9.pngbin0 -> 642 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.qml38
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.0.pngbin0 -> 334 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.1.pngbin0 -> 335 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.2.pngbin0 -> 335 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.qml298
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.1.pngbin1431 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction-visual.qml4
-rw-r--r--tests/auto/declarative/qmlvisual/fillmode/data/fillmode.0.pngbin28886 -> 16855 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/fillmode/face.pngbin905 -> 1011 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/fillmode/fillmode.qml14
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.0.pngbin14875 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.1.pngbin14875 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.2.pngbin14863 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.3.pngbin14877 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.4.pngbin14877 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.5.pngbin14877 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.qml1599
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.0.pngbin5375 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.1.pngbin5375 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.qml607
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.pngbin12749 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.pngbin12667 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.pngbin12373 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.pngbin12150 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.4.pngbin11944 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.5.pngbin12150 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.6.pngbin12373 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.7.pngbin12667 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.8.pngbin12749 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.9.pngbin12710 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml2879
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.0.pngbin11501 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.1.pngbin11501 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.2.pngbin11486 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.3.pngbin11500 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.4.pngbin11500 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.5.pngbin11500 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test.qml1599
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.0.pngbin4656 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.1.pngbin4656 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.qml607
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.0.pngbin10093 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.1.pngbin10051 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.2.pngbin9812 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.3.pngbin9625 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.4.pngbin9458 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.5.pngbin9645 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.6.pngbin9812 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.7.pngbin10051 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.8.pngbin10087 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.9.pngbin10072 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.qml2879
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.0.pngbin14836 -> 1974 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.1.pngbin14836 -> 1968 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.2.pngbin14821 -> 1968 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.3.pngbin14833 -> 1974 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.4.pngbin14833 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.5.pngbin14833 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test.qml1330
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test2.0.pngbin5359 -> 305 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test2.1.pngbin5359 -> 305 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test2.qml442
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.0.pngbin12616 -> 487 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.1.pngbin12538 -> 509 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.2.pngbin12257 -> 491 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.3.pngbin12035 -> 499 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.4.pngbin11877 -> 487 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.5.pngbin12046 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.6.pngbin12257 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.7.pngbin12538 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.8.pngbin12616 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.9.pngbin12581 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/data/test3.qml2562
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/test.qml13
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/test2.qml26
-rw-r--r--tests/auto/declarative/qmlvisual/focusscope/test3.qml34
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated-smooth.qml105
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated.qml97
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml10
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-round.sci8
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-stretch.sci8
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors.pngbin1655 -> 713 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/qmldir1
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.0.pngbin61731 -> 4686 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.pngbin98927 -> 25454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.2.pngbin48780 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.3.pngbin32431 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.4.pngbin35835 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.5.pngbin79428 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.6.pngbin45928 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml1660
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.pngbin23684 -> 4686 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.pngbin29115 -> 9642 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.2.pngbin27580 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.3.pngbin14822 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.4.pngbin21356 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.5.pngbin31143 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.6.pngbin26468 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.7.pngbin16225 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.qml1916
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.0.pngbin22832 -> 28741 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.0.pngbin0 -> 1439 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.1.pngbin0 -> 1424 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.2.pngbin0 -> 1428 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.3.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.0.png)bin1245 -> 1396 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.4.pngbin0 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.qml1575
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.0.pngbin1427 -> 1439 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.1.pngbin1357 -> 1424 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.2.pngbin1405 -> 1428 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.3.pngbin1427 -> 1397 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.4.pngbin0 -> 1454 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml1150
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.0.pngbin1951 -> 1073 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.1.pngbin1951 -> 1063 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.10.pngbin1952 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.11.pngbin1930 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.12.pngbin1974 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.13.pngbin1961 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.14.pngbin1959 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.15.pngbin1937 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.16.pngbin1618 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.17.pngbin1952 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.18.pngbin1952 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.19.pngbin1930 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.2.pngbin1976 -> 1080 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.20.pngbin1930 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.21.pngbin1947 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.22.pngbin1941 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.23.pngbin1951 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.24.png0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.3.pngbin1987 -> 1080 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.4.pngbin1947 -> 1056 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.5.pngbin1975 -> 1075 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.6.pngbin1928 -> 1029 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.7.pngbin1928 -> 1073 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.8.pngbin1928 -> 1053 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.9.pngbin1928 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml6406
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-vertical.qml6
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.0.pngbin1090 -> 942 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.1.pngbin1134 -> 1111 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.2.pngbin961 -> 1152 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.3.pngbin1076 -> 976 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.4.pngbin1134 -> 1096 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.5.pngbin969 -> 1154 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.6.pngbin0 -> 984 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.qml26
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test_flipable_resize.0.pngbin0 -> 1649 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test_flipable_resize.qml2
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.0.pngbin1303 -> 1318 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.pngbin1317 -> 1318 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.10.pngbin0 -> 1318 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.pngbin1318 -> 1332 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.pngbin1306 -> 1331 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.pngbin1308 -> 1321 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.pngbin1303 -> 1325 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.pngbin1323 -> 1321 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.pngbin1325 -> 1341 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.pngbin1346 -> 1341 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.pngbin1303 -> 1359 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.qml772
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.0.pngbin1310 -> 1325 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.1.pngbin1322 -> 1325 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.2.pngbin1341 -> 1337 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.3.pngbin1368 -> 1360 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.4.pngbin1319 -> 1406 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.5.pngbin1352 -> 1337 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.6.pngbin1309 -> 1340 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.7.pngbin1347 -> 1327 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.8.pngbin1310 -> 1353 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.9.pngbin1354 -> 1325 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.qml670
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview.qml2
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.0.pngbin1578 -> 1578 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.1.pngbin1585 -> 1578 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.2.pngbin1568 -> 1585 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.3.pngbin1578 -> 1568 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.4.pngbin1584 -> 1578 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.5.pngbin1584 -> 1583 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.6.pngbin1581 -> 1581 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.7.pngbin1581 -> 1582 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.8.pngbin1567 -> 1581 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.qml34
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.0.pngbin1701 -> 1701 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.1.pngbin1701 -> 1701 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.10.pngbin1721 -> 1701 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.11.pngbin1705 -> 1721 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.12.pngbin1705 -> 1705 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.13.pngbin1701 -> 1705 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.14.png (renamed from tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.0.png)bin1418 -> 1701 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.2.pngbin1704 -> 1701 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.3.pngbin1704 -> 1704 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.4.pngbin1705 -> 1704 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.5.pngbin1705 -> 1705 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.6.pngbin1701 -> 1705 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.7.pngbin1701 -> 1701 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.8.pngbin1705 -> 1701 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.9.pngbin1701 -> 1705 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.qml454
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.0.pngbin0 -> 486 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.1.pngbin0 -> 486 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.10.pngbin0 -> 494 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.11.pngbin0 -> 494 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.12.pngbin0 -> 494 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.13.pngbin0 -> 494 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.14.pngbin0 -> 494 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.15.pngbin0 -> 494 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.2.pngbin0 -> 489 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.3.pngbin0 -> 489 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.4.pngbin0 -> 489 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.5.pngbin0 -> 496 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.6.pngbin0 -> 496 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.7.pngbin0 -> 496 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.8.pngbin0 -> 496 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.9.pngbin0 -> 494 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.qml62
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.0.pngbin0 -> 1360 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.1.pngbin0 -> 1367 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.2.pngbin0 -> 1367 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.3.pngbin0 -> 1372 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.4.pngbin0 -> 1382 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.5.pngbin0 -> 1379 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.6.pngbin0 -> 1390 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.7.pngbin0 -> 1379 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.8.pngbin0 -> 1380 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.9.pngbin0 -> 1379 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.qml5039
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativemousearea/nested.qml62
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.pngbin10219 -> 1055 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.pngbin13469 -> 10086 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.pngbin14051 -> 14829 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.3.pngbin0 -> 14095 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.qml384
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.0.pngbin2263 -> 1114 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.1.pngbin2329 -> 1105 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.2.pngbin2279 -> 1088 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.3.pngbin2263 -> 1096 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.4.pngbin2263 -> 1143 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.5.pngbin2308 -> 1143 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.6.pngbin2280 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.qml2056
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.0.pngbin2412 -> 1169 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.1.pngbin2443 -> 1182 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.2.pngbin2398 -> 1211 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.3.pngbin2390 -> 1184 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.4.pngbin2416 -> 1152 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.5.pngbin2395 -> 1141 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.6.pngbin0 -> 1189 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.qml1940
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview-2.qml30
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview.qml19
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.0.pngbin1429 -> 263 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.1.pngbin1433 -> 280 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.2.pngbin1431 -> 270 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.3.pngbin1428 -> 280 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.4.pngbin1432 -> 280 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.5.pngbin1434 -> 283 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.6.pngbin0 -> 281 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.qml798
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/repeater.0.pngbin2790 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.0.pngbin0 -> 1199 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml268
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/dynamic.qml65
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativepositioners/usingRepeater.qml5
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.0.pngbin1305 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.1.pngbin1306 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.2.pngbin1305 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.3.pngbin1303 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.4.pngbin1303 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.5.pngbin1305 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.6.pngbin1306 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.qml1807
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.0.pngbin3692 -> 1513 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.1.pngbin3697 -> 1537 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.2.pngbin3696 -> 1537 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.3.pngbin0 -> 1537 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.qml394
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedanimation.qml45
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedfollow.qml78
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/clock.qml (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml)3
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/background.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/background.png)bin46895 -> 46895 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/center.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/center.png)bin765 -> 765 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/clock.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/clock.png)bin20653 -> 20653 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/hour.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/hour.png)bin625 -> 625 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/minute.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/minute.png)bin625 -> 625 bytes
-rwxr-xr-xtests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/second.png (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/second.png)bin303 -> 303 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.0.pngbin0 -> 941 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.1.pngbin0 -> 975 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.2.pngbin0 -> 1235 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.3.pngbin0 -> 1225 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.4.pngbin0 -> 1247 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.5.pngbin0 -> 1243 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.6.pngbin0 -> 1234 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.7.pngbin0 -> 1242 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.qml1763
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.0.pngbin0 -> 16333 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.1.pngbin0 -> 16437 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.2.pngbin0 -> 16543 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.qml615
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.0.pngbin0 -> 941 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.1.pngbin0 -> 975 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.2.pngbin0 -> 1235 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.3.pngbin0 -> 1225 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.4.pngbin0 -> 1247 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.5.pngbin0 -> 1243 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.6.pngbin0 -> 1234 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.7.pngbin0 -> 1242 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml1763
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringanimation/follow.qml (renamed from tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml)0
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.0.pngbin17294 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.1.pngbin17394 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.2.pngbin17524 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.3.pngbin17572 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.qml1135
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.0.pngbin959 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.1.pngbin1244 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.10.pngbin1299 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.2.pngbin1224 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.3.pngbin1243 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.4.pngbin1230 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.5.pngbin1231 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.6.pngbin1239 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.7.pngbin1241 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.8.pngbin1237 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.9.pngbin1229 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.qml1763
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.pngbin0 -> 801 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml247
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.0.pngbin0 -> 762 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.qml247
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.0.pngbin0 -> 1895 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.qml247
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/align/multilineAlign.qml25
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.pngbin0 -> 1392 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml131
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.0.pngbin0 -> 1313 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml62
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml7
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/QTBUG-14469.qml23
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.0.pngbin0 -> 210 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.1.pngbin0 -> 270 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.qml475
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.0.pngbin0 -> 210 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.qml475
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.0.pngbin0 -> 422 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.qml475
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.pngbin0 -> 322 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.pngbin0 -> 322 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 -> 303 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.1.pngbin0 -> 303 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.pngbin2276 -> 491 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.pngbin0 -> 491 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.pngbin4818 -> 1240 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.pngbin4089 -> 1106 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.pngbin3128 -> 999 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.pngbin1963 -> 864 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.pngbin0 -> 703 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml488
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.pngbin736 -> 791 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.pngbin0 -> 854 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml148
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.pngbin1002 -> 483 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.1.pngbin0 -> 483 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/elide2.0.pngbin0 -> 1189 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.1.pngbin0 -> 1068 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.2.pngbin0 -> 948 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.3.pngbin0 -> 819 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.4.pngbin0 -> 682 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.qml991
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.pngbin596 -> 747 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.1.pngbin0 -> 814 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.2.pngbin0 -> 809 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.3.pngbin0 -> 527 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.4.pngbin0 -> 526 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.5.pngbin0 -> 399 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml1168
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.0.pngbin1604 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.qml279
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.0.pngbin4818 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.1.pngbin4089 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.2.pngbin3128 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.3.pngbin1963 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.qml991
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml9
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml5
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/elide/multilength.qml5
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/BorderedText.qml9
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.pngbin103018 -> 14238 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.qml340
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.pngbin0 -> 1563 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 -> 6348 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.pngbin136492 -> 9321 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.qml348
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.pngbin0 -> 10663 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.pngbin0 -> 13140 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.0.pngbin0 -> 1503 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/plaintext3.0.pngbin0 -> 6368 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext3.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.pngbin0 -> 9297 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext2.0.pngbin0 -> 10626 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext2.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.0.pngbin94120 -> 77181 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.qml340
-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/data/richtext.0.pngbin121122 -> 103375 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.qml348
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext2.0.pngbin0 -> 10671 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext2.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml168
-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.qml76
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext2.qml43
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetext/qtbug_14865.qml18
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/MultilineEdit.qml15
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml21
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.pngbin793 -> 1177 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.pngbin795 -> 1254 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.pngbin803 -> 1199 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.pngbin805 -> 1198 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.pngbin805 -> 1195 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.pngbin805 -> 1197 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.6.pngbin799 -> 3145 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.7.pngbin799 -> 3146 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.8.pngbin803 -> 3144 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.9.pngbin0 -> 3135 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml3060
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.pngbin365 -> 737 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.pngbin365 -> 740 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.pngbin366 -> 746 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.pngbin362 -> 739 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.4.pngbin0 -> 737 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml538
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.pngbin0 -> 1362 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.pngbin0 -> 1377 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.pngbin0 -> 2037 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.pngbin0 -> 2037 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.12.pngbin0 -> 2037 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.pngbin0 -> 1461 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.pngbin0 -> 1577 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.pngbin0 -> 1704 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.pngbin0 -> 1778 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.pngbin0 -> 1797 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.pngbin0 -> 1859 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.pngbin0 -> 1835 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.pngbin0 -> 2028 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml4687
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.pngbin0 -> 3756 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.pngbin0 -> 3891 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.pngbin0 -> 3964 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.pngbin0 -> 4054 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.pngbin0 -> 4132 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.pngbin0 -> 4234 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.pngbin0 -> 4238 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.7.pngbin0 -> 4238 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml2467
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.0.pngbin0 -> 1173 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.1.pngbin0 -> 1249 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.2.pngbin0 -> 1331 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.3.pngbin0 -> 1212 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.4.pngbin0 -> 1208 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.5.pngbin0 -> 1213 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.6.pngbin0 -> 3145 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.7.pngbin0 -> 3146 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.8.pngbin0 -> 3144 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.9.pngbin0 -> 3135 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.qml1499
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.0.pngbin0 -> 688 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.1.pngbin0 -> 693 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.2.pngbin0 -> 695 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.3.pngbin0 -> 694 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.4.pngbin0 -> 688 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.qml1371
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.0.pngbin0 -> 1357 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.1.pngbin0 -> 1371 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.10.pngbin0 -> 2032 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.11.pngbin0 -> 2032 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.12.pngbin0 -> 2032 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.2.pngbin0 -> 1451 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.3.pngbin0 -> 1565 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.4.pngbin0 -> 1691 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.5.pngbin0 -> 1763 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.6.pngbin0 -> 1779 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.7.pngbin0 -> 1843 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.8.pngbin0 -> 1825 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.9.pngbin0 -> 2024 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.qml4687
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.pngbin1110 -> 3493 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.pngbin1110 -> 3617 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.pngbin1110 -> 3688 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.pngbin1110 -> 3766 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.pngbin1110 -> 3839 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.pngbin1110 -> 3940 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.pngbin1110 -> 3943 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.7.pngbin0 -> 3943 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml858
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.0.pngbin3322 -> 3171 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.pngbin3323 -> 3603 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.pngbin3325 -> 3152 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.pngbin3332 -> 3147 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.pngbin3329 -> 3145 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.pngbin3818 -> 3147 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.pngbin3333 -> 3145 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.pngbin3332 -> 3146 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.pngbin3347 -> 3144 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.9.pngbin0 -> 3135 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.qml3050
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.0.pngbin0 -> 4006 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.1.pngbin0 -> 4293 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.10.pngbin0 -> 6074 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.11.pngbin0 -> 6074 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.2.pngbin0 -> 4683 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.3.pngbin0 -> 5114 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.4.pngbin0 -> 5270 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.5.pngbin0 -> 5401 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.6.pngbin0 -> 5591 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.7.pngbin0 -> 5261 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.8.pngbin0 -> 6072 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.9.pngbin0 -> 6074 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.qml4687
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml8
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextedit/wrap.qml9
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/LineEdit.qml12
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/cursorDelegate.qml10
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.pngbin793 -> 1177 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.pngbin796 -> 1148 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.pngbin804 -> 1312 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.pngbin805 -> 1256 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.pngbin805 -> 1197 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.pngbin805 -> 1197 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml2976
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.pngbin0 -> 256 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.pngbin0 -> 343 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.pngbin0 -> 461 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.pngbin0 -> 539 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml1043
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.0.pngbin0 -> 3987 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml107
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.0.pngbin0 -> 1254 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.1.pngbin0 -> 1328 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.10.pngbin0 -> 1345 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.11.pngbin0 -> 1433 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.2.pngbin0 -> 1328 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.3.pngbin0 -> 1328 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.4.pngbin0 -> 1316 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.5.pngbin0 -> 1318 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.6.pngbin0 -> 1321 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.7.pngbin0 -> 1316 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.8.pngbin0 -> 1362 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.9.pngbin0 -> 1423 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml4335
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.0.pngbin0 -> 1173 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.1.pngbin0 -> 1143 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.2.pngbin0 -> 1312 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.3.pngbin0 -> 1250 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.4.pngbin0 -> 1193 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.5.pngbin0 -> 1193 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.qml1551
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.pngbin716 -> 256 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.pngbin1352 -> 339 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.pngbin2047 -> 446 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.pngbin2827 -> 510 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.4.pngbin2827 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml382
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.pngbin1245 -> 3661 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml50
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.0.pngbin3137 -> 1265 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.1.pngbin3195 -> 1337 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.10.pngbin3853 -> 1389 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.11.pngbin0 -> 1468 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.2.pngbin3171 -> 1337 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.3.pngbin3228 -> 1279 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.4.pngbin3198 -> 1368 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.5.pngbin3310 -> 1367 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.6.pngbin3233 -> 1377 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.7.pngbin3607 -> 1368 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.8.pngbin3657 -> 1384 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.9.pngbin3262 -> 1471 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.qml1408
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.0.pngbin3314 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.1.pngbin3377 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.2.pngbin3323 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.3.pngbin3325 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.4.pngbin3322 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.5.pngbin3322 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.6.pngbin3326 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.7.pngbin3814 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.8.pngbin3324 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.qml2966
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.0.pngbin999 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.1.pngbin1880 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.2.pngbin2962 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.3.pngbin2827 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.4.pngbin2827 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml9
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml28
-rw-r--r--tests/auto/declarative/qmlvisual/qdeclarativetextinput/usingLineEdit.qml6
-rw-r--r--tests/auto/declarative/qmlvisual/rect/GradientRect.qml4
-rw-r--r--tests/auto/declarative/qmlvisual/rect/MyRect.qml4
-rw-r--r--tests/auto/declarative/qmlvisual/rect/data/GradientRect.0.pngbin0 -> 248 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/rect/data/GradientRect.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/rect/data/MyRect.0.pngbin0 -> 135 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/rect/data/MyRect.qml11
-rw-r--r--tests/auto/declarative/qmlvisual/rect/data/rect-painting.0.pngbin29725 -> 15272 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/rect/data/rect-painting.qml276
-rw-r--r--tests/auto/declarative/qmlvisual/rect/rect-painting.qml4
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/basic1.qml24
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/basic2.qml24
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/basic3.qml28
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/basic4.qml28
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.0.pngbin1550 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.qml323
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.0.pngbin1550 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.qml331
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.0.pngbin1550 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.qml347
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.0.pngbin1550 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.qml419
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.0.pngbin1354 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.qml323
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.0.pngbin1354 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.qml331
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.0.pngbin1354 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.qml347
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.0.pngbin1354 -> 0 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.qml419
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic1.0.pngbin1513 -> 707 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic1.qml312
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic2.0.pngbin1513 -> 707 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic2.qml320
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic3.0.pngbin1513 -> 707 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic3.qml336
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic4.0.pngbin1513 -> 707 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/repeater/data/basic4.qml408
-rw-r--r--tests/auto/declarative/qmlvisual/shared/DejaVuSansMono.ttfbin0 -> 237788 bytes
-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/qmldir3
-rw-r--r--tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp70
-rw-r--r--tests/auto/declarative/qmlvisual/webview/autosize/autosize.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/autosize/data-X11/autosize.qml115
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.0.pngbin0 -> 2812 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.1.pngbin0 -> 2812 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.10.pngbin0 -> 2829 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.2.pngbin0 -> 3466 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.3.pngbin0 -> 2812 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.4.pngbin0 -> 2829 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.5.pngbin0 -> 2829 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.6.pngbin0 -> 2768 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.7.pngbin0 -> 2829 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.8.pngbin0 -> 2829 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.9.pngbin0 -> 2829 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.qml6083
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/flickweb.qml35
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/qtlogo.pngbin0 -> 2738 bytes
-rw-r--r--tests/auto/declarative/qmlvisual/webview/flickable/test.html3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml13
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml3
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/resolution.qml5
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.qml5
-rw-r--r--tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml3
-rw-r--r--tests/auto/gestures/tst_gestures.cpp4
-rw-r--r--tests/auto/mediaobject/tst_mediaobject.cpp2
-rw-r--r--tests/auto/modeltest/dynamictreemodel.cpp7
-rw-r--r--tests/auto/platformquirks.h122
-rw-r--r--tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp6
-rw-r--r--tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp111
-rw-r--r--tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp5
-rw-r--r--tests/auto/qabstractslider/tst_qabstractslider.cpp17
-rw-r--r--tests/auto/qaccessibility/tst_qaccessibility.cpp8
-rw-r--r--tests/auto/qboxlayout/tst_qboxlayout.cpp5
-rw-r--r--tests/auto/qbuttongroup/tst_qbuttongroup.cpp9
-rw-r--r--tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp5
-rw-r--r--tests/auto/qclipboard/test/test.pro2
-rw-r--r--tests/auto/qclipboard/tst_qclipboard.cpp82
-rw-r--r--tests/auto/qcolumnview/tst_qcolumnview.cpp21
-rw-r--r--tests/auto/qcombobox/tst_qcombobox.cpp14
-rw-r--r--tests/auto/qcompleter/tst_qcompleter.cpp159
-rw-r--r--tests/auto/qdbusconnection/tst_qdbusconnection.cpp73
-rw-r--r--tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp12
-rw-r--r--tests/auto/qeventloop/tst_qeventloop.cpp2
-rw-r--r--tests/auto/qfileinfo/tst_qfileinfo.cpp8
-rw-r--r--tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp9
-rw-r--r--tests/auto/qgl/tst_qgl.cpp145
-rw-r--r--tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp6
-rw-r--r--tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp820
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp97
-rw-r--r--tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp118
-rw-r--r--tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp12
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp148
-rw-r--r--tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp15
-rw-r--r--tests/auto/qgridlayout/tst_qgridlayout.cpp17
-rw-r--r--tests/auto/qheaderview/tst_qheaderview.cpp29
-rw-r--r--tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp54
-rw-r--r--tests/auto/qimagereader/tst_qimagereader.cpp36
-rw-r--r--tests/auto/qinputcontext/tst_qinputcontext.cpp4
-rw-r--r--tests/auto/qinputdialog/tst_qinputdialog.cpp8
-rw-r--r--tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp66
-rw-r--r--tests/auto/qkeysequence/tst_qkeysequence.cpp2
-rw-r--r--tests/auto/qlayout/tst_qlayout.cpp5
-rw-r--r--tests/auto/qlistview/tst_qlistview.cpp35
-rw-r--r--tests/auto/qlistwidget/tst_qlistwidget.cpp13
-rw-r--r--tests/auto/qmainwindow/tst_qmainwindow.cpp10
-rw-r--r--tests/auto/qmdiarea/tst_qmdiarea.cpp19
-rw-r--r--tests/auto/qmenu/tst_qmenu.cpp13
-rw-r--r--tests/auto/qmenubar/tst_qmenubar.cpp4
-rw-r--r--tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp4
-rw-r--r--tests/auto/qnetworkreply/tst_qnetworkreply.cpp1129
-rw-r--r--tests/auto/qpainter/tst_qpainter.cpp58
-rw-r--r--tests/auto/qpathclipper/tst_qpathclipper.cpp3
-rw-r--r--tests/auto/qpixmap/tst_qpixmap.cpp54
-rw-r--r--tests/auto/qplaintextedit/tst_qplaintextedit.cpp1
-rw-r--r--tests/auto/qprinter/tst_qprinter.cpp12
-rw-r--r--tests/auto/qscriptclass/tst_qscriptclass.cpp21
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue.cpp38
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue.h2
-rw-r--r--tests/auto/qsettings/tst_qsettings.cpp13
-rw-r--r--tests/auto/qsharedpointer/tst_qsharedpointer.cpp4
-rw-r--r--tests/auto/qsplitter/tst_qsplitter.cpp12
-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/qstring/tst_qstring.cpp40
-rw-r--r--tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp8
-rw-r--r--tests/auto/qtableview/tst_qtableview.cpp24
-rw-r--r--tests/auto/qtextdocument/tst_qtextdocument.cpp1
-rw-r--r--tests/auto/qtextedit/tst_qtextedit.cpp11
-rw-r--r--tests/auto/qthread/tst_qthread.cpp41
-rw-r--r--tests/auto/qtreeview/tst_qtreeview.cpp23
-rw-r--r--tests/auto/qtreewidget/tst_qtreewidget.cpp6
-rw-r--r--tests/auto/qwaitcondition/tst_qwaitcondition.cpp2
-rw-r--r--tests/auto/qwidget/tst_qwidget.cpp53
-rw-r--r--tests/auto/qxmlquery/tst_qxmlquery.cpp27
-rw-r--r--tests/auto/selftests/expected_cmptest.txt2
-rw-r--r--tests/auto/selftests/expected_crashes_3.txt2
-rw-r--r--tests/auto/selftests/expected_longstring.txt2
-rw-r--r--tests/auto/selftests/expected_maxwarnings.txt2
-rw-r--r--tests/auto/selftests/expected_skip.txt2
-rw-r--r--tests/auto/symbols/tst_symbols.cpp2
-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/declarative/creation/tst_creation.cpp4
-rw-r--r--tests/benchmarks/declarative/qmltime/qmltime.cpp65
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro6
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp133
-rw-r--r--tests/manual/bearerex/datatransferer.cpp2
-rw-r--r--tests/manual/qtouchevent/qtouchevent.pro (renamed from tests/manual/qtouchevent/multitouch.pro)0
-rw-r--r--tools/assistant/lib/qhelpgenerator.cpp13
-rw-r--r--tools/assistant/tools/assistant/doc/assistant.qdocconf2
-rw-r--r--tools/assistant/tools/assistant/helpenginewrapper.cpp2
-rw-r--r--tools/configure/configure.pro4
-rw-r--r--tools/configure/configureapp.cpp22
-rw-r--r--tools/configure/environment.cpp10
-rw-r--r--tools/designer/src/lib/shared/qtresourcemodel.cpp6
-rw-r--r--tools/linguist/linguist/mainwindow.cpp4
-rw-r--r--tools/linguist/linguist/printout.cpp2
-rw-r--r--tools/linguist/lrelease/lrelease.pro1
-rw-r--r--tools/linguist/lupdate/main.cpp4
-rw-r--r--tools/linguist/shared/ts.dtd23
-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/JAVATODO.txt28
-rw-r--r--tools/qdoc3/TODO.txt9
-rw-r--r--tools/qdoc3/apigenerator.cpp150
-rw-r--r--tools/qdoc3/archiveextractor.cpp108
-rw-r--r--tools/qdoc3/codemarker.cpp1
-rw-r--r--tools/qdoc3/codemarker.h7
-rw-r--r--tools/qdoc3/codeparser.cpp41
-rw-r--r--tools/qdoc3/codeparser.h6
-rw-r--r--tools/qdoc3/command.cpp103
-rw-r--r--tools/qdoc3/config.cpp78
-rw-r--r--tools/qdoc3/config.h8
-rw-r--r--tools/qdoc3/cppcodemarker.cpp16
-rw-r--r--tools/qdoc3/cppcodemarker.h56
-rw-r--r--tools/qdoc3/cppcodeparser.cpp19
-rw-r--r--tools/qdoc3/cppcodeparser.h4
-rw-r--r--tools/qdoc3/cpptoqsconverter.cpp415
-rw-r--r--tools/qdoc3/dcfsection.cpp111
-rw-r--r--tools/qdoc3/dcfsection.h94
-rw-r--r--tools/qdoc3/ditaxmlgenerator.cpp4
-rw-r--r--tools/qdoc3/ditaxmlgenerator.h28
-rw-r--r--tools/qdoc3/doc.cpp965
-rw-r--r--tools/qdoc3/doc/files/qt.qdocconf8
-rw-r--r--tools/qdoc3/doc/qdoc-manual.qdocconf253
-rw-r--r--tools/qdoc3/generator.cpp114
-rw-r--r--tools/qdoc3/generator.h2
-rw-r--r--tools/qdoc3/helpprojectwriter.cpp16
-rw-r--r--tools/qdoc3/htmlgenerator.cpp550
-rw-r--r--tools/qdoc3/htmlgenerator.h54
-rw-r--r--tools/qdoc3/jambiapiparser.cpp546
-rw-r--r--tools/qdoc3/jambiapiparser.h99
-rw-r--r--tools/qdoc3/javacodemarker.cpp203
-rw-r--r--tools/qdoc3/javacodemarker.h83
-rw-r--r--tools/qdoc3/javadocgenerator.cpp454
-rw-r--r--tools/qdoc3/javadocgenerator.h95
-rw-r--r--tools/qdoc3/jscodemarker.cpp137
-rw-r--r--tools/qdoc3/jscodemarker.h (renamed from tools/qdoc3/archiveextractor.h)34
-rw-r--r--tools/qdoc3/linguistgenerator.cpp245
-rw-r--r--tools/qdoc3/location.cpp4
-rw-r--r--tools/qdoc3/main.cpp176
-rw-r--r--tools/qdoc3/mangenerator.cpp228
-rw-r--r--tools/qdoc3/node.cpp8
-rw-r--r--tools/qdoc3/node.h6
-rw-r--r--tools/qdoc3/pagegenerator.cpp16
-rw-r--r--tools/qdoc3/pagegenerator.h4
-rw-r--r--tools/qdoc3/polyarchiveextractor.cpp94
-rw-r--r--tools/qdoc3/polyarchiveextractor.h70
-rw-r--r--tools/qdoc3/polyuncompressor.cpp109
-rw-r--r--tools/qdoc3/polyuncompressor.h71
-rw-r--r--tools/qdoc3/puredocparser.cpp (renamed from tools/qdoc3/loutgenerator.cpp)12
-rw-r--r--tools/qdoc3/puredocparser.h (renamed from tools/qdoc3/ccodeparser.h)24
-rw-r--r--tools/qdoc3/qdoc3.pro68
-rw-r--r--tools/qdoc3/qmlcodemarker.cpp287
-rw-r--r--tools/qdoc3/qmlcodemarker.h (renamed from tools/qdoc3/linguistgenerator.h)50
-rw-r--r--tools/qdoc3/qmlcodeparser.cpp235
-rw-r--r--tools/qdoc3/qmlcodeparser.h (renamed from tools/qdoc3/qsakernelparser.h)48
-rw-r--r--tools/qdoc3/qmlmarkupvisitor.cpp863
-rw-r--r--tools/qdoc3/qmlmarkupvisitor.h180
-rw-r--r--tools/qdoc3/qmlvisitor.cpp221
-rw-r--r--tools/qdoc3/qmlvisitor.h (renamed from tools/qdoc3/cpptoqsconverter.h)58
-rw-r--r--tools/qdoc3/qsakernelparser.cpp186
-rw-r--r--tools/qdoc3/qscodemarker.cpp378
-rw-r--r--tools/qdoc3/qscodemarker.h79
-rw-r--r--tools/qdoc3/qscodeparser.cpp944
-rw-r--r--tools/qdoc3/qscodeparser.h128
-rw-r--r--tools/qdoc3/quoter.cpp5
-rw-r--r--tools/qdoc3/test/assistant.qdocconf4
-rw-r--r--tools/qdoc3/test/designer.qdocconf4
-rw-r--r--tools/qdoc3/test/linguist.qdocconf4
-rw-r--r--tools/qdoc3/test/qdeclarative.qdocconf8
-rw-r--r--tools/qdoc3/test/qmake.qdocconf4
-rw-r--r--tools/qdoc3/test/qt-api-only.qdocconf34
-rw-r--r--tools/qdoc3/test/qt-build-docs-online.qdocconf2
-rw-r--r--tools/qdoc3/test/qt-build-docs.qdocconf147
-rw-r--r--tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf8
-rw-r--r--tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf8
-rw-r--r--tools/qdoc3/test/qt-defines.qdocconf45
-rw-r--r--tools/qdoc3/test/qt-html-default-styles.qdocconf50
-rw-r--r--tools/qdoc3/test/qt-html-online-styles.qdocconf77
-rw-r--r--tools/qdoc3/test/qt-html-templates-online.qdocconf236
-rw-r--r--tools/qdoc3/test/qt-html-templates.qdocconf225
-rw-r--r--tools/qdoc3/test/qt-html-templates_ja_JP-online.qdocconf176
-rw-r--r--tools/qdoc3/test/qt-html-templates_ja_JP.qdocconf236
-rw-r--r--tools/qdoc3/test/qt-html-templates_zh_CN-online.qdocconf176
-rw-r--r--tools/qdoc3/test/qt-html-templates_zh_CN.qdocconf347
-rw-r--r--tools/qdoc3/test/qt-project-api-only.qdocconf32
-rw-r--r--tools/qdoc3/test/qt-project.qdocconf110
-rw-r--r--tools/qdoc3/test/qt.qdocconf147
-rw-r--r--tools/qdoc3/test/qt_ja_JP.qdocconf118
-rw-r--r--tools/qdoc3/test/qt_zh_CN.qdocconf116
-rw-r--r--tools/qdoc3/test/scripts/functions.js60
-rw-r--r--tools/qdoc3/test/scripts/jquery.js152
-rw-r--r--tools/qdoc3/test/style/style.css1051
-rw-r--r--tools/qdoc3/test/style/style_ie6.css54
-rw-r--r--tools/qdoc3/test/style/style_ie7.css19
-rw-r--r--tools/qdoc3/test/style/style_ie8.css0
-rw-r--r--tools/qdoc3/tokenizer.cpp1
-rw-r--r--tools/qdoc3/tokenizer.h2
-rw-r--r--tools/qdoc3/tr.h14
-rw-r--r--tools/qdoc3/tree.cpp23
-rw-r--r--tools/qdoc3/uncompressor.cpp108
-rw-r--r--tools/qdoc3/uncompressor.h79
-rw-r--r--tools/qdoc3/webxmlgenerator.cpp1195
-rw-r--r--tools/qdoc3/webxmlgenerator.h127
-rw-r--r--tools/qmeegographicssystemhelper/qmeegofencesync.cpp79
-rw-r--r--tools/qmeegographicssystemhelper/qmeegofencesync.h101
-rw-r--r--tools/qmeegographicssystemhelper/qmeegofencesync_p.h (renamed from tools/qdoc3/sgmlgenerator.h)29
-rw-r--r--tools/qmeegographicssystemhelper/qmeegographicssystemhelper.cpp17
-rw-r--r--tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h8
-rw-r--r--tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro4
-rw-r--r--tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp66
-rw-r--r--tools/qmeegographicssystemhelper/qmeegolivepixmap.h11
-rw-r--r--tools/qmeegographicssystemhelper/qmeegolivepixmap_p.h6
-rw-r--r--tools/qmeegographicssystemhelper/qmeegooverlaywidget.cpp9
-rw-r--r--tools/qmeegographicssystemhelper/qmeegooverlaywidget.h2
-rw-r--r--tools/qmeegographicssystemhelper/qmeegoruntime.cpp98
-rw-r--r--tools/qmeegographicssystemhelper/qmeegoruntime.h14
-rw-r--r--tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp68
-rw-r--r--tools/qmeegographicssystemhelper/qmeegoswitchevent.h (renamed from tools/qdoc3/mangenerator.h)68
-rw-r--r--tools/qml/main.cpp12
-rw-r--r--tools/qml/qdeclarativetester.cpp55
-rw-r--r--tools/qml/qdeclarativetester.h1
-rw-r--r--tools/qml/qmlruntime.cpp5
-rw-r--r--tools/qml/qmlruntime.h3
-rw-r--r--tools/qtconfig/mainwindow.cpp20
-rw-r--r--tools/qtestlib/wince/cetest/activesyncconnection.cpp2
-rw-r--r--tools/qtestlib/wince/cetest/main.cpp2
-rw-r--r--tools/qvfb/qvfb.cpp2
-rw-r--r--tools/runonphone/symbianutils/tcftrkdevice.h2
-rw-r--r--tools/runonphone/symbianutils/tcftrkmessage.h2
-rw-r--r--tools/shared/symbian/epocroot.cpp115
-rw-r--r--tools/shared/symbian/epocroot.pri11
-rw-r--r--tools/shared/symbian/epocroot_p.h (renamed from tools/shared/symbian/epocroot.h)24
-rw-r--r--tools/shared/windows/registry.cpp18
-rw-r--r--tools/shared/windows/registry_p.h (renamed from tools/shared/windows/registry.h)24
-rw-r--r--translations/assistant_de.ts37
-rw-r--r--[-rwxr-xr-x]translations/assistant_ja.ts0
-rw-r--r--translations/assistant_ru.ts581
-rw-r--r--translations/designer_ru.ts172
-rw-r--r--[-rwxr-xr-x]translations/linguist_ja.ts0
-rw-r--r--translations/linguist_ru.ts955
-rw-r--r--translations/qt_de.ts4
-rw-r--r--[-rwxr-xr-x]translations/qt_ja.ts0
-rw-r--r--translations/qt_ru.ts166
-rw-r--r--translations/qt_zh_CN.ts2
-rw-r--r--translations/qtconfig_ru.ts82
-rw-r--r--translations/qvfb_ru.ts139
-rw-r--r--util/normalize/main.cpp2
-rw-r--r--util/s60pixelmetrics/pm_mapperapp.cpp20
1883 files changed, 98254 insertions, 86828 deletions
diff --git a/.commit-template b/.commit-template
index 589ca89586..6e0e3a4e7c 100644
--- a/.commit-template
+++ b/.commit-template
@@ -5,6 +5,6 @@
# ---[ Fields ]-----------------[ uncomment and edit as applicable ]---|
#Task-number:
-#Reviewed-by:
+Reviewed-by: pending
# ==================================[ please wrap at 72 characters ]===|
diff --git a/.gitignore b/.gitignore
index 7bacc11f34..f9a4454229 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,6 +51,7 @@ Makefile*
*.prl
*.app
*.pro.user
+*.qmlproject.user
*.gcov
bin/Qt*.dll
bin/assistant*
@@ -234,3 +235,5 @@ qtc-debugging-helper
src/corelib/lib
src/network/lib
src/xml/lib/
+
+.pc/
diff --git a/bin/createpackage.pl b/bin/createpackage.pl
index 41ba2e37f0..6b835854c2 100755
--- a/bin/createpackage.pl
+++ b/bin/createpackage.pl
@@ -82,6 +82,8 @@ Where supported options are as follows:
[-s|stub] = Generates stub sis for ROM.
[-n|sisname <name>] = Specifies the final sis name.
[-g|gcce-is-armv5] = Convert gcce platform to armv5.
+ [-d|dont-patch] = Skip automatic patching of capabilities and pkg file if default certificate
+ is used. Instead non-self-signable capabilities just cause warnings.
Where parameters are as follows:
templatepkg = Name of .pkg file template
target = Either debug or release
@@ -127,6 +129,7 @@ my $stub = "";
my $signed_sis_name = "";
my $onlyUnsigned = "";
my $convertGcce = "";
+my $dontPatchCaps = "";
unless (GetOptions('i|install' => \$install,
'p|preprocess' => \$preprocessonly,
@@ -135,12 +138,18 @@ unless (GetOptions('i|install' => \$install,
'o|only-unsigned' => \$onlyUnsigned,
's|stub' => \$stub,
'n|sisname=s' => \$signed_sis_name,
- 'g|gcce-is-armv5' => \$convertGcce,)) {
+ 'g|gcce-is-armv5' => \$convertGcce,
+ 'd|dont-patch' => \$dontPatchCaps,)) {
Usage();
}
my $epocroot = $ENV{EPOCROOT};
-$epocroot =~ s,[\\/]$,,x;
+if ($epocroot ne "") {
+ $epocroot =~ s,\\,/,g;
+ if ($epocroot =~ m,[^/]$,) {
+ $epocroot = $epocroot."/";
+ }
+}
my $certfilepath = abs_path(dirname($certfile));
@@ -328,25 +337,29 @@ if ($preprocessonly) {
if($stub) {
if(!($epocroot)) { die("ERROR: EPOCROOT must be set to create stub sis files"); }
- my $systeminstall = "$epocroot/epoc32/data/z/system/install";
+ my $systeminstall = "${epocroot}epoc32/data/z/system/install";
mkpath($systeminstall);
my $stub_sis_name = $systeminstall."/".$stub_sis_name;
# Create stub SIS.
- system ("$epocroot/epoc32/tools/makesis -s $pkgoutput $stub_sis_name");
+ system ("${epocroot}epoc32/tools/makesis -s $pkgoutput $stub_sis_name");
} else {
if ($certtext eq "Self Signed"
&& !@certificates
&& $templatepkg !~ m/_installer\.pkg$/i
&& !$onlyUnsigned) {
- print("Auto-patching capabilities for self signed package.\n");
my $patch_capabilities = File::Spec->catfile(dirname($0), "patch_capabilities");
- system ("$patch_capabilities $pkgoutput") and die ("ERROR: Automatic patching failed");
+ if ($dontPatchCaps) {
+ system ("$patch_capabilities -c $pkgoutput") and print ("Warning: Package check for self-signing viability failed. Installing the package on a device will most likely fail!\n\n");
+ } else {
+ print("Auto-patching self-signed package.\n");
+ system ("$patch_capabilities $pkgoutput") and die ("ERROR: Automatic patching failed");
+ }
}
# Create SIS.
# The 'and' is because system uses 0 to indicate success.
if($epocroot) {
- system ("$epocroot/epoc32/tools/makesis $pkgoutput $unsigned_sis_name") and die ("ERROR: makesis failed");
+ system ("${epocroot}epoc32/tools/makesis $pkgoutput $unsigned_sis_name") and die ("ERROR: makesis failed");
} else {
system ("makesis $pkgoutput $unsigned_sis_name") and die ("ERROR: makesis failed");
}
diff --git a/bin/patch_capabilities.pl b/bin/patch_capabilities.pl
index 06ab116623..df713391dd 100755
--- a/bin/patch_capabilities.pl
+++ b/bin/patch_capabilities.pl
@@ -63,8 +63,11 @@ sub Usage() {
print(" symbian-sbsv2 platform, 'target-platform' is REQUIRED. ***\n\n");
print(" *** NOTE2: When patching gcce binaries built with symbian-sbsv2 toolchain,\n");
print(" armv5 must be specified as platform.\n");
- print("\nUsage: patch_capabilities.pl pkg_filename [target-platform [capability list]]\n");
+ print("\nUsage: patch_capabilities.pl [-c] pkg_filename [target-platform [capability list]]\n");
print("\nE.g. patch_capabilities.pl myapp_template.pkg release-armv5 \"All -TCB\"\n");
+ print("\nThe parameter -c can be used to just check if package is compatible with self-signing\n");
+ print("without actually doing any patching.\n");
+ print("Explicit capability list cannot be used with -c parameter.\n");
exit();
}
@@ -78,7 +81,7 @@ sub trim($) {
my $nullDevice = "/dev/null";
$nullDevice = "NUL" if ($^O =~ /MSWin/);
-my @capabilitiesToAllow = ("LocalServices", "NetworkServices", "ReadUserData", "UserEnvironment", "WriteUserData");
+my @capabilitiesToAllow = ("LocalServices", "NetworkServices", "ReadUserData", "UserEnvironment", "WriteUserData", "Location");
my @capabilitiesSpecified = ();
# If arguments were given to the script,
@@ -86,6 +89,14 @@ if (@ARGV)
{
# Parse the first given script argument as a ".pkg" file name.
my $pkgFileName = shift(@ARGV);
+ my $justCheck = "";
+ my $msgPrefix = "Patching:";
+
+ if ($pkgFileName eq "-c") {
+ $pkgFileName = shift(@ARGV);
+ $justCheck = true;
+ $msgPrefix = "Warning:";
+ }
# These variables will only be set for template .pkg files.
my $target;
@@ -123,15 +134,22 @@ if (@ARGV)
if (($pkgFileName =~ m|\.pkg$|i) && -r($pkgFileName))
{
print ("\n");
- print ("Patching package file and relevant binaries...\n");
+ if ($justCheck) {
+ print ("Checking");
+ } else {
+ print ("Patching");
+ }
+ print (" package file and relevant binaries...\n");
- # If there are more arguments given, parse them as capabilities.
- if (@ARGV)
- {
- @capabilitiesSpecified = ();
- while (@ARGV)
+ if (!$justCheck) {
+ # If there are more arguments given, parse them as capabilities.
+ if (@ARGV)
{
- push (@capabilitiesSpecified, pop(@ARGV));
+ @capabilitiesSpecified = ();
+ while (@ARGV)
+ {
+ push (@capabilitiesSpecified, pop(@ARGV));
+ }
}
}
@@ -139,11 +157,15 @@ if (@ARGV)
my @binaries = ();
my $tempPkgFileName = $pkgFileName."_@@TEMP@@";
- unlink($tempPkgFileName);
- open (NEW_PKG, ">>".$tempPkgFileName);
+
+ if (!$justCheck) {
+ unlink($tempPkgFileName);
+ open (NEW_PKG, ">>".$tempPkgFileName);
+ }
open (PKG, "<".$pkgFileName);
- my $manufacturerElseBlock = 0;
+ my $checkFailed = "";
+ my $somethingPatched = "";
# Parse each line.
while (<PKG>)
@@ -155,66 +177,19 @@ if (@ARGV)
if ($line =~ m/^\#.*\((0x[0-7][0-9a-fA-F]*)\).*$/)
{
my $oldUID = $1;
- my $newUID = $oldUID;
- $newUID =~ s/0x./0xE/i;
- $newLine =~ s/$oldUID/$newUID/;
- print ("Patching: UID $oldUID is not compatible with self-signing! Changed to: $newUID.\n");
- }
-
- # Patch embedded sis name and UID if UID is in protected range
- if ($line =~ m/^@\"*(.*\.sis).*\((0x[0-7][0-9a-fA-F]*)\).*$/)
- {
- my $oldSisName = $1;
- my $oldUID = $2;
- my $newUID = $oldUID;
- $newUID =~ s/0x./0xE/i;
- $newLine =~ s/$oldUID/$newUID/;
- print ("Patching: Embedded sis $oldSisName UID $oldUID changed to: $newUID.\n");
-
- if ($oldSisName !~ m/^.*_selfsigned.sis$/i)
- {
- my $newSisName = $oldSisName;
- $newSisName =~ s/\.sis$/_selfsigned\.sis/i;
- $newLine =~ s/$oldSisName/$newSisName/i;
- print ("Patching: Embedded sis $oldSisName name changed to: $newSisName.\n");
+ print ("$msgPrefix UID $oldUID is not compatible with self-signing!\n");
+
+ if ($justCheck) {
+ $checkFailed = true;
+ } else {
+ my $newUID = $oldUID;
+ $newUID =~ s/0x./0xE/i;
+ $newLine =~ s/$oldUID/$newUID/;
+ print ("$msgPrefix Package UID changed to: $newUID.\n");
+ $somethingPatched = true;
}
}
- # Remove dependencies to known problem packages (i.e. packages that are likely to be patched, too)
- # to reduce unnecessary error messages.
- if ($line =~ m/^\((0x2002af5f)\).*\{.*\}$/)
- {
- $newLine = "\n";
- print ("Patching: Removed dependency to sqlite3.sis ($1) to avoid installation issues in case sqlite3.sis is also patched.\n");
- }
- if ($line =~ m/^\((0x2001E61C)\).*\{.*\}$/)
- {
- $newLine = "\n";
- print ("Patching: Removed dependency to qt.sis ($1) to avoid installation issues in case qt.sis is also patched.\n");
- }
-
- # Remove manufacturer ifdef
- if ($line =~ m/^.*\(MANUFACTURER\)\=\(.*\).*$/)
- {
- $newLine = "\n";
- print ("Patching: Removed manufacturer check as it is usually not desirable in self-signed packages.\n");
- }
-
- if ($line =~ m/^ELSEIF.*MANUFACTURER$/)
- {
- $manufacturerElseBlock = 1;
- }
-
- if ($manufacturerElseBlock eq 1)
- {
- $newLine = "\n";
- }
-
- if ($line =~ m/^ENDIF.*MANUFACTURER$/)
- {
- $manufacturerElseBlock = 0;
- }
-
# If the line specifies a file, parse the source and destination locations.
if ($line =~ m|^ *\"([^\"]+)\"\s*\-\s*\"([^\"]+)\"|)
{
@@ -231,16 +206,20 @@ if (@ARGV)
$sourcePath =~ s/\$\(TARGET\)/$target/gm;
}
- # Change the source file name (but only if not already patched)
- my $patchedSourcePath = $sourcePath;
- if ($patchedSourcePath !~ m/_patched_caps/)
- {
- $newLine =~ s/(^.*)(\.dll|\.exe)(.*)(\.dll|\.exe)/$1_patched_caps$2$3$4/i;
- $patchedSourcePath =~ s/(^.*)(\.dll|\.exe)/$1_patched_caps$2/i;
-
- copy($sourcePath, $patchedSourcePath) or die "$sourcePath cannot be copied for patching.";
+ if ($justCheck) {
+ push (@binaries, $sourcePath);
+ } else {
+ # Change the source file name (but only if not already patched)
+ my $patchedSourcePath = $sourcePath;
+ if ($patchedSourcePath !~ m/_patched_caps/)
+ {
+ $newLine =~ s/(^.*)(\.dll|\.exe)(.*)(\.dll|\.exe)/$1_patched_caps$2$3$4/i;
+ $patchedSourcePath =~ s/(^.*)(\.dll|\.exe)/$1_patched_caps$2/i;
+
+ copy($sourcePath, $patchedSourcePath) or die "$sourcePath cannot be copied for patching.";
+ }
+ push (@binaries, $patchedSourcePath);
}
- push (@binaries, $patchedSourcePath);
}
}
@@ -250,11 +229,12 @@ if (@ARGV)
}
close (PKG);
- close (NEW_PKG);
-
- unlink($pkgFileName);
- rename($tempPkgFileName, $pkgFileName);
+ if (!$justCheck) {
+ close (NEW_PKG);
+ unlink($pkgFileName);
+ rename($tempPkgFileName, $pkgFileName);
+ }
print ("\n");
my $baseCommandToExecute = "elftran -vid 0x0 -capability \"%s\" ";
@@ -265,15 +245,18 @@ if (@ARGV)
# Create the command line for setting the capabilities.
my ($binaryVolume, $binaryDirs, $binaryBaseName) = File::Spec->splitpath($binaryPath);
my $commandToExecute = $baseCommandToExecute;
- my $executeNeeded = 0;
+ my $executeNeeded = "";
if (@capabilitiesSpecified)
{
$commandToExecute = sprintf($baseCommandToExecute, join(" ", @capabilitiesSpecified));
+ $executeNeeded = true;
+ my $capString = join(" ", @capabilitiesSpecified);
+ print ("$msgPrefix Patching the the Vendor ID to 0 and the capabilities used to: \"$capString\" in \"$binaryBaseName\".\n");
} else {
# Test which capabilities are present and then restrict them to the allowed set.
# This avoid raising the capabilities of apps that already have none.
my $dllCaps;
- open($dllCaps, "elftran -dump s $binaryPath |") or die ("Could not execute elftran");
+ open($dllCaps, "elftran -dump s $binaryPath |") or die ("ERROR: Could not execute elftran");
my $capsFound = 0;
my $originalVid;
my @capabilitiesToSet;
@@ -285,8 +268,8 @@ if (@ARGV)
if ($binaryBaseName =~ /\.exe$/) {
# Installer refuses to install protected executables in a self signed package, so abort if one is detected.
# We can't simply just patch the executable SID, as any registration resources executable uses will be linked to it via SID.
- print ("Patching: Executable with SID in the protected range (0x$exeSid) detected: \"$binaryBaseName\". A self-signed sis with protected executables is not supported.\n");
- exit(1);
+ print ("$msgPrefix Executable with SID in the protected range (0x$exeSid) detected: \"$binaryBaseName\". A self-signed sis with protected executables is not supported.\n\n");
+ $checkFailed = true;
}
}
if (/^Vendor ID: ([0-9a-fA-F]*)$/) {
@@ -298,6 +281,9 @@ if (@ARGV)
$_ = trim($_);
if ($capabilitiesToAllow =~ /$_/) {
push(@capabilitiesToSet, $_);
+ if (Location =~ /$_/i) {
+ print ("$msgPrefix \"Location\" capability detected for binary: \"$binaryBaseName\". This capability is not self-signable for S60 3rd edition feature pack 1 devices, so installing this package on those devices will most likely not work.\n\n");
+ }
} else {
push(@capabilitiesToDrop, $_);
}
@@ -305,21 +291,32 @@ if (@ARGV)
}
close($dllCaps);
if ($originalVid !~ "00000000") {
- print ("Patching: Vendor ID (0x$originalVid) incompatible with self-signed packages, setting it to zero for \"$binaryBaseName\".\n");
- $executeNeeded = 1;
+ print ("$msgPrefix Non-zero vendor ID (0x$originalVid) is incompatible with self-signed packages in \"$binaryBaseName\"");
+ if ($justCheck) {
+ print (".\n\n");
+ $checkFailed = true;
+ } else {
+ print (", setting it to zero.\n\n");
+ $executeNeeded = true;
+ }
}
if ($#capabilitiesToDrop) {
my $capsToDropStr = join("\", \"", @capabilitiesToDrop);
$capsToDropStr =~ s/\", \"$//;
- if ($binaryBaseName =~ /\.exe$/) {
- # While libraries often have capabilities they do not themselves need just to enable them to be loaded by wider variety of processes,
- # executables are more likely to need every capability they have been assigned or they won't function correctly.
- print ("Patching: Executable with capabilities incompatible with self-signing detected: \"$binaryBaseName\". (Incompatible capabilities: \"$capsToDropStr\".) Reducing capabilities is only supported for libraries.\n");
- exit(1);
+ if ($justCheck) {
+ print ("$msgPrefix The following capabilities used in \"$binaryBaseName\" are not compatible with a self-signed package: \"$capsToDropStr\".\n\n");
+ $checkFailed = true;
} else {
- print ("Patching: The following capabilities used in \"$binaryBaseName\" are not compatible with a self-signed package and will be removed: \"$capsToDropStr\".\n");
- $executeNeeded = 1;
+ if ($binaryBaseName =~ /\.exe$/) {
+ # While libraries often have capabilities they do not themselves need just to enable them to be loaded by wider variety of processes,
+ # executables are more likely to need every capability they have been assigned or they won't function correctly.
+ print ("$msgPrefix Executable with capabilities incompatible with self-signing detected: \"$binaryBaseName\". (Incompatible capabilities: \"$capsToDropStr\".) Reducing capabilities is only supported for libraries.\n");
+ $checkFailed = true;
+ } else {
+ print ("$msgPrefix The following capabilities used in \"$binaryBaseName\" are not compatible with a self-signed package and will be removed: \"$capsToDropStr\".\n");
+ $executeNeeded = true;
+ }
}
}
$commandToExecute = sprintf($baseCommandToExecute, join(" ", @capabilitiesToSet));
@@ -330,16 +327,37 @@ if (@ARGV)
# Actually execute the elftran command to set the capabilities.
print ("\n");
system ("$commandToExecute > $nullDevice");
+ $somethingPatched = true;
}
## Create another command line to check that the set capabilities are correct.
#$commandToExecute = "elftran -dump s ".$binaryPath;
}
+ if ($checkFailed) {
+ print ("\n");
+ if ($justCheck) {
+ print ("$msgPrefix The package is not compatible with self-signing.\n");
+ } else {
+ print ("$msgPrefix Unable to patch the package for self-singing.\n");
+ }
+ print ("Use a proper developer certificate for signing this package.\n\n");
+ exit(1);
+ }
+
+ if ($justCheck) {
+ print ("Package is compatible with self-signing.\n");
+ } else {
+ if ($somethingPatched) {
+ print ("NOTE: A patched package may not work as expected due to reduced capabilities and other modifications,\n");
+ print (" so it should not be used for any kind of Symbian signing or distribution!\n");
+ print (" Use a proper certificate to avoid the need to patch the package.\n");
+ } else {
+ print ("No patching was required!\n");
+ }
+ }
print ("\n");
- print ("NOTE: A patched package may not work as expected due to reduced capabilities and other modifications,\n");
- print (" so it should not be used for any kind of Symbian signing or distribution!\n");
- print (" Use a proper certificate to avoid the need to patch the package.\n");
- print ("\n");
+ } else {
+ Usage();
}
}
else
diff --git a/bin/syncqt b/bin/syncqt
index c73d119a0e..6c5729a801 100755
--- a/bin/syncqt
+++ b/bin/syncqt
@@ -695,10 +695,7 @@ my @ignore_for_qt_begin_header_check = ( "qiconset.h", "qconfig.h", "qconfig-dis
my @ignore_for_qt_begin_namespace_check = ( "qconfig.h", "qconfig-dist.h", "qconfig-large.h", "qconfig-medium.h", "qconfig-minimal.h", "qconfig-small.h", "qfeatures.h", "qatomic_arch.h", "qatomic_windowsce.h", "qt_windows.h", "qatomic_macosx.h" );
my @ignore_for_qt_module_check = ( "$modules{QtCore}/arch", "$modules{QtCore}/global", "$modules{QtSql}/drivers", "$modules{QtTest}", "$modules{QtDesigner}", "$modules{QtUiTools}", "$modules{QtDBus}", "$modules{phonon}" );
my %colliding_headers = ();
-my %inject_headers;
-# Force generation of forwarding header for qconfig.h if (and only if) we can't
-# find the header by normal means.
-%inject_headers = ( "$basedir/src/corelib/global" => ( "*qconfig.h" ) ) unless (-e "$basedir/src/corelib/global/qconfig.h");
+my %inject_headers = ( "$basedir/src/corelib/global" => ( "qconfig.h" ) ); # all from build dir
foreach my $lib (@modules_to_sync) {
#iteration info
@@ -800,7 +797,12 @@ foreach my $lib (@modules_to_sync) {
#calc files and "copy" them
foreach my $subdir (@subdirs) {
my @headers = findFiles($subdir, "^[-a-z0-9_]*\\.h\$" , 0);
- push @headers, $inject_headers{$subdir} if (defined $inject_headers{$subdir});
+ if (defined $inject_headers{$subdir}) {
+ foreach my $if ($inject_headers{$subdir}) {
+ @headers = grep(!/^\Q$if\E$/, @headers); #in case we configure'd previously
+ push @headers, "*".$if;
+ }
+ }
foreach my $header (@headers) {
my $shadow = ($header =~ s/^\*//);
$header = 0 if($header =~ /^ui_.*.h/);
@@ -878,7 +880,7 @@ foreach my $lib (@modules_to_sync) {
@headers = ( "$out_basedir/include/$lib/private/$header" );
}
foreach(@headers) { #sync them
- $header_copies++ if(syncHeader($_, $iheader, $copy_headers, $ts));
+ $header_copies++ if(syncHeader($_, $iheader, $copy_headers && !$shadow, $ts));
}
if($public_header) {
diff --git a/config.tests/symbian/audio/audio.pro b/config.tests/symbian/audio/audio.pro
index b2a1986c71..b496341a36 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 fa086c982e..9c60d622f2 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/config.tests/unix/doubleformat/doubleformattest.cpp b/config.tests/unix/doubleformat/doubleformattest.cpp
index 8e83251cd0..2c51d0ccdf 100644
--- a/config.tests/unix/doubleformat/doubleformattest.cpp
+++ b/config.tests/unix/doubleformat/doubleformattest.cpp
@@ -44,8 +44,8 @@
LE: strings | grep 0123ABCD0123ABCD
BE: strings | grep DCBA3210DCBA3210
-LE arm-swaped-dword-order: strings | grep ABCD0123ABCD0123
-BE arm-swaped-dword-order: strings | grep 3210DCBA3210DCBA (untested)
+LE arm-swapped-dword-order: strings | grep ABCD0123ABCD0123
+BE arm-swapped-dword-order: strings | grep 3210DCBA3210DCBA (untested)
tested on x86, arm-le (gp), aix
diff --git a/configure b/configure
index 0152c8effb..059aa1a597 100755
--- a/configure
+++ b/configure
@@ -2429,14 +2429,8 @@ if [ "$OPT_SHADOW" = "yes" ]; then
ShadowMkspecs()
{
rm -rf "$outpath/mkspecs/$1"
- if [ "$UNAME_SYSTEM" = "Linux" ]; then
- # This works with GNU coreutils, and is needed for ScratchBox
- cp -rs "$relpath/mkspecs/$1" "$outpath/mkspecs/$1"
- else
- # A simple "cp -rs" doesn't work on Mac. :(
- find "$relpath/mkspecs/$1" -type d | sed "s,^$relpath,$outpath," | xargs mkdir -p
- find "$relpath/mkspecs/$1" -type f | sed "s,^$relpath/,," | xargs -n 1 -I % ln -s "$relpath/%" "$outpath/%"
- fi
+ find "$relpath/mkspecs/$1" -type d | sed "s,^$relpath,$outpath," | xargs mkdir -p
+ find "$relpath/mkspecs/$1" -type f | sed "s,^$relpath/,," | while read f; do ln -s "$relpath/$f" "$outpath/$f"; done
}
# Special case for mkspecs/features directory.
@@ -3320,12 +3314,9 @@ if [ -z "$QT_INSTALL_PREFIX" ]; then
if [ "$PLATFORM" != "$XPLATFORM" ]; then
QT_INSTALL_PREFIX="${QT_INSTALL_PREFIX}-${CFG_ARCH}"
fi
- elif [ -d "$EPOCROOT" ]; then
- case "$XPLATFORM" in *symbian*)
- QT_INSTALL_PREFIX="$EPOCROOT/epoc32/"
- QT_INSTALL_LIBS="$EPOCROOT/epoc32/release/armv5/lib/"
- ;;
- esac
+ elif [ -d "$EPOCROOT" ] && echo $XPLATFORM | grep symbian > /dev/null; 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
@@ -3535,7 +3526,7 @@ Usage: $relconf [-h] [-prefix <dir>] [-prefix-install] [-bindir <dir>] [-libdir
[-verbose] [-v] [-silent] [-no-nis] [-nis] [-no-cups] [-cups] [-no-iconv]
[-iconv] [-no-pch] [-pch] [-no-dbus] [-dbus] [-dbus-linked] [-no-gui]
[-no-separate-debug-info] [-no-mmx] [-no-3dnow] [-no-sse] [-no-sse2]
- [-no-sse3] [-no-ssse3] [-no-sse4.1] [-no-sse4.2] [-no-avx]
+ [-no-sse3] [-no-ssse3] [-no-sse4.1] [-no-sse4.2] [-no-avx] [-no-neon]
[-qtnamespace <namespace>] [-qtlibinfix <infix>] [-separate-debug-info] [-armfpa]
[-no-optimized-qmake] [-optimized-qmake] [-no-xmlpatterns] [-xmlpatterns]
[-no-multimedia] [-multimedia] [-no-phonon] [-phonon] [-no-phonon-backend] [-phonon-backend]
@@ -3739,6 +3730,7 @@ cat << EOF
-no-sse4.1.......... Do not compile with use of SSE4.1 instructions.
-no-sse4.2.......... Do not compile with use of SSE4.2 instructions.
-no-avx ............ Do not compile with use of AVX instructions.
+ -no-neon ........... Do not compile with use of NEON instructions.
-qtnamespace <name> Wraps all Qt library code in 'namespace <name> {...}'.
-qtlibinfix <infix> Renames all libQt*.so to libQt*<infix>.so.
@@ -4170,8 +4162,6 @@ Qt for Embedded Linux only:
-iwmmxt ............ Compile using the iWMMXt instruction set
(available on some XScale CPUs).
-
- -no-neon ........... Do not compile with use of NEON instructions.
EOF
fi
@@ -4530,7 +4520,7 @@ if [ -n "$EVALKEY" ]; then
rm -f "$outpath/src/corelib/global/qconfig_eval.cpp"
cat > "$outpath/src/corelib/global/qconfig_eval.cpp" <<EOF
/* Evaluation license key */
-static const char qt_eval_key_data [512 + 12] = "$EVALKEY";
+static const volatile char qt_eval_key_data [512 + 12] = "$EVALKEY";
EOF
chmod -w "$outpath/src/corelib/global/qconfig_eval.cpp"
fi
diff --git a/demos/declarative/minehunt/minehunt.cpp b/demos/declarative/minehunt/minehunt.cpp
index 709d9450a7..aaaaaac175 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 753ca4eb68..8a7fdc52a9 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.sources = MinehuntCore minehunt.qml
DEPLOYMENT = qmlminehuntfiles
}
- \ No newline at end of file
+
diff --git a/demos/declarative/samegame/SamegameCore/Button.qml b/demos/declarative/samegame/SamegameCore/Button.qml
index 7fb7b654bd..140b1968c0 100644
--- a/demos/declarative/samegame/SamegameCore/Button.qml
+++ b/demos/declarative/samegame/SamegameCore/Button.qml
@@ -48,7 +48,7 @@ Rectangle {
signal clicked
- width: buttonLabel.width + 20; height: buttonLabel.height + 6
+ width: buttonLabel.width + 20; height: buttonLabel.height + 20
smooth: true
border { width: 1; color: Qt.darker(activePalette.button) }
radius: 8
@@ -70,6 +70,6 @@ Rectangle {
MouseArea { id: mouseArea; anchors.fill: parent; onClicked: container.clicked() }
Text {
- id: buttonLabel; text: container.text; anchors.centerIn: container; color: activePalette.buttonText
+ id: buttonLabel; text: container.text; anchors.centerIn: container; color: activePalette.buttonText; font.pixelSize: 24
}
}
diff --git a/demos/declarative/samegame/samegame.qml b/demos/declarative/samegame/samegame.qml
index f66c40ec16..ab49c04f22 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: {
@@ -133,7 +131,7 @@ Rectangle {
Rectangle {
id: toolBar
- width: parent.width; height: 32
+ width: parent.width; height: 58
color: activePalette.window
anchors.bottom: screen.bottom
@@ -156,6 +154,7 @@ Rectangle {
anchors { right: parent.right; rightMargin: 3; verticalCenter: parent.verticalCenter }
text: "Score: " + gameCanvas.score
font.bold: true
+ font.pixelSize: 24
color: activePalette.windowText
}
}
diff --git a/demos/declarative/snake/content/pics/pause.png b/demos/declarative/snake/content/pics/pause.png
new file mode 100644
index 0000000000..056d97dd17
--- /dev/null
+++ b/demos/declarative/snake/content/pics/pause.png
Binary files differ
diff --git a/demos/declarative/snake/content/snake.js b/demos/declarative/snake/content/snake.js
index c2e9d3aa29..5c089de76f 100644
--- a/demos/declarative/snake/content/snake.js
+++ b/demos/declarative/snake/content/snake.js
@@ -32,7 +32,7 @@ function startNewGame()
if (state == "starting")
return;
- if (heartbeat.running) {
+ if (activeGame) {
endGame();
startNewGameTimer.running = true;
state = "";
@@ -87,7 +87,7 @@ function startNewGame()
function endGame()
{
- heartbeat.running = false;
+ activeGame = false;
for(var i in snake)
snake[i].dying = true;
if (cookie) {
diff --git a/demos/declarative/snake/snake.qml b/demos/declarative/snake/snake.qml
index 5b69217e2e..af86aac1ce 100644
--- a/demos/declarative/snake/snake.qml
+++ b/demos/declarative/snake/snake.qml
@@ -47,6 +47,7 @@ Rectangle {
id: screen;
SystemPalette { id: activePalette }
color: activePalette.window
+ property bool activeGame: false
property int gridSize : 34
property int margin: 4
@@ -75,6 +76,7 @@ Rectangle {
Timer {
id: heartbeat;
interval: heartbeatInterval;
+ running: activeGame && runtime.isActiveWindow
repeat: true
onTriggered: { Logic.move() }
}
@@ -94,9 +96,17 @@ Rectangle {
Timer {
id: startHeartbeatTimer;
interval: 1000 ;
- onTriggered: { state = "running"; heartbeat.running = true; }
+ onTriggered: { state = "running"; activeGame = true; }
}
+ Image{
+ id: pauseDialog
+ z: 1
+ source: "content/pics/pause.png"
+ anchors.centerIn: parent;
+ //opacity is deliberately not animated
+ opacity: activeGame && !runtime.isActiveWindow
+ }
Image {
Image {
diff --git a/demos/declarative/twitter/twitter.qml b/demos/declarative/twitter/twitter.qml
index 4495523755..74bab37ecb 100644
--- a/demos/declarative/twitter/twitter.qml
+++ b/demos/declarative/twitter/twitter.qml
@@ -78,7 +78,7 @@ Item {
id: views
x: 2; width: parent.width - 4
y:60 //Below the title bars
- height: 380
+ height: parent.height - 100
Text {
id:title
diff --git a/demos/qmediaplayer/main.cpp b/demos/qmediaplayer/main.cpp
index 02c579b3d6..9f15e439de 100644
--- a/demos/qmediaplayer/main.cpp
+++ b/demos/qmediaplayer/main.cpp
@@ -42,6 +42,8 @@
#include <QtGui>
#include "mediaplayer.h"
+const qreal DefaultVolume = -1.0;
+
int main (int argc, char *argv[])
{
Q_INIT_RESOURCE(mediaplayer);
@@ -50,36 +52,38 @@ int main (int argc, char *argv[])
app.setOrganizationName("Qt");
app.setQuitOnLastWindowClosed(true);
- bool hasSmallScreen =
+ QString fileName;
+ qreal volume = DefaultVolume;
+ bool smallScreen = false;
#ifdef Q_OS_SYMBIAN
- /* On Symbian, we always want fullscreen. One reason is that it's not
- * possible to launch any demos from the fluidlauncher due to a
- * limitation in the emulator. */
- true
-#else
- false
+ smallScreen = true;
#endif
- ;
-
- QString fileString;
- const QStringList args(app.arguments());
- /* We have a minor problem here, we accept two arguments, both are
- * optional:
- * - A file name
- * - the option "-small-screen", so let's try to cope with that.
- */
- for (int i = 0; i < args.count(); ++i) {
- const QString &at = args.at(i);
- if (at == QLatin1String("-small-screen"))
- hasSmallScreen = true;
- else if (i > 0) // We don't want the app name.
- fileString = at;
+ QStringList args(app.arguments());
+ args.removeFirst(); // remove name of executable
+ while (!args.empty()) {
+ const QString &arg = args.first();
+ if (QLatin1String("-small-screen") == arg || QLatin1String("--small-screen") == arg) {
+ smallScreen = true;
+ } else if (QLatin1String("-volume") == arg || QLatin1String("--volume") == arg) {
+ if (!args.empty()) {
+ args.removeFirst();
+ volume = qMax(qMin(args.first().toFloat(), float(1.0)), float(0.0));
+ }
+ } else if (fileName.isNull()) {
+ fileName = arg;
+ }
+ args.removeFirst();
}
- MediaPlayer player(fileString, hasSmallScreen);
+ MediaPlayer player;
+ player.setSmallScreen(smallScreen);
+ if (DefaultVolume != volume)
+ player.setVolume(volume);
+ if (!fileName.isNull())
+ player.setFile(fileName);
- if (hasSmallScreen)
+ if (smallScreen)
player.showMaximized();
else
player.show();
diff --git a/demos/qmediaplayer/mediaplayer.cpp b/demos/qmediaplayer/mediaplayer.cpp
index 97a8e35f03..5bf7d6d368 100644
--- a/demos/qmediaplayer/mediaplayer.cpp
+++ b/demos/qmediaplayer/mediaplayer.cpp
@@ -152,12 +152,10 @@ void MediaVideoWidget::dragEnterEvent(QDragEnterEvent *e) {
}
-MediaPlayer::MediaPlayer(const QString &filePath,
- const bool hasSmallScreen) :
+MediaPlayer::MediaPlayer() :
playButton(0), nextEffect(0), settingsDialog(0), ui(0),
m_AudioOutput(Phonon::VideoCategory),
- m_videoWidget(new MediaVideoWidget(this)),
- m_hasSmallScreen(hasSmallScreen)
+ m_videoWidget(new MediaVideoWidget(this))
{
setWindowTitle(tr("Media Player"));
setContextMenuPolicy(Qt::CustomContextMenu);
@@ -346,8 +344,6 @@ MediaPlayer::MediaPlayer(const QString &filePath,
m_audioOutputPath = Phonon::createPath(&m_MediaObject, &m_AudioOutput);
Phonon::createPath(&m_MediaObject, m_videoWidget);
- if (!filePath.isEmpty())
- setFile(filePath);
resize(minimumSizeHint());
}
@@ -358,7 +354,7 @@ void MediaPlayer::stateChanged(Phonon::State newstate, Phonon::State oldstate)
if (oldstate == Phonon::LoadingState) {
QRect videoHintRect = QRect(QPoint(0, 0), m_videoWindow.sizeHint());
QRect newVideoRect = QApplication::desktop()->screenGeometry().intersected(videoHintRect);
- if (!m_hasSmallScreen) {
+ if (!m_smallScreen) {
if (m_MediaObject.hasVideo()) {
// Flush event que so that sizeHint takes the
// recently shown/hidden m_videoWindow into account:
@@ -466,6 +462,16 @@ void MediaPlayer::initSettingsDialog()
}
+void MediaPlayer::setVolume(qreal volume)
+{
+ m_AudioOutput.setVolume(volume);
+}
+
+void MediaPlayer::setSmallScreen(bool smallScreen)
+{
+ m_smallScreen = smallScreen;
+}
+
void MediaPlayer::effectChanged()
{
int currentIndex = ui->audioEffectsCombo->currentIndex();
@@ -589,7 +595,7 @@ void MediaPlayer::configureEffect()
effectDialog.exec();
if (effectDialog.result() != QDialog::Accepted) {
- //we need to restore the paramaters values
+ //we need to restore the parameters values
int currentIndex = 0;
foreach(Phonon::EffectParameter param, nextEffect->parameters()) {
nextEffect->setParameterValue(param, savedParamValues.at(currentIndex++));
@@ -685,7 +691,7 @@ bool MediaPlayer::playPauseForDialog()
// If we're running on a small screen, we want to pause the video when
// popping up dialogs. We neither want to tamper with the state if the
// user has paused.
- if (m_hasSmallScreen && m_MediaObject.hasVideo()) {
+ if (m_smallScreen && m_MediaObject.hasVideo()) {
if (Phonon::PlayingState == m_MediaObject.state()) {
m_MediaObject.pause();
return true;
diff --git a/demos/qmediaplayer/mediaplayer.h b/demos/qmediaplayer/mediaplayer.h
index d6ae58ba0e..73450fe841 100644
--- a/demos/qmediaplayer/mediaplayer.h
+++ b/demos/qmediaplayer/mediaplayer.h
@@ -104,8 +104,7 @@ class MediaPlayer :
{
Q_OBJECT
public:
- MediaPlayer(const QString &,
- const bool hasSmallScreen);
+ MediaPlayer();
void dragEnterEvent(QDragEnterEvent *e);
void dragMoveEvent(QDragMoveEvent *e);
@@ -115,6 +114,8 @@ public:
void setLocation(const QString &location);
void initVideoWindow();
void initSettingsDialog();
+ void setVolume(qreal volume);
+ void setSmallScreen(bool smallScreen);
public slots:
void openFile();
@@ -171,7 +172,7 @@ private:
Phonon::AudioOutput m_AudioOutput;
MediaVideoWidget *m_videoWidget;
Phonon::Path m_audioOutputPath;
- const bool m_hasSmallScreen;
+ bool m_smallScreen;
};
#endif //MEDIAPLAYER_H
diff --git a/demos/qtdemo/itemcircleanimation.h b/demos/qtdemo/itemcircleanimation.h
index 425d2f5b3b..7276f7fad2 100644
--- a/demos/qtdemo/itemcircleanimation.h
+++ b/demos/qtdemo/itemcircleanimation.h
@@ -61,7 +61,7 @@ public:
ItemCircleAnimation(QGraphicsScene *scene = 0, QGraphicsItem *parent = 0);
virtual ~ItemCircleAnimation();
- // overidden methods:
+ // overridden methods:
QRectF boundingRect() const;
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0);
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
diff --git a/demos/qtdemo/mainwindow.cpp b/demos/qtdemo/mainwindow.cpp
index 16c5bf3f25..e39802a64c 100644
--- a/demos/qtdemo/mainwindow.cpp
+++ b/demos/qtdemo/mainwindow.cpp
@@ -388,7 +388,7 @@ void MainWindow::keyPressEvent(QKeyEvent *event)
s += "\nAdapt: ";
s += Colors::noAdapt ? "off" : "on";
- s += "\nAdaption occured: ";
+ s += "\nAdaption occurred: ";
s += Colors::adapted ? "yes" : "no";
s += "\nOpenGL version: ";
s += Colors::glVersion;
diff --git a/demos/qtdemo/mainwindow.h b/demos/qtdemo/mainwindow.h
index b8cfda6732..460f9419fb 100644
--- a/demos/qtdemo/mainwindow.h
+++ b/demos/qtdemo/mainwindow.h
@@ -74,7 +74,7 @@ public:
DemoTextItem *fpsLabel;
protected:
- // Overidden methods:
+ // Overridden methods:
void showEvent(QShowEvent *event);
void keyPressEvent(QKeyEvent *event);
void resizeEvent(QResizeEvent *event);
diff --git a/demos/qtdemo/qmlShell.qml b/demos/qtdemo/qmlShell.qml
index 276486508f..8ca06f1464 100644
--- a/demos/qtdemo/qmlShell.qml
+++ b/demos/qtdemo/qmlShell.qml
@@ -85,7 +85,7 @@ Item {
MouseArea{
anchors.fill: parent
acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton
- onClicked: loader.focus=true;/* and don't propogate to the 'exit' area*/
+ onClicked: loader.focus=true;/* and don't propagate to the 'exit' area*/
}
Rectangle{ id: innerFrame
diff --git a/demos/qtdemo/textbutton.h b/demos/qtdemo/textbutton.h
index 55b4edcd81..039f9238c2 100644
--- a/demos/qtdemo/textbutton.h
+++ b/demos/qtdemo/textbutton.h
@@ -61,7 +61,7 @@ public:
QGraphicsScene *scene = 0, QGraphicsItem *parent = 0, BUTTONTYPE color = SIDEBAR);
virtual ~TextButton();
- // overidden methods:
+ // overridden methods:
virtual QRectF boundingRect() const;
virtual void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = 0){};
virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
diff --git a/demos/qtdemo/xml/examples.xml b/demos/qtdemo/xml/examples.xml
index 27f72bbeb7..b94d2b8c7d 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/demos/spectrum/app/engine.cpp b/demos/spectrum/app/engine.cpp
index 119a0e3b42..cd847fea10 100644
--- a/demos/spectrum/app/engine.cpp
+++ b/demos/spectrum/app/engine.cpp
@@ -85,6 +85,7 @@ Engine::Engine(QObject *parent)
, m_state(QAudio::StoppedState)
, m_generateTone(false)
, m_file(0)
+ , m_analysisFile(0)
, m_availableAudioInputDevices
(QAudioDeviceInfo::availableDevices(QAudio::AudioInput))
, m_audioInputDevice(QAudioDeviceInfo::defaultInputDevice())
@@ -96,15 +97,19 @@ Engine::Engine(QObject *parent)
, m_audioOutputDevice(QAudioDeviceInfo::defaultOutputDevice())
, m_audioOutput(0)
, m_playPosition(0)
+ , m_bufferPosition(0)
+ , m_bufferLength(0)
, m_dataLength(0)
+ , m_levelBufferLength(0)
, m_rmsLevel(0.0)
, m_peakLevel(0.0)
- , m_spectrumLengthBytes(0)
+ , m_spectrumBufferLength(0)
, m_spectrumAnalyser()
, m_spectrumPosition(0)
, m_count(0)
{
qRegisterMetaType<FrequencySpectrum>("FrequencySpectrum");
+ qRegisterMetaType<WindowFunction>("WindowFunction");
CHECKED_CONNECT(&m_spectrumAnalyser,
SIGNAL(spectrumChanged(FrequencySpectrum)),
this,
@@ -132,34 +137,33 @@ Engine::~Engine()
bool Engine::loadFile(const QString &fileName)
{
+ reset();
bool result = false;
- m_generateTone = false;
-
- Q_ASSERT(!fileName.isEmpty());
+ Q_ASSERT(!m_generateTone);
Q_ASSERT(!m_file);
- m_file = new QFile(fileName, this);
- m_file->setFileName(fileName);
- Q_ASSERT(m_file->exists());
- if (m_file->open(QFile::ReadOnly)) {
- m_wavFile.readHeader(*m_file);
- if (isPCMS16LE(m_wavFile.format())) {
+ Q_ASSERT(!fileName.isEmpty());
+ m_file = new WavFile(this);
+ if (m_file->open(fileName)) {
+ if (isPCMS16LE(m_file->fileFormat())) {
result = initialize();
} else {
emit errorMessage(tr("Audio format not supported"),
- formatToString(m_wavFile.format()));
+ formatToString(m_file->fileFormat()));
}
} else {
emit errorMessage(tr("Could not open file"), fileName);
}
-
- delete m_file;
- m_file = 0;
-
+ if (result) {
+ m_analysisFile = new WavFile(this);
+ m_analysisFile->open(fileName);
+ }
return result;
}
bool Engine::generateTone(const Tone &tone)
{
+ reset();
+ Q_ASSERT(!m_generateTone);
Q_ASSERT(!m_file);
m_generateTone = true;
m_tone = tone;
@@ -172,6 +176,7 @@ bool Engine::generateTone(const Tone &tone)
bool Engine::generateSweptTone(qreal amplitude)
{
+ Q_ASSERT(!m_generateTone);
Q_ASSERT(!m_file);
m_generateTone = true;
m_tone.startFreq = 1;
@@ -185,41 +190,18 @@ bool Engine::generateSweptTone(qreal amplitude)
bool Engine::initializeRecord()
{
+ reset();
ENGINE_DEBUG << "Engine::initializeRecord";
+ Q_ASSERT(!m_generateTone);
Q_ASSERT(!m_file);
m_generateTone = false;
m_tone = SweptTone();
return initialize();
}
-qint64 Engine::bufferDuration() const
-{
- return BufferDurationUs;
-}
-
-qint64 Engine::dataDuration() const
+qint64 Engine::bufferLength() const
{
- qint64 result = 0;
- if (QAudioFormat() != m_format)
- result = audioDuration(m_format, m_dataLength);
- return result;
-}
-
-qint64 Engine::audioBufferLength() const
-{
- qint64 length = 0;
- if (QAudio::ActiveState == m_state || QAudio::IdleState == m_state) {
- Q_ASSERT(QAudioFormat() != m_format);
- switch (m_mode) {
- case QAudio::AudioInput:
- length = m_audioInput->bufferSize();
- break;
- case QAudio::AudioOutput:
- length = m_audioOutput->bufferSize();
- break;
- }
- }
- return length;
+ return m_file ? m_file->size() : m_bufferLength;
}
void Engine::setWindowFunction(WindowFunction type)
@@ -252,7 +234,7 @@ void Engine::startRecording()
this, SLOT(audioNotify()));
m_count = 0;
m_dataLength = 0;
- emit dataDurationChanged(0);
+ emit dataLengthChanged(0);
m_audioInputIODevice = m_audioInput->start();
CHECKED_CONNECT(m_audioInputIODevice, SIGNAL(readyRead()),
this, SLOT(audioDataReady()));
@@ -275,7 +257,6 @@ void Engine::startPlayback()
} else {
m_spectrumAnalyser.cancelCalculation();
spectrumChanged(0, 0, FrequencySpectrum());
-
setPlayPosition(0, true);
stopRecording();
m_mode = QAudio::AudioOutput;
@@ -284,10 +265,17 @@ void Engine::startPlayback()
CHECKED_CONNECT(m_audioOutput, SIGNAL(notify()),
this, SLOT(audioNotify()));
m_count = 0;
- m_audioOutputIODevice.close();
- m_audioOutputIODevice.setBuffer(&m_buffer);
- m_audioOutputIODevice.open(QIODevice::ReadOnly);
- m_audioOutput->start(&m_audioOutputIODevice);
+ if (m_file) {
+ m_file->seek(0);
+ m_bufferPosition = 0;
+ m_dataLength = 0;
+ m_audioOutput->start(m_file);
+ } else {
+ m_audioOutputIODevice.close();
+ m_audioOutputIODevice.setBuffer(&m_buffer);
+ m_audioOutputIODevice.open(QIODevice::ReadOnly);
+ m_audioOutput->start(&m_audioOutputIODevice);
+ }
}
}
}
@@ -332,40 +320,55 @@ void Engine::audioNotify()
{
switch (m_mode) {
case QAudio::AudioInput: {
- const qint64 recordPosition =
- qMin(BufferDurationUs, m_audioInput->processedUSecs());
+ const qint64 recordPosition = qMin(m_bufferLength, audioLength(m_format, m_audioInput->processedUSecs()));
setRecordPosition(recordPosition);
-
- // Calculate level of most recently captured data
- qint64 levelLength = audioLength(m_format, LevelWindowUs);
- levelLength = qMin(m_dataLength, levelLength);
- const qint64 levelPosition = m_dataLength - levelLength;
- calculateLevel(levelPosition, levelLength);
-
- // Calculate spectrum of most recently captured data
- if (m_dataLength >= m_spectrumLengthBytes) {
- const qint64 spectrumPosition = m_dataLength - m_spectrumLengthBytes;
+ const qint64 levelPosition = m_dataLength - m_levelBufferLength;
+ if (levelPosition >= 0)
+ calculateLevel(levelPosition, m_levelBufferLength);
+ if (m_dataLength >= m_spectrumBufferLength) {
+ const qint64 spectrumPosition = m_dataLength - m_spectrumBufferLength;
calculateSpectrum(spectrumPosition);
}
+ emit bufferChanged(0, m_dataLength, m_buffer);
}
break;
case QAudio::AudioOutput: {
- const qint64 playPosition =
- qMin(dataDuration(), m_audioOutput->processedUSecs());
- setPlayPosition(playPosition);
-
- qint64 analysisPosition = audioLength(m_format, playPosition);
-
- // Calculate level of data starting at current playback position
- const qint64 levelLength = audioLength(m_format, LevelWindowUs);
- if (analysisPosition + levelLength < m_dataLength)
- calculateLevel(analysisPosition, levelLength);
-
- if (analysisPosition + m_spectrumLengthBytes < m_dataLength)
- calculateSpectrum(analysisPosition);
-
- if (dataDuration() == playPosition)
- stopPlayback();
+ const qint64 playPosition = audioLength(m_format, m_audioOutput->processedUSecs());
+ setPlayPosition(qMin(bufferLength(), playPosition));
+ const qint64 levelPosition = playPosition - m_levelBufferLength;
+ const qint64 spectrumPosition = playPosition - m_spectrumBufferLength;
+ if (m_file) {
+ if (levelPosition > m_bufferPosition ||
+ spectrumPosition > m_bufferPosition ||
+ qMax(m_levelBufferLength, m_spectrumBufferLength) > m_dataLength) {
+ m_bufferPosition = 0;
+ m_dataLength = 0;
+ // Data needs to be read into m_buffer in order to be analysed
+ const qint64 readPos = qMax(qint64(0), qMin(levelPosition, spectrumPosition));
+ const qint64 readEnd = qMin(m_analysisFile->size(), qMax(levelPosition + m_levelBufferLength, spectrumPosition + m_spectrumBufferLength));
+ const qint64 readLen = readEnd - readPos + audioLength(m_format, WaveformWindowDuration);
+ qDebug() << "Engine::audioNotify [1]"
+ << "analysisFileSize" << m_analysisFile->size()
+ << "readPos" << readPos
+ << "readLen" << readLen;
+ if (m_analysisFile->seek(readPos + m_analysisFile->headerLength())) {
+ m_buffer.resize(readLen);
+ m_bufferPosition = readPos;
+ m_dataLength = m_analysisFile->read(m_buffer.data(), readLen);
+ qDebug() << "Engine::audioNotify [2]" << "bufferPosition" << m_bufferPosition << "dataLength" << m_dataLength;
+ } else {
+ qDebug() << "Engine::audioNotify [2]" << "file seek error";
+ }
+ emit bufferChanged(m_bufferPosition, m_dataLength, m_buffer);
+ }
+ } else {
+ if (playPosition >= m_dataLength)
+ stopPlayback();
+ }
+ if (levelPosition >= 0 && levelPosition + m_levelBufferLength < m_bufferPosition + m_dataLength)
+ calculateLevel(levelPosition, m_levelBufferLength);
+ if (spectrumPosition >= 0 && spectrumPosition + m_spectrumBufferLength < m_bufferPosition + m_dataLength)
+ calculateSpectrum(spectrumPosition);
}
break;
}
@@ -376,27 +379,32 @@ void Engine::audioStateChanged(QAudio::State state)
ENGINE_DEBUG << "Engine::audioStateChanged from" << m_state
<< "to" << state;
- if (QAudio::StoppedState == state) {
- // Check error
- QAudio::Error error = QAudio::NoError;
- switch (m_mode) {
- case QAudio::AudioInput:
- error = m_audioInput->error();
- break;
- case QAudio::AudioOutput:
- error = m_audioOutput->error();
- break;
- }
- if (QAudio::NoError != error) {
- reset();
- return;
+ if (QAudio::IdleState == state && m_file && m_file->pos() == m_file->size()) {
+ stopPlayback();
+ } else {
+ if (QAudio::StoppedState == state) {
+ // Check error
+ QAudio::Error error = QAudio::NoError;
+ switch (m_mode) {
+ case QAudio::AudioInput:
+ error = m_audioInput->error();
+ break;
+ case QAudio::AudioOutput:
+ error = m_audioOutput->error();
+ break;
+ }
+ if (QAudio::NoError != error) {
+ reset();
+ return;
+ }
}
+ setState(state);
}
- setState(state);
}
void Engine::audioDataReady()
{
+ Q_ASSERT(0 == m_bufferPosition);
const qint64 bytesReady = m_audioInput->bytesReady();
const qint64 bytesSpace = m_buffer.size() - m_dataLength;
const qint64 bytesToRead = qMin(bytesReady, bytesSpace);
@@ -407,9 +415,7 @@ void Engine::audioDataReady()
if (bytesRead) {
m_dataLength += bytesRead;
-
- const qint64 duration = audioDuration(m_format, m_dataLength);
- emit dataDurationChanged(duration);
+ emit dataLengthChanged(dataLength());
}
if (m_buffer.size() == m_dataLength)
@@ -419,9 +425,7 @@ void Engine::audioDataReady()
void Engine::spectrumChanged(const FrequencySpectrum &spectrum)
{
ENGINE_DEBUG << "Engine::spectrumChanged" << "pos" << m_spectrumPosition;
- const qint64 positionUs = audioDuration(m_format, m_spectrumPosition);
- const qint64 lengthUs = audioDuration(m_format, m_spectrumLengthBytes);
- emit spectrumChanged(positionUs, lengthUs, spectrum);
+ emit spectrumChanged(m_spectrumPosition, m_spectrumBufferLength, spectrum);
}
@@ -429,12 +433,8 @@ void Engine::spectrumChanged(const FrequencySpectrum &spectrum)
// Private functions
//-----------------------------------------------------------------------------
-void Engine::reset()
+void Engine::resetAudioDevices()
{
- stopRecording();
- stopPlayback();
- setState(QAudio::AudioInput, QAudio::StoppedState);
- setFormat(QAudioFormat());
delete m_audioInput;
m_audioInput = 0;
m_audioInputIODevice = 0;
@@ -442,55 +442,71 @@ void Engine::reset()
delete m_audioOutput;
m_audioOutput = 0;
setPlayPosition(0);
- m_buffer.clear();
- m_dataLength = 0;
m_spectrumPosition = 0;
- emit dataDurationChanged(0);
setLevel(0.0, 0.0, 0);
}
+void Engine::reset()
+{
+ stopRecording();
+ stopPlayback();
+ setState(QAudio::AudioInput, QAudio::StoppedState);
+ setFormat(QAudioFormat());
+ m_generateTone = false;
+ delete m_file;
+ m_file = 0;
+ delete m_analysisFile;
+ m_analysisFile = 0;
+ m_buffer.clear();
+ m_bufferPosition = 0;
+ m_bufferLength = 0;
+ m_dataLength = 0;
+ emit dataLengthChanged(0);
+ resetAudioDevices();
+}
+
bool Engine::initialize()
{
bool result = false;
- reset();
+ QAudioFormat format = m_format;
if (selectFormat()) {
- const qint64 bufferLength = audioLength(m_format, BufferDurationUs);
- m_buffer.resize(bufferLength);
- m_buffer.fill(0);
- emit bufferDurationChanged(BufferDurationUs);
-
- if (m_generateTone) {
- if (0 == m_tone.endFreq) {
- const qreal nyquist = nyquistFrequency(m_format);
- m_tone.endFreq = qMin(qreal(SpectrumHighFreq), nyquist);
- }
-
- // Call function defined in utils.h, at global scope
- ::generateTone(m_tone, m_format, m_buffer);
- m_dataLength = m_buffer.size();
- emit dataDurationChanged(bufferDuration());
- setRecordPosition(bufferDuration());
- result = true;
- } else if (m_file) {
- const qint64 length = m_wavFile.readData(*m_file, m_buffer, m_format);
- if (length) {
- m_dataLength = length;
- emit dataDurationChanged(dataDuration());
- setRecordPosition(dataDuration());
+ if (m_format != format) {
+ resetAudioDevices();
+ if (m_file) {
+ emit bufferLengthChanged(bufferLength());
+ emit dataLengthChanged(dataLength());
+ emit bufferChanged(0, 0, m_buffer);
+ setRecordPosition(bufferLength());
result = true;
+ } else {
+ m_bufferLength = audioLength(m_format, BufferDurationUs);
+ m_buffer.resize(m_bufferLength);
+ m_buffer.fill(0);
+ emit bufferLengthChanged(bufferLength());
+ if (m_generateTone) {
+ if (0 == m_tone.endFreq) {
+ const qreal nyquist = nyquistFrequency(m_format);
+ m_tone.endFreq = qMin(qreal(SpectrumHighFreq), nyquist);
+ }
+ // Call function defined in utils.h, at global scope
+ ::generateTone(m_tone, m_format, m_buffer);
+ m_dataLength = m_bufferLength;
+ emit dataLengthChanged(dataLength());
+ emit bufferChanged(0, m_dataLength, m_buffer);
+ setRecordPosition(m_bufferLength);
+ result = true;
+ } else {
+ emit bufferChanged(0, 0, m_buffer);
+ m_audioInput = new QAudioInput(m_audioInputDevice, m_format, this);
+ m_audioInput->setNotifyInterval(NotifyIntervalMs);
+ result = true;
+ }
}
- } else {
- m_audioInput = new QAudioInput(m_audioInputDevice, m_format, this);
- m_audioInput->setNotifyInterval(NotifyIntervalMs);
- result = true;
+ m_audioOutput = new QAudioOutput(m_audioOutputDevice, m_format, this);
+ m_audioOutput->setNotifyInterval(NotifyIntervalMs);
}
-
- m_audioOutput = new QAudioOutput(m_audioOutputDevice, m_format, this);
- m_audioOutput->setNotifyInterval(NotifyIntervalMs);
- m_spectrumLengthBytes = SpectrumLengthSamples *
- (m_format.sampleSize() / 8) * m_format.channels();
} else {
if (m_file)
emit errorMessage(tr("Audio format not supported"),
@@ -501,6 +517,8 @@ bool Engine::initialize()
emit errorMessage(tr("No common input / output format found"), "");
}
+ ENGINE_DEBUG << "Engine::initialize" << "m_bufferLength" << m_bufferLength;
+ ENGINE_DEBUG << "Engine::initialize" << "m_dataLength" << m_dataLength;
ENGINE_DEBUG << "Engine::initialize" << "format" << m_format;
return result;
@@ -510,21 +528,15 @@ bool Engine::selectFormat()
{
bool foundSupportedFormat = false;
- if (m_file) {
- // Header is read from the WAV file; just need to check whether
- // it is supported by the audio output device
- QAudioFormat format = m_wavFile.format();
- if (m_audioOutputDevice.isFormatSupported(m_wavFile.format())) {
- setFormat(m_wavFile.format());
+ if (m_file || QAudioFormat() != m_format) {
+ QAudioFormat format = m_format;
+ if (m_file)
+ // Header is read from the WAV file; just need to check whether
+ // it is supported by the audio output device
+ format = m_file->fileFormat();
+ if (m_audioOutputDevice.isFormatSupported(format)) {
+ setFormat(format);
foundSupportedFormat = true;
- } else {
- // Try flipping mono <-> stereo
- const int channels = (format.channels() == 1) ? 2 : 1;
- format.setChannels(channels);
- if (m_audioOutputDevice.isFormatSupported(format)) {
- setFormat(format);
- foundSupportedFormat = true;
- }
}
} else {
@@ -648,12 +660,12 @@ void Engine::calculateLevel(qint64 position, qint64 length)
Q_UNUSED(position)
Q_UNUSED(length)
#else
- Q_ASSERT(position + length <= m_dataLength);
+ Q_ASSERT(position + length <= m_bufferPosition + m_dataLength);
qreal peakLevel = 0.0;
qreal sum = 0.0;
- const char *ptr = m_buffer.constData() + position;
+ const char *ptr = m_buffer.constData() + position - m_bufferPosition;
const char *const end = ptr + length;
while (ptr < end) {
const qint16 value = *reinterpret_cast<const qint16*>(ptr);
@@ -679,18 +691,18 @@ void Engine::calculateSpectrum(qint64 position)
#ifdef DISABLE_SPECTRUM
Q_UNUSED(position)
#else
- Q_ASSERT(position + m_spectrumLengthBytes <= m_dataLength);
- Q_ASSERT(0 == m_spectrumLengthBytes % 2); // constraint of FFT algorithm
+ Q_ASSERT(position + m_spectrumBufferLength <= m_bufferPosition + m_dataLength);
+ Q_ASSERT(0 == m_spectrumBufferLength % 2); // constraint of FFT algorithm
// QThread::currentThread is marked 'for internal use only', but
// we're only using it for debug output here, so it's probably OK :)
ENGINE_DEBUG << "Engine::calculateSpectrum" << QThread::currentThread()
- << "count" << m_count << "pos" << position << "len" << m_spectrumLengthBytes
+ << "count" << m_count << "pos" << position << "len" << m_spectrumBufferLength
<< "spectrumAnalyser.isReady" << m_spectrumAnalyser.isReady();
if(m_spectrumAnalyser.isReady()) {
- m_spectrumBuffer = QByteArray::fromRawData(m_buffer.constData() + position,
- m_spectrumLengthBytes);
+ m_spectrumBuffer = QByteArray::fromRawData(m_buffer.constData() + position - m_bufferPosition,
+ m_spectrumBufferLength);
m_spectrumPosition = position;
m_spectrumAnalyser.calculate(m_spectrumBuffer, m_format);
}
@@ -701,6 +713,9 @@ void Engine::setFormat(const QAudioFormat &format)
{
const bool changed = (format != m_format);
m_format = format;
+ m_levelBufferLength = audioLength(m_format, LevelWindowUs);
+ m_spectrumBufferLength = SpectrumLengthSamples *
+ (m_format.sampleSize() / 8) * m_format.channels();
if (changed)
emit formatChanged(m_format);
}
diff --git a/demos/spectrum/app/engine.h b/demos/spectrum/app/engine.h
index b6fe3ed4e5..c97083e9de 100644
--- a/demos/spectrum/app/engine.h
+++ b/demos/spectrum/app/engine.h
@@ -91,12 +91,6 @@ public:
QAudio::State state() const { return m_state; }
/**
- * \return Reference to internal audio buffer
- * \note This reference is valid for the lifetime of the Engine
- */
- const QByteArray& buffer() const { return m_buffer; }
-
- /**
* \return Current audio format
* \note May be QAudioFormat() if engine is not initialized
*/
@@ -129,7 +123,7 @@ public:
/**
* Position of the audio input device.
- * \return Position in microseconds.
+ * \return Position in bytes.
*/
qint64 recordPosition() const { return m_recordPosition; }
@@ -147,27 +141,21 @@ public:
/**
* Position of the audio output device.
- * \return Position in microseconds.
+ * \return Position in bytes.
*/
qint64 playPosition() const { return m_playPosition; }
/**
* Length of the internal engine buffer.
- * \return Buffer length in microseconds.
+ * \return Buffer length in bytes.
*/
- qint64 bufferDuration() const;
+ qint64 bufferLength() const;
/**
* Amount of data held in the buffer.
- * \return Data duration in microseconds.
+ * \return Data length in bytes.
*/
- qint64 dataDuration() const;
-
- /**
- * Returns the size of the underlying audio buffer in bytes.
- * This should be an approximation of the capture latency.
- */
- qint64 audioBufferLength() const;
+ qint64 dataLength() const { return m_dataLength; }
/**
* Set window function applied to audio data before spectral analysis.
@@ -203,23 +191,23 @@ signals:
* Length of buffer has changed.
* \param duration Duration in microseconds
*/
- void bufferDurationChanged(qint64 duration);
+ void bufferLengthChanged(qint64 duration);
/**
* Amount of data in buffer has changed.
- * \param duration Duration of data in microseconds
+ * \param Length of data in bytes
*/
- void dataDurationChanged(qint64 duration);
+ void dataLengthChanged(qint64 duration);
/**
* Position of the audio input device has changed.
- * \param position Position in microseconds
+ * \param position Position in bytes
*/
void recordPositionChanged(qint64 position);
/**
* Position of the audio output device has changed.
- * \param position Position in microseconds
+ * \param position Position in bytes
*/
void playPositionChanged(qint64 position);
@@ -227,18 +215,25 @@ signals:
* Level changed
* \param rmsLevel RMS level in range 0.0 - 1.0
* \param peakLevel Peak level in range 0.0 - 1.0
- * \param numSamples Number of audio samples analysed
+ * \param numSamples Number of audio samples analyzed
*/
void levelChanged(qreal rmsLevel, qreal peakLevel, int numSamples);
/**
* Spectrum has changed.
- * \param position Position of start of window in microseconds
- * \param length Length of window in microseconds
+ * \param position Position of start of window in bytes
+ * \param length Length of window in bytes
* \param spectrum Resulting frequency spectrum
*/
void spectrumChanged(qint64 position, qint64 length, const FrequencySpectrum &spectrum);
+ /**
+ * Buffer containing audio data has changed.
+ * \param position Position of start of buffer in bytes
+ * \param buffer Buffer
+ */
+ void bufferChanged(qint64 position, qint64 length, const QByteArray &buffer);
+
private slots:
void audioNotify();
void audioStateChanged(QAudio::State state);
@@ -246,6 +241,7 @@ private slots:
void spectrumChanged(const FrequencySpectrum &spectrum);
private:
+ void resetAudioDevices();
bool initialize();
bool selectFormat();
void stopRecording();
@@ -275,8 +271,10 @@ private:
bool m_generateTone;
SweptTone m_tone;
- QFile* m_file;
- WavFile m_wavFile;
+ WavFile* m_file;
+ // We need a second file handle via which to read data into m_buffer
+ // for analysis
+ WavFile* m_analysisFile;
QAudioFormat m_format;
@@ -293,12 +291,15 @@ private:
QBuffer m_audioOutputIODevice;
QByteArray m_buffer;
+ qint64 m_bufferPosition;
+ qint64 m_bufferLength;
qint64 m_dataLength;
+ int m_levelBufferLength;
qreal m_rmsLevel;
qreal m_peakLevel;
- int m_spectrumLengthBytes;
+ int m_spectrumBufferLength;
QByteArray m_spectrumBuffer;
SpectrumAnalyser m_spectrumAnalyser;
qint64 m_spectrumPosition;
diff --git a/demos/spectrum/app/levelmeter.h b/demos/spectrum/app/levelmeter.h
index 38d13b1582..683dba778c 100644
--- a/demos/spectrum/app/levelmeter.h
+++ b/demos/spectrum/app/levelmeter.h
@@ -46,7 +46,7 @@
/**
* Widget which displays a vertical audio level meter, indicating the
- * RMS and peak levels of the window of audio samples most recently analysed
+ * RMS and peak levels of the window of audio samples most recently analyzed
* by the Engine.
*/
class LevelMeter : public QWidget {
diff --git a/demos/spectrum/app/main.cpp b/demos/spectrum/app/main.cpp
index 3bdfb7d45c..fb5183e7dc 100644
--- a/demos/spectrum/app/main.cpp
+++ b/demos/spectrum/app/main.cpp
@@ -44,7 +44,7 @@
int main(int argc, char **argv)
{
QApplication app(argc, argv);
- app.setApplicationName("QtMultimedia spectrum analyser");
+ app.setApplicationName("QtMultimedia spectrum analyzer");
MainWidget w;
#ifdef Q_OS_SYMBIAN
diff --git a/demos/spectrum/app/mainwidget.cpp b/demos/spectrum/app/mainwidget.cpp
index dd51a91d14..4b53bbecdb 100644
--- a/demos/spectrum/app/mainwidget.cpp
+++ b/demos/spectrum/app/mainwidget.cpp
@@ -65,7 +65,7 @@ MainWidget::MainWidget(QWidget *parent)
, m_mode(NoMode)
, m_engine(new Engine(this))
#ifndef DISABLE_WAVEFORM
- , m_waveform(new Waveform(m_engine->buffer(), this))
+ , m_waveform(new Waveform(this))
#endif
, m_progressBar(new ProgressBar(this))
, m_spectrograph(new Spectrograph(this))
@@ -166,19 +166,18 @@ void MainWidget::timerEvent(QTimerEvent *event)
m_infoMessage->setText("");
}
-void MainWidget::positionChanged(qint64 positionUs)
+void MainWidget::audioPositionChanged(qint64 position)
{
#ifndef DISABLE_WAVEFORM
- qint64 positionBytes = audioLength(m_engine->format(), positionUs);
- m_waveform->positionChanged(positionBytes);
+ m_waveform->audioPositionChanged(position);
#else
- Q_UNUSED(positionUs)
+ Q_UNUSED(position)
#endif
}
-void MainWidget::bufferDurationChanged(qint64 durationUs)
+void MainWidget::bufferLengthChanged(qint64 length)
{
- m_progressBar->bufferDurationChanged(durationUs);
+ m_progressBar->bufferLengthChanged(length);
}
@@ -186,33 +185,22 @@ void MainWidget::bufferDurationChanged(qint64 durationUs)
// Private slots
//-----------------------------------------------------------------------------
-void MainWidget::dataDurationChanged(qint64 duration)
-{
-#ifndef DISABLE_WAVEFORM
- const qint64 dataLength = audioLength(m_engine->format(), duration);
- m_waveform->dataLengthChanged(dataLength);
-#else
- Q_UNUSED(duration)
-#endif
-
- updateButtonStates();
-}
-
void MainWidget::showFileDialog()
{
- reset();
const QString dir;
const QStringList fileNames = QFileDialog::getOpenFileNames(this, tr("Open WAV file"), dir, "*.wav");
if (fileNames.count()) {
+ reset();
setMode(LoadFileMode);
m_engine->loadFile(fileNames.front());
updateButtonStates();
+ } else {
+ updateModeMenu();
}
}
void MainWidget::showSettingsDialog()
{
- reset();
m_settingsDialog->exec();
if (m_settingsDialog->result() == QDialog::Accepted) {
m_engine->setAudioInputDevice(m_settingsDialog->inputDevice());
@@ -223,9 +211,9 @@ void MainWidget::showSettingsDialog()
void MainWidget::showToneGeneratorDialog()
{
- reset();
m_toneGeneratorDialog->exec();
if (m_toneGeneratorDialog->result() == QDialog::Accepted) {
+ reset();
setMode(GenerateToneMode);
const qreal amplitude = m_toneGeneratorDialog->amplitude();
if (m_toneGeneratorDialog->isFrequencySweepEnabled()) {
@@ -236,6 +224,8 @@ void MainWidget::showToneGeneratorDialog()
m_engine->generateTone(tone);
updateButtonStates();
}
+ } else {
+ updateModeMenu();
}
}
@@ -360,13 +350,13 @@ void MainWidget::connectUi()
CHECKED_CONNECT(m_engine, SIGNAL(formatChanged(const QAudioFormat &)),
this, SLOT(formatChanged(const QAudioFormat &)));
- m_progressBar->bufferDurationChanged(m_engine->bufferDuration());
+ m_progressBar->bufferLengthChanged(m_engine->bufferLength());
- CHECKED_CONNECT(m_engine, SIGNAL(bufferDurationChanged(qint64)),
- this, SLOT(bufferDurationChanged(qint64)));
+ CHECKED_CONNECT(m_engine, SIGNAL(bufferLengthChanged(qint64)),
+ this, SLOT(bufferLengthChanged(qint64)));
- CHECKED_CONNECT(m_engine, SIGNAL(dataDurationChanged(qint64)),
- this, SLOT(dataDurationChanged(qint64)));
+ CHECKED_CONNECT(m_engine, SIGNAL(dataLengthChanged(qint64)),
+ this, SLOT(updateButtonStates()));
CHECKED_CONNECT(m_engine, SIGNAL(recordPositionChanged(qint64)),
m_progressBar, SLOT(recordPositionChanged(qint64)));
@@ -375,10 +365,10 @@ void MainWidget::connectUi()
m_progressBar, SLOT(playPositionChanged(qint64)));
CHECKED_CONNECT(m_engine, SIGNAL(recordPositionChanged(qint64)),
- this, SLOT(positionChanged(qint64)));
+ this, SLOT(audioPositionChanged(qint64)));
CHECKED_CONNECT(m_engine, SIGNAL(playPositionChanged(qint64)),
- this, SLOT(positionChanged(qint64)));
+ this, SLOT(audioPositionChanged(qint64)));
CHECKED_CONNECT(m_engine, SIGNAL(levelChanged(qreal, qreal, int)),
m_levelMeter, SLOT(levelChanged(qreal, qreal, int)));
@@ -394,6 +384,11 @@ void MainWidget::connectUi()
CHECKED_CONNECT(m_spectrograph, SIGNAL(infoMessage(QString, int)),
this, SLOT(infoMessage(QString, int)));
+
+#ifndef DISABLE_WAVEFORM
+ CHECKED_CONNECT(m_engine, SIGNAL(bufferChanged(qint64, qint64, const QByteArray &)),
+ m_waveform, SLOT(bufferChanged(qint64, qint64, const QByteArray &)));
+#endif
}
void MainWidget::createMenus()
@@ -425,7 +420,7 @@ void MainWidget::updateButtonStates()
QAudio::IdleState == m_engine->state());
m_pauseButton->setEnabled(pauseEnabled);
- const bool playEnabled = (m_engine->dataDuration() &&
+ const bool playEnabled = (/*m_engine->dataLength() &&*/
(QAudio::AudioOutput != m_engine->mode() ||
(QAudio::ActiveState != m_engine->state() &&
QAudio::IdleState != m_engine->state())));
@@ -445,10 +440,14 @@ void MainWidget::reset()
void MainWidget::setMode(Mode mode)
{
-
m_mode = mode;
- m_loadFileAction->setChecked(LoadFileMode == mode);
- m_generateToneAction->setChecked(GenerateToneMode == mode);
- m_recordAction->setChecked(RecordMode == mode);
+ updateModeMenu();
+}
+
+void MainWidget::updateModeMenu()
+{
+ m_loadFileAction->setChecked(LoadFileMode == m_mode);
+ m_generateToneAction->setChecked(GenerateToneMode == m_mode);
+ m_recordAction->setChecked(RecordMode == m_mode);
}
diff --git a/demos/spectrum/app/mainwidget.h b/demos/spectrum/app/mainwidget.h
index ddab8b7cfe..13131c0403 100644
--- a/demos/spectrum/app/mainwidget.h
+++ b/demos/spectrum/app/mainwidget.h
@@ -80,21 +80,21 @@ public slots:
const FrequencySpectrum &spectrum);
void infoMessage(const QString &message, int timeoutMs);
void errorMessage(const QString &heading, const QString &detail);
- void positionChanged(qint64 position);
- void bufferDurationChanged(qint64 duration);
+ void audioPositionChanged(qint64 position);
+ void bufferLengthChanged(qint64 length);
private slots:
void showFileDialog();
void showSettingsDialog();
void showToneGeneratorDialog();
void initializeRecord();
- void dataDurationChanged(qint64 duration);
+ void updateModeMenu();
+ void updateButtonStates();
private:
void createUi();
void createMenus();
void connectUi();
- void updateButtonStates();
void reset();
enum Mode {
@@ -111,7 +111,9 @@ private:
Engine* m_engine;
+#ifndef DISABLE_WAVEFORM
Waveform* m_waveform;
+#endif
ProgressBar* m_progressBar;
Spectrograph* m_spectrograph;
LevelMeter* m_levelMeter;
diff --git a/demos/spectrum/app/progressbar.cpp b/demos/spectrum/app/progressbar.cpp
index 6bfc69052e..0ac76f1671 100644
--- a/demos/spectrum/app/progressbar.cpp
+++ b/demos/spectrum/app/progressbar.cpp
@@ -44,7 +44,7 @@
ProgressBar::ProgressBar(QWidget *parent)
: QWidget(parent)
- , m_bufferDuration(0)
+ , m_bufferLength(0)
, m_recordPosition(0)
, m_playPosition(0)
, m_windowPosition(0)
@@ -64,7 +64,7 @@ ProgressBar::~ProgressBar()
void ProgressBar::reset()
{
- m_bufferDuration = 0;
+ m_bufferLength = 0;
m_recordPosition = 0;
m_playPosition = 0;
m_windowPosition = 0;
@@ -86,26 +86,26 @@ void ProgressBar::paintEvent(QPaintEvent * /*event*/)
painter.fillRect(rect(), Qt::black);
#endif
- if (m_bufferDuration) {
+ if (m_bufferLength) {
QRect bar = rect();
- const qreal play = qreal(m_playPosition) / m_bufferDuration;
+ const qreal play = qreal(m_playPosition) / m_bufferLength;
bar.setLeft(rect().left() + play * rect().width());
- const qreal record = qreal(m_recordPosition) / m_bufferDuration;
+ const qreal record = qreal(m_recordPosition) / m_bufferLength;
bar.setRight(rect().left() + record * rect().width());
painter.fillRect(bar, bufferColor);
QRect window = rect();
- const qreal windowLeft = qreal(m_windowPosition) / m_bufferDuration;
+ const qreal windowLeft = qreal(m_windowPosition) / m_bufferLength;
window.setLeft(rect().left() + windowLeft * rect().width());
- const qreal windowWidth = qreal(m_windowLength) / m_bufferDuration;
+ const qreal windowWidth = qreal(m_windowLength) / m_bufferLength;
window.setWidth(windowWidth * rect().width());
painter.fillRect(window, windowColor);
}
}
-void ProgressBar::bufferDurationChanged(qint64 bufferSize)
+void ProgressBar::bufferLengthChanged(qint64 bufferSize)
{
- m_bufferDuration = bufferSize;
+ m_bufferLength = bufferSize;
m_recordPosition = 0;
m_playPosition = 0;
m_windowPosition = 0;
@@ -116,7 +116,7 @@ void ProgressBar::bufferDurationChanged(qint64 bufferSize)
void ProgressBar::recordPositionChanged(qint64 recordPosition)
{
Q_ASSERT(recordPosition >= 0);
- Q_ASSERT(recordPosition <= m_bufferDuration);
+ Q_ASSERT(recordPosition <= m_bufferLength);
m_recordPosition = recordPosition;
repaint();
}
@@ -124,7 +124,7 @@ void ProgressBar::recordPositionChanged(qint64 recordPosition)
void ProgressBar::playPositionChanged(qint64 playPosition)
{
Q_ASSERT(playPosition >= 0);
- Q_ASSERT(playPosition <= m_bufferDuration);
+ Q_ASSERT(playPosition <= m_bufferLength);
m_playPosition = playPosition;
repaint();
}
@@ -132,8 +132,8 @@ void ProgressBar::playPositionChanged(qint64 playPosition)
void ProgressBar::windowChanged(qint64 position, qint64 length)
{
Q_ASSERT(position >= 0);
- Q_ASSERT(position <= m_bufferDuration);
- Q_ASSERT(position + length <= m_bufferDuration);
+ Q_ASSERT(position <= m_bufferLength);
+ Q_ASSERT(position + length <= m_bufferLength);
m_windowPosition = position;
m_windowLength = length;
repaint();
diff --git a/demos/spectrum/app/progressbar.h b/demos/spectrum/app/progressbar.h
index 8514adb2f9..e715cf52f3 100644
--- a/demos/spectrum/app/progressbar.h
+++ b/demos/spectrum/app/progressbar.h
@@ -57,13 +57,13 @@ public:
void paintEvent(QPaintEvent *event);
public slots:
- void bufferDurationChanged(qint64 bufferSize);
+ void bufferLengthChanged(qint64 length);
void recordPositionChanged(qint64 recordPosition);
void playPositionChanged(qint64 playPosition);
void windowChanged(qint64 position, qint64 length);
private:
- qint64 m_bufferDuration;
+ qint64 m_bufferLength;
qint64 m_recordPosition;
qint64 m_playPosition;
qint64 m_windowPosition;
diff --git a/demos/spectrum/app/spectrograph.h b/demos/spectrum/app/spectrograph.h
index ce59d90a0e..fa4a6cf106 100644
--- a/demos/spectrum/app/spectrograph.h
+++ b/demos/spectrum/app/spectrograph.h
@@ -48,7 +48,7 @@ QT_FORWARD_DECLARE_CLASS(QMouseEvent)
/**
* Widget which displays a spectrograph showing the frequency spectrum
- * of the window of audio samples most recently analysed by the Engine.
+ * of the window of audio samples most recently analyzed by the Engine.
*/
class Spectrograph : public QWidget {
Q_OBJECT
diff --git a/demos/spectrum/app/spectrumanalyser.cpp b/demos/spectrum/app/spectrumanalyser.cpp
index c467f6189e..2fa17b1433 100644
--- a/demos/spectrum/app/spectrumanalyser.cpp
+++ b/demos/spectrum/app/spectrumanalyser.cpp
@@ -64,6 +64,8 @@ SpectrumAnalyserThread::SpectrumAnalyserThread(QObject *parent)
#endif
{
#ifdef SPECTRUM_ANALYSER_SEPARATE_THREAD
+ // moveToThread() cannot be called on a QObject with a parent
+ setParent(0);
moveToThread(m_thread);
m_thread->start();
#endif
@@ -124,7 +126,7 @@ void SpectrumAnalyserThread::calculateSpectrum(const QByteArray &buffer,
// Calculate the FFT
m_fft->calculateFFT(m_output.data(), m_input.data());
- // Analyse output to obtain amplitude and phase for each frequency
+ // Analyze output to obtain amplitude and phase for each frequency
for (int i=2; i<=m_numSamples/2; ++i) {
// Calculate frequency of this complex sample
m_spectrum[i].frequency = qreal(i * inputFrequency) / (m_numSamples);
diff --git a/demos/spectrum/app/utils.cpp b/demos/spectrum/app/utils.cpp
index 4ead6c266d..49a762618f 100644
--- a/demos/spectrum/app/utils.cpp
+++ b/demos/spectrum/app/utils.cpp
@@ -49,8 +49,10 @@ qint64 audioDuration(const QAudioFormat &format, qint64 bytes)
qint64 audioLength(const QAudioFormat &format, qint64 microSeconds)
{
- return (format.frequency() * format.channels() * (format.sampleSize() / 8))
+ qint64 result = (format.frequency() * format.channels() * (format.sampleSize() / 8))
* microSeconds / 1000000;
+ result -= result % (format.channelCount() * format.sampleSize());
+ return result;
}
qreal nyquistFrequency(const QAudioFormat &format)
diff --git a/demos/spectrum/app/waveform.cpp b/demos/spectrum/app/waveform.cpp
index 1f7d315efe..bd854c0472 100644
--- a/demos/spectrum/app/waveform.cpp
+++ b/demos/spectrum/app/waveform.cpp
@@ -44,12 +44,18 @@
#include <QResizeEvent>
#include <QDebug>
-
-Waveform::Waveform(const QByteArray &buffer, QWidget *parent)
+//#define PAINT_EVENT_TRACE
+#ifdef PAINT_EVENT_TRACE
+# define WAVEFORM_PAINT_DEBUG qDebug()
+#else
+# define WAVEFORM_PAINT_DEBUG nullDebug()
+#endif
+
+Waveform::Waveform(QWidget *parent)
: QWidget(parent)
- , m_buffer(buffer)
- , m_dataLength(0)
- , m_position(0)
+ , m_bufferPosition(0)
+ , m_bufferLength(0)
+ , m_audioPosition(0)
, m_active(false)
, m_tileLength(0)
, m_tileArrayStart(0)
@@ -72,19 +78,19 @@ void Waveform::paintEvent(QPaintEvent * /*event*/)
painter.fillRect(rect(), Qt::black);
if (m_active) {
- WAVEFORM_DEBUG << "Waveform::paintEvent"
- << "windowPosition" << m_windowPosition
- << "windowLength" << m_windowLength;
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent"
+ << "windowPosition" << m_windowPosition
+ << "windowLength" << m_windowLength;
qint64 pos = m_windowPosition;
const qint64 windowEnd = m_windowPosition + m_windowLength;
int destLeft = 0;
int destRight = 0;
while (pos < windowEnd) {
const TilePoint point = tilePoint(pos);
- WAVEFORM_DEBUG << "Waveform::paintEvent" << "pos" << pos
- << "tileIndex" << point.index
- << "positionOffset" << point.positionOffset
- << "pixelOffset" << point.pixelOffset;
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "pos" << pos
+ << "tileIndex" << point.index
+ << "positionOffset" << point.positionOffset
+ << "pixelOffset" << point.pixelOffset;
if (point.index != NullIndex) {
const Tile &tile = m_tiles[point.index];
@@ -104,9 +110,9 @@ void Waveform::paintEvent(QPaintEvent * /*event*/)
sourceRect.setLeft(point.pixelOffset);
sourceRect.setRight(sourceRight);
- WAVEFORM_DEBUG << "Waveform::paintEvent" << "tileIndex" << point.index
- << "source" << point.pixelOffset << sourceRight
- << "dest" << destLeft << destRight;
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "tileIndex" << point.index
+ << "source" << point.pixelOffset << sourceRight
+ << "dest" << destLeft << destRight;
painter.drawPixmap(destRect, *tile.pixmap, sourceRect);
@@ -114,25 +120,25 @@ void Waveform::paintEvent(QPaintEvent * /*event*/)
if (point.index < m_tiles.count()) {
pos = tilePosition(point.index + 1);
- WAVEFORM_DEBUG << "Waveform::paintEvent" << "pos ->" << pos;
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "pos ->" << pos;
} else {
// Reached end of tile array
- WAVEFORM_DEBUG << "Waveform::paintEvent" << "reached end of tile array";
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "reached end of tile array";
break;
}
} else {
// Passed last tile which is painted
- WAVEFORM_DEBUG << "Waveform::paintEvent" << "tile" << point.index << "not painted";
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "tile" << point.index << "not painted";
break;
}
} else {
// pos is past end of tile array
- WAVEFORM_DEBUG << "Waveform::paintEvent" << "pos" << pos << "past end of tile array";
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "pos" << pos << "past end of tile array";
break;
}
}
- WAVEFORM_DEBUG << "Waveform::paintEvent" << "final pos" << pos << "final x" << destRight;
+ WAVEFORM_PAINT_DEBUG << "Waveform::paintEvent" << "final pos" << pos << "final x" << destRight;
}
}
@@ -146,7 +152,6 @@ void Waveform::initialize(const QAudioFormat &format, qint64 audioBufferSize, qi
{
WAVEFORM_DEBUG << "Waveform::initialize"
<< "audioBufferSize" << audioBufferSize
- << "m_buffer.size()" << m_buffer.size()
<< "windowDurationUs" << windowDurationUs;
reset();
@@ -186,8 +191,9 @@ void Waveform::reset()
{
WAVEFORM_DEBUG << "Waveform::reset";
- m_dataLength = 0;
- m_position = 0;
+ m_bufferPosition = 0;
+ m_buffer = QByteArray();
+ m_audioPosition = 0;
m_format = QAudioFormat();
m_active = false;
deletePixmaps();
@@ -198,30 +204,31 @@ void Waveform::reset()
m_windowLength = 0;
}
-void Waveform::dataLengthChanged(qint64 length)
+void Waveform::bufferChanged(qint64 position, qint64 length, const QByteArray &buffer)
{
- WAVEFORM_DEBUG << "Waveform::dataLengthChanged" << length;
- const qint64 oldLength = m_dataLength;
- m_dataLength = length;
-
- if (m_active) {
- if (m_dataLength < oldLength)
- positionChanged(m_dataLength);
- else
- paintTiles();
- }
+ WAVEFORM_DEBUG << "Waveform::bufferChanged"
+ << "audioPosition" << m_audioPosition
+ << "bufferPosition" << position
+ << "bufferLength" << length;
+ m_bufferPosition = position;
+ m_bufferLength = length;
+ m_buffer = buffer;
+ paintTiles();
}
-void Waveform::positionChanged(qint64 position)
+void Waveform::audioPositionChanged(qint64 position)
{
- WAVEFORM_DEBUG << "Waveform::positionChanged" << position;
-
- if (position + m_windowLength > m_dataLength)
- position = m_dataLength - m_windowLength;
-
- m_position = position;
-
- setWindowPosition(position);
+ WAVEFORM_DEBUG << "Waveform::audioPositionChanged"
+ << "audioPosition" << position
+ << "bufferPosition" << m_bufferPosition
+ << "bufferLength" << m_bufferLength;
+
+ if (position >= m_bufferPosition) {
+ if (position + m_windowLength > m_bufferPosition + m_bufferLength)
+ position = qMax(qint64(0), m_bufferPosition + m_bufferLength - m_windowLength);
+ m_audioPosition = position;
+ setWindowPosition(position);
+ }
}
void Waveform::deletePixmaps()
@@ -255,8 +262,6 @@ void Waveform::createPixmaps(const QSize &widgetSize)
m_tiles[i].pixmap = m_pixmaps[i];
m_tiles[i].painted = false;
}
-
- paintTiles();
}
void Waveform::setWindowPosition(qint64 position)
@@ -327,8 +332,9 @@ bool Waveform::paintTiles()
for (int i=0; i<m_tiles.count(); ++i) {
const Tile &tile = m_tiles[i];
if (!tile.painted) {
- const qint64 tileEnd = m_tileArrayStart + (i + 1) * m_tileLength;
- if (m_dataLength >= tileEnd) {
+ const qint64 tileStart = m_tileArrayStart + i * m_tileLength;
+ const qint64 tileEnd = tileStart + m_tileLength;
+ if (m_bufferPosition <= tileStart && m_bufferPosition + m_bufferLength >= tileEnd) {
paintTile(i);
updateRequired = true;
}
@@ -343,16 +349,23 @@ bool Waveform::paintTiles()
void Waveform::paintTile(int index)
{
- WAVEFORM_DEBUG << "Waveform::paintTile" << "index" << index;
-
const qint64 tileStart = m_tileArrayStart + index * m_tileLength;
- Q_ASSERT(m_dataLength >= tileStart + m_tileLength);
+
+ WAVEFORM_DEBUG << "Waveform::paintTile"
+ << "index" << index
+ << "bufferPosition" << m_bufferPosition
+ << "bufferLength" << m_bufferLength
+ << "start" << tileStart
+ << "end" << tileStart + m_tileLength;
+
+ Q_ASSERT(m_bufferPosition <= tileStart);
+ Q_ASSERT(m_bufferPosition + m_bufferLength >= tileStart + m_tileLength);
Tile &tile = m_tiles[index];
Q_ASSERT(!tile.painted);
const qint16* base = reinterpret_cast<const qint16*>(m_buffer.constData());
- const qint16* buffer = base + (tileStart / 2);
+ const qint16* buffer = base + ((tileStart - m_bufferPosition) / 2);
const int numSamples = m_tileLength / (2 * m_format.channels());
QPainter painter(tile.pixmap);
@@ -376,6 +389,11 @@ void Waveform::paintTile(int index)
for (int i=0; i<numSamples; ++i) {
const qint16* ptr = buffer + i * m_format.channels();
+
+ const int offset = reinterpret_cast<const char*>(ptr) - m_buffer.constData();
+ Q_ASSERT(offset >= 0);
+ Q_ASSERT(offset < m_bufferLength);
+
const qint16 pcmValue = *ptr;
const qreal realValue = pcmToReal(pcmValue);
diff --git a/demos/spectrum/app/waveform.h b/demos/spectrum/app/waveform.h
index 57c9eec2d7..1c54c86739 100644
--- a/demos/spectrum/app/waveform.h
+++ b/demos/spectrum/app/waveform.h
@@ -60,7 +60,7 @@ QT_FORWARD_DECLARE_CLASS(QByteArray)
class Waveform : public QWidget {
Q_OBJECT
public:
- Waveform(const QByteArray &buffer, QWidget *parent = 0);
+ Waveform(QWidget *parent = 0);
~Waveform();
// QWidget
@@ -73,8 +73,8 @@ public:
void setAutoUpdatePosition(bool enabled);
public slots:
- void dataLengthChanged(qint64 length);
- void positionChanged(qint64 position);
+ void bufferChanged(qint64 position, qint64 length, const QByteArray &buffer);
+ void audioPositionChanged(qint64 position);
private:
static const int NullIndex = -1;
@@ -167,9 +167,11 @@ private:
void resetTiles(qint64 newStartPos);
private:
- const QByteArray& m_buffer;
- qint64 m_dataLength;
- qint64 m_position;
+ qint64 m_bufferPosition;
+ qint64 m_bufferLength;
+ QByteArray m_buffer;
+
+ qint64 m_audioPosition;
QAudioFormat m_format;
bool m_active;
diff --git a/demos/spectrum/app/wavfile.cpp b/demos/spectrum/app/wavfile.cpp
index b9467e3218..44c3ac5c02 100644
--- a/demos/spectrum/app/wavfile.cpp
+++ b/demos/spectrum/app/wavfile.cpp
@@ -76,171 +76,76 @@ struct CombinedHeader
{
RIFFHeader riff;
WAVEHeader wave;
- DATAHeader data;
};
-static const int HeaderLength = sizeof(CombinedHeader);
-
-
-WavFile::WavFile(const QAudioFormat &format, qint64 dataLength)
- : m_format(format)
- , m_dataLength(dataLength)
-{
-
-}
-
-bool WavFile::readHeader(QIODevice &device)
-{
- bool result = true;
-
- if (!device.isSequential())
- result = device.seek(0);
- // else, assume that current position is the start of the header
-
- if (result) {
- CombinedHeader header;
- result = (device.read(reinterpret_cast<char *>(&header), HeaderLength) == HeaderLength);
- if (result) {
- if ((memcmp(&header.riff.descriptor.id, "RIFF", 4) == 0
- || memcmp(&header.riff.descriptor.id, "RIFX", 4) == 0)
- && memcmp(&header.riff.type, "WAVE", 4) == 0
- && memcmp(&header.wave.descriptor.id, "fmt ", 4) == 0
- && header.wave.audioFormat == 1 // PCM
- ) {
- if (memcmp(&header.riff.descriptor.id, "RIFF", 4) == 0)
- m_format.setByteOrder(QAudioFormat::LittleEndian);
- else
- m_format.setByteOrder(QAudioFormat::BigEndian);
-
- m_format.setChannels(qFromLittleEndian<quint16>(header.wave.numChannels));
- m_format.setCodec("audio/pcm");
- m_format.setFrequency(qFromLittleEndian<quint32>(header.wave.sampleRate));
- m_format.setSampleSize(qFromLittleEndian<quint16>(header.wave.bitsPerSample));
-
- switch(header.wave.bitsPerSample) {
- case 8:
- m_format.setSampleType(QAudioFormat::UnSignedInt);
- break;
- case 16:
- m_format.setSampleType(QAudioFormat::SignedInt);
- break;
- default:
- result = false;
- }
-
- m_dataLength = device.size() - HeaderLength;
- } else {
- result = false;
- }
- }
- }
-
- return result;
-}
-
-bool WavFile::writeHeader(QIODevice &device)
+WavFile::WavFile(QObject *parent)
+ : QFile(parent)
+ , m_headerLength(0)
{
- CombinedHeader header;
- memset(&header, 0, HeaderLength);
-
- // RIFF header
- if (m_format.byteOrder() == QAudioFormat::LittleEndian)
- strncpy(&header.riff.descriptor.id[0], "RIFF", 4);
- else
- strncpy(&header.riff.descriptor.id[0], "RIFX", 4);
- qToLittleEndian<quint32>(quint32(m_dataLength + HeaderLength - 8),
- reinterpret_cast<unsigned char*>(&header.riff.descriptor.size));
- strncpy(&header.riff.type[0], "WAVE", 4);
-
- // WAVE header
- strncpy(&header.wave.descriptor.id[0], "fmt ", 4);
- qToLittleEndian<quint32>(quint32(16),
- reinterpret_cast<unsigned char*>(&header.wave.descriptor.size));
- qToLittleEndian<quint16>(quint16(1),
- reinterpret_cast<unsigned char*>(&header.wave.audioFormat));
- qToLittleEndian<quint16>(quint16(m_format.channels()),
- reinterpret_cast<unsigned char*>(&header.wave.numChannels));
- qToLittleEndian<quint32>(quint32(m_format.frequency()),
- reinterpret_cast<unsigned char*>(&header.wave.sampleRate));
- qToLittleEndian<quint32>(quint32(m_format.frequency() * m_format.channels() * m_format.sampleSize() / 8),
- reinterpret_cast<unsigned char*>(&header.wave.byteRate));
- qToLittleEndian<quint16>(quint16(m_format.channels() * m_format.sampleSize() / 8),
- reinterpret_cast<unsigned char*>(&header.wave.blockAlign));
- qToLittleEndian<quint16>(quint16(m_format.sampleSize()),
- reinterpret_cast<unsigned char*>(&header.wave.bitsPerSample));
-
- // DATA header
- strncpy(&header.data.descriptor.id[0], "data", 4);
- qToLittleEndian<quint32>(quint32(m_dataLength),
- reinterpret_cast<unsigned char*>(&header.data.descriptor.size));
-
- return (device.write(reinterpret_cast<const char *>(&header), HeaderLength) == HeaderLength);
-}
-
-const QAudioFormat& WavFile::format() const
-{
- return m_format;
}
-qint64 WavFile::dataLength() const
+bool WavFile::open(const QString &fileName)
{
- return m_dataLength;
+ close();
+ setFileName(fileName);
+ return QFile::open(QIODevice::ReadOnly) && readHeader();
}
-qint64 WavFile::headerLength()
+const QAudioFormat &WavFile::fileFormat() const
{
- return HeaderLength;
+ return m_fileFormat;
}
-bool WavFile::writeDataLength(QIODevice &device, qint64 dataLength)
+qint64 WavFile::headerLength() const
{
- bool result = false;
- if (!device.isSequential()) {
- device.seek(40);
- unsigned char dataLengthLE[4];
- qToLittleEndian<quint32>(quint32(dataLength), dataLengthLE);
- result = (device.write(reinterpret_cast<const char *>(dataLengthLE), 4) == 4);
- }
- return result;
+return m_headerLength;
}
-#include <QFile>
-#include <QTextStream>
-
-qint64 WavFile::readData(QIODevice &device, QByteArray &buffer,
- QAudioFormat outputFormat)
+bool WavFile::readHeader()
{
- if (QAudioFormat() == outputFormat)
- outputFormat = m_format;
-
- qint64 result = 0;
-
- QFile file("wav.txt");
- file.open(QIODevice::WriteOnly | QIODevice::Text);
- QTextStream stream;
- stream.setDevice(&file);
-
- if (isPCMS16LE(outputFormat) && isPCMS16LE(m_format)) {
- QVector<char> inputSample(2 * m_format.channels());
-
- qint16 *output = reinterpret_cast<qint16*>(buffer.data());
-
- while (result < buffer.size()) {
- if (device.read(inputSample.data(), inputSample.count())) {
- int inputIdx = 0;
- for (int outputIdx = 0; outputIdx < outputFormat.channels(); ++outputIdx) {
- const qint16* input = reinterpret_cast<const qint16*>(inputSample.data() + 2 * inputIdx);
- *output++ = qFromLittleEndian<qint16>(*input);
- result += 2;
- if (inputIdx < m_format.channels())
- ++inputIdx;
- }
- } else {
- break;
+ seek(0);
+ CombinedHeader header;
+ bool result = read(reinterpret_cast<char *>(&header), sizeof(CombinedHeader)) == sizeof(CombinedHeader);
+ if (result) {
+ if ((memcmp(&header.riff.descriptor.id, "RIFF", 4) == 0
+ || memcmp(&header.riff.descriptor.id, "RIFX", 4) == 0)
+ && memcmp(&header.riff.type, "WAVE", 4) == 0
+ && memcmp(&header.wave.descriptor.id, "fmt ", 4) == 0
+ && (header.wave.audioFormat == 1 || header.wave.audioFormat == 0)) {
+
+ // Read off remaining header information
+ DATAHeader dataHeader;
+
+ if (qFromLittleEndian<quint32>(header.wave.descriptor.size) > sizeof(WAVEHeader)) {
+ // Extended data available
+ quint16 extraFormatBytes;
+ if (peek((char*)&extraFormatBytes, sizeof(quint16)) != sizeof(quint16))
+ return false;
+ const qint64 throwAwayBytes = sizeof(quint16) + qFromLittleEndian<quint16>(extraFormatBytes);
+ if (read(throwAwayBytes).size() != throwAwayBytes)
+ return false;
}
+
+ if (read((char*)&dataHeader, sizeof(DATAHeader)) != sizeof(DATAHeader))
+ return false;
+
+ // Establish format
+ if (memcmp(&header.riff.descriptor.id, "RIFF", 4) == 0)
+ m_fileFormat.setByteOrder(QAudioFormat::LittleEndian);
+ else
+ m_fileFormat.setByteOrder(QAudioFormat::BigEndian);
+
+ int bps = qFromLittleEndian<quint16>(header.wave.bitsPerSample);
+ m_fileFormat.setChannels(qFromLittleEndian<quint16>(header.wave.numChannels));
+ m_fileFormat.setCodec("audio/pcm");
+ m_fileFormat.setFrequency(qFromLittleEndian<quint32>(header.wave.sampleRate));
+ m_fileFormat.setSampleSize(qFromLittleEndian<quint16>(header.wave.bitsPerSample));
+ m_fileFormat.setSampleType(bps == 8 ? QAudioFormat::UnSignedInt : QAudioFormat::SignedInt);
+ } else {
+ result = false;
}
}
+ m_headerLength = pos();
return result;
}
-
diff --git a/demos/spectrum/app/wavfile.h b/demos/spectrum/app/wavfile.h
index f2f330409f..935e935fd0 100644
--- a/demos/spectrum/app/wavfile.h
+++ b/demos/spectrum/app/wavfile.h
@@ -46,37 +46,22 @@
#include <QtCore/qfile.h>
#include <QtMultimedia/qaudioformat.h>
-/**
- * Helper class for reading WAV files
- *
- * See https://ccrma.stanford.edu/courses/422/projects/WaveFormat/
- */
-class WavFile
+class WavFile : public QFile
{
public:
- WavFile(const QAudioFormat &format = QAudioFormat(),
- qint64 dataLength = 0);
+ WavFile(QObject *parent = 0);
- // Reads WAV header and seeks to start of data
- bool readHeader(QIODevice &device);
+ bool open(const QString &fileName);
+ const QAudioFormat &fileFormat() const;
+ qint64 headerLength() const;
- // Writes WAV header
- bool writeHeader(QIODevice &device);
-
- // Read PCM data
- qint64 readData(QIODevice &device, QByteArray &buffer,
- QAudioFormat outputFormat = QAudioFormat());
-
- const QAudioFormat& format() const;
- qint64 dataLength() const;
-
- static qint64 headerLength();
-
- static bool writeDataLength(QIODevice &device, qint64 dataLength);
+private:
+ bool readHeader();
private:
- QAudioFormat m_format;
- qint64 m_dataLength;
+ QAudioFormat m_fileFormat;
+ qint64 m_headerLength;
+
};
#endif
diff --git a/demos/spreadsheet/spreadsheet.cpp b/demos/spreadsheet/spreadsheet.cpp
index f2a1738c89..519afe930a 100644
--- a/demos/spreadsheet/spreadsheet.cpp
+++ b/demos/spreadsheet/spreadsheet.cpp
@@ -511,7 +511,7 @@ void SpreadSheet::setupContents()
// column 2
table->setItem(0, 2, new SpreadSheetItem("Price"));
table->item(0, 2)->setBackgroundColor(titleBackground);
- table->item(0, 2)->setToolTip("This collumn shows the price of the purchase");
+ table->item(0, 2)->setToolTip("This column shows the price of the purchase");
table->item(0, 2)->setFont(titleFont);
table->setItem(1, 2, new SpreadSheetItem("150"));
diff --git a/demos/symbianpkgrules.pri b/demos/symbianpkgrules.pri
index 68a82cdf61..ef6dfd8419 100644
--- a/demos/symbianpkgrules.pri
+++ b/demos/symbianpkgrules.pri
@@ -2,15 +2,18 @@
RSS_RULES ="group_name=\"QtDemos\";"
+nokiaVendor = "Nokia, Qt"
vendorinfo = \
"; Localised Vendor name" \
- "%{\"Nokia, Qt\"}" \
+ "%{$$addLanguageDependentPkgItem(nokiaVendor)}" \
" " \
"; Unique Vendor name" \
- ":\"Nokia, Qt\"" \
+ ":\"$$nokiaVendor\"" \
" "
demos_deployment.pkg_prerules += vendorinfo
DEPLOYMENT += demos_deployment
-isEmpty(ICON):ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg
+isEmpty(ICON):contains(TEMPLATE, ".*app"):contains(QT, gui):contains(CONFIG, qt):!contains(CONFIG, "no_icon") {
+ ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg
+}
diff --git a/dist/changes-4.7.1 b/dist/changes-4.7.1
index 51a10a394c..b25b95ccf0 100644
--- a/dist/changes-4.7.1
+++ b/dist/changes-4.7.1
@@ -13,7 +13,6 @@ corresponding to tasks in the Qt Bug Tracker, the (now obsolete) Task
Tracker, or the Merge Request queue of the public source repository.
Qt Bug Tracker: http://bugreports.qt.nokia.com
-Task Tracker: http://qt.nokia.com/developer/task-tracker
Merge Request: http://qt.gitorious.org
****************************************************************************
@@ -31,8 +30,6 @@ Optimizations
- On x86 and 86_64, the memory access has been improved for alpha blending
and for some composition functions.
- * See list of Important Behavior Changes below
-
****************************************************************************
* Library *
@@ -42,69 +39,68 @@ QtCore
------
- Containers
- * [QTBUG-13079] Fix assingment of a container included in the container itself
+ * [QTBUG-13079] Fix assignment of a container included in the container
+ itself.
- - QLibrary
- * [QT-3825] System libraries are only loaded from the system directories
+ - QEventDispatcherUnix
+ * [QTBUG-13633] Do not process too many timer events if other events need
+ to be processed first.
+ - QLibrary
+ * [QT-3825] System libraries are only loaded from the system directories.
- QUuid
- * [QTBUG-11213] QUuid::createUuid() should not generate identical sequences on UNIX
-
- - QEventDispatcherUnix
- * [QTBUG-13633] Do not process too many timer events if other events need
- to be processed first
+ * [QTBUG-11213] QUuid::createUuid() should not generate identical sequences
+ on UNIX.
QtGui
-----
- - QGraphicsWidget
- * [QTBUG-13188] Make sure a font that has propagated from a parent can
- be set on a QPainter.
- * [QT-3808] Issues when applying effects in combination with ItemHasNoContents flag.
+ - QGraphicsEffect
+ * [QT-3633] Wrong bounding rect.
- QGraphicsItem
* [QTBUG-3633, QT-3828] Wrong children bounding rect when applying effects.
- - QGraphicsEffect
- * [QT-3633] Wrong bounding rect.
-
- QGraphicsScene
* [QT-3674] Spurious assert triggered from render().
+ - QGraphicsWidget
+ * [QTBUG-13188] Make sure a font that has propagated from a parent can
+ be set on a QPainter.
+ * [QT-3808] Issues when applying effects in combination with
+ ItemHasNoContents flag.
+
+ - QGtkStyle
+ * [QTBUG-13125] Fixed a regression with custom itemview background color.
+
+ - QLineEdit
+ * [QTBUG-13520] Fixed the scrolling of text with right alignment.
+
- QPainter
* [QTBUG-13429] Fixed scale point drawing with square cap in the raster
engine, plus some potential floating point overflows in the rasterizer.
* Optimized pixmap drawing with SmoothPixmapTransform.
- - QStaticText
- * [QTBUG-12614] Fix crash with zero-width string.
- * [QTBUG-12540] Fix rendering of large glyphs with OpenGL2 paint engine.
-
-
- QPinchGesture
* The scaleFactor and totalScaleFactor now represent a value that allows
an object to track a touchpoint during a Pinch Gesture even when using
sequences for zooming.
- Therefor the scale factors are initialized to 1.0 and for every new
+ Therefore the scale factors are initialized to 1.0 and for every new
sequence the totalScaleFactor is multiplied with the scaleFactor of the
new sequence.
- - QLineEdit
- * [QTBUG-13520] Fixed the scrolling of text with right alignment
-
- QPixmap
- * [QTBUG-12560] Fixed a regression preventing loading images without extensions
+ * [QTBUG-12560] Fixed a regression preventing loading images without
+ extensions.
- - QTreeView
- * [QTBUG-13567] Do not scroll to top if last item is removed
-
- - QGtkStyle
- * [QTBUG-13125] Fixed a regression with custom itemview background color.
+ - QStaticText
+ * [QTBUG-12614] Fix crash with zero-width string.
+ * [QTBUG-12540] Fix rendering of large glyphs with OpenGL2 paint engine.
-QtDBus
-------
+ - QTreeView
+ * [QTBUG-13567] Do not scroll to top if last item is removed.
QtMultimedia
@@ -115,151 +111,170 @@ QtMultimedia
* [QTBUG-11883] Fixed segmentation fault when closing a QAudioInput or
QAudioOutput.
+
QtNetwork
---------
- - QSslConfiguration
- * [QTBUG-13265] fix crash with empty configuration
- - QSslCertificate
- * [QTBUG-12489] support dates > 2049
- Bearer Management
* Improved reliability on Symbian and Maemo.
* Added connman/meego backend.
- IPv6
- * Disable on Symbian until OpenC properly supports it
+ * Disable on Symbian until OpenC properly supports it.
+ - QSslConfiguration
+ * [QTBUG-13265] Fixed crash with empty configuration.
+ - QSslCertificate
+ * [QTBUG-12489] Support dates > 2049.
- QNetworkAccessManager
- * [QTBUG-12285] Crash fix related to aborted uploads
+ * [QTBUG-12285] Crash fix related to aborted uploads.
QtOpenGL
--------
- QGL2PaintEngineEx
* Fixed drawing a large number of glyphs with the same font on systems
- with small texure size limits.
-
-QtOpenVG
---------
-
-
-QtWebKit
---------
-
-
-QtSql
------
-
+ with small texture size limits.
-QtSvg
------
QtXml
-----
* Fixed a crash when parsing invalid tag names.
+
QtXmlPatterns
-------------
- XML Schema internals:
- * [QTBUG-11559] Only parse 3 digits of time fraction
+ * [QTBUG-11559] Only parse 3 digits of time fraction.
+
QtDeclarative
-------------
- QML language
- * [QTBUG-13799] QML core module renamed to QtQuick to decouple it from Qt releases.
- Old "import Qt 4.7" will co-exist with "import QtQuick 1.0' at least during Qt 4.7 releases.
- * [QTBUG-13047] Support passing QObject derived types to QML methods
- * [QTBUG-12837] Support JS "in" operator on QML objects
- * [QTBUG-13045] Prevent calling deleteLater() from QML
- * [QTBUG-13043] Ignore non-scriptable properties in QML
- * [QTBUG-13114] Don't double call classBegin()
- * [QTBUG-12946] Ensure the onDestruction handlers are called before the expressions are cleared
- * [QTBUG-12599] Re-enabled script program caching on Symbian
- * [QTBUG-13374] Don't modify the signal order on the second dynamic meta object pass
- * Support for qsTrId and meta-data in comments for QML
- - QML debugging:
+ * [QTBUG-13799] QML core module renamed to QtQuick to decouple it from Qt
+ releases. Old "import Qt 4.7" will co-exist with "import QtQuick 1.0' at
+ least during Qt 4.7 releases.
+ * [QTBUG-13047] Support passing QObject derived types to QML methods.
+ * [QTBUG-12837] Support JS "in" operator on QML objects.
+ * [QTBUG-13045] Prevent calling deleteLater() from QML.
+ * [QTBUG-13043] Ignore non-scriptable properties in QML.
+ * [QTBUG-13114] Don't double call classBegin().
+ * [QTBUG-12946] Ensure the onDestruction handlers are called before the
+ expressions are cleared.
+ * [QTBUG-12599] Re-enabled script program caching on Symbian.
+ * [QTBUG-13374] Don't modify the signal order on the second dynamic meta
+ object pass.
+ * Support for qsTrId and meta-data in comments for QML.
+ - QML debugging
* [QTBUG-5162] The debugger is now activated with -qmljsdebugger command
- line arg to enable support for platforms without environment variables
- * Various improvements to ease debugging in creator
+ line arg to enable support for platforms without environment variables.
+ * Various improvements to ease debugging in creator.
- AnchorAnimation
- * [QTBUG-13398] Fix AnchorAnimation for multiple AnchorChanges with dependancies
+ * [QTBUG-13398] Fix AnchorAnimation for multiple AnchorChanges with
+ dependancies.
- AnchorChanges
- * [QTBUG-11834] Restore any absolute geometry changed by AnchorChanges when returning to the base state
+ * [QTBUG-11834] Restore any absolute geometry changed by AnchorChanges when
+ returning to the base state.
- Component
- * [QTBUG-13170] Complete Component::createObject() creation after setting the parent
+ * [QTBUG-13170] Complete Component::createObject() creation after setting
+ the parent.
- GridView
- * [QTBUG-13166] GridView.view property should not be writable
+ * [QTBUG-13166] GridView.view property should not be writable.
- Flickable
- * [QTBUG-13095] Ensure Flickable visibleArea is updated when view height changes
- * [QTBUG-13176] Avoid Flickable view jumping when drag threashold is exceeded
- * [QTBUG-13078] Fix poor flicking behavior with slower flicks
- * Handle QGraphicsWidgets in Flickable
+ * [QTBUG-13095] Ensure Flickable visibleArea is updated when view height
+ changes.
+ * [QTBUG-13176] Avoid Flickable view jumping when drag threashold is
+ exceeded.
+ * [QTBUG-13078] Fix poor flicking behavior with slower flicks.
+ * Handle QGraphicsWidgets in Flickable.
- FocusScope
- * [QTBUG-12649] Make sure onFocusChanged is correctly emitted for items in a FocusScope.
+ * [QTBUG-12649] Make sure onFocusChanged is correctly emitted for items
+ in a FocusScope.
- FontLoader
- * [QTBUG-13419] Don't add the same font to the font database multiple times
+ * [QTBUG-13419] Don't add the same font to the font database multiple
+ times.
+ - Image
+ * [QTBUG-13454] Changing the Image 'source' no longer goes through the
+ 'Loading' state if the image is cached.
+ * [QTBUG-13383] Do not reset sourceSize when changing image source url.
+ * [QTBUG-13002] Setting one dimension of the sourceSize should set the other
+ dimension.
+ * [QTBUG-12302] Fix remote image url redirects are done in the right thread.
+ * Ensure all image states are updated before emitting statusChanged signals.
- ListModel
- * [QTBUG-12363] Modifying an object returned by ListModel.get(0) didn't update the view
- * [QTBUG-13666] Calling set() and setProperty() on ListModel from a WorkerScript didn't update the view
- * Fix Worker ListModel to emit the right signal when items change
- * Fix crash with invalid role indexes
- * improved ListModel error messages
+ * [QTBUG-12363] Modifying an object returned by ListModel.get(0) didn't
+ update the view.
+ * [QTBUG-13666] Calling set() and setProperty() on ListModel from a
+ WorkerScript didn't update the view.
+ * Fix Worker ListModel to emit the right signal when items change.
+ * Fix crash with invalid role indexes.
+ * improved ListModel error messages.
- ListView
- * [QTBUG-13664] Models with a single role didn't always update correctly
- * [QTBUG-13543] Ensure flickable velocity is updated when view is moved by setCurrentIndex
- * [QTBUG-12664] Ensure highlight is positioned correctly in positionViewAtIndex()
- * [QTBUG-13166] Fix ListView.view attached property with VisualItemModel
- * [QTBUG-13039] Fix crash in synchronization of ListModel in WorkerThread
- * [QTBUG-11341] Flicking a ListView sometimes made it loose focus
- * [QTBUG-13166] ListView.view property should not be writable
+ * [QTBUG-13664] Models with a single role didn't always update correctly.
+ * [QTBUG-13543] Ensure flickable velocity is updated when view is moved by
+ setCurrentIndex.
+ * [QTBUG-12664] Ensure highlight is positioned correctly in
+ positionViewAtIndex().
+ * [QTBUG-13166] Fix ListView.view attached property with VisualItemModel.
+ * [QTBUG-13039] Fix crash in synchronization of ListModel in WorkerThread.
+ * [QTBUG-11341] Flicking a ListView sometimes made it lose focus.
+ * [QTBUG-13166] ListView.view property should not be writable.
+ - MouseArea
+ * [QTBUG-12250] When onDoubleClicked: is handled don't emit a second
+ onPressed/onClicked.
+ - NumberAnimation
+ * [QTBUG-12805] Clear previous animation data for non-triggering animations.
+ - ParentChange
+ * [QTBUG-13554] ParentChange fails to apply rotation changes of exactly 180
+ degrees.
- PathView
- * [QTBUG-13689] Moving items in a PathView caused PathView.onPath to be set to false
- * [QTBUG-13687] PathView didn't accept mouse events, preventing it from working in a Flickable
- * [QTBUG-13416] Fix PathView item position on insertion and removal
- * [QTBUG-13017] Fix PathView when setting an empty model that is later filled
- * [QTBUG-12747] PathView required some diagonal movement before a drag was initiated
+ * [QTBUG-13689] Moving items in a PathView caused PathView.onPath to be set
+ to false.
+ * [QTBUG-13687] PathView didn't accept mouse events, preventing it from
+ working in a Flickable.
+ * [QTBUG-13416] Fix PathView item position on insertion and removal.
+ * [QTBUG-13017] Fix PathView when setting an empty model that is later
+ filled.
+ * [QTBUG-12747] PathView required some diagonal movement before a drag was
+ initiated.
- Positioners
- * made positioners work with QGraphicsWidgets
+ * made positioners work with QGraphicsWidgets.
- PropertyChanges
- * [QTBUG-12559] Correctly apply PropertyChanges when entering an extended state directly from the base state
- - VisualDataModel
- * [QTBUG-13754] Fixed a crash when updating a property in ListModel with multiple roles
- * [QTBUG-13038] Fix VisualDataModel model update handling when rootIndex is specified
- * [QTBUG-13146] Handle layoutChanged() properly in QML views
- - XmlListModel
- * [QTBUG-13041] XmlListModel thread was left hanging on Symbian application exit
- - ParentChange
- * [QTBUG-13554] ParentChange fails to apply rotation changes of exactly 180 degrees
- - MouseArea
- * [QTBUG-12250] When onDoubleClicked: is handled don't emit a second onPressed/onClicked
- - Image
- * [QTBUG-13454] Changing the Image 'source' no longer goes through the 'Loading' state if the image is cached.
- * [QTBUG-13383] Do not reset sourceSize when changing image source url
- * [QTBUG-13002] Setting one dimension of the sourceSize should set the other dimensio
- * [QTBUG-12302] Fix remote image url redirects are done in the right thread
- * Ensure all image states are updated before emitting statusChanged signals
- - NumberAnimation
- * [QTBUG-12805] Clear previous animation data for non-triggering animations
+ * [QTBUG-12559] Correctly apply PropertyChanges when entering an extended
+ state directly from the base state.
+ - QDeclarativeImageProvider:
+ * Fixed memory leak.
+ * Improved concurrency when using in asynchronus mode.
- Repeater
- * [QTBUG-12905] Emit countChanged where appropriate in Repeater
+ * [QTBUG-12905] Emit countChanged where appropriate in Repeater.
- SmoothedAnimation
- * [QTBUG-12336] Update running animations if a SmoothedAnimation is changed
+ * [QTBUG-12336] Update running animations if a SmoothedAnimation is changed.
- SpringAnimation
- * [QTBUG-13044] SpringAnimation velocity animation stop logic was fragile
+ * [QTBUG-13044] SpringAnimation velocity animation stop logic was fragile.
- Text
- * [QTBUG-13453] Fix jerky scrolling caused by unnecessary repaints of Text element
- * [QTBUG-13142] Fix alignment of shadow for rich text when using text styles
- * [QTBUG-11002] Improve QML text rendering when LCD smoothing is enabled for OS X
+ * [QTBUG-13453] Fix jerky scrolling caused by unnecessary repaints of Text
+ element.
+ * [QTBUG-13142] Fix alignment of shadow for rich text when using text
+ styles.
+ * [QTBUG-11002] Improve QML text rendering when LCD smoothing is enabled
+ for OS X.
- TextInput
- * [QTBUG-11127] Fix autoScroll implementation
- - XmlHttpRequest
- * [QTBUG-13117] Fix responseText to check the charset encoding field and also to not assume that the data is xml
+ * [QTBUG-11127] Fix autoScroll implementation.
+ - VisualDataModel
+ * [QTBUG-13754] Fixed a crash when updating a property in ListModel with
+ multiple roles.
+ * [QTBUG-13038] Fix VisualDataModel model update handling when rootIndex is
+ specified.
+ * [QTBUG-13146] Handle layoutChanged() properly in QML views.
- WebView
- * [QTBUG-13342] Ensure WebView gets focus when an editable node is clicked on
- - QDeclarativeImageProvider:
- * Fixed memory leak
- * Improved concurrency when using in assynchronus mode.
+ * [QTBUG-13342] Ensure WebView gets focus when an editable node is clicked.
+ - XmlHttpRequest
+ * [QTBUG-13117] Fix responseText to check the charset encoding field and
+ also to not assume that the data is xml.
+ - XmlListModel
+ * [QTBUG-13041] XmlListModel thread was left hanging on Symbian application
+ exit.
+
Qt Plugins
----------
-
- Jpeg image IO plugin
* [QTBUG-13653] Fixed infinite loop when loading jpeg without EOI marker
from memory.
@@ -275,15 +290,16 @@ Qt for Unix (X11 and Mac OS X)
Qt for Linux/X11
----------------
- - The configure script now detects all vector extensions of x86 and x86_64
+ - The configure script now detects all vector extensions of x86 and x86_64.
Qt for Windows
--------------
- Event System:
- * [QTBUG-12721] Fix Qt applications freezing until mouse/keyboard events occur.
+ * [QTBUG-12721] Fix Qt applications freezing until mouse/keyboard events
+ occur.
- Drag & Drop:
- * [QTBUG-13787] Fixed a possible crash with mingw
+ * [QTBUG-13787] Fixed a possible crash with mingw.
- QPrinter
* [QTBUG-12263] Strokes were in some cases not printed with the correct
@@ -303,7 +319,6 @@ Qt for Mac OS X
Qt for Symbian
--------------
-
- configure
* [QTBUG-4586] Fixed wrong paths in include/ActiveQt/headers.pri.
* [QTBUG-11671] Fixed audio-backend detection in configure tests.
@@ -319,21 +334,27 @@ Qt for Symbian
* [QTBUG-13081] vc[x]proj generators: support /MAP option without file
name.
* [QTBUG-13902] Added support for unsigned smart installer package creation.
- * [QTBUG-13991] No longer need to manually edit smart installer pkg file for publishing.
+ * [QTBUG-13991] No longer need to manually edit smart installer pkg file for
+ publishing.
* [QT-3949] Load environment.prf from Symbian SDK if it exists there.
- * [QTBUG-13499] Provide a way to compile with RVCT 4.0 using generated Makefile.
+ * [QTBUG-13499] Provide a way to compile with RVCT 4.0 using generated
+ Makefile.
* [QTBUG-13336] Ignore MAKEFILE variable for Symbian abld and sbsv2 builds.
- * [QTBUG-13363] Fix Symbian handling of projects with special characters in TARGET.
+ * [QTBUG-13363] Fix Symbian handling of projects with special characters in
+ TARGET.
* [QTBUG-12762 & QTBUG-13307] Gcce building support for symbian-sbsv2
* [QTBUG-13147] Added support for DEPLOYMENT.pkg_build_version
* [QTBUG-12884] Fix "installer_sis" and "deploy" targets when TARGET has path.
* [QTBUG-12879] Fix check to remove unnecessary deployments in Symbian.
* [QTBUG-12716] Make bld.inf target in Symbian mkspecs to depend on .pro file.
- * [QTBUG-12715] Rename Symbian generated mmp/mk files to include target in filename.
- * [QTBUG-12617] Fix package header in cases where VERSION doesn't contain all values.
+ * [QTBUG-12715] Rename Symbian generated mmp/mk files to include target in
+ filename.
+ * [QTBUG-12617] Fix package header in cases where VERSION doesn't contain all
+ values.
* Fix run and runonphone targets for projects that have TARGET with path.
* Fix QT_LIBINFIX for QT_PLUGINS_BASE_DIR.
- * No longer require PRE_TARGETDEPS items to be absolute for symbian-sbsv2 mkspec.
+ * No longer require PRE_TARGETDEPS items to be absolute for symbian-sbsv2
+ mkspec.
* Do smart command replacement for commands containing $$QMAKE_*
command variables, such as $$QMAKE_COPY, when generating bld.inf
extensions for QMAKE_EXTRA_* variables for symbian-sbsv2 mkspec.
@@ -364,7 +385,8 @@ Qt for Symbian
Check S60_VERSION instead of existence of certain files in bearer plugin.
- Demos & Examples
- * [QTBUG-13461] Remove some .pro statements left behind after IAP usage cleanup
+ * [QTBUG-13461] Remove some .pro statements left behind after IAP usage
+ cleanup.
* [QTBUG-12276] Assigned valid UID3 for fortuneserver example.
Qt for Windows CE
@@ -372,25 +394,21 @@ Qt for Windows CE
- Gui
* [QTBUG-8408] Show the [X] button on Windows mobile when maximizing.
+
****************************************************************************
* Tools *
****************************************************************************
- - Designer
-
- uic
- * Improve warnings and error reports
+ * Improve warnings and error reports.
- moc
- * Show an error if NOTIFY refer to a wrong signal in Q_PROPERTY
+ * Show an error if NOTIFY refer to a wrong signal in Q_PROPERTY.
- QML Viewer
- * [QTBUG-13347] Paused orientation sensors in Qml Viewer when the application window is not active to save device battery
- * [QTBUG-11019] Add a menu option to open remote files in the QML viewer
- * QML Viewer is deployed under QtDemos folder instead of QtExamples folder in Symbian application menu
-
-****************************************************************************
-* Important Behavior Changes *
-****************************************************************************
-
+ * [QTBUG-13347] Paused orientation sensors in Qml Viewer when the
+ application window is not active to save device battery.
+ * [QTBUG-11019] Add a menu option to open remote files in the QML viewer.
+ * QML Viewer is deployed under QtDemos folder instead of QtExamples
+ folder in Symbian application menu.
diff --git a/dist/changes-4.7.2 b/dist/changes-4.7.2
new file mode 100644
index 0000000000..a18a237429
--- /dev/null
+++ b/dist/changes-4.7.2
@@ -0,0 +1,162 @@
+Qt 4.7.2 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 4.7.0. For more details,
+refer to the online documentation included in this distribution. The
+documentation is also available online:
+
+ http://qt.nokia.com/doc/4.7
+
+The Qt version 4.7 series is binary compatible with the 4.6.x series.
+Applications compiled for 4.6 will continue to run with 4.7.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker or the Merge Request queue
+of the public source repository.
+
+Qt Bug Tracker: http://bugreports.qt.nokia.com
+Merge Request: http://qt.gitorious.org
+
+****************************************************************************
+* General *
+****************************************************************************
+
+New features
+------------
+
+ - SomeClass, SomeOtherClass
+ * New classes for foo, bar and baz
+
+Optimizations
+-------------
+
+ - Optimized foo in QSomeClass
+ * See list of Important Behavior Changes below
+
+
+****************************************************************************
+* Library *
+****************************************************************************
+
+QtCore
+------
+
+ - foo
+ * bar
+
+QtGui
+-----
+
+ - QWidget
+ * [QTMOBILITY-645] Send WinIdChange event when winId is set to zero.
+ The window handle of a native widget may be set to zero in two
+ situations: (i) temporarily, during reparenting and (ii) during
+ widget destruction. Previously, no WinIdChange event was sent in
+ either of these cases; now, it is sent in both cases.
+
+QtDBus
+------
+
+ - foo
+ * bar
+
+QtNetwork
+---------
+
+ - foo
+ * bar
+
+QtOpenGL
+--------
+
+ - foo
+ * bar
+
+QtScript
+--------
+
+ - foo
+ * bar
+
+QtSql
+-----
+
+ - foo
+ * bar
+
+QtXml
+-----
+
+ - foo
+ * bar
+
+Qt Plugins
+----------
+
+ - foo
+ * bar
+
+Third party components
+----------------------
+
+ - Updated foo to version 2.3.9.
+
+ - Updated bar to the latest version from baz.org.
+
+
+****************************************************************************
+* Platform Specific Changes *
+****************************************************************************
+
+Qt for Unix (X11 and Mac OS X)
+------------------------------
+
+ -
+
+Qt for Linux/X11
+----------------
+
+ -
+
+Qt for Windows
+--------------
+
+ -
+
+Qt for Mac OS X
+---------------
+
+ -
+
+Qt for Embedded Linux
+---------------------
+
+ -
+
+DirectFB
+--------
+
+ -
+
+Qt for Windows CE
+-----------------
+
+ -
+
+****************************************************************************
+* Tools *
+****************************************************************************
+
+ - Designer
+ * foo
+
+ - qdoc3
+ * bar
+
+ - Linguist
+ * baz
+
+****************************************************************************
+* Important Behavior Changes *
+****************************************************************************
+
+ -
+
diff --git a/doc/src/bughowto.qdoc b/doc/src/bughowto.qdoc
index a7b5569e56..1793fcee24 100644
--- a/doc/src/bughowto.qdoc
+++ b/doc/src/bughowto.qdoc
@@ -34,7 +34,7 @@
about it so that we can fix it.
Before reporting a bug, please check the \l{FAQs}, \l{Platform
- Notes}, and the \l{Qt Bug Tracker} on the Qt website to see
+ and Compiler Notes}, and the \l{Qt Bug Tracker} on the Qt website to see
if the issue is already known.
The first thing you should do is to sign up for an account for
diff --git a/doc/src/classes/phonon-api.qdoc b/doc/src/classes/phonon-api.qdoc
index a429e5a53c..6c9c8dea0e 100644
--- a/doc/src/classes/phonon-api.qdoc
+++ b/doc/src/classes/phonon-api.qdoc
@@ -4114,7 +4114,7 @@
*/
/*!
- \fn Phonon::VideoWidget::snapshot()
+ \fn Phonon::VideoWidget::snapshot() const
\since 4.7
Returns a snapshot of the current frame shown in the widget.
@@ -4312,6 +4312,16 @@
*/
/*!
+ \class Phonon::VideoWidgetInterface44
+ \inmodule Phonon
+ \since 4.7
+*/
+
+/*!
+ \fn Phonon::VideoWidgetInterface44::snapshot() const
+*/
+
+/*!
\typedef Phonon::VideoWidgetInterfaceLatest
\inmodule Phonon
\since 4.7
@@ -5076,6 +5086,22 @@
*/
/*!
+ \fn int Phonon::AudioDataOutput::sampleRate() const
+
+ Returns the sample rate measured in Hertz, as reported by the backend.
+ If the backend is unavailable -1 is returned.
+*/
+
+/*!
+ \fn void Phonon::AudioDataOutput::endOfMedia(int remainingSamples)
+
+ This signal is emitted before the final dataReady() signal is emitted for
+ a media. The \a remainingSamples value sent by the signal contains the
+ number of samples that will be sent in the final dataReady() signal for
+ the media.
+*/
+
+/*!
\fn Phonon::AudioDataOutput::dataReady(const QMap<Phonon::AudioDataOutput::Channel, QVector<qint16> > &data)
This signal is emitted whenever there is data available to read. The
@@ -5084,13 +5110,28 @@
*/
/*!
+ \fn Phonon::AudioDataOutputPrivate::AudioDataOutputPrivate()
+ \internal
+*/
+
+/*!
\fn Phonon::AudioDataOutputInterface::~AudioDataOutputInterface()
Destroys the data interface.
*/
/*!
- \fn Phonon::AudioDataOutputInterface::frontendObject()
+ \fn Phonon::AudioDataOutputInterface::frontendObject() const
+ \internal
+*/
+
+/*!
+ \fn Phonon::AudioDataOutputInterface::setFrontendObject(AudioDataOutput *)
+ \internal
+*/
+
+/*!
+ \fn Phonon::GlobalConfigPrivate::GlobalConfigPrivate()
\internal
*/
@@ -5098,3 +5139,8 @@
\fn Phonon::GlobalConfigPrivate::~GlobalConfigPrivate()
\internal
*/
+
+/*!
+ \fn Phonon::SwiftSlider::~SwiftSlider()
+ \internal
+*/
diff --git a/doc/src/declarative/basictypes.qdoc b/doc/src/declarative/basictypes.qdoc
index 6abe96fa73..71192bfe79 100644
--- a/doc/src/declarative/basictypes.qdoc
+++ b/doc/src/declarative/basictypes.qdoc
@@ -166,7 +166,7 @@
\l{QML:Qt::lighter()}{Qt.lighter()} or \l{QML:Qt::tint()}{Qt.tint()} functions:
\qml
- Rectangle { color: Qt.rgba(255, 0, 0, 1) }
+ Rectangle { color: Qt.rgba(0.5, 0.5, 0, 1) }
\endqml
\sa {QML Basic Types}
@@ -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/declarativeui.qdoc b/doc/src/declarative/declarativeui.qdoc
index 28a8a7012e..01e130221c 100644
--- a/doc/src/declarative/declarativeui.qdoc
+++ b/doc/src/declarative/declarativeui.qdoc
@@ -45,7 +45,7 @@ language for describing user interfaces and a language runtime. A collection
of C++ APIs is used to integrate these high level features with classic
Qt applications.
-\section2 QML, Elements and the QtDeclarative Module
+\section2 QML, Elements and the Qt Declarative Module
User interfaces and their behavior are described using QML, an extension to
\l{About JavaScript}{JavaScript} that lets developers and designers
@@ -60,14 +60,14 @@ QObject-based type system, adds support for automatic
\l{Property Binding}{property bindings} and provides
\l{Network Transparency}{network transparency} at the language level.
-The QtDeclarative module implements the interface between the QML language
+The Qt Declarative module implements the interface between the QML language
and the elements available to it. It also provides a C++ API that can be
used to load and interact with QML files from within Qt applications.
Qt Quick builds on \l{QML for Qt programmers}{Qt's existing strengths}.
QML can be be used to incrementally extend an existing application or
to build completely new applications. QML is fully
-\l{Extending QML in C++}{extensible from C++} through the QtDeclarative
+\l{Extending QML in C++}{extensible from C++} through the Qt Declarative
Module.
\section1 Getting Started
@@ -77,7 +77,7 @@ Module.
\o \l{Introduction to the QML language}
\o \l{QML for Qt Programmers}
\o \l{Getting Started Programming with QML}
-\o \l{Beginning Qt Quick}
+\o \l{Intro to Qt Quick}
\endlist
\list
@@ -139,7 +139,7 @@ Module.
\o \l{QML Global Object}
\o \l{QML Internationalization}
\o \l{QML Security}
-\o \l{QtDeclarative Module}
+\o \l{Qt Declarative Module}
\o \l{Debugging QML}
\o \l{QML Viewer}
\o \l{QML Performance}
diff --git a/doc/src/declarative/dynamicobjects.qdoc b/doc/src/declarative/dynamicobjects.qdoc
index 3921d3e0e9..daf2ae10c7 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 a0eb95d0da..eaa6a828cc 100644
--- a/doc/src/declarative/elements.qdoc
+++ b/doc/src/declarative/elements.qdoc
@@ -32,13 +32,115 @@
\brief A dictionary of standard QML elements.
This is a dictionary of all standard QML elements made available
- in the QtDeclarative module.
+ in the Qt Declarative module.
To see the QML elements listed by functional area, see the
\l{Groups Of Related QML Elements} page.
- \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 3b2fe3b4d4..dff1d9caa2 100644
--- a/doc/src/declarative/extending-tutorial.qdoc
+++ b/doc/src/declarative/extending-tutorial.qdoc
@@ -29,7 +29,7 @@
\page qml-extending-tutorial-index.html
\title Tutorial: Writing QML extensions with C++
-The QtDeclarative module provides a set of APIs for extending QML through
+The Qt Declarative module provides a set of APIs for extending QML through
C++ extensions. You can write extensions to add your own QML types, extend existing
Qt types, or call C/C++ functions that are not accessible from ordinary QML code.
@@ -65,7 +65,7 @@ For example, this could be done to implement particular data models, or provide
elements with custom painting and drawing capabilities, or access system features
like network programming that are not accessible through built-in QML features.
-In this tutorial, we will show how to use the C++ classes in the QtDeclarative
+In this tutorial, we will show how to use the C++ classes in the Qt Declarative
module to extend QML. The end result will be a simple Pie Chart display implemented by
several custom QML types connected together through QML features like bindings and
signals, and made available to the QML runtime through a plugin.
@@ -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 18887c762f..5c1b977314 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/integrating.qdoc b/doc/src/declarative/integrating.qdoc
index 682f792d82..7028585597 100644
--- a/doc/src/declarative/integrating.qdoc
+++ b/doc/src/declarative/integrating.qdoc
@@ -47,7 +47,7 @@ qmlView->setSource(QUrl::fromLocalFile("myqml.qml"));
QWidget *widget = myExistingWidget();
QVBoxLayout *layout = new QVBoxLayout(widget);
-widget->addWidget(qmlView);
+layout->addWidget(qmlView);
\endcode
The one drawback to this approach is that QDeclarativeView is slower to initialize
diff --git a/doc/src/declarative/qdeclarativeintro.qdoc b/doc/src/declarative/qdeclarativeintro.qdoc
index 87dafb0c55..1d807e3dd7 100644
--- a/doc/src/declarative/qdeclarativeintro.qdoc
+++ b/doc/src/declarative/qdeclarativeintro.qdoc
@@ -37,7 +37,7 @@ interface is specified as a tree of objects with properties.
This introduction is meant for those with little or no programming
experience. JavaScript is used as a scripting language in QML, so you may want
-to learn a bit more about it (\l{JavaScript: The Definitive Guide}) before diving
+to learn a bit more about it (\l{Javascript Guide}) before diving
deeper into QML. It's also helpful to have a basic understanding of other web
technologies like HTML and CSS, but it's not required.
@@ -65,8 +65,8 @@ types always begin with a capital letter. In the above example, there are
two objects, a \l Rectangle, and an \l Image. Between the braces, we can specify
information about the object, such as its properties.
-Properties are specified as \c {property: value}. In the above example, we
-can see the Image has a property named \c source, which has been assigned the
+Properties are specified as \c {property: value}. In the above example, we
+can see the Image has a property named \c source, which has been assigned the
value \c "pics/logo.png". The property and its value are separated by a colon.
Properties can be specified one-per-line:
diff --git a/doc/src/declarative/qml-intro.qdoc b/doc/src/declarative/qml-intro.qdoc
index f891e01650..e02ce8ff65 100644
--- a/doc/src/declarative/qml-intro.qdoc
+++ b/doc/src/declarative/qml-intro.qdoc
@@ -29,7 +29,7 @@
/*!
\page qml-intro.html
-\title Beginning Qt Quick
+\title Intro to Qt Quick
\section1 Overview
diff --git a/doc/src/declarative/qmlinuse.qdoc b/doc/src/declarative/qmlinuse.qdoc
new file mode 100644
index 0000000000..90ce02caa2
--- /dev/null
+++ b/doc/src/declarative/qmlinuse.qdoc
@@ -0,0 +1,499 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial Usage
+** Licensees holding valid Qt Commercial licenses may use this file in
+** accordance with the Qt Commercial License Agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in a
+** written agreement between you and Nokia.
+**
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of this
+** file.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+\page qmlinuse.html
+\title Using QML elements
+
+\raw HTML
+ <div class="item group">
+ <div class="secondaryx">
+ <div class="toc">
+ <h3>
+ <a name="toc">QML Elements</a></h3>
+ <ul>
+ <li class="level1"><a href="#basicElements">Basic QML Elements</a></li>
+ <li class="level1"><a href="#visualElements">QML Visual Elements</a></li>
+ <li class="level1"><a href="#AnimAndTrans">QML Animation and Transition Elements</a></li>
+ <li class="level1"><a href="#interactElement">Basic QML Interaction Elements</a></li>
+ <li class="level1"><a href="#eventElements">QML Event Elements</a></li>
+ <li class="level1"><a href="#Position">QML Positioning Elements</a></li>
+ <li class="level1"><a href="#stateElement">QML State Elements</a></li>
+ <li class="level1"><a href="#transformElement">QML Transform Elements</a></li>
+ <li class="level1"><a href="#utilityElement">QML Utility Elements</a></li>
+ <li class="level1"><a href="#modelView">Models and View Elements</a></li>
+ <li class="level1"><a href="#paths">Paths</a></li>
+ <li class="level1"><a href="#ParticleElement">Particle Elements</a></li>
+ <li class="level1"><a href="#bridge">Bridge Elements</a></li>
+ </ul>
+ </div>
+ </div>
+ <div class="primary">
+ <h1>
+ Groups Of Related QML Elements</h1>
+ <p>
+ QML Elements are grouped by their respective functionalities. Certain elements are
+ suited for building complex components while other elements strictly dictate appearances
+ and color.</p>
+ <div class="cols two group unclear">
+ <div class="col first">
+ <p>
+ <i>add something about elements in use in general</i></p>
+ </div>
+ <div class="col">
+ <img src="images/quick_screens.png" />
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- tech domains start -->
+ <div class="item group">
+ <hr>
+ <div class="secondary">
+ <div class="box">
+ <!-- video box -->
+ <h3>
+ image heading</h3>
+ <img src="" />
+ <p>
+ img descr.</p>
+ </div>
+ <!-- video box end -->
+ </div>
+ <div class="primary">
+ <h2><a name="basicElements"> Basic QML Elements</a></h2>
+ <p>
+ Basic elements can be extended to form more complex elements.</p>
+ <b>Elements:</b>
+ <ul>
+ <li><a href="qml-item.html">Item Element</a>
+ - The Item is the most basic of all visual items in QML. Many visual elements inherit
+ properties from the Item element.</li>
+ <li><a href="qml-component.html">Component Element</a>
+ - The Component element encapsulates a QML component definition.</li>
+ </ul>
+ </div>
+ </div>
+ <!-- next -->
+ <div class="item group">
+ <hr>
+ <div class="secondary">
+ <div class="box">
+ <!-- video box -->
+ <h3>
+ image heading</h3>
+ <img src="" />
+ <p>
+ img descr.</p>
+ </div>
+ <!-- video box end -->
+ </div>
+ <div class="primary">
+ <h2><a name="visualElements">QML Visual Elements</a></h2>
+ <p>
+ Visual elements offer various interactive and graphical functionalities. Visual
+ elements can directly set properties that dictate appearances.</p>
+ <b>Elements:</b>
+ <ul>
+ <li><a href="qml-borderimage.html">BorderImage
+ Element</a> - The BorderImage element provides an image that can be used as a border.</li>
+ <li><a href="qml-gradient.html">Gradient Element</a>
+ - The Gradient item defines a gradient fill.</li>
+ <li><a href="qml-gradientstop.html">GradientStop
+ Element</a> - The GradientStop item defines the color at a position in a Gradient.</li>
+ <li><a href="qml-image.html">Image Element</a>
+ - The Image element displays an image from a source.</li>
+ <li><a href="qml-rectangle.html">Rectangle Element</a>
+ - The Rectangle item provides a filled rectangle.</li>
+ <li><a href="qml-text.html">Text Element</a>
+ - The Text item allows the addition of formatted text to a scene.</li>
+ <li><a href="qml-textedit.html">TextEdit Element</a>
+ - The TextEdit item displays multiple lines of editable formatted text.</li>
+ <li><a href="qml-textinput.html">TextInput Element</a>
+ - The TextInput item displays an editable line of text.</li>
+ </ul>
+ </div>
+ </div>
+ <!-- next -->
+ <div class="item group">
+ <hr>
+ <div class="secondary">
+ <div class="box">
+ <!-- video box -->
+ <h3>
+ image heading</h3>
+ <img src="" />
+ <p>
+ img descr.</p>
+ </div>
+ <!-- video box end -->
+ </div>
+ <div class="primary">
+ <h2><a name="AnimAndTrans">QML Animation and Transition Elements</a></h2>
+ <p>
+ Animation and transition elements control animation behaviors. Animations can run
+ in parallel or in series for different value types.
+ </p>
+ <b>Elements:</b>
+ <ul>
+ <li><a href="qml-anchoranimation.html">AnchorAnimation Element</a> -
+ The AnchorAnimation element animates changes in anchor values.</li>
+ <li><a href="qml-animation.html">Animation Element</a> - The Animation
+ element is the base of all QML animations.</li>
+ <li><a href="qml-behavior.html">Behavior Element</a> - The Behavior element allows you to specify a default animation for a property change.</li>
+ <li><a href="qml-coloranimation.html">ColorAnimation Element</a> - The ColorAnimation element animates changes in color values.</li>
+ <li><a href="qml-numberanimation.html">NumberAnimation Element</a> - The NumberAnimation element animates changes in qreal-type values.</li>
+ <li><a href="qml-parallelanimation.html">ParallelAnimation Element</a> - The ParallelAnimation element allows animations to be run in parallel.</li>
+ <li><a href="qml-parentanimation.html">ParentAnimation Element</a> - The ParentAnimation element animates changes in parent values.</li>
+ <li><a href="qml-pauseanimation.html">PauseAnimation Element</a> - The PauseAnimation element provides a pause during an animation.</li>
+ <li><a href="qml-propertyaction.html">PropertyAction Element</a> - The PropertyAction element allows immediate property changes during animation.</li>
+ <li><a href="qml-propertyanimation.html">PropertyAnimation Element</a> - The PropertyAnimation element animates changes in property values.</li>
+ <li><a href="qml-rotationanimation.html">RotationAnimation Element</a> - The RotationAnimation element animates changes in rotational values.</li>
+ <li><a href="qml-scriptaction.html">ScriptAction Element</a> - The ScriptAction element allows scripts to be run during an animation.</li>
+ <li><a href="qml-sequentialanimation.html">SequentialAnimation Element</a> - The SequentialAnimation element allows animations to be run sequentially.</li>
+ <li><a href="qml-smoothedanimation.html">SmoothedAnimation Element</a> - The SmoothedAnimation element allows a property to smoothly track a value.</li>
+ <li><a href="qml-springanimation.html">SpringAnimation Element</a> - The SpringAnimation element allows a property to track a value in a spring-like
+ motion.</li>
+ <li><a href="qml-transition.html">Transition Element</a> - The Transition element defines animated transitions that occur on state changes.</li>
+ <li><a href="qml-vector3danimation.html">Vector3dAnimation Element</a> - The Vector3dAnimation element animates changes in QVector3d values.</li>
+ </ul>
+ </div>
+ </div>
+ <!-- next -->
+ <div class="item group">
+ <hr>
+ <div class="secondary">
+ <div class="box">
+ <!-- video box -->
+ <h3>
+ image heading</h3>
+ <img src="" />
+ <p>
+ img descr.</p>
+ </div>
+ <!-- video box end -->
+ </div>
+ <div class="primary">
+ <h2><a name="interactElement">QML Interaction Elements</h2></a>
+ <p>
+ These elements define basic interactions such as touch movements and focus management.</p>
+ <b>Elements:</b>
+ <ul>
+ <li><a href="qml-flickable.html">Flickable Element</a> - The Flickable item provides a surface that can be "flicked".</li>
+ <li><a href="qml-flipable.html">Flipable Element</a> - The Flipable item provides a surface that can be flipped or reflected.</li>
+ <li><a href="qml-focuspanel.html">FocusPanel Element</a> - The FocusPanel item explicitly creates a focus panel.</li>
+ <li><a href="qml-focusscope.html">FocusScope Element</a> - The FocusScope object explicitly creates a focus scope for focus management.</li>
+ <li><a href="qml-gesturearea.html">GestureArea Element</a> - The GestureArea item enables simple gesture handling.</li>
+ <li><a href="qml-keynavigation.html">KeyNavigation Element</a> - The KeyNavigation attached property supports key navigation by arrow keys.</li>
+ <li><a href="qml-keys.html">Keys Element</a> - The Keys attached property provides key handling to Items.</li>
+ <li><a href="qml-mousearea.html">MouseArea Element</a> - The MouseArea item enables simple mouse handling.</li>
+ </ul>
+ </div>
+ </div>
+ <!-- next -->
+ <div class="item group">
+ <hr>
+ <div class="secondary">
+ <div class="box">
+ <!-- video box -->
+ <h3>
+ image heading</h3>
+ <img src="" />
+ <p>
+ img descr.</p>
+ </div>
+ <!-- video box end -->
+ </div>
+ <div class="primary">
+ <h2><a name="eventElements">QML Event Elements</a></h2>
+ <p>
+ Key and mouse events information are provided in these event elements.</p>
+ <b>Elements:</b>
+ <ul>
+ <li><a href="qml-keyevent.html">KeyEvent Element</a> - The KeyEvent
+ object provides information about a key event.</li>
+ <li><a href="qml-mouseevent.html">MouseEvent Element</a> - The MouseEvent
+ object provides information about a mouse event.</li>
+ </ul>
+ </div>
+ </div>
+ <!-- next -->
+ <div class="item group">
+ <hr>
+ <div class="secondary">
+ <div class="box">
+ <!-- video box -->
+ <h3>
+ image heading</h3>
+ <img src="" />
+ <p>
+ img descr.</p>
+ </div>
+ <!-- video box end -->
+ </div>
+ <div class="primary">
+ <h2><a name="Position">QML Positioning Elements</a></h2>
+ <p>
+ Using positioning elements, layouts can be defined and their children accessed through
+ an index.</p>
+ <b>Elements:</b>
+ <ul>
+ <li><a href="qml-column.html">Column Element</a> - The Column
+ item arranges its children vertically.</li>
+ <li><a href="qml-flow.html">Flow Element</a> - The Flow item
+ arranges its children side by side, wrapping as necessary.</li>
+ <li><a href="qml-grid.html">Grid Element</a> - The Grid item
+ positions its children in a grid.</li>
+ <li><a href="qml-row.html">Row Element</a> - The Row item
+ arranges its children horizontally.</li>
+ <li><a href="qml-repeater.html">Repeater Element</a> - The Repeater element allows you to repeat an Item-based component using a model.</li>
+ </ul>
+ </div>
+ </div>
+ <!-- next -->
+ <div class="item group">
+ <hr>
+ <div class="secondary">
+ <div class="box">
+ <!-- video box -->
+ <h3>
+ image heading</h3>
+ <img src="" />
+ <p>
+ img descr.</p>
+ </div>
+ <!-- video box end -->
+ </div>
+ <div class="primary">
+
+ <h2><a name="stateElement">QML State Elements</a></h2>
+ <p>
+ States and groups of states are formed using state elements.</p>
+ <b>Elements:</b>
+ <ul>
+ <li><a href="qml-anchorchanges.html">AnchorChanges Element</a> - The AnchorChanges element allows you to change the anchors of an item in a state.</li>
+ <li><a href="qml-parentchange.html">ParentChange Element</a> - The ParentChange element allows you to reparent an Item in a state change.</li>
+ <li><a href="qml-propertychanges.html">PropertyChanges Element</a> - The PropertyChanges element describes new property bindings or values for a state.</li>
+ <li><a href="qml-state.html">State Element</a> - The State
+ element defines configurations of objects and properties.</li>
+ <li><a href="qml-statechangescript.html">StateChangeScript Element</a> - The StateChangeScript element allows you to run a script in a state.</li>
+ <li><a href="qml-stategroup.html">StateGroup Element</a> - The StateGroup element provides state support for non-Item elements.</li>
+ </ul>
+ </div>
+ </div>
+ <!-- next -->
+ <div class="item group">
+ <hr>
+ <div class="secondary">
+ <div class="box">
+ <!-- video box -->
+ <h3>
+ image heading</h3>
+ <img src="" />
+ <p>
+ img descr.</p>
+ </div>
+ <!-- video box end -->
+ </div>
+ <div class="primary">
+ <h2><a name="transformElement">QML Transform Elements</a></h2>
+ <p>
+ Advanced handling of transformations is controlled in transform elements.</p>
+ <b>Elements:</b>
+ <ul>
+ <li><a href="qml-rotation.html">Rotation Element</a> - The Rotation object provides a way to rotate an Item.</li>
+ <li><a href="qml-scale.html">Scale Element</a> - The Scale element provides a way to scale an Item.</li>
+ <li><a href="qml-transform.html">Transform Element</a> - The Transform element provide a way of building advanced transformations on Items.</li>
+ <li><a href="qml-translate.html">Translate Element</a> - The Translate object provides a way to move an Item without changing its x or y properties.</li>
+ </ul>
+ </div>
+ </div>
+ <!-- next -->
+ <div class="item group">
+ <hr>
+ <div class="secondary">
+ <div class="box">
+ <!-- video box -->
+ <h3>
+ image heading</h3>
+ <img src="" />
+ <p>
+ img descr.</p>
+ </div>
+ <!-- video box end -->
+ </div>
+ <div class="primary">
+ <h2><a name="utilityElement">QML Utility Elements</a></h2>
+ <p>
+ These elements handle assorted operations such as event timing, Qt enumerations,
+ and font loading.</p>
+ <b>Elements:</b>
+ <ul>
+ <li><a href="qml-binding.html">Binding Element</a> - The Binding element allows arbitrary property bindings to be created.</li>
+ <li><a href="qml-connections.html">Connections Element</a> - A Connections element describes generalized connections to signals.</li>
+ <li><a href="qml-doublevalidator.html">DoubleValidator Element</a> - Provides a validator for non-integer numbers.</li>
+ <li><a href="qml-fontloader.html">FontLoader Element</a> - The FontLoader element allows fonts to be loaded by name or URL.</li>
+ <li><a href="qml-intvalidator.html">IntValidator Element</a> - This element provides a validator for integer values.</li>
+ <li><a href="qml-layoutitem.html">LayoutItem Element</a> - The LayoutItem element allows declarative UI elements to be placed inside Qt's Graphics View layouts.</li>
+ <li><a href="qml-loader.html">Loader Element</a> - The Loader item allows dynamically loading an Item-based subtree from a URL or Component.</li>
+ <li><a href="qml-package.html">Package Element</a> - Package provides a bundle for shared contexts in multiple views.</li>
+ <li><a href="qml-qt.html">Qt Element</a> - The QML global Qt object provides useful enums and functions from Qt.</li>
+ <li><a href="qml-qtobject.html">QtObject Element</a> - The QtObject element is the most basic element in QML.</li>
+ <li><a href="qml-regexpvalidator.html">RegExpValidator Element</a> - This element provides a validator for regular expressions.</li>
+ <li><a href="qml-systempalette.html">SystemPalette Element</a> - The SystemPalette element provides access to the Qt palettes.</li>
+ <li><a href="qml-timer.html">Timer Element</a> - The Timer item triggers a handler at a specified interval.</li>
+ <li><a href="qml-workerscript.html">WorkerScript Element</a> - The WorkerScript element enables the use of threads in QML.</li>
+ </ul>
+ </div>
+ </div>
+ <!-- next -->
+ <div class="item group">
+ <hr>
+ <div class="secondary">
+ <div class="box">
+ <!-- video box -->
+ <h3>
+ image heading</h3>
+ <img src="" />
+ <p>
+ img descr.</p>
+ </div>
+ <!-- video box end -->
+ </div>
+ <div class="primary">
+ <h2><a name="modelView">Models and View Elements</a></h2>
+ <p>
+ Models and views are used to organize data and control their layouts using delegates.
+ Models dictate the data formation and views control the layouts of data in the model.</p>
+ <b>View Elements:</b>
+ <ul>
+ <li><a href="qml-gridview.html">GridView Element</a> - The GridView item provides a grid view of items provided by a model.</li>
+ <li><a href="qml-listview.html">ListView Element</a> - The ListView item provides a list view of items provided by a model.</li>
+ <li><a href="qml-pathview.html">PathView Element</a> - The PathView element lays out model-provided items on a path.</li>
+ <li><a href="qml-webview.html">WebView Element</a> - The WebView item allows you to add Web content to a canvas.</li>
+ </ul>
+ <b>Model Elements:</b>
+ <ul>
+ <li><a href="qml-folderlistmodel.html">FolderListModel Element</a> - The FolderListModel provides a model of the contents of a file system folder.</li>
+ <li><a href="qml-listelement.html">ListElement Element</a> - A ListElement defines a data item in a ListModel.</li>
+ <li><a href="qml-listmodel.html">ListModel Element</a> - The ListModel element defines a free-form list data source.</li>
+ <li><a href="qml-visualdatamodel.html">VisualDataModel Element</a> - The VisualDataModel encapsulates a model and delegate.</li>
+ <li><a href="qml-visualitemmodel.html">VisualItemModel Element</a> - The VisualItemModel allows items to be provided to a view.</li>
+ <li><a href="qml-xmllistmodel.html">XmlListModel Element</a> - The XmlListModel element is used to specify a model using XPath expressions.</li>
+ <li><a href="qml-xmlrole.html">XmlRole Element</a> - The XmlRole element allows you to specify a role for an XmlListModel.</li>
+ </ul>
+ </div>
+ </div>
+ <!-- next -->
+ <div class="item group">
+ <hr>
+ <div class="secondary">
+ <div class="box">
+ <!-- video box -->
+ <h3>
+ image heading</h3>
+ <img src="" />
+ <p>
+ img descr.</p>
+ </div>
+ <!-- video box end -->
+ </div>
+ <div class="primary">
+ <h2><a name="paths">Paths</a></h2>
+ <p>
+ QML components can be arranged along paths. Path elements allow control over different
+ path types.</p>
+ <b>Elements:</b>
+ <ul>
+ <li><a href="qml-path.html">Path Element</a> - A Path object defines a path for use by PathView.</li>
+ <li><a href="qml-pathattribute.html">PathAttribute Element</a> - The PathAttribute allows setting an attribute at a given position in a Path.</li>
+ <li><a href="qml-pathcubic.html">PathCubic Element</a> - The PathCubic defines a cubic Bezier curve with two control points.</li>
+ <li><a href="qml-pathelement.html">PathElement Element</a> - PathElement is the base path type.</li>
+ <li><a href="qml-pathline.html">PathLine Element</a> - The PathLine defines a straight line.</li>
+ <li><a href="qml-pathpercent.html">PathPercent Element</a> - The PathPercent manipulates the way a path is interpreted.</li>
+ <li><a href="qml-pathquad.html">PathQuad Element</a> - The PathQuad defines a quadratic Bezier curve with a control point.</li>
+ </ul>
+ </div>
+ </div>
+ <!-- next -->
+ <div class="item group">
+ <hr>
+ <div class="secondary">
+ <div class="box">
+ <!-- video box -->
+ <h3>
+ image heading</h3>
+ <img src="" />
+ <p>
+ img descr.</p>
+ </div>
+ <!-- video box end -->
+ </div>
+ <div class="primary">
+ <h2><a name="ParticleElement">Particle Elements</a></h2>
+ <p>
+ Particle effects are declared and controlled using particle elements.</p>
+ <b>Elements:</b>
+ <ul>
+ <li><a href="qml-particlemotiongravity.html">ParticleMotionGravity Element</a> - The ParticleMotionGravity object moves particles towards a point.</li>
+ <li><a href="qml-particlemotionlinear.html">ParticleMotionLinear Element</a> - The ParticleMotionLinear object moves particles linearly.</li>
+ <li><a href="qml-particlemotionwander.html">ParticleMotionWander Element</a> - The ParticleMotionWander object moves particles in a somewhat random fashion.</li>
+ <li><a href="qml-particles.html">Particles Element</a> - The Particles object generates and moves particles.</li>
+ </ul>
+ </div>
+ </div>
+ <!-- next -->
+ <div class="item group">
+ <hr>
+ <div class="secondary">
+ <div class="box">
+ <!-- video box -->
+ <h3>
+ image heading</h3>
+ <img src="" />
+ <p>
+ img descr.</p>
+ </div>
+ <!-- video box end -->
+ </div>
+ <div class="primary">
+ <h2><a name="bridge">Bridge Elements</a></h2>
+ <p>
+ Bridge elements allow direct communication between C++ and QML entities.</p>
+ <b>Elements:</b>
+ <ul>
+ <li><a href="qml-layoutitem.html">LayoutItem Element</a> - The LayoutItem element allows declarative UI elements to be placed inside Qt's Graphics View layouts.</li>
+ </ul>
+ </div>
+ </div>
+
+\endraw
+
+
+
+*/
+
diff --git a/doc/src/declarative/qtbinding.qdoc b/doc/src/declarative/qtbinding.qdoc
index 58d53de79f..c3ce6d025d 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
+Qt Declarative module allow QML components to be loaded and manipulated from C++, and through
+Qt's \l{The Meta-Object System}{meta-object system}, QML and C++ objects can easily
+communicate through Qt signals and slots. In addition, QML plugins can be written to create
+reusable QML components for distribution.
-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 Qt Declarative module (for example, to dynamically generate
+images using QDeclarativeImageProvider)
+\o To write your own QML elements (whether for your applications, or for distribution to others)
+\endlist
+
+To use the Qt Declarative module, you must include and link to the module appropriately, as shown on
+the \l {QtDeclarative}{module index page}. The \l {Qt Declarative UI Runtime} documentation
+shows how to build a basic C++ application that uses this module.
+
+
+\section1 Core module classes
-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 Qt Declarative module provides a set of C++ APIs for extending your QML applications from C++ and
+embedding QML into C++ applications. There are several core classes in the Qt Declarative module
+that provide the essential capabilities for doing this. These are:
-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,169 @@ 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(). To be accessible from QML, the names of enum values
+must begin with a capital letter.
+
+See the \l {Tutorial: Writing QML extensions with C++}{Writing QML extensions with C++} tutorial and
+the \l {Extending QML in C++} reference documentation for more information.
+
+
+\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 Qt Declarative module includes the QDeclarativeExtensionPlugin class, which is an abstract
+class for writing QML plugins. This allows QML extension types to be dynamically loaded into
+QML applications.
+
+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/declarative/qtdeclarative.qdoc b/doc/src/declarative/qtdeclarative.qdoc
index 7ecdc53dc2..f2b20329fa 100644
--- a/doc/src/declarative/qtdeclarative.qdoc
+++ b/doc/src/declarative/qtdeclarative.qdoc
@@ -27,7 +27,7 @@
/*!
\module QtDeclarative
- \title QtDeclarative Module
+ \title Qt Declarative Module
\ingroup modules
\brief The Qt Declarative module provides a declarative framework
diff --git a/doc/src/declarative/whatsnew.qdoc b/doc/src/declarative/whatsnew.qdoc
index f8d1d0e499..df0e999be8 100644
--- a/doc/src/declarative/whatsnew.qdoc
+++ b/doc/src/declarative/whatsnew.qdoc
@@ -7,11 +7,11 @@
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
-** Commercial Usage
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in a
-** written agreement between you and Nokia.
+** 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 Free Documentation License
** Alternatively, this file may be used under the terms of the GNU Free
diff --git a/doc/src/development/designer-manual.qdoc b/doc/src/development/designer-manual.qdoc
index b30a700e0a..df82fba489 100644
--- a/doc/src/development/designer-manual.qdoc
+++ b/doc/src/development/designer-manual.qdoc
@@ -1769,37 +1769,54 @@ pixmap property in the property editor.
\title Using a Designer UI File in Your Application
- With Qt's integrated build tools, \l{qmake Manual}{qmake} and \l uic, the
- code for user interface components created with \QD is automatically
- generated when the rest of your application is built. Forms can be included
- and used directly from your application. Alternatively, you can use them to
- extend subclasses of standard widgets. These forms can be processed at
- compile time or at run time, depending on the approach used.
+ Qt Designer UI files represent the widget tree of the form in XML format. The
+ forms can be processed:
+ \list
+ \o \l{Compile Time Form Processing}{At compile time}, which means that forms
+ are converted to C++ code that can be compiled.
+ \o \l{Run Time Form Processing}{At runtime}, which means that forms are processed
+ by the QUiLoader class that dynamically constructs the widget tree while
+ parsing the XML file.
+ \endlist
\tableofcontents
\section1 Compile Time Form Processing
+ You create user interface components with \QD and use Qt's integrated build tools,
+ \l{qmake Manual}{qmake} and \l{User Interface Compiler (uic)}{uic}, to generate code
+ for them when the application is built. The generated code contains the form's user
+ interface object. It is a C++ struct that contains:
+
+ \list
+ \o Pointers to the form's widgets, layouts, layout items,
+ button groups, and actions.
+ \o A member function called \c setupUi() to build the widget tree
+ on the parent widget.
+ \o A member function called \c retranslateUi() that handles the
+ translation of the string properties of the form. For more information,
+ see \l{Reacting to Language Changes}.
+ \endlist
+
+ The generated code can be included in your application and used directly from
+ it. Alternatively, you can use it to extend subclasses of standard widgets.
+
A compile time processed form can be used in your application with one of
the following approaches:
\list
- \o The Direct Approach: you construct a widget to use as a placeholder
+ \o \l{The Direct Approach}: you construct a widget to use as a placeholder
for the component, and set up the user interface inside it.
- \o The Single Inheritance Approach: you subclass the form's base class
+ \o \l{The Single Inheritance Approach}: you subclass the form's base class
(QWidget or QDialog, for example), and include a private instance
of the form's user interface object.
- \o The MultipleInheritance Approach: you subclass both the form's base
+ \o \l{The Multiple Inheritance Approach}: you subclass both the form's base
class and the form's user interface object. This allows the widgets
defined in the form to be used directly from within the scope of
the subclass.
\endlist
-
- \section2 The Direct Approach
-
- To demonstrate how to use user interface (UI) files straight from
- \QD, we create a simple Calculator Form application. This is based on the
+ To demonstrate, we create a simple Calculator Form application. It is based on the
original \l{Calculator Form Example}{Calculator Form} example.
The application consists of one source file, \c main.cpp and a UI
@@ -1817,15 +1834,18 @@ pixmap property in the property editor.
The special feature of this file is the \c FORMS declaration that tells
\c qmake which files to process with \c uic. In this case, the
\c calculatorform.ui file is used to create a \c ui_calculatorform.h file
- that can be used by any file listed in the \c SOURCES declaration. To
- ensure that \c qmake generates the \c ui_calculatorform.h file, we need to
- include it in a file listed in \c SOURCES. Since we only have \c main.cpp,
- we include it there:
+ that can be used by any file listed in the \c SOURCES declaration.
- \snippet doc/src/snippets/uitools/calculatorform/main.cpp 0
+ \note You can use Qt Creator to create the Calculator Form project. It
+ automatically generates the main.cpp, UI, and .pro files, which you can
+ then modify.
+
+ \section2 The Direct Approach
- This include is an additional check to ensure that we do not generate code
- for UI files that are not used.
+ To use the direct approach, we include the \c ui_calculatorform.h file
+ directly in \c main.cpp:
+
+ \snippet doc/src/snippets/uitools/calculatorform/main.cpp 0
The \c main function creates the calculator widget by constructing a
standard QWidget that we use to host the user interface described by the
@@ -1837,23 +1857,33 @@ pixmap property in the property editor.
from the \c ui_calculatorform.h file that sets up all the dialog's widgets
and the connections between its signals and slots.
- This approach provides a quick and easy way to use simple, self-contained
- components in your applications, but many componens created with \QD will
+ The direct approach provides a quick and easy way to use simple, self-contained
+ components in your applications. However, componens created with \QD often
require close integration with the rest of the application code. For
instance, the \c CalculatorForm code provided above will compile and run,
but the QSpinBox objects will not interact with the QLabel as we need a
custom slot to carry out the add operation and display the result in the
- QLabel. To achieve this, we need to subclass a standard Qt widget (known as
- the single inheritance approach).
-
+ QLabel. To achieve this, we need to use the single inheritance approach.
\section2 The Single Inheritance Approach
+ To use the single inheritance approach, we subclass a standard Qt widget and
+ include a private instance of the form's user interface object. This can take
+ the form of:
+
+ \list
+ \o A member variable
+ \o A pointer member variable
+ \endlist
+
+ \section3 Using a Member Variable
+
In this approach, we subclass a Qt widget and set up the user interface
from within the constructor. Components used in this way expose the widgets
and layouts used in the form to the Qt widget subclass, and provide a
standard system for making signal and slot connections between the user
interface and other objects in your application.
+ The generated \c{Ui::CalculatorForm} structure is a member of the class.
This approach is used in the \l{Calculator Form Example}{Calculator Form}
example.
@@ -1893,6 +1923,52 @@ pixmap property in the property editor.
them. This approach can be used to create individual tabs from existing
forms, for example.
+ \section3 Using a Pointer Member Variable
+
+ Alternatively, the \c{Ui::CalculatorForm} structure can be made a pointer
+ member of the class. The header then looks as follows:
+
+ \code
+
+ namespace Ui {
+ class CalculatorForm;
+ }
+
+ class CalculatorForm : public QWidget
+ ...
+ virtual ~CalculatorForm();
+ ...
+ private:
+ Ui::CalculatorForm *ui;
+ ...
+
+ \endcode
+
+ The corresponding source file looks as follows:
+
+ \code
+ #include "ui_calculatorform.h"
+
+ CalculatorForm::CalculatorForm(QWidget *parent) :
+ QWidget(parent), ui(new Ui::CalculatorForm)
+ {
+ ui->setupUi(this);
+ }
+
+ CalculatorForm::~CalculatorForm()
+ {
+ delete ui;
+ }
+ \endcode
+
+ The advantage of this approach is that the user interface object can be
+ forward-declared, which means that we do not have to include the generated
+ \c ui_calculatorform.h file in the header. The form can then be changed without
+ recompiling the dependent source files. This is particularly important if the
+ class is subject to binary compatibility restrictions.
+
+ We generally recommend this approach for libraries and large applications.
+ For more information, see \l{Creating Shared Libraries}.
\section2 The Multiple Inheritance Approach
@@ -1906,13 +1982,14 @@ pixmap property in the property editor.
{Multiple Inheritance} example.
We need to include the header file that \c uic generates from the
- \c calculatorform.ui file:
+ \c calculatorform.ui file, as follows:
\snippet examples/uitools/multipleinheritance/calculatorform.h 0
The class is defined in a similar way to the one used in the
\l{The Single Inheritance Approach}{single inheritance approach}, except that
- this time we inherit from \e{both} QWidget and \c{Ui::CalculatorForm}:
+ this time we inherit from \e{both} QWidget and \c{Ui::CalculatorForm},
+ as follows:
\snippet examples/uitools/multipleinheritance/calculatorform.h 1
@@ -1931,11 +2008,26 @@ pixmap property in the property editor.
same say as a widget created in code by hand. We no longer require the
\c{ui} prefix to access them.
- Subclassing using multiple inheritance gives us more direct access to the
- contents of the form, is slightly cleaner than the single inheritance
- approach, but does not conveniently support composition of multiple user
- interfaces.
+ \section2 Reacting to Language Changes
+
+ Qt notifies applications if the user interface language changes by sending an
+ event of the type QEvent::LanguageChange. To call the member function
+ \c retranslateUi() of the user interface object, we reimplement
+ \c QWidget::changeEvent() in the form class, as follows:
+ \code
+ void CalculatorForm::changeEvent(QEvent *e)
+ {
+ QWidget::changeEvent(e);
+ switch (e->type()) {
+ case QEvent::LanguageChange:
+ ui->retranslateUi(this);
+ break;
+ default:
+ break;
+ }
+ }
+ \endcode
\section1 Run Time Form Processing
diff --git a/doc/src/development/developing-with-qt.qdoc b/doc/src/development/developing-with-qt.qdoc
index 3972b5904c..6793abd25a 100644
--- a/doc/src/development/developing-with-qt.qdoc
+++ b/doc/src/development/developing-with-qt.qdoc
@@ -81,8 +81,8 @@
\o \l {Compiler Notes}
\o \l {Developing Qt Applications for Mac OS X}
\o \l {Known Issues}
- \o \l {Platform Notes}
- \o \l {Platform Notes - Symbian}
+ \o \l {Platform and Compiler Notes}
+ \o \l {Platform and Compiler Notes - Symbian}
\o \l {ActiveX in Qt}
\o \l {Qt for Embedded Linux Classes}
\o \l {Qt for Embedded Platforms}
@@ -112,4 +112,4 @@
\endtable
-*/ \ No newline at end of file
+*/
diff --git a/doc/src/development/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc
index d65967d13c..c0ed940882 100644
--- a/doc/src/development/qmake-manual.qdoc
+++ b/doc/src/development/qmake-manual.qdoc
@@ -1294,6 +1294,14 @@
test sections in generated bld.inf instead of their regular sections.
Note that this only affects automatically generated bld.inf content;
the content added via \c BLD_INF_RULES variable is not affected.
+ \row \o localize_deployment \o Makes \c lupdate tool add fields for
+ application captions and package file names into generated \c{.ts}
+ files. Qmake generates properly localized \c{.loc} and \c{.pkg} files
+ based on available translations. Translation file name bodies must
+ end with underscore and the language code for deployment localization
+ to work. E.g. \c{myapp_en.ts}.
+ \bold{Note:} All languages supported by Qt are not supported by Symbian,
+ so some \c{.ts} files may be ignored by qmake.
\endtable
These options have an effect on Linux/Unix platforms:
@@ -1394,12 +1402,16 @@
On the Symbian platform, generic PKG file content can also be specified with this
variable. You can use either \c pkg_prerules or \c pkg_postrules to
pass raw data to PKG file. The strings in \c pkg_prerules are added before
- package-body and \c pkg_postrules after. The strings defined in
- \c pkg_postrules or \c pkg_prerules are not parsed by qmake, so they
- should be in a format understood by Symbian package generation tools.
+ package-body and \c pkg_postrules after. \c pkg_prerules is used for
+ defining vendor information, dependencies, custom package headers, and the
+ like, while \c pkg_postrules is used for custom file deployment and
+ embedded sis directives.
+ The strings defined in \c pkg_postrules or \c pkg_prerules are not parsed
+ by qmake, so they should be in a format understood by Symbian package
+ generation tools.
Please consult the Symbian platform documentation for correct syntax.
- For example, to deploy DLL and add a new dependency:
+ For example, to deploy DLL and add a new dependency:
\snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 140
@@ -1415,13 +1427,28 @@
\o localized and unique vendor, for example \BR
%{"Vendor-EN", ..., "Vendor-FR"}
:"Unique vendor name"
- \endlist
+ \endlist
- If you decide to override any of these statements, you need to pay
+ If you decide to override any of these statements, you need to pay
attention that also other statements stay valid. For example if you
override languages statement, you must override also package-header
statement and all other statements which are language specific.
+ On the Symbian platform, three separate PKG files are generated:
+
+ \list
+ \o <app>_template.pkg - For application SIS file. Rules suffix: \c{.main}
+ \o <app>_installer.pkg - For smart installer SIS file. Rules suffix: \c{.installer}
+ \o <app>_stub.pkg - For ROM stubs. Rules suffix: \c{.stub}
+ \endlist
+
+ \c pkg_prerules and \c pkg_postrules given without rules suffix will
+ intelligently apply to each of these files, but rules can also be
+ targeted to only one of above files by appending listed rules suffix
+ to the variable name:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 153
+
On the Symbian platform, the \c default_deployment item specifies
default platform and package dependencies. Those dependencies can be
selectively disabled if alternative dependencies need to be defined
@@ -1439,6 +1466,46 @@
\snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 141
+ On the Symbian platform, a default deployment is generated for all
+ application projects. You can modify the autogenerated default
+ deployment via following \c DEPLOYMENT variable values:
+
+ \list
+ \o default_bin_deployment - Application executable
+ \o default_resource_deployment - Application resources, including icon
+ \o default_reg_deployment - Application registration file
+ \endlist
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 154
+
+ This will entirely remove the default application deployment.
+
+ On the Symbian platform, you can specify file specific install options
+ with \c{.flags} modifier. Please consult the Symbian platform documentation
+ for supported options.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 155
+
+ This will show a message box that gives user an option to cancel the
+ installation and then automatically runs the application after
+ installation is complete.
+
+ \note Automatically running the applications after install may require signing
+ the package with better than self-signed certificate, depending on the phone model.
+ Additionally, some tools such as Runonphone may not work properly with sis
+ packages that automatically run the application upon install.
+
+ On the Symbian platform, the default package name and the default name that
+ appears in application menu is derived from the \c TARGET variable.
+ Often the default is not optimal for displaying to end user. To set a better
+ display name for these purposes, use \c{DEPLOYMENT.display_name} variable:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.qdoc 156
+
On the Symbian platform, you can use \c{DEPLOYMENT.installer_header}
variable to generate smart installer wrapper for your application.
If you specify just UID of the installer package as the value, then
diff --git a/doc/src/development/qtestlib.qdoc b/doc/src/development/qtestlib.qdoc
index cc5afd2964..e53957f9c0 100644
--- a/doc/src/development/qtestlib.qdoc
+++ b/doc/src/development/qtestlib.qdoc
@@ -32,7 +32,7 @@
\ingroup frameworks-technologies
\ingroup qt-basic-concepts
-
+
\keyword qtestlib
The QTestLib framework, provided by Nokia, is a tool for unit
@@ -40,10 +40,6 @@
all the functionality commonly found in unit testing frameworks as
well as extensions for testing graphical user interfaces.
- Table of contents:
-
- \tableofcontents
-
\section1 QTestLib Features
QTestLib is designed to ease the writing of unit tests for Qt
@@ -88,6 +84,10 @@
\o Custom types can easily be added to the test data and test output.
\endtable
+ \note For higher-level GUI and application testing needs, please
+ see the \l{Partner Directory} for Qt testing products provided by
+ Nokia partners.
+
\section1 QTestLib API
@@ -213,17 +213,17 @@
\endlist
\section2 Creating a Benchmark
-
+
To create a benchmark, follow the instructions for creating a test and then add a
QBENCHMARK macro to the test function that you want to benchmark.
-
+
\snippet doc/src/snippets/code/doc_src_qtestlib.qdoc 12
-
+
The code inside the QBENCHMARK macro will be measured, and possibly also repeated
several times in order to get an accurate measurement. This depends on the selected
measurement back-end. Several back-ends are available. They can be selected on the
command line:
-
+
\target testlib-benchmarking-measurement
\table
@@ -243,7 +243,7 @@
\o -eventcounter
\o All platforms
\endtable
-
+
In short, walltime is always available but requires many repetitions to
get a useful result.
Tick counters are usually available and can provide
@@ -255,7 +255,7 @@
Event counting is available on all platforms and it provides the number of events
that were received by the event loop before they are sent to their corresponding
targets (this might include non-Qt events).
-
+
\note Depending on the device configuration, Tick counters on the
Windows CE platform may not be as fine-grained, compared to other platforms.
Devices that do not support high-resolution timers default to
@@ -320,7 +320,7 @@
host computer and the device. Thus header files and libraries are needed to compile
cetest and QtRemote successfully.
- Prior to \l{Installing Qt on Windows CE}{installation} of Qt, you need to set your
+ Prior to \l{Installing Qt for Windows CE}{installation} of Qt, you need to set your
\c INCLUDE and \c LIB environment variables properly.
A default installation of Windows Mobile 5 for Pocket PC can be obtained by:
@@ -334,7 +334,7 @@
The CPU tick counters used for benchmarking is licensed under the following
license: (from src/testlib/3rdparty/cycle.h)
-
+
\legalese
Copyright (c) 2003, 2006 Matteo Frigo\br
Copyright (c) 2003, 2006 Massachusetts Institute of Technology
@@ -365,6 +365,7 @@
\brief A short introduction to testing with QTestLib.
\contentspage QTestLib Manual
\nextpage {Chapter 1: Writing a Unit Test}{Chapter 1}
+ \ingroup best-practices
\title QTestLib Tutorial
diff --git a/doc/src/examples/webkit-bridge-imageanalyzer.qdoc b/doc/src/examples/webkit-bridge-imageanalyzer.qdoc
index b8c42c6e3f..cee2659312 100644
--- a/doc/src/examples/webkit-bridge-imageanalyzer.qdoc
+++ b/doc/src/examples/webkit-bridge-imageanalyzer.qdoc
@@ -24,9 +24,10 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+
/*!
\example webkit/imageanalyzer
- \startpage {index.html} {Qt Reference Documentation}
+ \startpage {index.html}{Qt Reference Documentation}
\title The Webkit Bridge Tutorial - Hybrid Client Application
In this example, we will show how to write a hybrid application using
@@ -84,7 +85,7 @@ page's mainFrame with \c addToJavaScriptWindowObject().
\snippet examples/webkit/imageanalyzer/resources/index.html sample images
- Clicking an image adds it to an images list.
+Clicking an image adds it to an images list.
\snippet examples/webkit/imageanalyzer/resources/index.html addImage
diff --git a/doc/src/external-resources.qdoc b/doc/src/external-resources.qdoc
index 30410460cc..8eeaeb1c09 100644
--- a/doc/src/external-resources.qdoc
+++ b/doc/src/external-resources.qdoc
@@ -436,7 +436,12 @@
/*!
\externalpage https://developer.mozilla.org/en/JavaScript
- \title JavaScript
+ \title JavaScript Resources
+*/
+
+/*!
+ \externalpage https://developer.mozilla.org/en/JavaScript/Guide
+ \title JavaScript Guide
*/
/*!
diff --git a/doc/src/frameworks-technologies/dnd.qdoc b/doc/src/frameworks-technologies/dnd.qdoc
index 56b461e73b..356bf9b739 100644
--- a/doc/src/frameworks-technologies/dnd.qdoc
+++ b/doc/src/frameworks-technologies/dnd.qdoc
@@ -44,7 +44,7 @@
outlines the approach used to enable it in custom widgets. Drag
and drop operations are also supported by Qt's item views and by
the graphics view framework. More information is available in
- \l{Using drag & drop with item views} and \l{Graphics View
+ \l{Using drag and drop with item views} and \l{Graphics View
Framework}.
\section1 Drag and Drop Classes
diff --git a/doc/src/frameworks-technologies/model-view-programming.qdoc b/doc/src/frameworks-technologies/model-view-programming.qdoc
index 6de567cd12..cc98432ded 100644
--- a/doc/src/frameworks-technologies/model-view-programming.qdoc
+++ b/doc/src/frameworks-technologies/model-view-programming.qdoc
@@ -32,7 +32,7 @@
/*!
\page model-view-programming.html
- \ingroup qt-basic-concepts
+ \ingroup qt-basic-concepts
\title Model/View Programming
\brief A guide to Qt's extensible model/view architecture.
@@ -1635,7 +1635,7 @@
contain the text given in the search string. This pattern can also be
used in the list and table widgets.
- \section1 Using drag & drop with item views
+ \section1 Using Drag and Drop with Item Views
Qt's drag and drop infrastructure is fully supported by the model/view framework.
Items in lists, tables, and trees can be dragged within the views, and data can be
@@ -1715,7 +1715,7 @@
of QAbstractItemModel::removeRows(), either directly or by inheriting the
implementation from its base class.
- \section3 Enabling drag & drop for items
+ \section3 Enabling drag and drop for items
Models indicate to views which items can be dragged, and which will accept drops,
by reimplementing the QAbstractItemModel::flags() function to provide suitable
@@ -2154,7 +2154,7 @@
models to supply some unique identifier to this function to ensure that
the model index can be re-associated with its corresponding item later on.
- \section2 Drag & drop support and MIME type handling
+ \section2 Drag and drop support and MIME type handling
The model/view classes support drag and drop operations, providing default behavior
that is sufficient for many applications. However, it is also possible to customize
@@ -2283,7 +2283,7 @@
\endlist
For more information about drag and drop with item views, refer to
- \l{Using drag & drop with item views}.
+ \l{Using drag and drop with item views}.
\section3 Convenience views
@@ -2294,7 +2294,7 @@
the existing contents with the data being transferred, the underlying model
will set the data of the target items rather than insert new rows and columns
into the model. For more information on drag and drop in convenience views,
- you can see \l{Using drag & drop with item views}.
+ you can see \l{Using drag and drop with item views}.
\section2 Performance optimization for large amounts of data
diff --git a/doc/src/frameworks-technologies/threads.qdoc b/doc/src/frameworks-technologies/threads.qdoc
index 3ef617ccd1..2a0cc1ac46 100644
--- a/doc/src/frameworks-technologies/threads.qdoc
+++ b/doc/src/frameworks-technologies/threads.qdoc
@@ -213,10 +213,10 @@
/*!
\page threads-reentrancy.html
\title Reentrancy and Thread-Safety
-
+
\keyword reentrant
\keyword thread-safe
-
+
\previouspage Synchronizing Threads
\contentspage Thread Support in Qt
\nextpage Threads and QObjects
@@ -243,6 +243,15 @@
from multiple threads, even if all the threads use the \e{same}
instance of the class.
+ \note Qt classes are only documented as \e{thread-safe} if they
+ are intended to be used by multiple threads. If a function is not
+ marked as thread-safe or reentrant, it should not be used from
+ different threads. If a class is not marked as thread-safe or
+ reentrant then a specific instance of that class should not be
+ accessed from different threads.
+
+ \section1 Reentrancy
+
C++ classes are often reentrant, simply because they only access
their own member data. Any thread can call a member function on an
instance of a reentrant class, as long as no other thread can call
@@ -268,6 +277,8 @@
end up overwriting each other, and the variable is incremented
only once!
+ \section1 Thread-Safety
+
Clearly, the access must be serialized: Thread A must perform
steps 1, 2, 3 without interruption (atomically) before thread B
can perform the same steps; or vice versa. An easy way to make
@@ -284,6 +295,8 @@
declared with the \c mutable qualifier because we need to lock
and unlock the mutex in \c value(), which is a const function.
+ \section1 Notes on Qt Classes
+
Many Qt classes are \e{reentrant}, but they are not made
\e{thread-safe}, because making them thread-safe would incur the
extra overhead of repeatedly locking and unlocking a QMutex. For
@@ -297,9 +310,6 @@
the thread-related classes (e.g. QMutex) and fundamental functions
(e.g. QCoreApplication::postEvent()).
- \note Qt Classes are only documented as \e{thread-safe} if they
- are intended to be used by multiple threads.
-
\note Terminology in the multithreading domain isn't entirely
standardized. POSIX uses definitions of reentrant and thread-safe
that are somewhat different for its C APIs. When using other
@@ -459,11 +469,10 @@
\list
- \o \l{Qt::AutoConnection}{Auto Connection} (default) The behavior
- is the same as the Direct Connection, if the emitter and
- receiver are in the same thread. The behavior is the same as
- the Queued Connection, if the emitter and receiver are in
- different threads.
+ \o \l{Qt::AutoConnection}{Auto Connection} (default) If the signal is
+ emitted in the thread which the receiving object has affinity then
+ the behavior is the same as the Direct Connection. Otherwise,
+ the behavior is the same as the Queued Connection."
\o \l{Qt::DirectConnection}{Direct Connection} The slot is invoked
immediately, when the signal is emitted. The slot is executed
diff --git a/doc/src/getting-started/examples.qdoc b/doc/src/getting-started/examples.qdoc
index 398eee8f68..851e161318 100644
--- a/doc/src/getting-started/examples.qdoc
+++ b/doc/src/getting-started/examples.qdoc
@@ -36,7 +36,7 @@
You can run the examples from the \l{Examples and Demos Launcher}
application (except see \l{QML Examples and Demos} {QML Examples}
- for special instructions for running thos examples).
+ for special instructions for running those examples).
The examples are listed below by functional area. Each example
listed in a particular functional area is meant to illustrate how
@@ -53,7 +53,8 @@
deliberately show off Qt's features. You might want to look at
these as well.
- These examples are provided under the terms of the \l{BSD License}.
+ These examples are provided under the terms of the
+ \l{New and Modified BSD Licenses}{Modified BSD License}.
\section1 Examples by Functional Area
diff --git a/doc/src/getting-started/gettingstartedqml.qdoc b/doc/src/getting-started/gettingstartedqml.qdoc
index 065628a701..b76758749e 100644
--- a/doc/src/getting-started/gettingstartedqml.qdoc
+++ b/doc/src/getting-started/gettingstartedqml.qdoc
@@ -42,7 +42,7 @@
installation instructions and requirements for different platforms.
Qt Quick includes a declarative language called
- \l{Introduction to the QML language}{QML}, the \l{QtDeclarative Module}, and
+ \l{Introduction to the QML language}{QML}, the \l{Qt Declarative Module}, and
\l{QML Viewer}.
\section1 QML to Build User Interfaces
@@ -58,7 +58,12 @@
\image qml-texteditor5_editmenu.png
- To run the QML example code, merely provide the included \l{QML Viewer}{qmlviewer}
+ The final source code is in the \c{examples/tutorials/gettingStarted/gsQml}
+ directory. You may need to compile the C++ plugin in the
+ \c{examples/tutorials/gettingStarted/gsQml/} first. This will put the
+ C++ plugin in a directory where the QML files may find it.
+
+ To launch the text editor, merely provide the included \l{QML Viewer}{qmlviewer}
tool with the QML file as the argument. The C++ portion of this tutorial assumes
that the reader possesses basic knowledge of Qt's compilation procedures.
@@ -81,7 +86,7 @@
In QML, the basic visual item is the \l {Rectangle}{Rectangle} element. The
\c Rectangle element has properties to control the element's appearance and location.
- \snippet examples/tutorials/gettingStarted/gsQml/core/Button.qml document
+ \snippet examples/tutorials/gettingStarted/gsQml/parts/part0/Button.qml document
First, the \c { import QtQuick 1.0 } allows the qmlviewer tool to import the QML elements
we will later use. This line must exist for every QML file. Notice that the version
@@ -1005,4 +1010,14 @@
The application can function as a simple text editor, able to accept text
and save the text into a file. The text editor can also load from a file and
perform text manipulation.
+
+ \section1 Running the Text Editor
+
+ We need to compile the file dialog C++ plugin before the text editor can run.
+ To compile, enter the \c gsQml directory, then run \c qmake and compile
+ using \c make or \c nmake, depending on your platform. To run, launch
+ qmlviewer and open the \c texteditor.qml file.
+
+ The source code is in the \c{examples/tutorials/gettingStarted/gsQml}
+ directory.
*/
diff --git a/doc/src/getting-started/installation.qdoc b/doc/src/getting-started/installation.qdoc
index fdb88f5bcb..7196ab4c9f 100644
--- a/doc/src/getting-started/installation.qdoc
+++ b/doc/src/getting-started/installation.qdoc
@@ -40,7 +40,7 @@ for your platform from the following list.
*/
/*! \page install-x11.html
-\title Installing Qt on X11 Platforms
+\title Installing Qt for X11 Platforms
\ingroup installation
\brief How to install Qt on platforms with X11.
\previouspage Installation
@@ -151,7 +151,7 @@ for your platform from the following list.
/*!
\page install-win.html
-\title Installing Qt on Windows
+\title Installing Qt for Windows
\ingroup installation
\brief How to install Qt on Windows.
\previouspage Installation
@@ -269,7 +269,7 @@ for your platform from the following list.
*/
/*! \page install-mac.html
-\title Installing Qt on Mac OS X
+\title Installing Qt for Mac OS X
\ingroup installation
\brief How to install Qt on Mac OS X.
\previouspage Installation
@@ -563,7 +563,7 @@ in the \l{Qt for the Symbian platform Requirements} document.
This document describes how to install and configure Qt for
the Symbian platform from scratch. If you are using pre-built binaries, follow
-the instructions given in the \l{Installing Qt on the Symbian platform from a
+the instructions given in the \l{Installing Qt for the Symbian platform from a
Binary Package} document.
\section1 Step 1: Set Up the Development Environment
@@ -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/index.qdoc b/doc/src/index.qdoc
index e42dfca59f..57fc18aa50 100644
--- a/doc/src/index.qdoc
+++ b/doc/src/index.qdoc
@@ -45,7 +45,7 @@
<li><a href="how-to-learn-qt.html">How to learn Qt</a></li>
<li><a href="tutorials.html">Tutorials</a></li>
<li><a href="all-examples.html">Examples</a></li>
- <li><a href="qt4-7-intro.html">Whats new in Qt 4.7</a></li>
+ <li><a href="qt4-7-intro.html">What's new in Qt 4.7</a></li>
</ul>
</div>
</div>
diff --git a/doc/src/legal/opensourceedition.qdoc b/doc/src/legal/opensourceedition.qdoc
index e3a3e277b2..602e6d3748 100644
--- a/doc/src/legal/opensourceedition.qdoc
+++ b/doc/src/legal/opensourceedition.qdoc
@@ -46,7 +46,7 @@
that are compatible with these free software licenses.
Additionally, the \l{Qt Examples}{examples} included with Qt are provided under
- the terms of the \l{BSD License}.
+ the terms of the \l{New and Modified BSD Licenses}{Modified BSD License}.
The support of open source with the Open Source Versions of Qt has enabled large
successful software projects like KDE to thrive, with thousands of developers
diff --git a/doc/src/legal/trademarks.qdoc b/doc/src/legal/trademarks.qdoc
index 42cb7a9dc3..3bf783fe1f 100644
--- a/doc/src/legal/trademarks.qdoc
+++ b/doc/src/legal/trademarks.qdoc
@@ -33,20 +33,20 @@
\brief Information about trademarks owned by Nokia and other organisations.
Nokia, the Nokia logo, Qt, and the Qt logo are trademarks of Nokia
-  Corporation and/or its subsidiaries in Finland and other countries.
+ Corporation and/or its subsidiaries in Finland and other countries.
\list
\o Intel, Intel Inside (logos), MMX and Pentium are \reg trademarks of
Intel Corporation in the United States, other countries, or both.
- \o Java and all Java-based trademarks are trademarks of Sun Microsystems,
- Inc. in the United States, other countries, or both.
+ \o Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ Other names may be trademarks of their respective owners.
\o Linux is a \reg trademark of Linus Torvalds in the United States, other
countries or both.
\o Mac, Mac OS and Macintosh are \reg trademarks of Apple Computer, Inc.,
registered in the U.S. and other countries.
- \o Microsoft, Windows, Windows NT, XP, Visual Studio and the Windows logo
- are \reg trademarks of Microsoft Corporation in the United States, other
- countries, or both.
+ \o Microsoft, Windows, Windows NT, XP, Windows Vista, Visual Studio and the
+ Windows logo are \reg trademarks of Microsoft Corporation in the United
+ States, other countries, or both.
\o Motif is a registered trademark of The Open Group in the United States,
other countries, or both.
\o OpenGL is a \reg trademark of Silicon Graphics, Inc. in the United States
diff --git a/doc/src/platforms/compiler-notes.qdoc b/doc/src/platforms/compiler-notes.qdoc
index 316b6350a3..fb534dfbb8 100644
--- a/doc/src/platforms/compiler-notes.qdoc
+++ b/doc/src/platforms/compiler-notes.qdoc
@@ -31,270 +31,14 @@
\title Compiler Notes
\brief Information about the C++ compilers and tools used to build Qt.
- This page contains information about the C++ compilers and tools used
- to build Qt on various platforms.
+ This page used to contain information about the C++ compilers and tools
+ used to build Qt on various platforms. This information is now maintained
+ in the \l{Platform and Compiler Notes} for each platform.
- \tableofcontents
-
- Please refer to the \l{Platform Notes} for information on the platforms
- Qt is currently known to run on, and see the \l{Supported Platforms}
- page for information about the status of each platform.
+ Please refer to the \l{Supported Platforms} page for information about the
+ status of each platform.
If you have anything to add to this list or any of the platform or
compiler-specific pages, please submit it via the \l{Bug Report Form}
or through the \l{Public Qt Repository}.
-
- \section1 Supported Features
-
- Not all compilers used to build Qt are able to compile all modules. The following table
- shows the compiler support for five modules that are not uniformly available for all
- platforms and compilers.
-
- \table
- \header \o Compiler \o{5,1} Features
- \header \o \o Concurrent \o XmlPatterns \o WebKit(*) \o CLucene \o Phonon
- \row \o g++ 3.3 \o \o \bold{X} \o \o \bold{X} \o \bold{X}
- \row \o g++ 3.4 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
- \row \o SunCC 5.5 \o \o \o \o \bold{X} \o \bold{X}
- \row \o aCC series 3 \o \o \o \o \bold{X} \o \bold{X}
- \row \o aCC series 6 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
- \row \o xlC 6 \o \o \o \o \bold{X} \o \bold{X}
- \row \o Intel CC 10 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
- \row \o MSVC 2003 \o \bold{X} \o \bold{X} \o \o \bold{X} \o \bold{X}
- \row \o MSVC 2005 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
- \endtable
-
- * WebKit is only supported as a dynamically built library. Static linkage is not supported.
-
- \target GCC
- \section1 GCC
-
- \section2 GCC on Windows (MinGW)
-
- We have tested Qt with this compiler on Windows XP.
- The minimal version of MinGW supported is:
-
- \list
- \o GCC 3.4.2
- \o MinGW runtime 3.7
- \o win32api 3.2
- \o binutils 2.15.91
- \o mingw32-make 3.80.0-3
- \endlist
-
- \note For users of the MinGW binary package: This package is now
- based on MinGW 4.4. The installer no longer offers to download
- MinGW for you, but rather offers to use a version of MinGW that
- you already have installed on your machine. You just tell the
- installer which directory MinGW is installed in. If you don't
- already have MinGW 4.4 installed, you can download a .zip archive
- from our \l{ftp://ftp.trolltech.com/misc/MinGW-gcc440_1.zip} {ftp
- site}. This archive provides fixes to MinGW and support for
- missing API, See the _patches directory in the archive for
- details.
-
- \note A MinGW installation is only needed to build against the
- binary pacakge, not to run the pre-compiled binaries that are in
- the package.
-
- \section2 GCC 4.0.0
-
- The released package of the compiler has some bugs that lead to
- miscompilations. We recommend using GCC 4.0.1 or later, or to use
- a recent CVS snapshot of the GCC 4.0 branch. The version of GCC
- 4.0.0 that is shipped with Mac OS X 10.4 "Tiger" is known to work
- with Qt for Mac OS X.
-
- \section2 HP-UX
-
- The hpux-g++ platform is tested with GCC 3.4.4.
-
- \section2 Solaris
-
- Please use GCC 3.4.2 or later.
- Please not that WebKit is not supported for Solaris, regardless of which compiler is used.
-
- \section2 Mac OS X
-
- Please use the latest GCC 3.3 from Apple or a later version of GCC 3.
- The gcc 3.3 that is provided with Xcode 1.5 is known to generate bad code.
- Use the November 2004 GCC 3.3 updater \l{http://connect.apple.com}{available from Apple}.
-
- \section2 GCC 3.4.6 (Debian 3.4.6-5) on AMD64 (x86_64)
-
- This compiler is known to miscompile some parts of Qt when doing a
- release build. There are several workarounds:
-
- \list 1
- \o Use a debug build instead.
- \o For each miscompilation encountered, recompile the file, removing the -O2 option.
- \o Add -fno-gcse to the QMAKE_CXXFLAGS_RELEASE.
- \endlist
-
- \section1 HP ANSI C++ (aCC)
-
- The hpux-acc-32 and hpux-acc-64 platforms are tested with aCC A.03.57. The
- hpuxi-acc-32 and hpuxi-acc-64 platforms are tested with aCC A.06.10.
-
- \section1 Intel C++ Compiler
-
- Qt supports the Intel C++ compiler on both Windows and Linux.
- However, there are a few issues on Linux (see the following
- section).
-
- \section2 Intel C++ Compiler for Linux
-
- Nokia currently tests the following compilers:
-
- \list
-
- \o Intel(R) C++ Compiler for applications running on IA-32,
- Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017
-
- \o Intel(R) C++ Compiler for applications running on Intel(R) 64,
- Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017
-
- \endlist
-
- We do not currently test the IA-64 (Itanium) compiler.
-
- \section2 Known Issues with Intel C++ Compiler for Linux
-
- \list
-
- \o Precompiled header support does not work in version 10.0.025
- and older. For these compilers, you should configure Qt with
- -no-pch. Precompiled header support works properly in version
- 10.0.026 and later.
- \o Version 10.0.026 for Intel 64 is known to miscompile qmake when
- building in release mode. For now, configure Qt with
- -debug. Version 10.1.008 and later can compile qmake in release
- mode.
- \o Versions 10.1.008 to 10.1.015 for both IA-32 and Intel 64 are
- known crash with "(0): internal error: 0_47021" when compiling
- QtXmlPatterns, QtWebKit, and Designer in release mode. Version
- 10.1.017 compiles these modules correctly in release mode.
- \endlist
-
- \section2 Intel C++ Compiler (Windows, Altix)
-
- Qt 4 has been tested successfully with:
-
- \list
- \o Windows - Intel(R) C++ Compiler for 32-bit applications,
- Version 9.1.040.
- \o Altix - Intel(R) C++ Itanium(R) Compiler for Itanium(R)-based
- applications Version 8.1 Build 20050406 Package ID: l_cc_pc_8.1.030
- \endlist
-
- We currently only test the Intel compiler on 32-bit Windows versions.
-
- \section1 MIPSpro (IRIX)
-
- \bold{IRIX is an unsupported platform. See the \l{Supported Platforms} page
- and Qt's Software's online \l{Platform Support Policy} page for details.}
-
- Qt 4.4.x requires MIPSpro version 7.4.2m.
-
- Note that MIPSpro version 7.4.4m is currently not supported, since it has
- introduced a number of problems that have not yet been resolved.
- We recommend using 7.4.2m for Qt development. However, please note the
- unsupported status of this platform.
-
- \target Sun Studio
- \section1 Forte Developer / Sun Studio (Solaris)
-
- \section2 Sun Studio
-
- Qt is tested using Sun Studio 12 (Sun CC 5.9). Go to
- \l{Sun Studio Patches} page on Sun's Web site to download
- the latest patches for your Sun compiler.
-
- Please note that Qt 4.6 is stricter in its STL requirements and
- that the default STL implementation used by Sun CC does not pass
- those requirements. This does not affect binary compatibility and
- you can continue to use STL in your own code, but Qt's
- STL-compatibility functions will be disabled.
-
- Sun CC ships with a secondary STL implementation (called stlport4)
- which is standards-compliant and can be used by Qt. You can enable
- it by passing the -library=stlport4 option to the compiler. Note
- that this does not affect Qt's binary compatibility, but it may
- affect that of other libraries and programs that use STL.
-
- \section2 Sun WorkShop 5.0
-
- Sun WorkShop 5.0 is not supported with Qt 4.
-
- \section1 Visual Studio (Windows)
-
- We do most of our Windows development on Windows XP, using Microsoft
- Visual Studio .NET 2005 and Visual Studio 2008 (both the 32- and 64-bit
- versions).
-
- Qt works with the Standard Edition, the Professional Edition and Team
- System Edition of Visual Studio 2005.
-
- In order to use Qt with the Visual Studio 2005/2008 Express Edition you need
- to download and install the platform SDK. Due to limitations in the
- Express Edition it is not possible for us to install the Qt Visual
- Studio Integration. You will need to use our command line tools to
- build Qt applications with this edition.
-
- The Visual C++ Linker doesn't understand filenames with spaces (as in
- \c{C:\Program files\Qt\}) so you will have to move it to another place,
- or explicitly set the path yourself; for example:
-
- \snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 0
-
- If you are experiencing strange problems with using special flags that
- modify the alignment of structure and union members (such as \c{/Zp2})
- then you will need to recompile Qt with the flags set for the
- application as well.
-
- If you're using Visual Studio .NET (2002) Standard Edition, you should be
- using the Qt binary package provided, and not the source package.
- As the Standard Edition does not optimize compiled code, your compiled
- version of Qt would perform suboptimally with respect to speed.
-
- With Visual Studio 2005 Service Pack 1 a bug was introduced which
- causes Qt not to compile, this has been fixed with a hotfix available
- from Microsoft. See this
- \l{http://qt.nokia.com/developer/faqs/faq.2006-12-18.3281869860}{Knowledge Base entry}
- for more information.
-
- There currently is a problem when compiling Qt with Visual Studio 2010 for 64-bit.
- Its optimizer causes trouble and generates code that crashes for the release builds.
- To avoid the crashes, You need to apply the hotfix in the following article
- http://support.microsoft.com/kb/2280741.
-
- \section1 IBM xlC (AIX)
-
- The makeC++SharedLib utility must be in your PATH and be up to date to
- build shared libraries. From IBM's
- \l{http://www.redbooks.ibm.com/abstracts/sg245674.html}{C and C++ Application Development on AIX}
- Redbook:
-
- \list
- \o "The second step is to use the makeC++SharedLib command to create the
- shared object. The command has many optional arguments, but in its
- simplest form, can be used as follows:"
- \snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 1
- \o "The full path name to the command is not required; however, to avoid
- this, you will have to add the directory in which it is located to
- your PATH environment variable. The command is located in the
- /usr/vacpp/bin directory with the VisualAge C++ Professional for AIX,
- Version 5 compiler."
- \endlist
-
- \section2 VisualAge C++ for AIX, Version 6.0
-
- Make sure you have the
- \l{http://www-1.ibm.com/support/search.wss?rs=32&amp;tc=SSEP5D&amp;dc=D400}{latest upgrades}
- installed.
-
- \section2 GCCE (Symbian)
-
- GCCE cannot be used to compile Qt libaries for the Symbian platform, but GCCE is supported
- when compiling Qt applications for Symbian platform.
*/
diff --git a/doc/src/platforms/emb-deployment.qdoc b/doc/src/platforms/emb-deployment.qdoc
index 6b22ba4995..9a3609753b 100644
--- a/doc/src/platforms/emb-deployment.qdoc
+++ b/doc/src/platforms/emb-deployment.qdoc
@@ -58,7 +58,7 @@
directory relative to the path set using the \c -prefix parameter
when running the \c configure script; ensure that this is a
sensible path in the target device environment. See the
- \l {Installing Qt on Embedded Linux#Step 3: Building the
+ \l {Installing Qt for Embedded Linux#Step 3: Building the
Library}{installation} documentation for more details.
\section1 Environment Variables
diff --git a/doc/src/platforms/emb-directfb-EmbLinux.qdoc b/doc/src/platforms/emb-directfb-EmbLinux.qdoc
index dbe6c14459..bcc06dc2c4 100644
--- a/doc/src/platforms/emb-directfb-EmbLinux.qdoc
+++ b/doc/src/platforms/emb-directfb-EmbLinux.qdoc
@@ -39,11 +39,11 @@ and generally chip vendors start out with the official version and
implement their own plugins to optimize the operations their hardware
supports.
-We recommend using Qt 4.6 with DirectFB. DirectFB support was introduced
-already into Qt for Embedded Linux as a labs project for Qt 4.3 and folded
+We recommend using Qt 4.6 or later with DirectFB. Support for DirectFB was
+introduced into Qt for Embedded Linux as a labs project for Qt 4.3 and folded
into Qt as a screen driver for Qt 4.4, but not supported fully. In Qt 4.5,
major changes were made to make it work with the optimized raster paint
-engine. And in Qt 4.6 these have been further improved.
+engine. These changes were further improved in Qt 4.6.
\tableofcontents
diff --git a/doc/src/platforms/emb-hardwareacceleration.qdocinc b/doc/src/platforms/emb-hardwareacceleration.qdocinc
index fb00e09c29..83ecef5148 100644
--- a/doc/src/platforms/emb-hardwareacceleration.qdocinc
+++ b/doc/src/platforms/emb-hardwareacceleration.qdocinc
@@ -1,140 +1,140 @@
- \section1 Hardware Acceleration
-
- When designing applications for embedded devices there is often a
- compromise between graphics effects and performance. On most
- devices, you cannot have both simply because the hardware needed
- for such operations just is not there. With a growing number of
- devices that use hardware dedicated to graphics operations there is
- less need to compromise.
-
- In addition to enabling dynamic graphics effects, there are two
- other benefits to using graphics acceleration. One is that graphics
- acceleration hardware is more power efficient than using the CPU.
- The reason for this is that the CPU might require a clock speed
- that is up to 20 times higher than the GPU, achieving the same
- results. E.g. a typical hardware accelerated mobile graphics unit
- can rasterize one or two bilinear texture fetches in one cycle,
- while a software implementation takes easily more than 20 cycles.
- Typical \e {System-on-a-chip} (SoC) graphics hardware generally have
- a much lower clock speed and memory bandwidth, and different level
- of acceleration than desktop GPUs. One example is that many GPUs
- leave out transformation and lighting from the graphics pipeline
- and only implements rasterization.
-
- Another reason to use a GPU is to offload the main CPU, either for
- power saving or to perform other operations in parallel. Often
- drawing speed with a GPU is not that much faster than a CPU but
- the clear benefit of using the GPU is to free up the CPU to perform
- other tasks which can be used to create a more responsive use
- experience.
-
- The key to writing good applications for devices is therefore to
- limit the wow factor down to what the target hardware can handle,
- and to take advantage of any graphics dedicated hardware. Qt
- provides several ways to both render advanced effects on the screen
- and speed up your application using hardware accelerated graphics.
-
- \tableofcontents
-
- \section2 Qt for Embedded Graphics pipeline
-
- Qt uses QPainter for all graphics operations. By using the same API
- regardless of platform, the code can be reused on different devices.
- QPainter use different paint engines implemented in the QPaintEngine API to
- do the actual painting.
-
- The QPaintEngine API provides paint engines for each window system and
- painting framework supported by Qt. In regards to Qt for Embedded, this
- also includes implementations for OpenGL ES versions 1.1 and 2.0, as well
- as OpenVG and DirectFB(Embedded Linux only).
-
- By using one of these paint engines, you will be able to improve the
- graphics performance of your Qt application. However, if the graphics
- operations used are not supported, this might as well be a trap, slowing
- down your application significantly. This all depends on what kind of
- graphics operations that are supported by the target devices hardware
- configuration.
-
- \image platformHWAcc.png
-
- The paint engine will direct all graphics operations supported by the
- devices hardware to the GPU, and from there they are sent to the
- framebuffer. Unsupported graphics operations falls back to the
- QRasterPaintEngine and are handled by the CPU before sent to the
- framebuffer. In the end, the operating system sends the paint updates off
- to the screen/display. The fallback operation is quite expensive in regards
- to memory consumption, and should be avoided.
-
- \section2 Hardware configuration requirements
-
- Before implementing any application using hardware acceleration, it is wise
- to get an overview of what kind of hardware accelerated graphics operations
- that are available for the target device.
-
- \note On devices with no hardware acceleration, Qt will use
- QRasterPaintEngine, which handles the acceleration using software. On
- devices supporting OpenGL ES, OpenVG or DirectFB(not supported by Windows
- CE), Qt will use the
- respective paint engines to accelerate painting. However, hardware
- configurations that only support a limited set of hardware acceleration
- features, might slow the application graphics down rather than speeding it
- up when using unsupported operations that must fall back to the raster
- engine.
-
- \section3 Different architectures
-
- Based on the architecture used in a device we can make a recommendation on
- which hardware acceleration techniques to use. There are mainly two
- different architectures on embedded devices. These are devices with a
- Unified Memory Architecture (UMA), and devices with dedicated graphics
- memory. Generally, high-end devices will have dedicated graphics memory.
- Low-end devices will just use system memory, sometimes reserving a memory
- region and sometimes not.
-
- In addition to this, we can categorize the devices into five types based on
- the different graphics operations supported by their hardware.
-
- \list 1
- \o No support for graphics acceleration.
- \o Support for blitter and alpha blending.
- \o Support for path based 2D vector graphics.
- \o Support for fixed function 3D graphics.
- \o Support for programmable 3D graphics.
- \endlist
-
- Based on these characteristics the table below recommends which paint
- engines to use with the different types of hardware configurations.
-
- \section3 Recommended use of hardware acceleration based on hardware
-
- \table
- \header
- \o Type
- \o UMA
- \o Non-UMA
- \row
- \o \bold {None}
- \o Qt Raster Engine
- \o Qt Raster Engine
- \row
- \o \bold {Blitter}
- \o DirectFB
- \o DirectFB
- \row
- \o \bold {2D Vector}
- \o OpenVG
- \o OpenVG
- \row
- \o \bold {Fixed 3D}
- \o OpenGL (ES) 1.x
- \o OpenGL (ES) 1.x
- \row
- \o \bold {Programmable 3D}
- \o OpenGL (ES) 2.x
- \o OpenGL (ES) 2.x
- \endtable
-
- \note Since the DirectFB API is quite primitive, the raster paint engine
- handles most of the operations.
-
- \note Blitter and Alpha blending is currently not supported on Windows CE.
+\section1 Hardware Acceleration
+
+When designing applications for embedded devices there is often a
+compromise between graphics effects and performance. On most
+devices, you cannot have both simply because the hardware needed
+for such operations just is not there. With a growing number of
+devices that use hardware dedicated to graphics operations there is
+less need to compromise.
+
+In addition to enabling dynamic graphics effects, there are two
+other benefits to using graphics acceleration. One is that graphics
+acceleration hardware is more power efficient than using the CPU.
+The reason for this is that the CPU might require a clock speed
+that is up to 20 times higher than the GPU, achieving the same
+results. E.g. a typical hardware accelerated mobile graphics unit
+can rasterize one or two bilinear texture fetches in one cycle,
+while a software implementation takes easily more than 20 cycles.
+Typical \e {System-on-a-chip} (SoC) graphics hardware generally have
+a much lower clock speed and memory bandwidth, and different level
+of acceleration than desktop GPUs. One example is that many GPUs
+leave out transformation and lighting from the graphics pipeline
+and only implements rasterization.
+
+Another reason to use a GPU is to offload the main CPU, either for
+power saving or to perform other operations in parallel. Often
+drawing speed with a GPU is not that much faster than a CPU but
+the clear benefit of using the GPU is to free up the CPU to perform
+other tasks which can be used to create a more responsive use
+experience.
+
+The key to writing good applications for devices is therefore to
+limit the wow factor down to what the target hardware can handle,
+and to take advantage of any graphics dedicated hardware. Qt
+provides several ways to both render advanced effects on the screen
+and speed up your application using hardware accelerated graphics.
+
+\tableofcontents
+
+\section2 Qt for Embedded Graphics pipeline
+
+Qt uses QPainter for all graphics operations. By using the same API
+regardless of platform, the code can be reused on different devices.
+QPainter use different paint engines implemented in the QPaintEngine API to
+do the actual painting.
+
+The QPaintEngine API provides paint engines for each window system and
+painting framework supported by Qt. In regards to Qt for Embedded, this
+also includes implementations for OpenGL ES versions 1.1 and 2.0, as well
+as OpenVG and DirectFB(Embedded Linux only).
+
+By using one of these paint engines, you will be able to improve the
+graphics performance of your Qt application. However, if the graphics
+operations used are not supported, this might as well be a trap, slowing
+down your application significantly. This all depends on what kind of
+graphics operations that are supported by the target devices hardware
+configuration.
+
+\image platformHWAcc.png
+
+The paint engine will direct all graphics operations supported by the
+devices hardware to the GPU, and from there they are sent to the
+framebuffer. Unsupported graphics operations falls back to the
+QRasterPaintEngine and are handled by the CPU before sent to the
+framebuffer. In the end, the operating system sends the paint updates off
+to the screen/display. The fallback operation is quite expensive in regards
+to memory consumption, and should be avoided.
+
+\section2 Hardware configuration requirements
+
+Before implementing any application using hardware acceleration, it is wise
+to get an overview of what kind of hardware accelerated graphics operations
+that are available for the target device.
+
+\note On devices with no hardware acceleration, Qt will use
+QRasterPaintEngine, which handles the acceleration using software. On
+devices supporting OpenGL ES, OpenVG or DirectFB(not supported by Windows
+CE), Qt will use the
+respective paint engines to accelerate painting. However, hardware
+configurations that only support a limited set of hardware acceleration
+features, might slow the application graphics down rather than speeding it
+up when using unsupported operations that must fall back to the raster
+engine.
+
+\section3 Different architectures
+
+Based on the architecture used in a device we can make a recommendation on
+which hardware acceleration techniques to use. There are mainly two
+different architectures on embedded devices. These are devices with a
+Unified Memory Architecture (UMA), and devices with dedicated graphics
+memory. Generally, high-end devices will have dedicated graphics memory.
+Low-end devices will just use system memory, sometimes reserving a memory
+region and sometimes not.
+
+In addition to this, we can categorize the devices into five types based on
+the different graphics operations supported by their hardware.
+
+\list 1
+ \o No support for graphics acceleration.
+ \o Support for blitter and alpha blending.
+ \o Support for path based 2D vector graphics.
+ \o Support for fixed function 3D graphics.
+ \o Support for programmable 3D graphics.
+\endlist
+
+Based on these characteristics the table below recommends which paint
+engines to use with the different types of hardware configurations.
+
+\section3 Recommended use of hardware acceleration based on hardware
+
+\table
+ \header
+ \o Type
+ \o UMA
+ \o Non-UMA
+ \row
+ \o \bold {None}
+ \o Qt Raster Engine
+ \o Qt Raster Engine
+ \row
+ \o \bold {Blitter}
+ \o DirectFB
+ \o DirectFB
+ \row
+ \o \bold {2D Vector}
+ \o OpenVG
+ \o OpenVG
+ \row
+ \o \bold {Fixed 3D}
+ \o OpenGL (ES) 1.x
+ \o OpenGL (ES) 1.x
+ \row
+ \o \bold {Programmable 3D}
+ \o OpenGL (ES) 2.x
+ \o OpenGL (ES) 2.x
+\endtable
+
+\note Since the DirectFB API is quite primitive, the raster paint engine
+handles most of the operations.
+
+\note Blitter and Alpha blending is currently not supported on Windows CE.
diff --git a/doc/src/platforms/emb-install.qdoc b/doc/src/platforms/emb-install.qdoc
index 11392b4b21..b5b408a7de 100644
--- a/doc/src/platforms/emb-install.qdoc
+++ b/doc/src/platforms/emb-install.qdoc
@@ -28,10 +28,10 @@
/*!
\page qt-embedded-install.html
- \title Installing Qt on Embedded Linux
+ \title Installing Qt for Embedded Linux
\ingroup qt-embedded-linux
\ingroup installation
- \brief How to install Qt on Embedded Linux.
+ \brief How to install Qt for Embedded Linux.
This document describes how to install \l{Qt for Embedded Linux} in your
development environment:
@@ -152,7 +152,7 @@
\endlist
Note that the virtual framebuffer requires a Qt for X11
- installation. See \l {Installing Qt on X11 Platforms} for details.
+ installation. See \l {Installing Qt for X11 Platforms} for details.
The Linux framebuffer, on the other hand, is enabled by default on
all modern Linux distributions. For information on older versions,
diff --git a/doc/src/platforms/emb-pointer.qdoc b/doc/src/platforms/emb-pointer.qdoc
index 22935b43d4..506e9e002a 100644
--- a/doc/src/platforms/emb-pointer.qdoc
+++ b/doc/src/platforms/emb-pointer.qdoc
@@ -105,7 +105,7 @@
{touch panels} in which case the driver must be specified
explicitly to determine which device to use.
- To manually specify which driver to use, set the QWS_MOUSE_PROTO
+ To manually specify which driver to use, set the \c QWS_MOUSE_PROTO
environment variable. For example (if the current shell is bash,
ksh, zsh or sh):
@@ -156,7 +156,7 @@
\snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 8
To make \l{Qt for Embedded Linux} explicitly choose the tslib mouse
- handler, set the QWS_MOUSE_PROTO environment variable as explained
+ handler, set the \c QWS_MOUSE_PROTO environment variable as explained
above.
\endtable
@@ -186,8 +186,11 @@
device file. Some drivers also require write access to the device file.
For instance, if you have specified the mouse driver with
\snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 11
- then examine the permissions of the device file by entering the following
- command in a console:
+ then examine the permissions of the device file by entering the
+ following command in a console:
+ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc show permissions
+ Change the permissions of the device file, if necessary, in the following
+ way:
\snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 12
If the device file is actually a symbolic link to another file, you must
diff --git a/doc/src/platforms/emb-qvfb.qdoc b/doc/src/platforms/emb-qvfb.qdoc
index 78bdd73d4e..9993b3ed98 100644
--- a/doc/src/platforms/emb-qvfb.qdoc
+++ b/doc/src/platforms/emb-qvfb.qdoc
@@ -40,8 +40,8 @@
QVFb is an X11 application supplied with Qt for X11 that provides
a virtual framebuffer for Qt for Embedded Linux to use. To use it,
- you need to \l{Installing Qt on X11 Platforms}{configure and
- install Qt on X11 platforms} appropriately. Further requirements
+ you need to \l{Installing Qt for X11 Platforms}{configure and
+ install Qt for X11 platforms} appropriately. Further requirements
can be found in the \l{Qt for Embedded Linux Requirements}
document.
diff --git a/doc/src/platforms/emb-running.qdoc b/doc/src/platforms/emb-running.qdoc
index 269f4f3c74..12222a6015 100644
--- a/doc/src/platforms/emb-running.qdoc
+++ b/doc/src/platforms/emb-running.qdoc
@@ -63,7 +63,7 @@
\row
\o
Provided that the environment variables are adjusted properly
- during the \l {Installing Qt on Embedded Linux}{installation process}, you
+ during the \l {Installing Qt for Embedded Linux}{installation process}, you
should see the \l {Text Edit} demo appear.
It might be that the hardware drivers must be specified explicitly
diff --git a/doc/src/platforms/mac-differences.qdoc b/doc/src/platforms/mac-differences.qdoc
index dfcecca8d6..8436043809 100644
--- a/doc/src/platforms/mac-differences.qdoc
+++ b/doc/src/platforms/mac-differences.qdoc
@@ -32,7 +32,7 @@
\ingroup platform-specific
This file outlines known issues and possible workarounds when
- using Qt on Mac OS X. Contact Qt's technical support team if you find
+ using Qt for Mac OS X. Contact Qt's technical support team if you find
additional issues which are not covered here. (See also the
document \l{qtmac-as-native.html} {Qt is Mac OS X Native}.)
diff --git a/doc/src/platforms/platform-notes-rtos.qdoc b/doc/src/platforms/platform-notes-rtos.qdoc
index 4a34ece365..8c30701965 100644
--- a/doc/src/platforms/platform-notes-rtos.qdoc
+++ b/doc/src/platforms/platform-notes-rtos.qdoc
@@ -27,8 +27,8 @@
/*!
\page platform-notes-vxworks.html
- \title Platform Notes - VxWorks
- \contentspage Platform Notes
+ \title Platform and Compiler Notes - VxWorks
+ \contentspage Platform and Compiler Notes
\target VxWorks
\note VxWorks is a community supported platform. See the
@@ -143,8 +143,8 @@
/*!
\page platform-notes-qnx.html
- \title Platform Notes - QNX
- \contentspage Platform Notes
+ \title Platform and Compiler Notes - QNX
+ \contentspage Platform and Compiler Notes
\target QNX
\note QNX is a community supported platform. See the
diff --git a/doc/src/platforms/platform-notes.qdoc b/doc/src/platforms/platform-notes.qdoc
index dff1b5b5d5..177d3f6a70 100644
--- a/doc/src/platforms/platform-notes.qdoc
+++ b/doc/src/platforms/platform-notes.qdoc
@@ -39,35 +39,91 @@
/*!
\page platform-notes.html
\ingroup platform-specific
- \title Platform Notes
+ \title Platform and Compiler Notes
\brief Information about the platforms on which Qt can be used.
This page contains information about the platforms Qt is currently known
to run on, with links to platform-specific notes, including any known bugs
or incompatibilities.
+ Information about the combinations of platforms and compilers
+ supported by Qt can be found on the \l{Supported Platforms} page.
+
\list
- \o \l{Platform Notes - X11}
- \tableofcontents{1 Platform Notes - X11}
- \o \l{Platform Notes - Windows}
- \tableofcontents{1 Platform Notes - Windows}
- \o \l{Platform Notes - Mac OS X}
- \tableofcontents{1 Platform Notes - Mac OS X}
- \o \l{Platform Notes - Symbian}
- \tableofcontents{1 Platform Notes - Symbian}
- \o \l{Platform Notes - Embedded Linux}
- \tableofcontents{1 Platform Notes - Embedded Linux}
- \o \l{Platform Notes - Windows CE}
- \tableofcontents{1 Platform Notes - Windows CE}
- \o \l{Platform Notes - QNX}
- \tableofcontents{1 Platform Notes - QNX}
- \o \l{Platform Notes - VxWorks}
- \tableofcontents{1 Platform Notes - VxWorks}
+ \o \l{Platform and Compiler Notes - X11}
+ \tableofcontents{1 Platform and Compiler Notes - X11}
+ \o \l{Platform and Compiler Notes - Windows}
+ \tableofcontents{1 Platform and Compiler Notes - Windows}
+ \o \l{Platform and Compiler Notes - Mac OS X}
+ \tableofcontents{1 Platform and Compiler Notes - Mac OS X}
+ \o \l{Platform and Compiler Notes - Symbian}
+ \tableofcontents{1 Platform and Compiler Notes - Symbian}
+ \o \l{Platform and Compiler Notes - Embedded Linux}
+ \tableofcontents{1 Platform and Compiler Notes - Embedded Linux}
+ \o \l{Platform and Compiler Notes - Windows CE}
+ \tableofcontents{1 Platform and Compiler Notes - Windows CE}
+ \o \l{Platform and Compiler Notes - QNX}
+ \tableofcontents{1 Platform and Compiler Notes - QNX}
+ \o \l{Platform and Compiler Notes - VxWorks}
+ \tableofcontents{1 Platform and Compiler Notes - VxWorks}
\endlist
- See also the \l{Compiler Notes} for information about compiler-specific
- build issues. Information about the combinations of platforms and compilers
- supported by Qt can be found on the \l{Supported Platforms} page.
+ \section1 General Compiler Notes
+
+ \section2 Supported Features
+
+ Not all compilers used to build Qt are able to compile all modules. The following table
+ shows the compiler support for five modules that are not uniformly available for all
+ platforms and compilers.
+
+ \table
+ \header \o Compiler \o{5,1} Features
+ \header \o \o Concurrent \o XmlPatterns \o WebKit(*) \o CLucene \o Phonon
+ \row \o g++ 3.3 \o \o \bold{X} \o \o \bold{X} \o \bold{X}
+ \row \o g++ 3.4 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
+ \row
+ \row \o SunCC 5.5 \o \o \o \o \bold{X} \o \bold{X}
+ \row
+ \row \o aCC series 3 \o \o \o \o \bold{X} \o \bold{X}
+ \row \o aCC series 6 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
+ \row \o xlC 6 \o \o \o \o \bold{X} \o \bold{X}
+ \row \o Intel CC 10 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
+ \row
+ \row \o MSVC 2003 \o \bold{X} \o \bold{X} \o \o \bold{X} \o \bold{X}
+ \row \o MSVC 2005 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
+ \endtable
+
+ * WebKit is only supported as a dynamically built library. Static linkage is not supported.
+
+ \section2 GCC 3.4.6 (Debian 3.4.6-5) on AMD64 (x86_64)
+
+ This compiler is known to miscompile some parts of Qt when doing a
+ release build. There are several workarounds:
+
+ \list 1
+ \o Use a debug build instead.
+ \o For each miscompilation encountered, recompile the file, removing the \c{-O2} option.
+ \o Add \c{-fno-gcse} to the
+ \l{qmake Variable Reference#QMAKE_CXXFLAGS_RELEASE}{QMAKE_CXXFLAGS_RELEASE} qmake
+ variable.
+ \endlist
+
+ \section2 GCC 4.0.0
+
+ The released package of the compiler has some bugs that lead to
+ miscompilations. We recommend using GCC 4.0.1 or later, or to use
+ a recent CVS snapshot of the GCC 4.0 branch. The version of GCC
+ 4.0.0 that is shipped with Mac OS X 10.4 "Tiger" is known to work
+ with Qt for Mac OS X.
+
+ \section2 Intel C++ Compiler
+
+ Qt supports the Intel C++ compiler on both Windows and Linux.
+ However, there are a few issues on Linux; see
+ \l{Platform and Compiler Notes - X11#Intel C++ Compiler for Linux}{Intel C++ Compiler for Linux}
+ for details.
+
+ \section1 Feedback and Corrections
If you have anything to add to this list or any of the platform or
compiler-specific pages, please submit it via the \l{Bug Report Form}
@@ -76,8 +132,8 @@
/*!
\page platform-notes-x11.html
- \title Platform Notes - X11
- \contentspage Platform Notes
+ \title Platform and Compiler Notes - X11
+ \contentspage Platform and Compiler Notes
This page contains information about the X11 platforms Qt is currently
known to run on, with links to platform-specific notes. More information
@@ -89,8 +145,7 @@
\target AIX
\section1 AIX - 5.2
- Qt has been tested on AIX 5.2, using the
- \l{Compiler Notes#IBM xlC (AIX)}{xlC} compiler.
+ Qt has been tested on AIX 5.2, using the xlC compiler.
\table
\header \o Compiler \o Notes
@@ -113,13 +168,38 @@
either \c{-no-stl} or \c{-no-largefile}.
\endtable
+ \section2 IBM xlC
+
+ The makeC++SharedLib utility must be in your PATH and be up to date to
+ build shared libraries. From IBM's
+ \l{http://www.redbooks.ibm.com/abstracts/sg245674.html}{C and C++ Application Development on AIX}
+ Redbook:
+
+ \list
+ \o "The second step is to use the makeC++SharedLib command to create the
+ shared object. The command has many optional arguments, but in its
+ simplest form, can be used as follows:"
+ \snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 1
+ \o "The full path name to the command is not required; however, to avoid
+ this, you will have to add the directory in which it is located to
+ your PATH environment variable. The command is located in the
+ /usr/vacpp/bin directory with the VisualAge C++ Professional for AIX,
+ Version 5 compiler."
+ \endlist
+
+ \section2 VisualAge C++ for AIX, Version 6.0
+
+ Make sure you have the
+ \l{http://www-1.ibm.com/support/search.wss?rs=32&amp;tc=SSEP5D&amp;dc=D400}{latest upgrades}
+ installed.
+
\target FreeBSD
\section1 FreeBSD - 6.0-RELEASE
\note FreeBSD is a community supported platform. See the
\l{Supported Platforms} page for more information.
- The system compiler on FreeBSD 4.x is gcc 2.95.4, which is not
+ The system compiler on FreeBSD 4.x is GCC 2.95.4, which is not
officially supported by Qt 4. We develop using and recommend
ports/lang/gcc34. You will need to run configure with the
\c{-platform freebsd-g++34} arguments. Optionally, you may use
@@ -132,7 +212,6 @@
Note that we do not actively test FreeBSD 4.x and 5.x. Our developers
migrated to 6.x after the Qt 4 launch. FreeBSD-CURRENT is not supported.
- \target HP-UX
\section1 HP-UX
Qt supports HP-UX on both PA-RISC and the Itanium (IA64) architectures.
@@ -140,17 +219,26 @@
\section2 PA-RISC - B.11.11 or later
You can configure Qt for aCC in 32 and 64 bit mode (hpux-acc-64 or
- hpux-acc-32), or gcc in 32 bit mode (hpux-g++). The default platform is
+ hpux-acc-32), or GCC in 32 bit mode (hpux-g++). The default platform is
hpux-acc-32. The minimum required version for aCC (HP ANSI C++) on PA-RISC
- is A.03.57. The supported gcc compiler is gcc 3.4.3.
+ is A.03.57. The supported GCC compiler is GCC 3.4.3.
\section2 Itanium - B.11.23 or later
You can configure Qt for aCC in 32 and 64 bit mode (hpuxi-acc-64 or
- hpuxi-acc-32). gcc is currently unsupported. The default platform is
+ hpuxi-acc-32). GCC is currently unsupported. The default platform is
hpuxi-acc-64. The minimum required version for aCC (HP ANSI C++) on
Itanium is A.06.12.
+ \section2 HP ANSI C++ (aCC)
+
+ The hpux-acc-32 and hpux-acc-64 platforms are tested with aCC A.03.57. The
+ hpuxi-acc-32 and hpuxi-acc-64 platforms are tested with aCC A.06.10.
+
+ \section2 GCC
+
+ The hpux-g++ platform is tested with GCC 3.4.4.
+
\section2 OpenGL Support
Qt's \l{QtOpenGL}{OpenGL} module requires GLX 1.3 or later to be installed.
@@ -161,20 +249,29 @@
\target IRIX
\section1 IRIX - 6.5.x
- \bold{IRIX is an unsupported platform - please see Qt's online
- \l{Platform Support Policy} for details.}
+ \bold{IRIX is an unsupported platform. See the \l{Supported Platforms} page
+ and Qt's Software's online \l{Platform Support Policy} page for details.}
Unpackaging and IRIX tar:
Because of long filenames some files will be cut off incorrectly with IRIX
tar. Please use GNU tar to unpack Qt packages.
+ \section2 MIPSpro
+
+ Qt 4.4.x requires MIPSpro version 7.4.2m.
+
+ Note that MIPSpro version 7.4.4m is currently not supported, since it has
+ introduced a number of problems that have not yet been resolved.
+ We recommend using 7.4.2m for Qt development. However, please note the
+ unsupported status of this platform.
+
\section1 Linux
There are no known problems with using Qt on production versions of
Linux/x86, Linux/ppc, Linux/amd64 and Linux/ia64 (including Altix(R)).
- For the gcc/g++ compiler, please also see the relevant
- \l{Compiler Notes#GCC}{compiler page}.
+ For the GCC compiler, please also see the relevant
+ \l{Platform and Compiler Notes#General Compiler Notes}{General Compiler Notes}.
\section2 Installation problems
@@ -198,6 +295,40 @@
"Failed Dependency". Use the \c{--nodeps} option to \c rpm to workaround
this problem.
+ \section2 Intel C++ Compiler for Linux
+
+ Nokia currently tests the following compilers:
+
+ \list
+
+ \o Intel(R) C++ Compiler for applications running on IA-32,
+ Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017
+
+ \o Intel(R) C++ Compiler for applications running on Intel(R) 64,
+ Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017
+
+ \endlist
+
+ We do not currently test the IA-64 (Itanium) compiler.
+
+ \section2 Known Issues with Intel C++ Compiler for Linux
+
+ \list
+
+ \o Precompiled header support does not work in version 10.0.025
+ and older. For these compilers, you should configure Qt with
+ -no-pch. Precompiled header support works properly in version
+ 10.0.026 and later.
+ \o Version 10.0.026 for Intel 64 is known to miscompile qmake when
+ building in release mode. For now, configure Qt with
+ -debug. Version 10.1.008 and later can compile qmake in release
+ mode.
+ \o Versions 10.1.008 to 10.1.015 for both IA-32 and Intel 64 are
+ known crash with "(0): internal error: 0_47021" when compiling
+ QtXmlPatterns, QtWebKit, and Designer in release mode. Version
+ 10.1.017 compiles these modules correctly in release mode.
+ \endlist
+
\target Solaris
\section1 Solaris - 9 or later
@@ -207,25 +338,50 @@
to truncate long filenames. We recommend using star instead
(http://star.berlios.de).
- \section2 CC on Solaris
+ Please note that WebKit is not supported for Solaris, regardless of
+ which compiler is used.
+
+ \section2 CC
+
+ See the notes for \l{Forte Developer / Sun Studio}.
- Be sure to check our \l{Compiler Notes#Sun Studio}{Forte Developer / Sun Studio}
- notes.
+ \section2 GCC
- \section2 GCC on Solaris
+ Please use GCC 3.4.2 or later.
- Be sure to check the installation notes for \l{GCC on Solaris}.
Do not use GCC with Sun's assembler/linker, this will result in link-time
errors in shared libraries. Use GNU binutils instead.
GCC 3.2.* is known to miscompile Qt due to an optimizer bug that will
- cause the resulting binaries to hang. Please use GCC 3.4.2 or later.
+ cause the resulting binaries to hang.
+
+ \section2 Forte Developer / Sun Studio
+
+ Qt is tested using Sun Studio 12 (Sun CC 5.9). Go to
+ \l{Sun Studio Patches} page on Sun's Web site to download
+ the latest patches for your Sun compiler.
+
+ Please note that Qt 4.6 is stricter in its STL requirements and
+ that the default STL implementation used by Sun CC does not pass
+ those requirements. This does not affect binary compatibility and
+ you can continue to use STL in your own code, but Qt's
+ STL-compatibility functions will be disabled.
+
+ Sun CC ships with a secondary STL implementation (called stlport4)
+ which is standards-compliant and can be used by Qt. You can enable
+ it by passing the -library=stlport4 option to the compiler. Note
+ that this does not affect Qt's binary compatibility, but it may
+ affect that of other libraries and programs that use STL.
+
+ \section2 Sun WorkShop 5.0
+
+ Sun WorkShop 5.0 is not supported with Qt 4.
*/
/*!
\page platform-notes-windows.html
- \title Platform Notes - Windows
- \contentspage Platform Notes
+ \title Platform and Compiler Notes - Windows
+ \contentspage Platform and Compiler Notes
This page contains information about the Windows platforms Qt is currently
known to run on, with links to platform-specific notes. More information
@@ -255,12 +411,87 @@
and other applications that require screen grabbing while direct
rendering is enabled. Other GL-applications may not work as expected,
unless direct rendering is disabled.
+
+ \section2 GCC (MinGW)
+
+ We have tested Qt with this compiler on Windows XP.
+ The minimal version of MinGW supported is GCC 4.4.
+
+ \note For users of the MinGW binary package: This package is now
+ based on MinGW 4.4. The installer no longer offers to download
+ MinGW for you, but rather offers to use a version of MinGW that
+ you already have installed on your machine. You just tell the
+ installer which directory MinGW is installed in. If you don't
+ already have MinGW 4.4 installed, you can download a .zip archive
+ from our \l{ftp://ftp.trolltech.com/misc/MinGW-gcc440_1.zip}{FTP
+ site}. This archive provides fixes to MinGW and support for
+ missing API, See the _patches directory in the archive for
+ details.
+
+ \note A MinGW installation is only needed to build against the
+ binary pacakge, not to run the pre-compiled binaries that are in
+ the package.
+
+ \section2 Intel C++ Compiler (Windows, Altix)
+
+ Qt 4 has been tested successfully with:
+
+ \list
+ \o Windows - Intel(R) C++ Compiler for 32-bit applications,
+ Version 9.1.040.
+ \o Altix - Intel(R) C++ Itanium(R) Compiler for Itanium(R)-based
+ applications Version 8.1 Build 20050406 Package ID: l_cc_pc_8.1.030
+ \endlist
+
+ We currently only test the Intel compiler on 32-bit Windows versions.
+
+ \section2 Visual Studio (Windows)
+
+ We do most of our Windows development on Windows XP, using Microsoft
+ Visual Studio .NET 2005 and Visual Studio 2008 (both the 32- and 64-bit
+ versions).
+
+ Qt works with the Standard Edition, the Professional Edition and Team
+ System Edition of Visual Studio 2005.
+
+ In order to use Qt with the Visual Studio 2005/2008 Express Edition you need
+ to download and install the platform SDK. Due to limitations in the
+ Express Edition it is not possible for us to install the Qt Visual
+ Studio Integration. You will need to use our command line tools to
+ build Qt applications with this edition.
+
+ The Visual C++ Linker doesn't understand filenames with spaces (as in
+ \c{C:\Program files\Qt\}) so you will have to move it to another place,
+ or explicitly set the path yourself; for example:
+
+ \snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 0
+
+ If you are experiencing strange problems with using special flags that
+ modify the alignment of structure and union members (such as \c{/Zp2})
+ then you will need to recompile Qt with the flags set for the
+ application as well.
+
+ If you're using Visual Studio .NET (2002) Standard Edition, you should be
+ using the Qt binary package provided, and not the source package.
+ As the Standard Edition does not optimize compiled code, your compiled
+ version of Qt would perform suboptimally with respect to speed.
+
+ With Visual Studio 2005 Service Pack 1 a bug was introduced which
+ causes Qt not to compile, this has been fixed with a hotfix available
+ from Microsoft. See this
+ \l{http://qt.nokia.com/developer/faqs/faq.2006-12-18.3281869860}{Knowledge Base entry}
+ for more information.
+
+ There currently is a problem when compiling Qt with Visual Studio 2010 for 64-bit.
+ Its optimizer causes trouble and generates code that crashes for the release builds.
+ To avoid the crashes, You need to apply the hotfix in the following article
+ http://support.microsoft.com/kb/2280741.
*/
/*!
\page platform-notes-mac.html
- \title Platform Notes - Mac OS X
- \contentspage Platform Notes
+ \title Platform and Compiler Notes - Mac OS X
+ \contentspage Platform and Compiler Notes
This page contains information about the Mac OS X versions Qt is currently
known to run on, with links to platform-specific notes. More information
@@ -287,11 +518,15 @@
\section2 Required GCC version
- Apple's gcc 4 that is shipped with the Xcode Tools for both Mac OS X 10.4
- and 10.5 will compile Qt. There is preliminary support for gcc 4.2 which
+ Apple's GCC 4 that is shipped with the Xcode Tools for both Mac OS X 10.4
+ and 10.5 will compile Qt. There is preliminary support for GCC 4.2 which
is included with Xcode Tools 3.1+ (configurable with
\c{-platform macx-g++42}).
+ Please use the latest GCC 3.3 from Apple or a later version of GCC 3.
+ The GCC 3.3 that is provided with Xcode 1.5 is known to generate bad code.
+ Use the November 2004 GCC 3.3 updater \l{http://connect.apple.com}{available from Apple}.
+
\section2 Binary Package
The binary package requires that you have your .qt-license file in your
@@ -300,7 +535,7 @@
this file in the email they receive.
The binary package was built on Mac OS X 10.4 with Xcode Tools 2.1
- (gcc 4.0.0) for Qt 4.1.0, Xcode Tools 2.2 (gcc 4.0.1) for Qt 4.1.1-4.1.4
+ (GCC 4.0.0) for Qt 4.1.0, Xcode Tools 2.2 (GCC 4.0.1) for Qt 4.1.1-4.1.4
and Xcode Tools 2.3 for 4.2.0. It will only link executables built
against 10.4 (or a 10.4 SDK). You should be able to run applications
linked against these frameworks on Mac OS X 10.3.9 and Mac OS X 10.4+.
@@ -374,8 +609,8 @@
/*!
\page platform-notes-windows-ce.html
- \title Platform Notes - Windows CE
- \contentspage Platform Notes
+ \title Platform and Compiler Notes - Windows CE
+ \contentspage Platform and Compiler Notes
This page contains information about the Windows CE and Windows Mobile
platforms Qt is currently known to run on, with links to platform-specific
@@ -385,8 +620,8 @@
/*!
\page platform-notes-symbian.html
- \title Platform Notes - Symbian
- \contentspage Platform Notes
+ \title Platform and Compiler Notes - Symbian
+ \contentspage Platform and Compiler Notes
\ingroup platform-specific
\brief Information about the state of support for the Symbian platform.
@@ -468,6 +703,13 @@
for Phonon.
\endtable
+ \section1 Compiler Notes
+
+ \section2 GCCE (Symbian)
+
+ GCCE cannot be used to compile Qt libaries for the Symbian platform, but GCCE is supported
+ when compiling Qt applications for the Symbian platform.
+
\section1 Known Issues
Known issues can be found by visiting the
@@ -495,15 +737,23 @@
\o \c PowerMgmt if QProcess::kill(...) or QProcess::terminate(...) is called.
\row \o QtCore
\o \c AllFiles when \l{http://developer.symbian.org/wiki/index.php/Capabilities_%28Symbian_Signed%29/AllFiles_Capability}{accessing specific areas.}
+ \row \o QtDeclarative
+ \o \c NetworkServices is automatically added for this module.
+ \row \o QtNetwork
+ \o \c NetworkServices is automatically added for this module.
\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.
+ \row \o QtWebkit
+ \o \c NetworkServices is automatically added for this module.
\endtable
- Note that some modules rely on other modules. If your application uses
- QtXmlPatterns, QtWebkit or QtScript it may still require \c NetworkServices
- as these modules rely on QtNetwork to go online.
+ \note Some modules rely on other modules. E.g. QtWebkit and QtDeclarative
+ depend on QtNetwork and therefore any application that
+ depends on these modules is also likely to need \c NetworkServices capability.
For more information see the documentation of the individual Qt classes. If
a class does not mention Symbian capabilities, it requires none.
@@ -580,8 +830,8 @@
/*!
\page platform-notes-embedded-linux.html
- \title Platform Notes - Embedded Linux
- \contentspage Platform Notes
+ \title Platform and Compiler Notes - Embedded Linux
+ \contentspage Platform and Compiler Notes
This page contains information about the Embedded Linux platforms Qt is
currently known to run on, with links to platform-specific notes. More
diff --git a/doc/src/platforms/qt-embedded-linux.qdoc b/doc/src/platforms/qt-embedded-linux.qdoc
index 553c4b102c..cd20917492 100644
--- a/doc/src/platforms/qt-embedded-linux.qdoc
+++ b/doc/src/platforms/qt-embedded-linux.qdoc
@@ -67,7 +67,7 @@
\o
\list
\o \l {Qt for Embedded Linux Architecture}{Architecture Overview}
- \o \l {Installing Qt on Embedded Linux}{Installation}
+ \o \l {Installing Qt for Embedded Linux}{Installation}
\o \l {Running Qt for Embedded Linux Applications}{Running Applications}
\o \l {Qt for Embedded Linux Examples}{Examples}
\endlist
diff --git a/doc/src/platforms/supported-platforms.qdoc b/doc/src/platforms/supported-platforms.qdoc
index 5218690aad..3a7d590164 100644
--- a/doc/src/platforms/supported-platforms.qdoc
+++ b/doc/src/platforms/supported-platforms.qdoc
@@ -44,9 +44,8 @@
\tableofcontents
- Information about the specific platforms Qt runs on can be found on the
- \l{Platform Notes} page. Information about the compilers used on each platform
- can be found on the \l{Compiler Notes} page.
+ Information about the specific platforms Qt runs on, and the compilers used
+ on each platform, can be found on the \l{Platform and Compiler Notes} page.
\section1 Tier 1 Platforms
diff --git a/doc/src/platforms/symbian-introduction.qdoc b/doc/src/platforms/symbian-introduction.qdoc
index 89327476f3..9da94c4349 100644
--- a/doc/src/platforms/symbian-introduction.qdoc
+++ b/doc/src/platforms/symbian-introduction.qdoc
@@ -29,7 +29,7 @@
\group qtsymbian
\title Qt for the Symbian platform
\ingroup qt-embedded
- \brief Documents related to Qt on the Symbian platform
+ \brief Documents related to Qt for the Symbian platform
Qt for Symbian is a C++ framework for GUI and application development
for embedded devices running Symbian. Qt for Symbian provides all
@@ -42,14 +42,14 @@
\o
\list
\o \l {Qt for the Symbian platform Requirements}
- \o \l {Installing Qt on the Symbian platform from a Binary Package}
- \o \l {Installing Qt on the Symbian platform}
+ \o \l {Installing Qt for the Symbian platform from a Binary Package}
+ \o \l {Installing Qt for the Symbian platform}
\o \l {The Symbian platform - Introduction to Qt}{Introduction to using Qt}
\endlist
\o
\list
\o \l {Exception Safety with Symbian}
- \o \l {Platform Notes - Symbian} {Qt for the Symbian platform - state of support}
+ \o \l {Platform and Compiler Notes - Symbian} {Qt for the Symbian platform - state of support}
\o \l {qmake Platform Notes#Symbian platform} {Qt for Symbian extensions for qmake}
\o \l {Symbian Platform Security Requirements} {Symbian Platform Security Requirements}
\endlist
@@ -93,10 +93,10 @@
\section1 Installing Qt and Running Demos
- Follow the instructions found in \l{Installing Qt on the Symbian platform from a Binary Package}
+ Follow the instructions found in \l{Installing Qt for the Symbian platform from a Binary Package}
to learn how to install Qt using a binary package and how to build and run Qt demos.
- Follow the instructions found in \l{Installing Qt on the Symbian platform} to learn how to install Qt using
+ Follow the instructions found in \l{Installing Qt for the Symbian platform} to learn how to install Qt using
using source package and how to build and run the Qt demos.
\section1 Building Your Own Applications
@@ -222,6 +222,7 @@
\row \o -s \o Generates stub sis for ROM.
\row \o -n <name> \o Specifies the final sis name.
\row \o -g \o Treat gcce platform as armv5.
+ \row \o -d \o Skip automatic patching of the package when default certificate is used.
\endtable
Execute the \c{createpackage.pl} script without any
diff --git a/doc/src/platforms/wince-customization.qdoc b/doc/src/platforms/wince-customization.qdoc
index a67435071d..b3b9170802 100644
--- a/doc/src/platforms/wince-customization.qdoc
+++ b/doc/src/platforms/wince-customization.qdoc
@@ -33,7 +33,7 @@
When working with a custom SDK for Windows CE, Qt provides an easy way
to add support for it to your development environment. The following is
- a tutorial that covers how to create a specification for Qt on Windows
+ a tutorial that covers how to create a specification for Qt for Windows
CE platforms.
\tableofcontents
diff --git a/doc/src/platforms/wince-introduction.qdoc b/doc/src/platforms/wince-introduction.qdoc
index cd66242dc7..2e9da59fc7 100644
--- a/doc/src/platforms/wince-introduction.qdoc
+++ b/doc/src/platforms/wince-introduction.qdoc
@@ -29,7 +29,7 @@
\group qtce
\title Qt for Windows CE
\ingroup qt-embedded
- \brief Documents related to Qt on Windows CE
+ \brief Documents related to Qt for Windows CE
Qt for Windows CE is a C++ framework for GUI and application development
for embedded devices running Windows CE. It runs on a variety of processors,
@@ -41,7 +41,7 @@
\o
\list
\o \l {Qt for Windows CE Requirements}
- \o \l {Installing Qt on Windows CE}
+ \o \l {Installing Qt for Windows CE}
\o \l {Windows CE - Introduction to using Qt}{Introduction to using Qt}
\endlist
\o
@@ -81,7 +81,7 @@
\section1 Installing Qt
- Follow the instructions found in \l{Installing Qt on Windows CE}.
+ Follow the instructions found in \l{Installing Qt for Windows CE}.
\section1 Building your own applications
diff --git a/doc/src/platforms/winsystem.qdoc b/doc/src/platforms/winsystem.qdoc
index 2919bb7d17..64e35c547a 100644
--- a/doc/src/platforms/winsystem.qdoc
+++ b/doc/src/platforms/winsystem.qdoc
@@ -44,8 +44,8 @@
\tableofcontents
For information about which platforms are supported by Qt, see the
- \l{Platform Notes}. For information on distributing Qt applications, see
- \l{Deploying Qt Applications}.
+ \l{Platform and Compiler Notes}. For information on distributing Qt
+ applications, see \l{Deploying Qt Applications}.
\target x11
\section1 Qt for X11
diff --git a/doc/src/qt-webpages.qdoc b/doc/src/qt-webpages.qdoc
index 9947d7b4ba..05817df651 100644
--- a/doc/src/qt-webpages.qdoc
+++ b/doc/src/qt-webpages.qdoc
@@ -46,8 +46,8 @@
*/
/*!
- \externalpage http://qt.nokia.com/products/add-on-products/add-on-products/
- \title Third-Party Tools
+ \externalpage http://qt.nokia.com/services-partners/partners/partner-directory
+ \title Partner Directory
*/
/*!
diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc
index 7d55f82de7..62decbb68c 100644
--- a/doc/src/qt4-intro.qdoc
+++ b/doc/src/qt4-intro.qdoc
@@ -157,7 +157,7 @@
\l{QtUiTools}{dynamic user interface building}.
\o New \l{Proxy Models}{proxy models} to enable view-specific sorting and
filtering of data displayed using item views.
- \o Support for \l{Installing Qt on Mac OS X}{universal binaries} on Mac OS X.
+ \o Support for \l{Installing Qt for Mac OS X}{universal binaries} on Mac OS X.
\o Additional features for developers using \l{QtOpenGL}{OpenGL}, such as
support for pixel and sample buffers.
\o A flexible \l{QSyntaxHighlighter}{syntax highlighting class} based on the
@@ -466,7 +466,7 @@
collaborate tightly and create animated and fluid user experiences,
using existing knowledge in script language and design.
- \i QtDeclarative is a C++ library that provides the underlying engine,
+ \i Qt Declarative is a C++ library that provides the underlying engine,
which translates the declarative description of the UI in QML into
items on a QGraphicsScene. The library also provides APIs to bind
custom C++ types and elements to QML, and to connect the QML UI with
diff --git a/doc/src/snippets/code/doc_src_emb-pointer.qdoc b/doc/src/snippets/code/doc_src_emb-pointer.qdoc
index d333c90136..b051a98e2e 100644
--- a/doc/src/snippets/code/doc_src_emb-pointer.qdoc
+++ b/doc/src/snippets/code/doc_src_emb-pointer.qdoc
@@ -104,6 +104,10 @@ QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mouse0
//! [11]
+//! [show permissions]
+ls -l /dev/input/mouse0
+//! [show permissions]
+
//! [12]
chmod a+rw /dev/input/mouse0
//! [12]
diff --git a/doc/src/snippets/code/doc_src_fdl.qdoc b/doc/src/snippets/code/doc_src_fdl.qdoc
index 3c15dfee37..b55e66339b 100644
--- a/doc/src/snippets/code/doc_src_fdl.qdoc
+++ b/doc/src/snippets/code/doc_src_fdl.qdoc
@@ -7,11 +7,11 @@
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
-** Commercial Usage
-** Licensees holding valid Qt Commercial licenses may use this file in
-** accordance with the Qt Commercial License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in a
-** written agreement between you and Nokia.
+** 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 Free Documentation License
** Alternatively, this file may be used under the terms of the GNU Free
diff --git a/doc/src/snippets/code/doc_src_installation.qdoc b/doc/src/snippets/code/doc_src_installation.qdoc
index 05935670f5..2e59db981d 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/code/doc_src_properties.qdoc b/doc/src/snippets/code/doc_src_properties.qdoc
index 7704160f74..a4ed409a52 100644
--- a/doc/src/snippets/code/doc_src_properties.qdoc
+++ b/doc/src/snippets/code/doc_src_properties.qdoc
@@ -91,7 +91,7 @@ for (int i=0; i<count; ++i) {
class MyClass : public QObject
{
Q_OBJECT
- Q_PROPERTY(Priority priority READ priority WRITE setPriority)
+ Q_PROPERTY(Priority priority READ priority WRITE setPriority NOTIFY priorityChanged)
Q_ENUMS(Priority)
public:
@@ -100,8 +100,19 @@ public:
enum Priority { High, Low, VeryHigh, VeryLow };
- void setPriority(Priority priority);
- Priority priority() const;
+ void setPriority(Priority priority)
+ {
+ m_priority = priority;
+ emit priorityChanged(priority);
+ }
+ Priority priority() const
+ { return m_priority; }
+
+signals:
+ void priorityChanged(Priority);
+
+private:
+ Priority m_priority;
};
//! [5]
diff --git a/doc/src/snippets/code/doc_src_qmake-manual.qdoc b/doc/src/snippets/code/doc_src_qmake-manual.qdoc
index 8c35c3fb09..4f74e9cb98 100644
--- a/doc/src/snippets/code/doc_src_qmake-manual.qdoc
+++ b/doc/src/snippets/code/doc_src_qmake-manual.qdoc
@@ -1009,3 +1009,23 @@ my_exports = \
"bar.h /epoc32/include/mylib/bar.h"
BLD_INF_RULES.prj_exports += my_exports
//! [152]
+
+//! [153]
+my_note.pkg_postrules.installer = "\"myinstallnote.txt\" - \"\", FILETEXT, TEXTCONTINUE"
+DEPLOYMENT += my_note
+//! [153]
+
+//! [154]
+DEPLOYMENT -= default_bin_deployment default_resource_deployment default_reg_deployment
+//! [154]
+
+//! [155]
+default_bin_deployment.flags += FILERUN RUNINSTALL
+dep_note.sources = install_note.txt
+dep_note.flags = FILETEXT TEXTEXIT
+DEPLOYMENT += dep_note
+//! [155]
+
+//! [156]
+DEPLOYMENT.display_name = My Qt App
+//! [156]
diff --git a/doc/src/snippets/code/src_qtestlib_qtestcase.cpp b/doc/src/snippets/code/src_qtestlib_qtestcase.cpp
index c9bda6132a..adb0c343c6 100644
--- a/doc/src/snippets/code/src_qtestlib_qtestcase.cpp
+++ b/doc/src/snippets/code/src_qtestlib_qtestcase.cpp
@@ -48,7 +48,7 @@ QVERIFY(1 + 1 == 2);
//! [1]
-QVERIFY2(1 + 1 == 2, "A breach in basic arithmetic occured.");
+QVERIFY2(1 + 1 == 2, "A breach in basic arithmetic occurred.");
//! [1]
@@ -230,5 +230,21 @@ widget.show();
QTest::qWaitForWindowShown(&widget);
//! [24]
+//! [25]
+QWidget widget;
+
+QTest::touchEvent(&widget)
+ .press(0, QPoint(10, 10));
+QTest::touchEvent(&widget)
+ .stationary(0)
+ .press(1, QPoint(40, 10));
+QTest::touchEvent(&widget)
+ .move(0, QPoint(12, 12))
+ .move(1, QPoint(45, 5));
+QTest::touchEvent(&widget)
+ .release(0)
+ .release(1);
+//! [25]
+
}
diff --git a/doc/src/snippets/declarative/borderimage/borderimage-defaults.qml b/doc/src/snippets/declarative/borderimage/borderimage-defaults.qml
new file mode 100644
index 0000000000..1888f4eb82
--- /dev/null
+++ b/doc/src/snippets/declarative/borderimage/borderimage-defaults.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$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+
+Rectangle {
+ id: page
+ color: "white"
+ width: 180; height: 180
+
+//! [tiled border image]
+BorderImage {
+ width: 180; height: 180
+ border { left: 30; top: 30; right: 30; bottom: 30 }
+ source: "pics/borderframe.png"
+}
+//! [tiled border image]
+}
diff --git a/doc/src/snippets/declarative/comments.qml b/doc/src/snippets/declarative/comments.qml
index a8e47ada05..97659a5414 100644
--- a/doc/src/snippets/declarative/comments.qml
+++ b/doc/src/snippets/declarative/comments.qml
@@ -38,7 +38,6 @@
**
****************************************************************************/
-//![0]
import QtQuick 1.0
//![0]
diff --git a/doc/src/snippets/declarative/flipable/flipable.qml b/doc/src/snippets/declarative/flipable/flipable.qml
index cd5da4bdca..8d48bd9eab 100644
--- a/doc/src/snippets/declarative/flipable/flipable.qml
+++ b/doc/src/snippets/declarative/flipable/flipable.qml
@@ -46,26 +46,27 @@ Flipable {
width: 240
height: 240
- property int angle: 0
property bool flipped: false
- front: Image { source: "front.png" }
- back: Image { source: "back.png" }
+ front: Image { source: "front.png"; anchors.centerIn: parent }
+ back: Image { source: "back.png"; anchors.centerIn: parent }
transform: Rotation {
- origin.x: flipable.width/2; origin.y: flipable.height/2
- axis.x: 0; axis.y: 1; axis.z: 0 // rotate around y-axis
- angle: flipable.angle
+ id: rotation
+ origin.x: flipable.width/2
+ origin.y: flipable.height/2
+ axis.x: 0; axis.y: 1; axis.z: 0 // set axis.y to 1 to rotate around y-axis
+ angle: 0 // the default angle
}
states: State {
name: "back"
- PropertyChanges { target: flipable; angle: 180 }
+ PropertyChanges { target: rotation; angle: 180 }
when: flipable.flipped
}
transitions: Transition {
- NumberAnimation { properties: "angle"; duration: 1000 }
+ NumberAnimation { target: rotation; property: "angle"; duration: 4000 }
}
MouseArea {
diff --git a/doc/src/snippets/declarative/keys/keys-handler.qml b/doc/src/snippets/declarative/keys/keys-handler.qml
index 9e3a3b4ec5..be0eedba77 100644
--- a/doc/src/snippets/declarative/keys/keys-handler.qml
+++ b/doc/src/snippets/declarative/keys/keys-handler.qml
@@ -38,7 +38,7 @@
**
****************************************************************************/
-import Qt 4.7
+import QtQuick 1.0
Item {
width: 400; height: 400
diff --git a/doc/src/snippets/declarative/keys/keys-pressed.qml b/doc/src/snippets/declarative/keys/keys-pressed.qml
index 523c95b809..90a4e37906 100644
--- a/doc/src/snippets/declarative/keys/keys-pressed.qml
+++ b/doc/src/snippets/declarative/keys/keys-pressed.qml
@@ -38,7 +38,7 @@
**
****************************************************************************/
-import Qt 4.7
+import QtQuick 1.0
Item {
width: 400; height: 400
diff --git a/doc/src/snippets/declarative/loader/sizeitem.qml b/doc/src/snippets/declarative/loader/sizeitem.qml
new file mode 100644
index 0000000000..6ace8d6510
--- /dev/null
+++ b/doc/src/snippets/declarative/loader/sizeitem.qml
@@ -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: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$
+**
+****************************************************************************/
+//![0]
+import QtQuick 1.0
+
+Item {
+ width: 200; height: 200
+
+ Loader {
+ // position the Loader in the center of the parent
+ anchors.centerIn: parent
+ sourceComponent: rect
+ }
+
+ Component {
+ id: rect
+ Rectangle {
+ width: 50
+ height: 50
+ color: "red"
+ }
+ }
+}
+//![0]
diff --git a/doc/src/snippets/declarative/loader/sizeloader.qml b/doc/src/snippets/declarative/loader/sizeloader.qml
new file mode 100644
index 0000000000..eac7d57dd7
--- /dev/null
+++ b/doc/src/snippets/declarative/loader/sizeloader.qml
@@ -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: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$
+**
+****************************************************************************/
+//![0]
+import QtQuick 1.0
+
+Item {
+ width: 200; height: 200
+
+ Loader {
+ // Explicitly set the size of the Loader to the parent item's size
+ anchors.fill: parent
+ sourceComponent: rect
+ }
+
+ Component {
+ id: rect
+ Rectangle {
+ width: 50
+ height: 50
+ color: "red"
+ }
+ }
+}
+//![0]
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 0000000000..607651a7f3
--- /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 0000000000..930e381284
--- /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 124422ff9b..749bea3d1e 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 0000000000..188a9fb9f5
--- /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 7481b759c4..b92215b34e 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 0000000000..faa42dcf90
--- /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 68eeaf211b..68eeaf211b 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 0000000000..bbe9956c37
--- /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.pro b/doc/src/snippets/declarative/qtbinding/enums/enums.pro
index e6af0d033e..82bc123461 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 0000000000..8aaddeed4a
--- /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 0000000000..9243f4bbce
--- /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 0000000000..ad6c14ce9d
--- /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 f894f716f8..8d8cd563a5 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 0000000000..01066c1bc4
--- /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 12481dacf0..91d6aec545 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/functions-cpp/myclass.h b/doc/src/snippets/declarative/qtbinding/functions-cpp/myclass.h
new file mode 100644
index 0000000000..76c628ecf1
--- /dev/null
+++ b/doc/src/snippets/declarative/qtbinding/functions-cpp/myclass.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** 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 <QDebug>
+
+//![0]
+class MyClass : public QObject
+{
+ Q_OBJECT
+public:
+ Q_INVOKABLE void cppMethod(const QString &msg) {
+ qDebug() << "Called the C++ method with" << msg;
+ }
+
+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 425346d8c9..6161d6e028 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 0000000000..68eeaf211b
--- /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 0000000000..3e9e51e38a
--- /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 0000000000..40138f6bd7
--- /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 0000000000..68eeaf211b
--- /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 0000000000..bd400b0a9c
--- /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 0000000000..fd9db5eb7d
--- /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 0000000000..57994ca31d
--- /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 0000000000..82bc123461
--- /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 0000000000..7345f21881
--- /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 0000000000..9db4b93e2e
--- /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 0000000000..763a451646
--- /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 0000000000..36b508d30c
--- /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 0000000000..188a9fb9f5
--- /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 0000000000..a43ded8d40
--- /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 0000000000..d8daff8be7
--- /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 0000000000..68eeaf211b
--- /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 644d96388e..43029cf6bd 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 0000000000..d900830ab0
--- /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 0000000000..7288d119c9
--- /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 6887e8fe7a..e5dd33c314 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 0000000000..9aa8702432
--- /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 0000000000..4027b19a86
--- /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 0000000000..e4b6cedb7d
--- /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 0000000000..f1d03c4bb1
--- /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 fd65916fe1..c326a54498 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 0000000000..01066c1bc4
--- /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 d803e6a351..0000000000
--- 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/doc/src/snippets/moc/myclass2.h b/doc/src/snippets/moc/myclass2.h
index ca79515167..daea23c1f0 100644
--- a/doc/src/snippets/moc/myclass2.h
+++ b/doc/src/snippets/moc/myclass2.h
@@ -58,8 +58,11 @@ public:
MyClass(QObject *parent = 0);
~MyClass();
- void setPriority(Priority priority);
- Priority priority() const;
+ void setPriority(Priority priority) { m_priority = priority; }
+ Priority priority() const { return m_priority; }
+
+private:
+ Priority m_priority;
};
//! [0]
diff --git a/doc/src/sql-programming/sql-driver.qdoc b/doc/src/sql-programming/sql-driver.qdoc
index 21b106a1a3..9c99ad24f2 100644
--- a/doc/src/sql-programming/sql-driver.qdoc
+++ b/doc/src/sql-programming/sql-driver.qdoc
@@ -153,7 +153,7 @@
\snippet doc/src/snippets/code/doc_src_sql-driver.qdoc 3
- After installing Qt, as described in the \l{Installing Qt on X11
+ After installing Qt, as described in the \l{Installing Qt for X11
Platforms} document, you also need to install the plugin in the
standard location:
@@ -478,7 +478,7 @@
\snippet doc/src/snippets/code/doc_src_sql-driver.qdoc 13
- After installing Qt, as described in the \l{Installing Qt on X11 Platforms} document,
+ After installing Qt, as described in the \l{Installing Qt for X11 Platforms} document,
you also need to install the plugin in the standard location:
\snippet doc/src/snippets/code/doc_src_sql-driver.qdoc 14
@@ -565,7 +565,7 @@
\snippet doc/src/snippets/code/doc_src_sql-driver.qdoc 18
- After installing Qt, as described in the \l{Installing Qt on X11 Platforms} document,
+ After installing Qt, as described in the \l{Installing Qt for X11 Platforms} document,
you also need to install the plugin in the standard location:
\snippet doc/src/snippets/code/doc_src_sql-driver.qdoc 19
@@ -638,7 +638,7 @@
\snippet doc/src/snippets/code/doc_src_sql-driver.qdoc 21
- After installing Qt, as described in the \l{Installing Qt on X11 Platforms} document,
+ After installing Qt, as described in the \l{Installing Qt for X11 Platforms} document,
you also need to install the plugin in the standard location:
\snippet doc/src/snippets/code/doc_src_sql-driver.qdoc 22
diff --git a/doc/src/template/scripts/functions.js b/doc/src/template/scripts/functions.js
index 47539d2def..62bc53508e 100755
--- a/doc/src/template/scripts/functions.js
+++ b/doc/src/template/scripts/functions.js
@@ -105,17 +105,17 @@ function processNokiaData(response){
/* start a new list element */
full_li_element = '<li';
/* if the pageType element reads APIPage, add class name api */
- if (propertyTags[j].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'APIPage') {
+ if (propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'APIPage') {
full_li_element += ' class="api"';
apiCount++;
}
/* if the pageType element reads Article, add class name article */
- else if (propertyTags[j].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Article') {
+ else if (propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Article') {
full_li_element += ' class="article"';
articleCount++;
}
/* if the pageType element reads Example, add class name example */
- else if (propertyTags[j].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Example') {
+ else if (propertyTags[i].getElementsByTagName('pageType')[0].firstChild.nodeValue == 'Example') {
full_li_element += ' class="example"';
exampleCount++;
}
diff --git a/doc/src/template/style/narrow.css b/doc/src/template/style/narrow.css
index c1e3f61970..fbb0752203 100644
--- a/doc/src/template/style/narrow.css
+++ b/doc/src/template/style/narrow.css
@@ -223,6 +223,7 @@
float: right;
margin: 15px 40px 0 0;
font-size: 11px;
+ position: relative;
}
.narrow #narrowmenu {
diff --git a/doc/src/template/style/style.css b/doc/src/template/style/style.css
index 536b3c8ab8..03bc9a988d 100755
--- a/doc/src/template/style/style.css
+++ b/doc/src/template/style/style.css
@@ -101,7 +101,7 @@
}
a
{
- color: #00732f;
+ color: #00732F;
text-decoration: none;
}
hr
@@ -179,12 +179,27 @@
span.comment
{
- color: #8B0000;
- font-style: italic;
+ color: #008B00;
}
span.string, span.char
{
- color: #254117;
+ color: #000084;
+ }
+ span.number
+ {
+ color: #a46200;
+ }
+ span.operator
+ {
+ color: black;
+ }
+ span.keyword
+ {
+ color: #840000;
+ }
+ span.name
+ {
+ color: black
}
@@ -660,13 +675,31 @@
-webkit-box-shadow: 0 4px 6px 0 rgba(0,0,0,.2);
-moz-box-shadow: 0 4px 6px 0 rgba(0,0,0,.2);
box-shadow: 0 4px 6px 0 rgba(0,0,0,.2);
+ font-size: 11px;
+ }
+
+ #resultdialog a
+ {
+ color: #00732f;
}
#resultdialog.active {
display: block;
- width:30%;
}
+ .narrow #resultdialog {
+ width: 60%;
+ _width: 360px;
+ }
+
+ .narrow #resultdialog.active {
+ right: 10px;
+ *left: auto;
+ _left: auto;
+ _right: -20px;
+ }
+
+
#resultdialog #resultclose {
float: right;
}
@@ -779,6 +812,7 @@
margin-right: 15px;
font-weight: bold;
color: #B0ADAB;
+ font: bold 10px/1.2 Verdana;
}
.toolbuttons #print
@@ -892,7 +926,6 @@
}
.wrap .content h2
{
- border-bottom:1px solid #DDDDDD;
font:600 16px/1.2 Arial;
margin-top:15px;
width:100%;
@@ -990,7 +1023,7 @@
/*display:inline-block;*/
margin-left:10px;
min-width:250px;
- line-height: 1.2;
+ line-height: 1.5;
min-width:100%;
min-height:15px;
}
@@ -1279,6 +1312,10 @@
background-color: #E6E7E8;
margin: 0;
}
+ .small
+ {
+ font: normal 9px/1 Verdana;
+ }
/* end footer elements */
@@ -1453,7 +1490,7 @@
}
- .creator .header, .footer, .wrapper
+ .creator .header, .creator .footer, .creator .wrapper
{
max-width: 1500px;
margin: 0px;
@@ -1658,6 +1695,58 @@
}
/* end of creator spec*/
+ .item {
+ float: left;
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+ }
+
+
+ .item .primary {
+ margin-right: 220px;
+ position: relative;
+ }
+
+ .item hr {
+ margin-left: -220px;
+ }
+
+ .item .secondary {
+ float: right;
+ width: 200px;
+ position: relative;
+ }
+
+ .item .cols {
+ clear: both;
+ display: block;
+ }
+
+ .item .cols .col {
+ float: left;
+ margin-left: 1.5%;
+ }
+
+ .item .cols .col.first {
+ margin-left: 0;
+ }
+
+ .item .cols.two .col {
+ width: 45%;
+ }
+
+ .item .box {
+ margin: 0 0 10px 0;
+ }
+
+ .item .box h3 {
+ margin: 0 0 10px 0;
+ }
+
+ .cols.unclear {
+ clear:none;
+ }
}
/* end of screen media */
diff --git a/examples/declarative/cppextensions/plugins/README b/examples/declarative/cppextensions/plugins/README
index fe519f83bd..95e0eea849 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 2716ee555c..58d37a3787 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/declarative/positioners/positioners.qmlproject.user b/examples/declarative/positioners/positioners.qmlproject.user
deleted file mode 100644
index 593479d605..0000000000
--- a/examples/declarative/positioners/positioners.qmlproject.user
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE QtCreatorProject>
-<qtcreator>
- <data>
- <variable>ProjectExplorer.Project.ActiveTarget</variable>
- <value type="int">0</value>
- </data>
- <data>
- <variable>ProjectExplorer.Project.EditorSettings</variable>
- <valuemap type="QVariantMap">
- <value key="EditorConfiguration.Codec" type="QByteArray">UTF-8</value>
- </valuemap>
- </data>
- <data>
- <variable>ProjectExplorer.Project.Target.0</variable>
- <valuemap type="QVariantMap">
- <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">QML Runtime</value>
- <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QmlProjectManager.QmlTarget</value>
- <value key="ProjectExplorer.Target.ActiveBuildConfiguration" type="int">-1</value>
- <value key="ProjectExplorer.Target.ActiveRunConfiguration" type="int">0</value>
- <value key="ProjectExplorer.Target.BuildConfigurationCount" type="int">0</value>
- <valuemap key="ProjectExplorer.Target.RunConfiguration.0" type="QVariantMap">
- <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">QML Runtime</value>
- <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QmlProjectManager.QmlRunConfiguration</value>
- <value key="QmlProjectManager.QmlRunConfiguration.DebugServerAddress" type="QString">127.0.0.1</value>
- <value key="QmlProjectManager.QmlRunConfiguration.DebugServerPort" type="int">3768</value>
- <value key="QmlProjectManager.QmlRunConfiguration.MainScript" type="QString">positioners.qml</value>
- <value key="QmlProjectManager.QmlRunConfiguration.QDeclarativeViewer" type="QString"></value>
- <value key="QmlProjectManager.QmlRunConfiguration.QDeclarativeViewerArguments" type="QString"></value>
- </valuemap>
- <value key="ProjectExplorer.Target.RunConfigurationCount" type="int">1</value>
- </valuemap>
- </data>
- <data>
- <variable>ProjectExplorer.Project.TargetCount</variable>
- <value type="int">1</value>
- </data>
- <data>
- <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
- <value type="int">4</value>
- </data>
-</qtcreator>
diff --git a/examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml b/examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml
index 4c1ad51a6f..c60f2dfeaa 100644
--- a/examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml
+++ b/examples/declarative/toys/tic-tac-toe/tic-tac-toe.qml
@@ -55,22 +55,6 @@ Rectangle {
source: "content/pics/board.png"
}
- Text {
- id: messageDisplay
- anchors.centerIn: parent
- color: "blue"
- style: Text.Outline; styleColor: "white"
- font.pixelSize: 50; font.bold: true
- visible: false
-
- Timer {
- running: messageDisplay.visible
- onTriggered: {
- messageDisplay.visible = false;
- Logic.restartGame();
- }
- }
- }
Column {
id: display
@@ -118,4 +102,22 @@ Rectangle {
}
}
}
+
+
+ Text {
+ id: messageDisplay
+ anchors.centerIn: parent
+ color: "blue"
+ style: Text.Outline; styleColor: "white"
+ font.pixelSize: 50; font.bold: true
+ visible: false
+
+ Timer {
+ running: messageDisplay.visible
+ onTriggered: {
+ messageDisplay.visible = false;
+ Logic.restartGame();
+ }
+ }
+ }
}
diff --git a/examples/multimedia/audiodevices/audiodevices.h b/examples/multimedia/audiodevices/audiodevices.h
index 3b8f074709..4a0f74c147 100644
--- a/examples/multimedia/audiodevices/audiodevices.h
+++ b/examples/multimedia/audiodevices/audiodevices.h
@@ -38,6 +38,8 @@
**
****************************************************************************/
+#ifndef AUDIODEVICES_H
+#define AUDIODEVICES_H
#include <QObject>
#include <QMainWindow>
@@ -77,3 +79,5 @@ private slots:
};
+#endif
+
diff --git a/examples/multimedia/audioinput/audioinput.h b/examples/multimedia/audioinput/audioinput.h
index 2f4b2061dc..c198304932 100644
--- a/examples/multimedia/audioinput/audioinput.h
+++ b/examples/multimedia/audioinput/audioinput.h
@@ -38,6 +38,9 @@
**
****************************************************************************/
+#ifndef AUDIOINPUT_H
+#define AUDIOINPUT_H
+
#include <QPixmap>
#include <QWidget>
#include <QObject>
@@ -132,3 +135,5 @@ private:
static const QString ResumeLabel;
};
+#endif
+
diff --git a/examples/multimedia/audiooutput/audiooutput.h b/examples/multimedia/audiooutput/audiooutput.h
index 004ca49d65..2f4aa6468f 100644
--- a/examples/multimedia/audiooutput/audiooutput.h
+++ b/examples/multimedia/audiooutput/audiooutput.h
@@ -38,6 +38,9 @@
**
****************************************************************************/
+#ifndef AUDIOOUTPUT_H
+#define AUDIOOUTPUT_H
+
#include <math.h>
#include <QObject>
@@ -115,3 +118,5 @@ private slots:
void deviceChanged(int index);
};
+#endif
+
diff --git a/examples/network/bearermonitor/bearermonitor.cpp b/examples/network/bearermonitor/bearermonitor.cpp
index 2c976ffc37..75ffb01608 100644
--- a/examples/network/bearermonitor/bearermonitor.cpp
+++ b/examples/network/bearermonitor/bearermonitor.cpp
@@ -41,8 +41,8 @@
#include "bearermonitor.h"
#include "sessionwidget.h"
-#include <QDebug>
-#include <QMessageBox>
+#include <QtCore/QDebug>
+
#ifdef Q_OS_WIN
#include <winsock2.h>
#undef interface
@@ -56,20 +56,18 @@ BearerMonitor::BearerMonitor(QWidget *parent)
: QWidget(parent)
{
setupUi(this);
-#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
+#ifdef MAEMO_UI
newSessionButton->hide();
deleteSessionButton->hide();
#else
delete tabWidget->currentWidget();
sessionGroup->hide();
#endif
-#if defined (Q_OS_SYMBIAN) || defined(Q_OS_WINCE) || defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
+#if defined(Q_OS_SYMBIAN) || defined(Q_OS_WINCE) || defined(MAEMO_UI)
setWindowState(Qt::WindowMaximized);
#endif
updateConfigurations();
-#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
onlineStateChanged(!manager.allConfigurations(QNetworkConfiguration::Active).isEmpty());
-#endif
QNetworkConfiguration defaultConfiguration = manager.defaultConfiguration();
for (int i = 0; i < treeWidget->topLevelItemCount(); ++i) {
QTreeWidgetItem *item = treeWidget->topLevelItem(i);
@@ -104,7 +102,7 @@ BearerMonitor::BearerMonitor(QWidget *parent)
connect(newSessionButton, SIGNAL(clicked()),
this, SLOT(createNewSession()));
-#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+#ifndef MAEMO_UI
connect(deleteSessionButton, SIGNAL(clicked()),
this, SLOT(deleteSession()));
#endif
@@ -257,15 +255,9 @@ void BearerMonitor::updateConfigurations()
void BearerMonitor::onlineStateChanged(bool isOnline)
{
if (isOnline)
-#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
- QMessageBox::information(this, "Connection state changed", "Online", QMessageBox::Close);
- else
- QMessageBox::information(this, "Connection state changed", "Offline", QMessageBox::Close);
-#else
onlineState->setText(tr("Online"));
else
onlineState->setText(tr("Offline"));
-#endif
}
#ifdef Q_OS_WIN
@@ -393,7 +385,7 @@ void BearerMonitor::createSessionFor(QTreeWidgetItem *item)
tabWidget->addTab(session, conf.name());
-#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+#ifndef MAEMO_UI
sessionGroup->show();
#endif
@@ -408,7 +400,7 @@ void BearerMonitor::createNewSession()
createSessionFor(item);
}
-#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+#ifndef MAEMO_UI
void BearerMonitor::deleteSession()
{
SessionWidget *session = qobject_cast<SessionWidget *>(tabWidget->currentWidget());
diff --git a/examples/network/bearermonitor/bearermonitor.h b/examples/network/bearermonitor/bearermonitor.h
index 45e7275345..df1c78bb6b 100644
--- a/examples/network/bearermonitor/bearermonitor.h
+++ b/examples/network/bearermonitor/bearermonitor.h
@@ -45,7 +45,7 @@
#include <qnetworksession.h>
#if defined (Q_OS_SYMBIAN) || defined(Q_OS_WINCE)
#include "ui_bearermonitor_240_320.h"
-#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
+#elif defined(MAEMO_UI)
#include "ui_bearermonitor_maemo.h"
#else
#include "ui_bearermonitor_640_480.h"
@@ -81,7 +81,7 @@ private slots:
void createSessionFor(QTreeWidgetItem *item);
void createNewSession();
-#if !defined(Q_WS_MAEMO_5) && !defined(Q_WS_MAEMO_6)
+#ifndef MAEMO_UI
void deleteSession();
#endif
void performScan();
diff --git a/examples/network/bearermonitor/bearermonitor.pro b/examples/network/bearermonitor/bearermonitor.pro
index 42100bca41..bd9bd68e5c 100644
--- a/examples/network/bearermonitor/bearermonitor.pro
+++ b/examples/network/bearermonitor/bearermonitor.pro
@@ -8,7 +8,8 @@ SOURCES = main.cpp \
bearermonitor.cpp \
sessionwidget.cpp
-maemo5|maemo6 {
+maemo5|maemo6|linux-g++-maemo {
+ DEFINES += MAEMO_UI
FORMS = bearermonitor_maemo.ui \
sessionwidget_maemo.ui
} else {
@@ -17,8 +18,8 @@ maemo5|maemo6 {
sessionwidget.ui
}
-win32:!wince*:LIBS += -lWs2_32
-wince*:LIBS += -lWs2
+win32:!wince*:LIBS += -lws2_32
+wince*:LIBS += -lws2
CONFIG += console
diff --git a/examples/network/bearermonitor/bearermonitor_maemo.ui b/examples/network/bearermonitor/bearermonitor_maemo.ui
index a7940c6fe9..9c72bfd5b1 100644
--- a/examples/network/bearermonitor/bearermonitor_maemo.ui
+++ b/examples/network/bearermonitor/bearermonitor_maemo.ui
@@ -7,300 +7,359 @@
<x>0</x>
<y>0</y>
<width>612</width>
- <height>495</height>
+ <height>555</height>
</rect>
</property>
<property name="windowTitle">
<string>BearerMonitor</string>
</property>
- <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <layout class="QVBoxLayout" name="verticalLayout" stretch="0,0">
<item>
- <widget class="QTabWidget" name="tabWidget">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
+ <widget class="QGroupBox" name="systemState">
+ <property name="title">
+ <string>System State</string>
</property>
- <property name="currentIndex">
- <number>0</number>
+ <property name="flat">
+ <bool>true</bool>
</property>
- <property name="usesScrollButtons">
- <bool>false</bool>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="onlineStateLabel">
+ <property name="text">
+ <string>Online State:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="onlineState">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="configurations">
+ <property name="title">
+ <string>Configurations &amp;&amp; Sessions</string>
</property>
- <widget class="QWidget" name="tab">
- <attribute name="title">
- <string>Configurations</string>
- </attribute>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <widget class="QTreeWidget" name="treeWidget">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <attribute name="headerVisible">
- <bool>false</bool>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_5">
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QTabWidget" name="tabWidget">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <property name="usesScrollButtons">
+ <bool>false</bool>
+ </property>
+ <widget class="QWidget" name="tab">
+ <attribute name="title">
+ <string>Configurations</string>
</attribute>
- <column>
- <property name="text">
- <string>1</string>
- </property>
- </column>
- </widget>
- </item>
- <item>
- <layout class="QVBoxLayout" name="verticalLayout_2">
- <item>
- <layout class="QHBoxLayout" name="configurationNameLayout">
- <item>
- <widget class="QLabel" name="configurationNameLabel">
- <property name="text">
- <string>Name:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="configurationName">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="configurationStateLayout">
- <item>
- <widget class="QLabel" name="configurationStateLabel">
- <property name="text">
- <string>State:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="configurationState">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="configurationTypeLayout">
- <item>
- <widget class="QLabel" name="configurationTypeLabel">
- <property name="text">
- <string>Type:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="configurationType">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Invalid</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="configurationPurposeLayout">
- <item>
- <widget class="QLabel" name="configurationPurposeLabel">
- <property name="text">
- <string>Purpose:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="configurationPurpose">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Unknown</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="configurationIdentifierLayout">
- <item>
- <widget class="QLabel" name="configurationIdentifierLabel">
- <property name="text">
- <string>Identifier:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="configurationIdentifier">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="configurationRoamingLayout">
- <item>
- <widget class="QLabel" name="configurationRoamingLabel">
- <property name="text">
- <string>Roaming:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="configurationRoaming">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="configurationChildrenLayout">
- <item>
- <widget class="QLabel" name="configurationChildrenLabel">
- <property name="text">
- <string>Children:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="configurationChildren">
- <property name="sizePolicy">
- <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QTreeWidget" name="treeWidget">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="rootIsDecorated">
+ <bool>false</bool>
+ </property>
+ <attribute name="headerVisible">
+ <bool>false</bool>
+ </attribute>
+ <column>
<property name="text">
- <string/>
+ <string>1</string>
</property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QGroupBox" name="nlaGroup">
- <property name="title">
- <string>Network Location Awareness</string>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout">
+ </column>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <layout class="QHBoxLayout" name="configurationNameLayout">
+ <item>
+ <widget class="QLabel" name="configurationNameLabel">
+ <property name="text">
+ <string>Name:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="configurationName">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="configurationStateLayout">
+ <item>
+ <widget class="QLabel" name="configurationStateLabel">
+ <property name="text">
+ <string>State:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="configurationState">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="configurationTypeLayout">
+ <item>
+ <widget class="QLabel" name="configurationTypeLabel">
+ <property name="text">
+ <string>Type:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="configurationType">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Invalid</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="configurationPurposeLayout">
+ <item>
+ <widget class="QLabel" name="configurationPurposeLabel">
+ <property name="text">
+ <string>Purpose:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="configurationPurpose">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string>Unknown</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="configurationIdentifierLayout">
+ <item>
+ <widget class="QLabel" name="configurationIdentifierLabel">
+ <property name="text">
+ <string>Identifier:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="configurationIdentifier">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="configurationRoamingLayout">
+ <item>
+ <widget class="QLabel" name="configurationRoamingLabel">
+ <property name="text">
+ <string>Roaming:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="configurationRoaming">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="configurationChildrenLayout">
+ <item>
+ <widget class="QLabel" name="configurationChildrenLabel">
+ <property name="text">
+ <string>Children:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="configurationChildren">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="nlaGroup">
+ <property name="title">
+ <string>Network Location Awareness</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QPushButton" name="registerButton">
+ <property name="text">
+ <string>Register</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="unregisterButton">
+ <property name="text">
+ <string>Unregister</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
<item>
- <widget class="QPushButton" name="registerButton">
+ <widget class="QPushButton" name="newSessionButton">
<property name="text">
- <string>Register</string>
+ <string>New Session</string>
</property>
</widget>
</item>
<item>
- <widget class="QPushButton" name="unregisterButton">
+ <widget class="QPushButton" name="deleteSessionButton">
<property name="text">
- <string>Unregister</string>
+ <string>Delete Session</string>
</property>
</widget>
</item>
+ <item>
+ <widget class="QPushButton" name="scanButton">
+ <property name="text">
+ <string>Scan</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="progressBar">
+ <property name="maximum">
+ <number>0</number>
+ </property>
+ <property name="value">
+ <number>23280</number>
+ </property>
+ <property name="textVisible">
+ <bool>false</bool>
+ </property>
+ <property name="invertedAppearance">
+ <bool>false</bool>
+ </property>
+ <property name="format">
+ <string>%p%</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
</layout>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="newSessionButton">
- <property name="text">
- <string>New Session</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="deleteSessionButton">
- <property name="text">
- <string>Delete Session</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="scanButton">
- <property name="text">
- <string>Scan</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QProgressBar" name="progressBar">
- <property name="maximum">
- <number>0</number>
- </property>
- <property name="value">
- <number>23280</number>
- </property>
- <property name="textVisible">
- <bool>false</bool>
- </property>
- <property name="invertedAppearance">
- <bool>false</bool>
- </property>
- <property name="format">
- <string>%p%</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
</widget>
</item>
</layout>
diff --git a/examples/network/bearermonitor/main.cpp b/examples/network/bearermonitor/main.cpp
index 1a22c1341e..11399e410e 100644
--- a/examples/network/bearermonitor/main.cpp
+++ b/examples/network/bearermonitor/main.cpp
@@ -38,7 +38,8 @@
**
****************************************************************************/
-#include <QApplication>
+#include <QtGui/QApplication>
+#include <QtGui/QMainWindow>
#include "bearermonitor.h"
@@ -46,8 +47,12 @@ int main(int argc, char *argv[])
{
QApplication app(argc, argv);
+ QMainWindow mainWindow;
+
BearerMonitor monitor;
- monitor.show();
+
+ mainWindow.setCentralWidget(&monitor);
+ mainWindow.show();
return app.exec();
}
diff --git a/examples/network/bearermonitor/sessionwidget.cpp b/examples/network/bearermonitor/sessionwidget.cpp
index 5ec9d53b1b..51de0f2f17 100644
--- a/examples/network/bearermonitor/sessionwidget.cpp
+++ b/examples/network/bearermonitor/sessionwidget.cpp
@@ -74,7 +74,7 @@ SessionWidget::SessionWidget(const QNetworkConfiguration &config, QWidget *paren
this, SLOT(closeSession()));
connect(stopSessionButton, SIGNAL(clicked()),
this, SLOT(stopSession()));
-#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
+#ifdef MAEMO_UI
connect(deleteSessionButton, SIGNAL(clicked()),
this, SLOT(deleteSession()));
#endif
@@ -94,7 +94,7 @@ void SessionWidget::timerEvent(QTimerEvent *e)
}
}
-#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
+#ifdef MAEMO_UI
void SessionWidget::deleteSession()
{
delete this;
diff --git a/examples/network/bearermonitor/sessionwidget.h b/examples/network/bearermonitor/sessionwidget.h
index c92db4417c..846a1afcc9 100644
--- a/examples/network/bearermonitor/sessionwidget.h
+++ b/examples/network/bearermonitor/sessionwidget.h
@@ -42,7 +42,8 @@
#define SESSIONWIDGET_H
#include <qnetworksession.h>
-#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
+
+#ifdef MAEMO_UI
#include "ui_sessionwidget_maemo.h"
#else
#include "ui_sessionwidget.h"
@@ -71,7 +72,7 @@ private Q_SLOTS:
void stopSession();
void updateSession();
void updateSessionError(QNetworkSession::SessionError error);
-#if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
+#ifdef MAEMO_UI
void deleteSession();
#endif
diff --git a/examples/symbianpkgrules.pri b/examples/symbianpkgrules.pri
index a1b663408d..fe9b487d55 100644
--- a/examples/symbianpkgrules.pri
+++ b/examples/symbianpkgrules.pri
@@ -2,15 +2,19 @@
RSS_RULES ="group_name=\"QtExamples\";"
+nokiaVendor = "Nokia, Qt"
vendorinfo = \
"; Localised Vendor name" \
- "%{\"Nokia, Qt\"}" \
+ "%{$$addLanguageDependentPkgItem(nokiaVendor)}" \
" " \
"; Unique Vendor name" \
- ":\"Nokia, Qt\"" \
+ ":\"$$nokiaVendor\"" \
" "
examples_deployment.pkg_prerules += vendorinfo
DEPLOYMENT += examples_deployment
-isEmpty(ICON):ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg
+isEmpty(ICON):contains(TEMPLATE, ".*app"):contains(QT, gui):contains(CONFIG, qt):!contains(CONFIG, "no_icon") {
+ ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg
+}
+
diff --git a/examples/tools/echoplugin/echowindow/echowindow.pro b/examples/tools/echoplugin/echowindow/echowindow.pro
index bdf8c41e46..d56961cd71 100644
--- a/examples/tools/echoplugin/echowindow/echowindow.pro
+++ b/examples/tools/echoplugin/echowindow/echowindow.pro
@@ -5,8 +5,8 @@ SOURCES = echowindow.cpp \
TARGET = echoplugin
win32 {
- debug:DESTDIR = ../debug/
- release:DESTDIR = ../release/
+ CONFIG(debug, release|debug):DESTDIR = ../debug/
+ CONFIG(release, release|debug):DESTDIR = ../release/
} else {
DESTDIR = ../
}
diff --git a/examples/tools/styleplugin/plugin/plugin.pro b/examples/tools/styleplugin/plugin/plugin.pro
index 7cb0c976de..54e266c8af 100644
--- a/examples/tools/styleplugin/plugin/plugin.pro
+++ b/examples/tools/styleplugin/plugin/plugin.pro
@@ -8,8 +8,8 @@ SOURCES = simplestyle.cpp \
TARGET = simplestyleplugin
#! [0]
win32 {
- debug:DESTDIR = ../debug/styles/
- release:DESTDIR = ../release/styles/
+ CONFIG(debug, release|debug):DESTDIR = ../debug/styles/
+ CONFIG(release, release|debug):DESTDIR = ../release/styles/
} else {
DESTDIR = ../styles/
}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part0/Button.qml b/examples/tutorials/gettingStarted/gsQml/parts/part0/Button.qml
new file mode 100644
index 0000000000..ffd4be49e6
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part0/Button.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 QtDeclarative module 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$
+**
+****************************************************************************/
+
+//! [document]
+import QtQuick 1.0
+
+Rectangle {
+ id: simplebutton
+ color: "grey"
+ width: 150; height: 75
+
+ Text{
+ id: buttonLabel
+ anchors.centerIn: parent
+ text: "button label"
+ }
+}
+//! [document]
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part1/Button.qml b/examples/tutorials/gettingStarted/gsQml/parts/part1/Button.qml
new file mode 100644
index 0000000000..bb70cfd6d7
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part1/Button.qml
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+
+ //identifier of the item
+ id: button
+
+ property string label: "button label"
+
+ //these properties act as constants, useable outside this QML file
+ property int buttonHeight: 75
+ property int buttonWidth: 150
+
+ //the color highlight when the mouse hovers on the rectangle
+ property color onHoverColor: "gold"
+ property color borderColor: "white"
+
+ //buttonColor is set to the button's main color
+ property color buttonColor: "lightblue"
+
+ //set appearance properties
+ radius: 10
+ smooth: true
+ border{color: "white"; width: 3}
+ width: buttonWidth; height: buttonHeight
+
+ Text{
+ id: buttonLabel
+ anchors.centerIn: parent
+ text: label
+ }
+
+ //buttonClick() is callable and a signal handler, onButtonClick is automatically created
+ signal buttonClick()
+ onButtonClick: {
+ console.log(buttonLabel.text + " clicked" )
+ }
+
+ //define the clickable area to be the whole rectangle
+ MouseArea{
+ id: buttonMouseArea
+ anchors.fill: parent //stretch the area to the parent's dimension
+ onClicked: buttonClick()
+
+ //if true, then onEntered and onExited called if mouse hovers in the mouse area
+ //if false, a button must be clicked to detect the mouse hover
+ hoverEnabled: true
+
+ //display a border if the mouse hovers on the button mouse area
+ onEntered: parent.border.color = onHoverColor
+ //remove the border if the mouse exits the button mouse area
+ onExited: parent.border.color = borderColor
+ }
+
+ //change the color of the button when pressed
+ color: buttonMouseArea.pressed ? Qt.darker(buttonColor, 1.5) : buttonColor
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part1/EditMenu.qml b/examples/tutorials/gettingStarted/gsQml/parts/part1/EditMenu.qml
new file mode 100644
index 0000000000..460f5e9b99
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part1/EditMenu.qml
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: editMenu
+ height: 480; width:1000
+ color: "powderblue"
+ property string menuName:"Edit"
+
+ Rectangle{
+ id:actionContainer
+ color:"transparent"
+ anchors.centerIn: parent
+
+ width: parent.width; height: parent.height / 5
+ Row{
+ anchors.centerIn: parent
+ spacing: parent.width/6
+ Button{
+ id: loadButton
+ buttonColor: "lightgrey"
+ label: "Cut"
+ }
+
+ Button{
+ buttonColor: "grey"
+ id: saveButton
+ label: "Paste"
+ }
+ Button{
+ id: exitButton
+ label: "Select All"
+ buttonColor: "darkgrey"
+ }
+ }
+ }
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part1/FileMenu.qml b/examples/tutorials/gettingStarted/gsQml/parts/part1/FileMenu.qml
new file mode 100644
index 0000000000..65de4f1b9f
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part1/FileMenu.qml
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: fileMenu
+
+ //the menuName is accessible from outside this QML file
+ property string menuName: "File"
+
+ //generous amount of screen space that will allow the buttons to fit
+ height: 480; width:1000
+
+ color: "#6C646A"
+
+ //a sub-rectangle allows the flexibility of setting the row area
+ Rectangle{
+ id:actionContainer
+
+ //make this rectangle invisible
+ color:"transparent"
+ anchors.centerIn: parent
+
+ //the height is a good proportion that creates more space at the top of the row of buttons
+ width: parent.width; height: parent.height / 5
+
+ Row{
+ anchors.centerIn: parent
+ spacing: parent.width/6
+ Button{
+ id: loadButton
+ buttonColor: "lightgrey"
+ label: "Load"
+ }
+
+ Button{
+ buttonColor: "grey"
+ id: saveButton
+ label: "Save"
+ }
+ Button{
+ id: exitButton
+ label: "Exit"
+ buttonColor: "darkgrey"
+
+ //exit the application if the exitButton is clicked
+ onButtonClick:{
+ Qt.quit()
+ }
+ }
+ }
+ }
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part1/SimpleButton.qml b/examples/tutorials/gettingStarted/gsQml/parts/part1/SimpleButton.qml
new file mode 100644
index 0000000000..5bb50f824d
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part1/SimpleButton.qml
@@ -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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+
+ //identifier of the item
+ id: simplebutton
+
+ //the rectangle's fill color
+ color: "grey"
+
+ //dimensions of the button
+ width: 150; height: 75
+
+ //A text element contains functionalities for creating texts
+ Text {
+ id: buttonLabel
+
+ //center the text inside the parent
+ anchors.centerIn: parent
+
+ //text property binds to the label displayed on the button
+ text: "button label"
+ }
+
+ //define the clickable area to be the whole rectangle
+ MouseArea {
+ id: buttonMouseArea
+ anchors.fill: parent //anchor all sides of the mouse area to the rectangle's anchors
+
+ //onClicked handles valid mouse button clicks
+ onClicked: console.log(buttonLabel.text + " clicked" )
+ }
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_button.png b/examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_button.png
new file mode 100644
index 0000000000..aab64bcf39
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_button.png
Binary files differ
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_editmenu.png b/examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_editmenu.png
new file mode 100644
index 0000000000..d3ff66f2fd
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_editmenu.png
Binary files differ
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_filemenu.png b/examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_filemenu.png
new file mode 100644
index 0000000000..f2e2b0d990
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_filemenu.png
Binary files differ
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_simplebutton.png b/examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_simplebutton.png
new file mode 100644
index 0000000000..21ce50929b
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part1/pics/qml-texteditor1_simplebutton.png
Binary files differ
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part1/qml-texteditor.qmlproject b/examples/tutorials/gettingStarted/gsQml/parts/part1/qml-texteditor.qmlproject
new file mode 100644
index 0000000000..d4909f8685
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part1/qml-texteditor.qmlproject
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+ /* Include .qml, .js, and image files from current directory and subdirectories */
+ QmlFiles {
+ directory: "."
+ }
+ JavaScriptFiles {
+ directory: "."
+ }
+ ImageFiles {
+ directory: "."
+ }
+ /* List of plugin directories passed to QML runtime */
+ // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part2/Button.qml b/examples/tutorials/gettingStarted/gsQml/parts/part2/Button.qml
new file mode 100644
index 0000000000..39ac5910e6
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part2/Button.qml
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+
+ //identifier of the item
+ id: button
+
+ property string label: "button label"
+
+ //these properties act as constants, useable outside this QML file
+ property int buttonHeight: 75
+ property int buttonWidth: 150
+
+ //the color highlight when the mouse hovers on the rectangle
+ property color onHoverColor: "gold"
+ property color borderColor: "white"
+
+ //buttonColor is set to the button's main color
+ property color buttonColor: "lightblue"
+
+ //set appearance properties
+ radius:10
+ smooth: true
+ border{color: "white"; width: 3}
+ width: buttonWidth; height: buttonHeight
+
+ Text{
+ id: buttonLabel
+ anchors.centerIn: parent
+ text: label
+ }
+
+ //buttonClick() is callable and a signal handler, onButtonClick is automatically created
+ signal buttonClick()
+ onButtonClick: {
+ console.log(buttonLabel.text + " clicked" )
+ }
+
+ //define the clickable area to be the whole rectangle
+ MouseArea{
+ id: buttonMouseArea
+ anchors.fill: parent //stretch the area to the parent's dimension
+ onClicked: buttonClick()
+
+ //if true, then onEntered and onExited called if mouse hovers in the mouse area
+ //if false, a button must be clicked to detect the mouse hover
+ hoverEnabled: true
+
+ //display a border if the mouse hovers on the button mouse area
+ onEntered: parent.border.color = onHoverColor
+ //remove the border if the mouse exits the button mouse area
+ onExited: parent.border.color = borderColor
+
+ }
+
+ //change the color of the button when pressed
+ color: buttonMouseArea.pressed ? Qt.darker(buttonColor, 1.5) : buttonColor
+
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part2/EditMenu.qml b/examples/tutorials/gettingStarted/gsQml/parts/part2/EditMenu.qml
new file mode 100644
index 0000000000..fdd06d5f7e
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part2/EditMenu.qml
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: editMenu
+ height: 480; width:1000
+ color: "powderblue"
+ property string menuName:"Edit"
+
+ Rectangle{
+ id:actionContainer
+ color:"transparent"
+ anchors.centerIn: parent
+
+ width: parent.width; height: parent.height / 5
+ Row{
+ anchors.centerIn: parent
+ spacing: parent.width/6
+ Button{
+ id: loadButton
+ buttonColor: "lightgrey"
+ label: "Cut"
+ }
+
+ Button{
+ buttonColor: "grey"
+ id: saveButton
+ label: "Paste"
+ }
+ Button{
+ id: exitButton
+ label: "Select All"
+ buttonColor: "darkgrey"
+ }
+ }
+ }
+
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part2/FileMenu.qml b/examples/tutorials/gettingStarted/gsQml/parts/part2/FileMenu.qml
new file mode 100644
index 0000000000..bd6669b994
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part2/FileMenu.qml
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: fileMenu
+
+ //the menuName is accessible from outside this QML file
+ property string menuName: "File"
+
+ //generous amount of screen space that will allow the buttons to fit
+ height: 480; width:1000
+
+ color: "#6C646A"
+
+ //a sub-rectangle allows the flexibility of setting the row area
+ Rectangle{
+ id:actionContainer
+
+ //make this rectangle invisible
+ color:"transparent"
+ anchors.centerIn: parent
+
+ //the height is a good proportion that creates more space at the top of the row of buttons
+ width: parent.width; height: parent.height / 5
+
+ Row{
+ anchors.centerIn: parent
+ spacing: parent.width/6
+ Button{
+ id: loadButton
+ buttonColor: "lightgrey"
+ label: "Load"
+ }
+
+ Button{
+ buttonColor: "grey"
+ id: saveButton
+ label: "Save"
+ }
+ Button{
+ id: exitButton
+ label: "Exit"
+ buttonColor: "darkgrey"
+
+ //exit the application if the exitButton is clicked
+ onButtonClick:{
+ Qt.quit()
+ }
+ }
+ }
+ }
+
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part2/MenuBar.qml b/examples/tutorials/gettingStarted/gsQml/parts/part2/MenuBar.qml
new file mode 100644
index 0000000000..8065804570
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part2/MenuBar.qml
@@ -0,0 +1,140 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: menuBar
+ width: 1000
+ height:300
+
+ property color fileColor: "thistle"
+ property color editColor: "powderblue"
+
+ //container for the header and the buttons
+ Rectangle{
+
+ id: labelList
+ height:parent.height/10
+ width: parent.width
+ color: "steelblue"
+
+ //default z is 0, items with higher z values are shown on top of items with lower z values
+ z: 1
+
+ //row displays its children in a vertical row
+ Row{
+ anchors.centerIn: parent
+ spacing:40
+ Button{
+ height: 20
+ width: 50
+ label: "File"
+ id: fileButton
+ buttonColor : menuListView.currentIndex == 0? fileColor : Qt.darker(fileColor, 1.5)
+ scale: menuListView.currentIndex == 0? 1.25: 1
+ radius: 1
+
+ //on a button click, change the list's currently selected item to FileMenu
+ onButtonClick: {
+ menuListView.currentIndex = 0
+ }
+ }
+ Button{
+ height: 20
+ width: 50
+ id: editButton
+ buttonColor : menuListView.currentIndex == 1? editColor : Qt.darker(editColor, 1.5)
+ scale: menuListView.currentIndex == 1? 1.25: 1
+ label: "Edit"
+ radius: 1
+
+ //on a button click, change the list's currently selected item to EditMenu
+ onButtonClick: {
+ menuListView.currentIndex = 1
+ }
+
+
+ }
+
+
+ }
+ }
+
+ //a list of visual items already have delegates handling their display
+ VisualItemModel{
+ id: menuListModel
+
+ FileMenu{
+ width: menuListView.width
+ height: menuBar.height
+ color: fileColor
+ }
+ EditMenu{
+ color: editColor
+ width: menuListView.width
+ height: menuBar.height
+
+ }
+ }
+
+ //list view will display a model according to a delegate
+ ListView{
+ id: menuListView
+ anchors.fill:parent
+ anchors.bottom: parent.bottom
+ width:parent.width
+ height: parent.height
+
+ //the model contains the data
+ model: menuListModel
+
+ //control the movement of the menu switching
+ snapMode: ListView.SnapOneItem
+ orientation: ListView.Horizontal
+ boundsBehavior: Flickable.StopAtBounds
+ flickDeceleration: 5000
+ highlightFollowsCurrentItem: true
+ highlightMoveDuration:240
+ highlightRangeMode: ListView.StrictlyEnforceRange
+ }
+
+
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part2/pics/qml-texteditor2_menubar.png b/examples/tutorials/gettingStarted/gsQml/parts/part2/pics/qml-texteditor2_menubar.png
new file mode 100644
index 0000000000..da959a3468
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part2/pics/qml-texteditor2_menubar.png
Binary files differ
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part2/qml-texteditor2.qmlproject b/examples/tutorials/gettingStarted/gsQml/parts/part2/qml-texteditor2.qmlproject
new file mode 100644
index 0000000000..d4909f8685
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part2/qml-texteditor2.qmlproject
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+ /* Include .qml, .js, and image files from current directory and subdirectories */
+ QmlFiles {
+ directory: "."
+ }
+ JavaScriptFiles {
+ directory: "."
+ }
+ ImageFiles {
+ directory: "."
+ }
+ /* List of plugin directories passed to QML runtime */
+ // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part3/Button.qml b/examples/tutorials/gettingStarted/gsQml/parts/part3/Button.qml
new file mode 100644
index 0000000000..39ac5910e6
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part3/Button.qml
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+
+ //identifier of the item
+ id: button
+
+ property string label: "button label"
+
+ //these properties act as constants, useable outside this QML file
+ property int buttonHeight: 75
+ property int buttonWidth: 150
+
+ //the color highlight when the mouse hovers on the rectangle
+ property color onHoverColor: "gold"
+ property color borderColor: "white"
+
+ //buttonColor is set to the button's main color
+ property color buttonColor: "lightblue"
+
+ //set appearance properties
+ radius:10
+ smooth: true
+ border{color: "white"; width: 3}
+ width: buttonWidth; height: buttonHeight
+
+ Text{
+ id: buttonLabel
+ anchors.centerIn: parent
+ text: label
+ }
+
+ //buttonClick() is callable and a signal handler, onButtonClick is automatically created
+ signal buttonClick()
+ onButtonClick: {
+ console.log(buttonLabel.text + " clicked" )
+ }
+
+ //define the clickable area to be the whole rectangle
+ MouseArea{
+ id: buttonMouseArea
+ anchors.fill: parent //stretch the area to the parent's dimension
+ onClicked: buttonClick()
+
+ //if true, then onEntered and onExited called if mouse hovers in the mouse area
+ //if false, a button must be clicked to detect the mouse hover
+ hoverEnabled: true
+
+ //display a border if the mouse hovers on the button mouse area
+ onEntered: parent.border.color = onHoverColor
+ //remove the border if the mouse exits the button mouse area
+ onExited: parent.border.color = borderColor
+
+ }
+
+ //change the color of the button when pressed
+ color: buttonMouseArea.pressed ? Qt.darker(buttonColor, 1.5) : buttonColor
+
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part3/EditMenu.qml b/examples/tutorials/gettingStarted/gsQml/parts/part3/EditMenu.qml
new file mode 100644
index 0000000000..fdd06d5f7e
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part3/EditMenu.qml
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: editMenu
+ height: 480; width:1000
+ color: "powderblue"
+ property string menuName:"Edit"
+
+ Rectangle{
+ id:actionContainer
+ color:"transparent"
+ anchors.centerIn: parent
+
+ width: parent.width; height: parent.height / 5
+ Row{
+ anchors.centerIn: parent
+ spacing: parent.width/6
+ Button{
+ id: loadButton
+ buttonColor: "lightgrey"
+ label: "Cut"
+ }
+
+ Button{
+ buttonColor: "grey"
+ id: saveButton
+ label: "Paste"
+ }
+ Button{
+ id: exitButton
+ label: "Select All"
+ buttonColor: "darkgrey"
+ }
+ }
+ }
+
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part3/FileMenu.qml b/examples/tutorials/gettingStarted/gsQml/parts/part3/FileMenu.qml
new file mode 100644
index 0000000000..bd6669b994
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part3/FileMenu.qml
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: fileMenu
+
+ //the menuName is accessible from outside this QML file
+ property string menuName: "File"
+
+ //generous amount of screen space that will allow the buttons to fit
+ height: 480; width:1000
+
+ color: "#6C646A"
+
+ //a sub-rectangle allows the flexibility of setting the row area
+ Rectangle{
+ id:actionContainer
+
+ //make this rectangle invisible
+ color:"transparent"
+ anchors.centerIn: parent
+
+ //the height is a good proportion that creates more space at the top of the row of buttons
+ width: parent.width; height: parent.height / 5
+
+ Row{
+ anchors.centerIn: parent
+ spacing: parent.width/6
+ Button{
+ id: loadButton
+ buttonColor: "lightgrey"
+ label: "Load"
+ }
+
+ Button{
+ buttonColor: "grey"
+ id: saveButton
+ label: "Save"
+ }
+ Button{
+ id: exitButton
+ label: "Exit"
+ buttonColor: "darkgrey"
+
+ //exit the application if the exitButton is clicked
+ onButtonClick:{
+ Qt.quit()
+ }
+ }
+ }
+ }
+
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part3/MenuBar.qml b/examples/tutorials/gettingStarted/gsQml/parts/part3/MenuBar.qml
new file mode 100644
index 0000000000..8065804570
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part3/MenuBar.qml
@@ -0,0 +1,140 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: menuBar
+ width: 1000
+ height:300
+
+ property color fileColor: "thistle"
+ property color editColor: "powderblue"
+
+ //container for the header and the buttons
+ Rectangle{
+
+ id: labelList
+ height:parent.height/10
+ width: parent.width
+ color: "steelblue"
+
+ //default z is 0, items with higher z values are shown on top of items with lower z values
+ z: 1
+
+ //row displays its children in a vertical row
+ Row{
+ anchors.centerIn: parent
+ spacing:40
+ Button{
+ height: 20
+ width: 50
+ label: "File"
+ id: fileButton
+ buttonColor : menuListView.currentIndex == 0? fileColor : Qt.darker(fileColor, 1.5)
+ scale: menuListView.currentIndex == 0? 1.25: 1
+ radius: 1
+
+ //on a button click, change the list's currently selected item to FileMenu
+ onButtonClick: {
+ menuListView.currentIndex = 0
+ }
+ }
+ Button{
+ height: 20
+ width: 50
+ id: editButton
+ buttonColor : menuListView.currentIndex == 1? editColor : Qt.darker(editColor, 1.5)
+ scale: menuListView.currentIndex == 1? 1.25: 1
+ label: "Edit"
+ radius: 1
+
+ //on a button click, change the list's currently selected item to EditMenu
+ onButtonClick: {
+ menuListView.currentIndex = 1
+ }
+
+
+ }
+
+
+ }
+ }
+
+ //a list of visual items already have delegates handling their display
+ VisualItemModel{
+ id: menuListModel
+
+ FileMenu{
+ width: menuListView.width
+ height: menuBar.height
+ color: fileColor
+ }
+ EditMenu{
+ color: editColor
+ width: menuListView.width
+ height: menuBar.height
+
+ }
+ }
+
+ //list view will display a model according to a delegate
+ ListView{
+ id: menuListView
+ anchors.fill:parent
+ anchors.bottom: parent.bottom
+ width:parent.width
+ height: parent.height
+
+ //the model contains the data
+ model: menuListModel
+
+ //control the movement of the menu switching
+ snapMode: ListView.SnapOneItem
+ orientation: ListView.Horizontal
+ boundsBehavior: Flickable.StopAtBounds
+ flickDeceleration: 5000
+ highlightFollowsCurrentItem: true
+ highlightMoveDuration:240
+ highlightRangeMode: ListView.StrictlyEnforceRange
+ }
+
+
+}
diff --git a/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h b/examples/tutorials/gettingStarted/gsQml/parts/part3/TextArea.qml
index 7e84bd4d6b..b0bf6647e1 100644
--- a/doc/src/snippets/declarative/qtbinding/custompalette/custompalette.h
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part3/TextArea.qml
@@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the documentation of the Qt Toolkit.
+** This file is part of the QtDeclarative module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
@@ -38,42 +38,43 @@
**
****************************************************************************/
-#include <QObject>
-#include <QColor>
+import QtQuick 1.0
-//![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)
+Rectangle {
+ id:textArea
-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();
+ width :400
+ height:400
+ color: "white"
+
+ Flickable{
+ id: flickArea
+
+ width: parent.width
+ height: parent.height
+ anchors.fill:parent
+
+ function ensureVisible(r){
+ if (contentX >= r.x)
+ contentX = r.x;
+ else if (contentX+width <= r.x+r.width)
+ contentX = r.x+r.width-width;
+ if (contentY >= r.y)
+ contentY = r.y;
+ else if (contentY+height <= r.y+r.height)
+ contentY = r.y+r.height-height;
}
- }
-signals:
- void textChanged();
- void backgroundChanged();
-
-private:
- QColor m_background;
- QColor m_text;
-};
+ TextEdit{
+ id: textEditor
+ anchors.fill:parent
+ width:parent.width; height:parent.height
+ color:"midnightblue"
+ focus: true
+
+ wrapMode: TextEdit.Wrap
-//![0]
+ onCursorRectangleChanged: flickArea.ensureVisible(cursorRectangle)
+ }
+ }
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part3/TextEditor.qml b/examples/tutorials/gettingStarted/gsQml/parts/part3/TextEditor.qml
new file mode 100644
index 0000000000..7f0e650700
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part3/TextEditor.qml
@@ -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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+
+ id: screen
+ width: 1000; height: 1000
+ border.color:"black"
+ //the screen is partitioned into the MenuBar and TextArea. 1/3 of the screen is assigned to the MenuBar
+ property int partition: height/3
+
+ MenuBar{
+ id:menuBar
+ height: partition
+ width:parent.width
+ z: 1
+ }
+
+
+ TextArea{
+ id:textArea
+ anchors.bottom:parent.bottom
+ y: partition
+ color: "azure"
+ height: partition*2
+ width:parent.width
+ }
+
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part3/images/arrow.png b/examples/tutorials/gettingStarted/gsQml/parts/part3/images/arrow.png
new file mode 100644
index 0000000000..14978c2e56
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part3/images/arrow.png
Binary files differ
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part3/pics/qml-texteditor3_texteditor.png b/examples/tutorials/gettingStarted/gsQml/parts/part3/pics/qml-texteditor3_texteditor.png
new file mode 100644
index 0000000000..d0623b5a79
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part3/pics/qml-texteditor3_texteditor.png
Binary files differ
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part3/qml-texteditor3.qmlproject b/examples/tutorials/gettingStarted/gsQml/parts/part3/qml-texteditor3.qmlproject
new file mode 100644
index 0000000000..d4909f8685
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part3/qml-texteditor3.qmlproject
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+ /* Include .qml, .js, and image files from current directory and subdirectories */
+ QmlFiles {
+ directory: "."
+ }
+ JavaScriptFiles {
+ directory: "."
+ }
+ ImageFiles {
+ directory: "."
+ }
+ /* List of plugin directories passed to QML runtime */
+ // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part4/Button.qml b/examples/tutorials/gettingStarted/gsQml/parts/part4/Button.qml
new file mode 100644
index 0000000000..36833f545f
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part4/Button.qml
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+
+ //identifier of the item
+ id: button
+
+ //these properties act as constants, useable outside this QML file
+ property int buttonHeight: 75
+ property int buttonWidth: 150
+
+ //attaches to the Text element's text content
+ property string label
+ property color textColor: buttonLabel.color
+
+ //the color highlight when the mouse hovers on the rectangle
+ property color onHoverColor: "gold"
+ property color borderColor: "white"
+
+ //buttonColor is set to the button's main color
+ property color buttonColor: "lightblue"
+
+ //set appearance properties
+ radius:10
+ smooth: true
+ border.color: "white"
+ border.width: 3
+ width: buttonWidth; height: buttonHeight
+
+ Text{
+ id: buttonLabel
+ anchors.centerIn: parent
+ text: label //"button label" //bind the text to the parent's text
+ }
+
+ //buttonClick() is callable and a signal handler, onButtonClick is automatically created
+ signal buttonClick()
+ onButtonClick: {
+ console.log(buttonLabel.text + " clicked" )
+ }
+
+ //define the clickable area to be the whole rectangle
+ MouseArea{
+ id: buttonMouseArea
+ anchors.fill: parent //stretch the area to the parent's dimension
+ onClicked: buttonClick()
+
+ //if true, then onEntered and onExited called if mouse hovers in the mouse area
+ //if false, a button must be clicked to detect the mouse hover
+ hoverEnabled: true
+
+ //display a border if the mouse hovers on the button mouse area
+ onEntered: parent.border.color = onHoverColor
+ //remove the border if the mouse exits the button mouse area
+ onExited: parent.border.color = borderColor
+
+ }
+
+ //change the color of the button when pressed
+ color: buttonMouseArea.pressed ? Qt.darker(buttonColor, 1.5) : buttonColor
+ //animate the color whenever the color property changes
+ Behavior on color { ColorAnimation{ duration: 55} }
+
+ //scale the button when pressed
+ scale: buttonMouseArea.pressed ? 1.1 : 1.00
+ //Animate the scale property change
+ Behavior on scale { NumberAnimation{ duration: 55} }
+
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part4/EditMenu.qml b/examples/tutorials/gettingStarted/gsQml/parts/part4/EditMenu.qml
new file mode 100644
index 0000000000..f0a0e36e85
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part4/EditMenu.qml
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: editMenu
+ height: 480; width:1000
+ color: "powderblue"
+ property string menuName:"Edit"
+ gradient: Gradient{
+ GradientStop { position: 0.0; color: "#6A6F70" }
+ GradientStop { position: 1.0; color: Qt.darker("#6A6D67") }
+ }
+
+ Rectangle{
+ id:actionContainer
+ color:"transparent"
+ anchors.centerIn: parent
+
+ width: parent.width; height: parent.height / 5
+ Row{
+ anchors.centerIn: parent
+ spacing: parent.width/6
+ Button{
+ id: loadButton
+ buttonColor: "lightgrey"
+ label: "Cut"
+ }
+
+ Button{
+ buttonColor: "grey"
+ id: saveButton
+ label: "Paste"
+ }
+ Button{
+ id: exitButton
+ label: "Select All"
+ buttonColor: "darkgrey"
+ }
+ }
+ }
+
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part4/FileMenu.qml b/examples/tutorials/gettingStarted/gsQml/parts/part4/FileMenu.qml
new file mode 100644
index 0000000000..d257d6ac95
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part4/FileMenu.qml
@@ -0,0 +1,96 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: fileMenu
+
+ //the menuName is accessible from outside this QML file
+ property string menuName: "File"
+
+ //generous amount of screen space that will allow the buttons to fit
+ height: 480; width:1000
+
+ color: "#6C646A"
+ gradient: Gradient{
+ GradientStop { position: 0.0; color: "#6C646A" }
+ GradientStop { position: 1.0; color: Qt.darker("#6A6D6A") }
+ }
+
+ //a sub-rectangle allows the flexibility of setting the row area
+ Rectangle{
+ id:actionContainer
+
+ //make this rectangle invisible
+ color:"transparent"
+ anchors.centerIn: parent
+
+ //the height is a good proportion that creates more space at the top of the row of buttons
+ width: parent.width; height: parent.height / 5
+
+ Row{
+ anchors.centerIn: parent
+ spacing: parent.width/6
+ Button{
+ id: loadButton
+ buttonColor: "lightgrey"
+ label: "Load"
+ }
+
+ Button{
+ buttonColor: "grey"
+ id: saveButton
+ label: "Save"
+ }
+ Button{
+ id: exitButton
+ label: "Exit"
+ buttonColor: "darkgrey"
+
+ //exit the application if the exitButton is clicked
+ onButtonClick:{
+ Qt.quit()
+ }
+ }
+ }
+ }
+
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part4/MenuBar.qml b/examples/tutorials/gettingStarted/gsQml/parts/part4/MenuBar.qml
new file mode 100644
index 0000000000..5b0dbf8f35
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part4/MenuBar.qml
@@ -0,0 +1,146 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: menuBar
+ width: 1000
+ height:300
+
+ property color fileColor: "plum"
+ property color editColor: "powderblue"
+
+ //container for the header and the buttons
+ Rectangle{
+
+ id: labelList
+ height:parent.height/10
+ width: parent.width
+ color: "beige"
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "#8C8F8C" }
+ GradientStop { position: 0.17; color: "#6A6D6A" }
+ GradientStop { position: 0.98;color: "#3F3F3F" }
+ GradientStop { position: 1.0; color: "#0e1B20" }
+ }
+
+ //default z is 0, items with higher z values are shown on top of items with lower z values
+ z: 1
+
+ //row displays its children in a vertical row
+ Row{
+ anchors.centerIn: parent
+ spacing:40
+ Button{
+ height: 20
+ width: 50
+ label: "File"
+ id: fileButton
+ buttonColor : menuListView.currentIndex == 0? fileColor : Qt.darker(fileColor, 1.5)
+ scale: menuListView.currentIndex == 0? 1.25: 1
+ radius: 1
+
+ //on a button click, change the list's currently selected item to FileMenu
+ onButtonClick: {
+ menuListView.currentIndex = 0
+ }
+ }
+ Button{
+ height: 20
+ width: 50
+ id: editButton
+ buttonColor : menuListView.currentIndex == 1? editColor : Qt.darker(editColor, 1.5)
+ scale: menuListView.currentIndex == 1? 1.25: 1
+ label: "Edit"
+ radius: 1
+
+ //on a button click, change the list's currently selected item to EditMenu
+ onButtonClick: {
+ menuListView.currentIndex = 1
+ }
+
+
+ }
+
+
+ }
+ }
+
+ //a list of visual items already have delegates handling their display
+ VisualItemModel{
+ id: menuListModel
+
+ FileMenu{
+ width: menuListView.width
+ height: menuBar.height
+ color: fileColor
+ }
+ EditMenu{
+ color: editColor
+ width: menuListView.width
+ height: menuBar.height
+
+ }
+ }
+
+ //list view will display a model according to a delegate
+ ListView{
+ id: menuListView
+ anchors.fill:parent
+ anchors.bottom: parent.bottom
+ width:parent.width
+ height: parent.height
+
+ //the model contains the data
+ model: menuListModel
+
+ //control the movement of the menu switching
+ snapMode: ListView.SnapOneItem
+ orientation: ListView.Horizontal
+ boundsBehavior: Flickable.StopAtBounds
+ flickDeceleration: 5000
+ highlightFollowsCurrentItem: true
+ highlightMoveDuration:240
+ highlightRangeMode: ListView.StrictlyEnforceRange
+ }
+
+
+}
diff --git a/doc/src/snippets/declarative/qtbinding/custompalette/main.qml b/examples/tutorials/gettingStarted/gsQml/parts/part4/SimpleButton.qml
index a20d9e0e68..d360faab91 100644
--- a/doc/src/snippets/declarative/qtbinding/custompalette/main.qml
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part4/SimpleButton.qml
@@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the documentation of the Qt Toolkit.
+** This file is part of the QtDeclarative module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
@@ -38,25 +38,22 @@
**
****************************************************************************/
-//![0]
import QtQuick 1.0
Rectangle {
- width: 240
- height: 320
- color: palette.background
+ id: simplebutton
+ color: "grey"
+ width: 150; height: 75
- Text {
+ Text{
+ id: buttonLabel
anchors.centerIn: parent
- color: palette.text
- text: "Click me to change color!"
+ text: "button label"
}
-
- MouseArea {
+
+ MouseArea{
+ id: buttonMouseArea
anchors.fill: parent
- onClicked: {
- palette.text = "blue";
- }
+ onClicked: console.log(buttonLabel.text + " clicked" )
}
}
-//![0]
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part4/TextArea.qml b/examples/tutorials/gettingStarted/gsQml/parts/part4/TextArea.qml
new file mode 100644
index 0000000000..4eedf34f91
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part4/TextArea.qml
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id:textArea
+
+ width :400
+ height:400
+ property color fontColor: "white"
+
+ Flickable{
+ id: flickArea
+
+ width: parent.width
+ height: parent.height
+ anchors.fill:parent
+
+ function ensureVisible(r){
+ if (contentX >= r.x)
+ contentX = r.x;
+ else if (contentX+width <= r.x+r.width)
+ contentX = r.x+r.width-width;
+ if (contentY >= r.y)
+ contentY = r.y;
+ else if (contentY+height <= r.y+r.height)
+ contentY = r.y+r.height-height;
+ }
+
+ TextEdit{
+ id: textEditor
+ anchors.fill:parent
+ width:parent.width; height:parent.height
+ color:fontColor
+ focus: true
+
+ wrapMode: TextEdit.Wrap
+
+ onCursorRectangleChanged: flickArea.ensureVisible(cursorRectangle)
+ }
+ }
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part4/TextEditor.qml b/examples/tutorials/gettingStarted/gsQml/parts/part4/TextEditor.qml
new file mode 100644
index 0000000000..d218bba726
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part4/TextEditor.qml
@@ -0,0 +1,146 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: screen
+ width: 1000; height: 1000
+ property int partition: height/3
+ state: "DRAWER_CLOSED"
+
+
+ //Item 1: MenuBar on the top portion of the screen
+ MenuBar{
+ id:menuBar
+ height: partition
+ //anchors.top:parent.top
+ width:parent.width
+ z:1
+ }
+
+
+ //Item 2: The editable text area
+ TextArea{
+ id:textArea
+ y:drawer.height
+ border.color: Qt.darker(color, 1.4)
+ border.width: 2
+ color: "#3F3F3F"
+ fontColor: "#DCDCCC"
+ height: partition*2
+ width:parent.width
+ }
+
+ //Item 3: The drawer handle
+ Rectangle{
+ id:drawer
+ height:15
+ width: parent.width
+ border.color : "#6A6D6A"
+ border.width: 1
+
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "#8C8F8C" }
+ GradientStop { position: 0.17; color: "#6A6D6A" }
+ GradientStop { position: 0.77; color: "#3F3F3F" }
+ GradientStop { position: 1.0; color: "#6A6D6A" }
+ }
+
+ Image{
+ id: arrowIcon
+ source: "images/arrow.png"
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ Behavior{NumberAnimation{property: "rotation";easing.type: Easing.OutExpo }}
+ }
+
+ MouseArea{
+ id: drawerMouseArea
+ anchors.fill:parent
+ onClicked:{
+ if (screen.state == "DRAWER_CLOSED"){
+ screen.state = "DRAWER_OPEN"
+ console.log("drawer OPEN")
+ }
+ else if (screen.state == "DRAWER_OPEN"){
+ screen.state = "DRAWER_CLOSED"
+ console.log("drawer closed")
+ }
+ }
+
+ //if true, then onEntered and onExited called if mouse hovers in the mouse area
+ //if false, a button must be clicked to detect the mouse hover
+ hoverEnabled: true
+
+ //display a border if the mouse hovers on the button mouse area
+ onEntered: parent.border.color = Qt.lighter("#6A6D6A")
+ //remove the border if the mouse exits the button mouse area
+ onExited: parent.border.color = "#6A6D6A"
+ }
+
+ }
+ states:[
+ State{
+ name: "DRAWER_OPEN"
+ PropertyChanges { target: menuBar; y:0}
+ PropertyChanges { target: textArea; y: partition + drawer.height}
+ PropertyChanges { target: drawer; y: partition}
+ PropertyChanges { target: arrowIcon; rotation: 180}
+ },
+ State{
+ name: "DRAWER_CLOSED"
+ PropertyChanges { target: menuBar; y:-partition}
+ PropertyChanges { target: textArea; y: drawer.height; height: screen.height - drawer.height}
+ PropertyChanges { target: drawer; y: 0}
+ PropertyChanges { target: arrowIcon; rotation: 0}
+ }
+
+ ]
+ transitions: [
+ Transition{
+ to: "*"
+ NumberAnimation { target: textArea; properties: "y, height"; duration: 100; easing.type:Easing.OutExpo }
+ NumberAnimation { target: menuBar; properties: "y"; duration: 100;easing.type: Easing.OutExpo }
+ NumberAnimation { target: drawer; properties: "y"; duration: 100;easing.type: Easing.OutExpo }
+ }
+
+ ]
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part4/images/arrow.png b/examples/tutorials/gettingStarted/gsQml/parts/part4/images/arrow.png
new file mode 100644
index 0000000000..14978c2e56
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part4/images/arrow.png
Binary files differ
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part4/pics/qml-texteditor4_texteditor.png b/examples/tutorials/gettingStarted/gsQml/parts/part4/pics/qml-texteditor4_texteditor.png
new file mode 100644
index 0000000000..a195fb87c3
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part4/pics/qml-texteditor4_texteditor.png
Binary files differ
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part4/qml-texteditor4.qmlproject b/examples/tutorials/gettingStarted/gsQml/parts/part4/qml-texteditor4.qmlproject
new file mode 100644
index 0000000000..d4909f8685
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part4/qml-texteditor4.qmlproject
@@ -0,0 +1,16 @@
+import QmlProject 1.0
+
+Project {
+ /* Include .qml, .js, and image files from current directory and subdirectories */
+ QmlFiles {
+ directory: "."
+ }
+ JavaScriptFiles {
+ directory: "."
+ }
+ ImageFiles {
+ directory: "."
+ }
+ /* List of plugin directories passed to QML runtime */
+ // importPaths: [ " ../exampleplugin " ]
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/TextEditor.qml b/examples/tutorials/gettingStarted/gsQml/parts/part5/TextEditor.qml
new file mode 100644
index 0000000000..4adcf05c3b
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/TextEditor.qml
@@ -0,0 +1,127 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+import "core"
+
+Rectangle {
+ id: screen
+ width: 1000; height: 1000
+ property int partition: height/3
+ state: "DRAWER_CLOSED"
+
+ //Item 1: MenuBar on the top portion of the screen
+ MenuBar{
+ id:menuBar
+ height: screen.partition; width: screen.width
+ z:1
+ }
+ //Item 2: The editable text area
+ TextArea{
+ id:textArea
+ y:drawer.height
+ color: "#3F3F3F"
+ fontColor: "#DCDCCC"
+ height: partition*2; width:parent.width
+ }
+ //Item 3: The drawer handle
+ Rectangle{
+ id:drawer
+ height:15; width: parent.width
+ border.color : "#6A6D6A"
+ border.width: 1
+ z:1
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "#8C8F8C" }
+ GradientStop { position: 0.17; color: "#6A6D6A" }
+ GradientStop { position: 0.77; color: "#3F3F3F" }
+ GradientStop { position: 1.0; color: "#6A6D6A" }
+ }
+ Image{
+ id: arrowIcon
+ source: "images/arrow.png"
+ anchors.horizontalCenter: parent.horizontalCenter
+
+ Behavior{NumberAnimation{property: "rotation";easing.type: Easing.OutExpo }}
+ }
+
+ MouseArea{
+ id: drawerMouseArea
+ anchors.fill:parent
+ hoverEnabled: true
+ onEntered: parent.border.color = Qt.lighter("#6A6D6A")
+ onExited: parent.border.color = "#6A6D6A"
+ onClicked:{
+ if (screen.state == "DRAWER_CLOSED"){
+ screen.state = "DRAWER_OPEN"
+ }
+ else if (screen.state == "DRAWER_OPEN"){
+ screen.state = "DRAWER_CLOSED"
+ }
+ }
+ }
+ }
+
+ states:[
+ State{
+ name: "DRAWER_OPEN"
+ PropertyChanges { target: menuBar; y: 0}
+ PropertyChanges { target: textArea; y: partition + drawer.height}
+ PropertyChanges { target: drawer; y: partition}
+ PropertyChanges { target: arrowIcon; rotation: 180}
+ },
+ State{
+ name: "DRAWER_CLOSED"
+ PropertyChanges { target: menuBar; y:-height; }
+ PropertyChanges { target: textArea; y: drawer.height; height: screen.height - drawer.height}
+ PropertyChanges { target: drawer; y: 0}
+ PropertyChanges { target: arrowIcon; rotation: 0}
+ }
+ ]
+
+ transitions: [
+ Transition{
+ to: "*"
+ NumberAnimation { target: textArea; properties: "y, height"; duration: 100; easing.type:Easing.OutExpo }
+ NumberAnimation { target: menuBar; properties: "y"; duration: 100;easing.type: Easing.OutExpo }
+ NumberAnimation { target: drawer; properties: "y"; duration: 100;easing.type: Easing.OutExpo }
+ }
+ ]
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/core/Button.qml b/examples/tutorials/gettingStarted/gsQml/parts/part5/core/Button.qml
new file mode 100644
index 0000000000..c0c1f77572
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/core/Button.qml
@@ -0,0 +1,109 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+
+ //identifier of the item
+ id: button
+
+ //these properties act as constants, useable outside this QML file
+ property int buttonHeight: 75
+ property int buttonWidth: 150
+
+ //attaches to the Text element's text content
+ property string label
+ property color textColor: buttonLabel.color
+
+ //the color highlight when the mouse hovers on the rectangle
+ property color onHoverColor: "lightsteelblue"
+ property color borderColor: "transparent"
+
+ //buttonColor is set to the button's main color
+ property color buttonColor: "lightblue"
+
+ property real labelSize: 14
+ //set appearance properties
+ radius:6
+ smooth: true
+ border.width: 2
+ border.color: borderColor
+ width: buttonWidth; height: buttonHeight
+
+ Text{
+ id: buttonLabel
+ anchors.centerIn: parent
+ text: label //bind the text to the parent's text
+ color: "#DCDCCC"
+ font.pointSize: labelSize
+ }
+
+ //buttonClick() is callable and a signal handler, onButtonClick is automatically created
+ signal buttonClick()
+
+ //define the clickable area to be the whole rectangle
+ MouseArea{
+ id: buttonMouseArea
+ anchors.fill: parent //stretch the area to the parent's dimension
+ onClicked: buttonClick()
+
+ //if true, then onEntered and onExited called if mouse hovers in the mouse area
+ //if false, a button must be clicked to detect the mouse hover
+ hoverEnabled: true
+
+ //display a border if the mouse hovers on the button mouse area
+ onEntered: parent.border.color = onHoverColor
+ //remove the border if the mouse exits the button mouse area
+ onExited: parent.border.color = borderColor
+
+ }
+
+ //change the color of the button when pressed
+ color: buttonMouseArea.pressed ? Qt.darker(buttonColor, 1.5) : buttonColor
+ //animate the color whenever the color property changes
+ Behavior on color { ColorAnimation{ duration: 55} }
+
+ //scale the button when pressed
+ scale: buttonMouseArea.pressed ? 1.1 : 1.00
+ //Animate the scale property change
+ Behavior on scale { NumberAnimation{ duration: 55} }
+
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/core/EditMenu.qml b/examples/tutorials/gettingStarted/gsQml/parts/part5/core/EditMenu.qml
new file mode 100644
index 0000000000..4338d25aeb
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/core/EditMenu.qml
@@ -0,0 +1,110 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: editMenu
+ height: 480; width:1000
+ color: "powderblue"
+ property color buttonBorderColor: "#7A8182"
+ property color buttonFillColor: "#61BDCACD"
+ property string menuName:"Edit"
+
+ gradient: Gradient{
+ GradientStop { position: 0.0; color: "#6A7570" }
+ GradientStop { position: 1.0; color: Qt.darker("#6A7570") }
+ }
+
+ Rectangle{
+ id:actionContainer
+ color:"transparent"
+ anchors.centerIn: parent
+ width: parent.width; height: parent.height / 5
+ Row{
+ anchors.centerIn: parent
+ spacing: parent.width/9
+ Button{
+ id: loadButton
+ buttonColor: buttonFillColor
+ label: "Copy"
+ labelSize:16
+ borderColor:buttonBorderColor
+ height: actionContainer.height
+ width: actionContainer.width/6
+ onButtonClick:textArea.copy()
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: Qt.lighter(buttonFillColor,1.25) }
+ GradientStop { position: 0.67; color: Qt.darker(buttonFillColor,1.3) }
+ }
+ }
+
+ Button{
+ id: saveButton
+ height: actionContainer.height
+ width: actionContainer.width/6
+ buttonColor: buttonFillColor
+ label: "Paste"
+ borderColor:buttonBorderColor
+ labelSize:16
+ onButtonClick:textArea.paste()
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: Qt.lighter(buttonFillColor,1.25) }
+ GradientStop { position: 0.67; color: Qt.darker(buttonFillColor,1.3) }
+ }
+ }
+ Button{
+ id: exitButton
+ label: "Select All"
+ height: actionContainer.height
+ width: actionContainer.width/6
+ labelSize:16
+ buttonColor: buttonFillColor
+ borderColor:buttonBorderColor
+ onButtonClick:textArea.selectAll()
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: Qt.lighter(buttonFillColor,1.25) }
+ GradientStop { position: 0.67; color: Qt.darker(buttonFillColor,1.3) }
+ }
+ }
+ }
+ }
+
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/core/FileDialog.qml b/examples/tutorials/gettingStarted/gsQml/parts/part5/core/FileDialog.qml
new file mode 100644
index 0000000000..af9d82c434
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/core/FileDialog.qml
@@ -0,0 +1,170 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id:dialog
+ height: 200 * partition; width: 200
+ color: "transparent"
+
+ signal selectChanged()
+ signal notifyRefresh()
+ onNotifyRefresh:dirView.model = directory.files
+
+ property string selectedFile
+ property int selectedIndex: 0
+
+ Rectangle{
+ id: dirBox
+ radius: 10
+ anchors.centerIn:parent
+ height: parent.height -15; width: parent.width -30
+
+ Rectangle{
+ id:header
+ height:parent.height*0.1
+ width: parent.width
+ radius:3
+ z:1
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "#8C8F8C" }
+ GradientStop { position: 0.17; color: "#6A6D6A" }
+ GradientStop { position: 0.98;color: "#3F3F3F" }
+ GradientStop { position: 1.0; color: "#0e1B20" }
+ }
+ Text{
+ height: header.height
+ anchors.centerIn: header
+ text: "files:"
+ color: "lightblue"
+ font.weight: Font.Light
+ font.italic: true
+ }
+ }
+ GridView{
+ id:dirView
+ width:parent.width
+ height:parent.height*.9
+ anchors.top: header.bottom
+ cellWidth: 100
+ cellHeight: 75
+// highlight: Rectangle { width:cellWidth; height: cellHeight; color: "lightsteelblue" ;radius: 13}
+ model: directory.files
+ delegate: dirDelegate
+ clip: true
+ highlightMoveDuration:40
+ }
+
+ Component{
+ id:dirDelegate
+
+ Rectangle{
+ id:file
+ color: "transparent"
+ width: GridView.view.cellWidth; height: GridView.view.cellHeight
+
+ Text{
+ id:fileName
+ width: parent.width
+ anchors.centerIn:parent
+ text: name
+ color: "#BDCACD"
+ font.weight: GridView.view.currentIndex == index ? Font.DemiBold : Font.Normal
+ font.pointSize: GridView.view.currentIndex == index ? 12 : 10
+ elide: Text.ElideMiddle
+ horizontalAlignment: Text.AlignHCenter
+ }
+ Rectangle{
+ id:selection
+ width:parent.width; height:parent.height
+ anchors.centerIn: parent
+ radius: 10
+ smooth: true
+ scale: GridView.view.currentIndex == index ? 1 : 0.5
+ opacity: GridView.view.currentIndex == index ? 1 : 0
+ Text{
+ id:overlay
+ width: parent.width
+ anchors.centerIn:parent
+ text: name
+ color: "#696167"
+ font.weight: Font.DemiBold
+ font.pointSize: 12
+ smooth:true
+ elide: Text.ElideMiddle
+ horizontalAlignment: Text.AlignHCenter
+ }
+ Behavior on opacity{ NumberAnimation{ duration: 45} }
+ Behavior on scale { NumberAnimation{ duration: 45} }
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: Qt.lighter("lightsteelblue",1.25) }
+ GradientStop { position: 0.67; color: Qt.darker("lightsteelblue",1.3) }
+ }
+ border.color:"lightsteelblue"
+ border.width:1
+ }
+ MouseArea{
+ id:fileMouseArea
+ anchors.fill:parent
+ hoverEnabled: true
+
+ onClicked:{
+ GridView.view.currentIndex = index
+ selectedFile = directory.files[index].name
+ selectChanged()
+ }
+ onEntered:{
+ fileName.color = "lightsteelblue"
+ fileName.font.weight = Font.DemiBold
+ }
+ onExited: {
+ fileName.font.weight = Font.Normal
+ fileName.color = "#BDCACD"
+ }
+ }
+ }
+ }
+ gradient: Gradient{
+ GradientStop { position: 0.0; color: "#A5333333" }
+ GradientStop { position: 1.0; color: "#03333333" }
+ }
+ }
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/core/FileMenu.qml b/examples/tutorials/gettingStarted/gsQml/parts/part5/core/FileMenu.qml
new file mode 100644
index 0000000000..1d671e48ff
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/core/FileMenu.qml
@@ -0,0 +1,232 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: fileMenu
+ height: 480; width:1000
+ property color buttonBorderColor: "#7F8487"
+ property color buttonFillColor: "#8FBDCACD"
+ property string fileContent:directory.fileContent
+
+ //the menuName is accessible from outside this QML file
+ property string menuName: "File"
+
+ //used to divide the screen into parts.
+ property real partition: 1/3
+
+ color: "#6C646A"
+ gradient: Gradient{
+ GradientStop { position: 0.0; color: "#6C646A" }
+ GradientStop { position: 1.0; color: Qt.darker("#6A6D6A") }
+ }
+
+ Directory{
+ id:directory
+ filename: textInput.text
+ onDirectoryChanged:fileDialog.notifyRefresh()
+ }
+
+ Rectangle{
+ id:actionContainer
+
+ //make this rectangle invisible
+ color:"transparent"
+ anchors.left: parent.left
+
+ //the height is a good proportion that creates more space at the top of the column of buttons
+ width: fileMenu.width * partition; height: fileMenu.height
+
+ Column{
+ anchors.centerIn: parent
+ spacing: parent.height/32
+ Button{
+ id: saveButton
+ label: "Save"
+ borderColor: buttonBorderColor
+ buttonColor: buttonFillColor
+ width: actionContainer.width/ 1.3
+ height:actionContainer.height / 8
+ labelSize:24
+ onButtonClick:{
+ directory.fileContent = textArea.textContent
+ directory.filename = textInput.text
+ directory.saveFile()
+ }
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: Qt.lighter(buttonFillColor,1.25) }
+ GradientStop { position: 0.67; color: Qt.darker(buttonFillColor,1.3) }
+ }
+
+ }
+ Button{
+ id: loadButton
+ width: actionContainer.width/ 1.3
+ height:actionContainer.height/ 8
+ buttonColor: buttonFillColor
+ borderColor: buttonBorderColor
+ label: "Load"
+ labelSize:24
+ onButtonClick:{
+ directory.filename = textInput.text
+ directory.loadFile()
+ textArea.textContent = directory.fileContent
+ }
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: Qt.lighter(buttonFillColor,1.25) }
+ GradientStop { position: 0.67; color: Qt.darker(buttonFillColor,1.3) }
+ }
+ }
+ Button{
+ id: newButton
+ width: actionContainer.width/ 1.3
+ height:actionContainer.height/ 8
+ buttonColor: buttonFillColor
+ borderColor: buttonBorderColor
+ label: "New"
+ labelSize:24
+ onButtonClick:{
+ textArea.textContent = ""
+ textInput.text = ""
+ }
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: Qt.lighter(buttonFillColor,1.25) }
+ GradientStop { position: 0.67; color: Qt.darker(buttonFillColor,1.3) }
+ }
+
+ }
+ Rectangle{
+ id: space
+ width: actionContainer.width/ 1.3
+ height:actionContainer.height / 16
+ color:"transparent"
+ }
+ Button{
+ id: exitButton
+ width: actionContainer.width/ 1.3
+ height:actionContainer.height/ 8
+ label: "Exit"
+ labelSize:24
+ buttonColor: buttonFillColor
+ borderColor: buttonBorderColor
+ onButtonClick:Qt.quit()
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: Qt.lighter(buttonFillColor,1.25) }
+ GradientStop { position: 0.67; color: Qt.darker(buttonFillColor,1.3) }
+ }
+ }
+ }
+ }
+
+ Rectangle{
+ id:dialogContainer
+
+ width: 2*fileMenu.width * partition; height: fileMenu.height
+ anchors.right:parent.right
+ color:"transparent"
+
+ Column {
+ anchors.centerIn: parent
+ spacing: parent.height /640
+ FileDialog{
+ id:fileDialog
+ height: 2*dialogContainer.height * partition; width: dialogContainer.width
+ onSelectChanged: textInput.text = selectedFile
+ }
+
+ Rectangle{
+ id:lowerPartition
+ height: dialogContainer.height * partition; width: dialogContainer.width
+ color: "transparent"
+
+ Rectangle{
+ id: nameField
+ gradient: Gradient{
+ GradientStop { position: 0.0; color: "#806F6F6F" }
+ GradientStop { position: 1.0; color: "#136F6F6F" }
+ }
+
+ radius: 10
+ anchors {centerIn:parent; leftMargin: 15; rightMargin: 15; topMargin: 15}
+ height: parent.height-15; width: parent.width -20
+ border {color:"#4A4A4A"; width:1}
+
+ TextInput{
+ id: textInput
+ z:2
+ anchors {bottom: parent.bottom; topMargin: 10; horizontalCenter:parent.horizontalCenter}
+ width: parent.width - 10
+ height: parent.height -10
+ font.pointSize: 40
+ color:"lightsteelblue"
+ focus:true
+ }
+ Text{
+ id: textInstruction
+ anchors.centerIn:parent
+ text: "Select file name and press save or load"
+ font {pointSize: 11; weight:Font.Light; italic: true}
+ color: "lightblue"
+ z:2
+ opacity: (textInput.text == "") ? 1: 0
+ }
+ Text{
+ id:fieldLabel
+ anchors {top: parent.top; left: parent.left}
+ text: " file name: "
+ font {pointSize: 11; weight: Font.Light; italic: true}
+ color: "lightblue"
+ z:2
+ }
+ MouseArea{
+ anchors.centerIn:parent
+ width: nameField.width; height: nameField.height
+ onClicked:{
+ textInput.text = ""
+ textInput.focus = true
+ textInput.forceFocus()
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/core/MenuBar.qml b/examples/tutorials/gettingStarted/gsQml/parts/part5/core/MenuBar.qml
new file mode 100644
index 0000000000..657e5dc3fa
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/core/MenuBar.qml
@@ -0,0 +1,148 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id: menuBar
+ width: 1000; height:300
+ color:"transparent"
+ property color fileColor: "plum"
+ property color editColor: "powderblue"
+
+ property real partition: 1/10
+
+ Column{
+ anchors.fill: parent
+ //container for the header and the buttons
+ z: 1
+ Rectangle{
+ id: labelList
+ height:menuBar.height*partition
+ width: menuBar.width
+ color: "beige"
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: "#8C8F8C" }
+ GradientStop { position: 0.17; color: "#6A6D6A" }
+ GradientStop { position: 0.98;color: "#3F3F3F" }
+ GradientStop { position: 1.0; color: "#0e1B20" }
+ }
+ Text{
+ height: parent.height
+ anchors {right: labelRow.left ; verticalCenter: parent.bottom}
+ text: "menu: "
+ color: "lightblue"
+ font {weight: Font.Light; italic: true}
+ smooth: true
+ }
+
+ //row displays its children in a vertical row
+ Row{
+ id: labelRow
+ anchors.centerIn: parent
+ spacing:40
+ Button{
+ id: fileButton
+ height: 20; width: 50
+ label: "File"
+ buttonColor : menuListView.currentIndex == 0? fileColor : Qt.darker(fileColor, 1.5)
+ scale: menuListView.currentIndex == 0? 1.25: 1
+ labelSize: menuListView.currentIndex == 0? 16:12
+ radius: 1
+ smooth:true
+ //on a button click, change the list's currently selected item to FileMenu
+ onButtonClick: menuListView.currentIndex = 0
+ gradient: Gradient{
+ GradientStop { position: 0.0; color: fileColor }
+ GradientStop { position: 1.0; color: "#136F6F6F" }
+ }
+ }
+ Button{
+ id: editButton
+ height: 20; width: 50
+ buttonColor : menuListView.currentIndex == 1? Qt.darker(editColor, 1.5) : Qt.darker(editColor, 1.9)
+ scale: menuListView.currentIndex == 1? 1.25: 1
+ label: "Edit"
+ radius: 1
+ labelSize: menuListView.currentIndex == 1? 16:12
+ smooth:true
+ //on a button click, change the list's currently selected item to EditMenu
+ onButtonClick: menuListView.currentIndex = 1
+ gradient: Gradient{
+ GradientStop { position: 0.0; color: editColor }
+ GradientStop { position: 1.0; color: "#136F6F6F" }
+ }
+ }
+ }
+ }
+
+ //list view will display a model according to a delegate
+ ListView{
+ id: menuListView
+ width:menuBar.width; height: 9*menuBar.height*partition
+
+ //the model contains the data
+ model: menuListModel
+
+ //control the movement of the menu switching
+ snapMode: ListView.SnapOneItem
+ orientation: ListView.Horizontal
+ boundsBehavior: Flickable.StopAtBounds
+ flickDeceleration: 5000
+ highlightFollowsCurrentItem: true
+ highlightMoveDuration:240
+ highlightRangeMode: ListView.StrictlyEnforceRange
+ }
+ }
+ //a list of visual items already have delegates handling their display
+ VisualItemModel{
+ id: menuListModel
+
+ FileMenu{
+ id:fileMenu
+ width: menuListView.width; height: menuListView.height
+ color: fileColor
+ }
+ EditMenu{
+ color: editColor
+ width: menuListView.width; height: menuListView.height
+ }
+ }
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/core/TextArea.qml b/examples/tutorials/gettingStarted/gsQml/parts/part5/core/TextArea.qml
new file mode 100644
index 0000000000..d58c159fcc
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/core/TextArea.qml
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 QtQuick 1.0
+
+Rectangle {
+ id:textArea
+
+ function paste(){ textEdit.paste()}
+ function copy() { textEdit.copy() }
+ function selectAll() { textEdit.selectAll() }
+
+ width :400; height:400
+
+ property color fontColor: "white"
+ property alias textContent: textEdit.text
+ Flickable{
+ id: flickArea
+ width: parent.width; height: parent.height
+ anchors.fill:parent
+
+ boundsBehavior: Flickable.StopAtBounds
+ flickableDirection: Flickable.HorizontalFlick
+ interactive: true
+ //Will move the text Edit area to make the area visible when scrolled with keyboard strokes
+ function ensureVisible(r){
+ if (contentX >= r.x)
+ contentX = r.x;
+ else if (contentX+width <= r.x+r.width)
+ contentX = r.x+r.width-width;
+ if (contentY >= r.y)
+ contentY = r.y;
+ else if (contentY+height <= r.y+r.height)
+ contentY = r.y+r.height-height;
+ }
+
+ TextEdit{
+ id: textEdit
+ anchors.fill:parent
+ width:parent.width; height:parent.height
+ color:fontColor
+ focus: true
+ wrapMode: TextEdit.Wrap
+ font.pointSize:10
+ onCursorRectangleChanged: flickArea.ensureVisible(cursorRectangle)
+ selectByMouse: true
+ }
+ }
+}
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/core/qmldir b/examples/tutorials/gettingStarted/gsQml/parts/part5/core/qmldir
new file mode 100644
index 0000000000..3f22778a99
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/core/qmldir
@@ -0,0 +1,13 @@
+
+Button ./Button.qml
+FileDialog ./FileDialog.qml
+TextArea ./TextArea.qml
+TextEditor ./TextEditor.qml
+EditMenu ./EditMenu.qml
+MenuBar ./MenuBar.qml
+
+plugin FileDialog ../plugins
+
+
+
+
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/dialogPlugin.cpp b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/dialogPlugin.cpp
new file mode 100644
index 0000000000..7ea44ce7da
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/dialogPlugin.cpp
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 "dialogPlugin.h"
+#include "directory.h"
+#include "file.h"
+#include <QtDeclarative/qdeclarative.h>
+
+void DialogPlugin::registerTypes(const char *uri){
+
+ //register the class Directory into QML as a "Directory" element version 1.0
+ qmlRegisterType<Directory>(uri, 1, 0, "Directory");
+ qmlRegisterType<File>(uri,1,0,"File");
+
+ //qRegisterMetaType<QDeclarativeListProperty<QString> > ("QDeclarativeListProperty<QString>");
+
+}
+
+//FileDialog is the plugin name (same as the TARGET in the project file) and DialogPlugin is the plugin classs
+Q_EXPORT_PLUGIN2(FileDialog, DialogPlugin); \ No newline at end of file
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/dialogPlugin.h b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/dialogPlugin.h
new file mode 100644
index 0000000000..188e0707b2
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/dialogPlugin.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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$
+**
+****************************************************************************/
+
+#ifndef DIALOGPLUGIN_H
+#define DIALOGPLUGIN_H
+
+#include <QtDeclarative/QDeclarativeExtensionPlugin>
+
+class DialogPlugin : public QDeclarativeExtensionPlugin
+{
+ Q_OBJECT
+
+ public:
+ //registerTypes is inherited from QDeclarativeExtensionPlugin
+ void registerTypes(const char *uri);
+
+};
+
+#endif
+
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/directory.cpp b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/directory.cpp
new file mode 100644
index 0000000000..cddfa03e93
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/directory.cpp
@@ -0,0 +1,219 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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 "directory.h"
+#include <QDebug>
+
+/*
+Directory constructor
+
+Initialize the saves directory and creates the file list
+*/
+Directory::Directory(QObject *parent) : QObject(parent)
+{
+
+
+ m_dir.cd( QDir::currentPath());
+
+ //go to the saved directory. if not found, create save directory
+ m_saveDir = "saves";
+ if (m_dir.cd(m_saveDir) == 0){
+ m_dir.mkdir(m_saveDir);
+ m_dir.cd(m_saveDir);
+ }
+ m_filterList << "*.txt";
+
+ refresh();
+}
+
+/*
+Directory::filesNumber
+Return the number of Files
+*/
+int Directory:: filesCount() const{
+ return m_fileList.size();
+}
+
+/*
+Function called to append data onto list property
+*/
+void appendFiles(QDeclarativeListProperty<File> * property, File * file){
+ //Do nothing. can't add to a directory using this method
+}
+
+/*
+Function called to retrieve file in the list using an index
+*/
+File* fileAt(QDeclarativeListProperty<File> * property, int index){
+ return static_cast< QList<File *> *>(property->data)->at(index);
+}
+
+/*
+Returns the number of files in the list
+*/
+int filesSize(QDeclarativeListProperty<File> * property){
+ return static_cast< QList<File *> *>(property->data)->size();
+}
+
+/*
+Function called to empty the list property contents
+*/
+void clearFilesPtr(QDeclarativeListProperty<File> *property){
+ return static_cast< QList<File *> *>(property->data)->clear();
+}
+
+/*
+Returns the list of files as a QDeclarativeListProperty.
+*/
+QDeclarativeListProperty<File> Directory::files(){
+
+ refresh();
+// return QDeclarativeListProperty<QString>(this,m_filePtrList); //not recommended in the docs
+ return QDeclarativeListProperty<File>( this, &m_fileList, &appendFiles, &filesSize, &fileAt, &clearFilesPtr );
+}
+
+/*
+Return te name of the currently selected file
+*/
+QString Directory::filename() const{
+ return currentFile.name();
+}
+
+/*
+Return the file's content as a string.
+*/
+QString Directory::fileContent() const{
+ return m_fileContent;
+}
+
+/*
+Set the file name of the current file
+*/
+void Directory::setFilename(const QString &str){
+ if(str != currentFile.name()){
+ currentFile.setName(str);
+ emit filenameChanged();
+ }
+}
+
+/*
+Set the content of the file as a string
+*/
+void Directory::setFileContent(const QString &str){
+ if(str != m_fileContent){
+ m_fileContent = str;
+ emit fileContentChanged();
+ }
+}
+
+/*
+Called from QML to save the file using the filename and file content.
+Saving makes sure that the file has a .txt extension.
+*/
+void Directory::saveFile(){
+
+ if(currentFile.name().size() == 0){
+ qWarning()<< "Empty filename. no save";
+ return;
+ }
+
+ QString extendedName = currentFile.name();
+ if(!currentFile.name().endsWith(".txt")){
+ extendedName.append(".txt");
+ }
+
+ QFile file( m_dir.filePath(extendedName) );
+ if (file.open(QFile::WriteOnly | QFile::Truncate)){
+ QTextStream outStream(&file);
+ outStream << m_fileContent;
+ }
+ file.close();
+ refresh();
+ emit directoryChanged();
+}
+
+/*
+Load the contents of a file.
+Only loads files with a .txt extension
+*/
+void Directory::loadFile(){
+
+ m_fileContent.clear();
+ QString extendedName = currentFile.name();
+ if(!currentFile.name().endsWith(".txt")){
+ extendedName.append(".txt");
+ }
+
+ QFile file( m_dir.filePath(extendedName) );
+ if (file.open(QFile::ReadOnly )){
+ QTextStream inStream(&file);
+
+ QString line;
+ do{
+ line = inStream.read(75);
+ m_fileContent.append(line);
+ }while (!line .isNull());
+ }
+ file.close();
+}
+
+/*
+Reloads the content of the files list. This is to ensure that the newly
+created files are added onto the list.
+*/
+void Directory::refresh(){
+ m_dirFiles = m_dir.entryList(m_filterList,QDir::Files,QDir::Name);
+ m_fileList.clear();
+
+ File * file;
+ for(int i = 0; i < m_dirFiles.size() ; i ++){
+
+ file = new File();
+
+ if(m_dirFiles.at(i).endsWith(".txt")){
+ QString name = m_dirFiles.at(i);
+ file->setName( name.remove(".txt",Qt::CaseSensitive));
+ }
+ else{
+ file->setName(m_dirFiles.at(i));
+ }
+ m_fileList.append(file);
+ }
+} \ No newline at end of file
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/directory.h b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/directory.h
new file mode 100644
index 0000000000..417df68539
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/directory.h
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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$
+**
+****************************************************************************/
+
+#ifndef DIRECTORY_H
+#define DIRECTORY_H
+
+#include "file.h"
+
+#include <QDir>
+#include <QStringList>
+#include <QTextStream>
+#include <QDeclarativeListProperty>
+#include <QObject>
+
+class Directory : public QObject{
+
+ Q_OBJECT
+
+ //number of files in the directory
+ Q_PROPERTY(int filesCount READ filesCount)
+
+ //list property containing file names as QString
+ Q_PROPERTY(QDeclarativeListProperty<File> files READ files CONSTANT )
+
+ //file name of the text file to read/write
+ Q_PROPERTY(QString filename READ filename WRITE setFilename NOTIFY filenameChanged)
+
+ //text content of the file
+ Q_PROPERTY(QString fileContent READ fileContent WRITE setFileContent NOTIFY fileContentChanged)
+
+ public:
+ Directory(QObject *parent = 0);
+
+ //properties' read functions
+ int filesCount() const;
+ QString filename() const;
+ QString fileContent() const;
+ QDeclarativeListProperty<File> files();
+
+ //properties' write functions
+ void setFilename(const QString &str);
+ void setFileContent(const QString &str);
+
+ //accessible from QML
+ Q_INVOKABLE void saveFile();
+ Q_INVOKABLE void loadFile();
+
+ signals:
+ void directoryChanged();
+ void filenameChanged();
+ void fileContentChanged();
+
+ private:
+ QDir m_dir;
+ QStringList m_dirFiles;
+ File currentFile;
+ QString m_saveDir;
+ QStringList m_filterList;
+
+ //contains the file data in QString format
+ QString m_fileContent;
+
+ //Registered to QML in a plugin. Accessible from QML as a property of Directory
+ QList<File *> m_fileList;
+
+ //refresh content of the directory
+ void refresh();
+};
+
+
+#endif
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/file.cpp b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/file.cpp
new file mode 100644
index 0000000000..f4a360a05e
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/file.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 QtDeclarative module 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 "file.h"
+
+File::File(QObject *parent) : QObject(parent)
+{
+ m_name = "";
+}
+
+QString File::name() const{
+ return m_name;
+}
+void File::setName(const QString &str){
+ if(str != m_name){
+ m_name = str;
+ emit nameChanged();
+ }
+} \ No newline at end of file
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/file.h b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/file.h
new file mode 100644
index 0000000000..b27a143e72
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/file.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** 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 QtDeclarative module 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$
+**
+****************************************************************************/
+
+#ifndef FILE_H
+#define FILE_H
+
+
+#include <QString>
+#include <QObject>
+
+class File : public QObject{
+
+ Q_OBJECT
+
+ Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
+
+ public:
+ File(QObject *parent = 0);
+
+ QString name() const;
+ void setName(const QString &str);
+
+ signals:
+ void nameChanged();
+
+ private:
+ QString m_name;
+};
+
+#endif \ No newline at end of file
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/filedialog.pro b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/filedialog.pro
new file mode 100644
index 0000000000..6247747003
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/filedialog.pro
@@ -0,0 +1,17 @@
+TEMPLATE = lib
+CONFIG += qt plugin
+QT += declarative
+
+DESTDIR += ../plugins
+OBJECTS_DIR = tmp
+MOC_DIR = tmp
+
+TARGET = FileDialog
+
+HEADERS += directory.h \
+ file.h \
+ dialogPlugin.h
+
+SOURCES += directory.cpp \
+ file.cpp \
+ dialogPlugin.cpp
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/qmldir b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/qmldir
new file mode 100644
index 0000000000..c2b27dad58
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/filedialog/qmldir
@@ -0,0 +1 @@
+plugin FileDialog plugins
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/images/arrow.png b/examples/tutorials/gettingStarted/gsQml/parts/part5/images/arrow.png
new file mode 100644
index 0000000000..14978c2e56
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/images/arrow.png
Binary files differ
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/pics/qml-texteditor5_editmenu.png b/examples/tutorials/gettingStarted/gsQml/parts/part5/pics/qml-texteditor5_editmenu.png
new file mode 100644
index 0000000000..27feed5e82
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/pics/qml-texteditor5_editmenu.png
Binary files differ
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/pics/qml-texteditor5_filemenu.png b/examples/tutorials/gettingStarted/gsQml/parts/part5/pics/qml-texteditor5_filemenu.png
new file mode 100644
index 0000000000..4d8f9f22b2
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/pics/qml-texteditor5_filemenu.png
Binary files differ
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/pics/qml-texteditor5_newfile.png b/examples/tutorials/gettingStarted/gsQml/parts/part5/pics/qml-texteditor5_newfile.png
new file mode 100644
index 0000000000..680acfe839
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/pics/qml-texteditor5_newfile.png
Binary files differ
diff --git a/examples/tutorials/gettingStarted/gsQml/parts/part5/qml-texteditor5.qmlproject b/examples/tutorials/gettingStarted/gsQml/parts/part5/qml-texteditor5.qmlproject
new file mode 100644
index 0000000000..ed034dff3f
--- /dev/null
+++ b/examples/tutorials/gettingStarted/gsQml/parts/part5/qml-texteditor5.qmlproject
@@ -0,0 +1,18 @@
+import QmlProject 1.0
+
+Project {
+ /* Include .qml, .js, and image files from current directory and subdirectories */
+ QmlFiles {
+ directory: "."
+ directory: "core"
+ directory: "filedialog"
+ }
+ JavaScriptFiles {
+ directory: "."
+ }
+ ImageFiles {
+ directory: "."
+ }
+ /* List of plugin directories passed to QML runtime */
+ importPaths: [ " ./plugins " ]
+}
diff --git a/examples/webkit/imageanalyzer/imageanalyzer.cpp b/examples/webkit/imageanalyzer/imageanalyzer.cpp
index 1d0ee45830..9f49a00141 100644
--- a/examples/webkit/imageanalyzer/imageanalyzer.cpp
+++ b/examples/webkit/imageanalyzer/imageanalyzer.cpp
@@ -49,7 +49,7 @@
* This class operates as follows:
* Parent calls the slot startAnalysis which shoves a list of QStrings into URLQueue and then calls fetchURLs.
* FetchURLs sends out HTTP GETs for each image it can't get out of the cache.
- * As the responses come in, handleReply trys to create an image out of each and pushes those images into imageQueue.
+ * As the responses come in, handleReply tries to create an image out of each and pushes those images into imageQueue.
* On the last (detected by no outstandingFetches and URLQueue.isEmpty()) call to queueImage (from handleReply)
* a thread is forked to process all the images. When it finishes, it emits a finished signal that is received
* by our JavaScript code.
diff --git a/tools/qdoc3/bookgenerator.cpp b/mkspecs/common/symbian/appCaptionForTranslation.cpp
index bbcdd11679..c29514770e 100644
--- a/tools/qdoc3/bookgenerator.cpp
+++ b/mkspecs/common/symbian/appCaptionForTranslation.cpp
@@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the tools applications of the Qt Toolkit.
+** This file is part of the qmake spec of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -39,26 +39,8 @@
**
****************************************************************************/
-/*
- bookgenerator.cpp
-*/
+//: Application short caption, currently only relevant for application projects in Symbian.
+QT_TRANSLATE_NOOP("QtApplicationCaptions", "Application short caption")
-#include "bookgenerator.h"
-
-QT_BEGIN_NAMESPACE
-
-BookGenerator::BookGenerator()
-{
-}
-
-BookGenerator::~BookGenerator()
-{
-}
-
-void BookGenerator::generateTree( const Tree *tree, CodeMarker *marker )
-{
- Q_UNUSED( tree )
- Q_UNUSED( marker )
-}
-
-QT_END_NAMESPACE
+//: Application long caption, currently only relevant for application projects in Symbian.
+QT_TRANSLATE_NOOP("QtApplicationCaptions", "Application long caption")
diff --git a/tools/qdoc3/bookgenerator.h b/mkspecs/common/symbian/packageNameForTranslation.cpp
index 69b65fce24..bc4a7f438c 100644
--- a/tools/qdoc3/bookgenerator.h
+++ b/mkspecs/common/symbian/packageNameForTranslation.cpp
@@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the tools applications of the Qt Toolkit.
+** This file is part of the qmake spec of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -39,26 +39,9 @@
**
****************************************************************************/
-/*
- bookgenerator.h
-*/
+//: Installation package name, currently only relevant for Symbian projects that deploy something.
+QT_TRANSLATE_NOOP("QtPackageNames", "Package name")
-#ifndef BOOKGENERATOR_H
-#define BOOKGENERATOR_H
-
-#include "generator.h"
-
-QT_BEGIN_NAMESPACE
-
-class BookGenerator : public Generator
-{
-public:
- BookGenerator();
- ~BookGenerator();
-
- virtual void generateTree( const Tree *tree, CodeMarker *marker );
-};
-
-QT_END_NAMESPACE
-
-#endif
+//: Smart installer installation package name, currently only relevant for Symbian projects that
+//: deploy something.
+QT_TRANSLATE_NOOP("QtPackageNames", "Smart installer package name")
diff --git a/mkspecs/common/symbian/symbian-mmp.conf b/mkspecs/common/symbian/symbian-mmp.conf
index 1fbd302c68..4d554bd4ae 100644
--- a/mkspecs/common/symbian/symbian-mmp.conf
+++ b/mkspecs/common/symbian/symbian-mmp.conf
@@ -18,8 +18,8 @@ MMP_RULES += $$MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA
SYMBIAN_PLATFORMS = WINSCW GCCE ARMV5 ARMV6
INCLUDEPATH = \
- $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off \
- $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian \
+ $$[QT_INSTALL_DATA]/mkspecs/common/symbian/stl-off \
+ $$[QT_INSTALL_DATA]/mkspecs/common/symbian \
$${EPOCROOT}epoc32/include \
$$OS_LAYER_LIBC_SYSTEMINCLUDE \
$$INCLUDEPATH
diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf
index d8c38f4ec5..11907cf7c9 100644
--- a/mkspecs/common/symbian/symbian.conf
+++ b/mkspecs/common/symbian/symbian.conf
@@ -79,7 +79,6 @@ QMAKE_LIBS_OPENGL_ES2_QT = -llibglesv2 -lcone -lws32
QMAKE_LIBS_OPENVG = -llibOpenVG -lfbscli -lbitgdi -lgdi
QMAKE_LIBS_THREAD = -llibpthread
QMAKE_LIBS_COMPAT =
-QMAKE_LIBS_QT_ENTRY = -llibcrt0.lib
QMAKE_LIBS_S60 = -lavkon -leikcoctl
exists($${EPOCROOT}epoc32/include/platform/sgresource/sgimage.h) {
@@ -104,7 +103,7 @@ contains(QMAKE_HOST.os,Windows) {
QMAKE_COPY_DIR = cp -r
QMAKE_MOVE = mv
QMAKE_DEL_FILE = rm -f
- QMAKE_MKDIR = mkdir
+ QMAKE_MKDIR = mkdir -p
QMAKE_DEL_DIR = rmdir
QMAKE_DEL_TREE = rm -rf
QMAKE_CHK_DIR_EXISTS = test -d
@@ -127,6 +126,25 @@ 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
+
+# List of languages that have a Symbian language code mapping provided in localize_deployment.prf
+SYMBIAN_SUPPORTED_LANGUAGES = \
+ af sq am ar hy bn bg my be ca \
+ hr cs da nl en et fi fr gd ka \
+ de el gu he hi hu is id ga it \
+ ja kn kk ko lo lv lt mk ms ml \
+ mr mo mn nb pl pt pa ro ru sr \
+ si sk sl so es sw sv tl ta te \
+ th bo ti tr tk uk ur vi cy zu \
+ nn eu zh gl fa st en_US fr_BE \
+ pt_BR en_CA fr_CA el_CY tr_CY \
+ en_TW en_HK en_CN en_JP en_TH \
+ sv_FI zh_HK es_419 en_ZA fr_CH \
+ de_CH it_CH zh_TW
+
# These directories must match what configure uses for QT_INSTALL_PLUGINS and QT_INSTALL_IMPORTS
QT_PLUGINS_BASE_DIR = /resource/qt$${QT_LIBINFIX}/plugins
QT_IMPORTS_BASE_DIR = /resource/qt/imports
@@ -191,18 +209,7 @@ isEmpty(S60_VERSION) {
# multiple language compatible dependency statements him/herself.
default_deployment.pkg_prerules += pkg_depends_webkit pkg_depends_qt pkg_platform_dependencies
-
-# Supports S60 3.1, 3.2, 5.0, Symbian^3, and Symbian^4 by default
-pkg_platform_dependencies = \
- "; Default HW/platform dependencies" \
- "[0x102032BE],0,0,0,{\"S60ProductID\"}" \
- "[0x102752AE],0,0,0,{\"S60ProductID\"}" \
- "[0x1028315F],0,0,0,{\"S60ProductID\"}" \
- "[0x20022E6D],0,0,0,{\"S60ProductID\"}" \
- "[0x20032DE7],0,0,0,{\"S60ProductID\"}" \
- " "
-
-DEPLOYMENT += default_deployment
+DEPLOYMENT += default_deployment default_bin_deployment default_resource_deployment default_reg_deployment
defineReplace(symbianRemoveSpecialCharacters) {
# Produce identical string to what SymbianCommonGenerator::removeSpecialCharacters and
@@ -222,3 +229,44 @@ defineReplace(symbianRemoveSpecialCharacters) {
return ($$fixedStr)
}
+# Determines translations that are Symbian supported
+defineTest(matchSymbianLanguages) {
+ SYMBIAN_MATCHED_LANGUAGES =
+ SYMBIAN_MATCHED_TRANSLATIONS =
+
+ # Cannot parse .ts file for language here, so detect it from filename.
+ # Allow two and three character language and country codes.
+ for(translation, TRANSLATIONS) {
+ language = $$replace(translation, "^(.*/)?[^/]+_(([^_]{2,3}_)?[^_]{2,3})\\.ts$", \\2)
+ contains(SYMBIAN_SUPPORTED_LANGUAGES, $$language) {
+ SYMBIAN_MATCHED_LANGUAGES += $$language
+ SYMBIAN_MATCHED_TRANSLATIONS += $$translation
+ }
+ }
+
+ isEmpty(SYMBIAN_MATCHED_LANGUAGES): SYMBIAN_MATCHED_LANGUAGES = en
+
+ export(SYMBIAN_MATCHED_LANGUAGES)
+ export(SYMBIAN_MATCHED_TRANSLATIONS)
+}
+
+# Symbian pkg files that define multiple languages require a language specific string to be
+# defined for various items, even though the string often needs to be same for all languages.
+# This replacement method will generate correct string for such cases based on TRANSLATIONS
+# variable.
+defineReplace(addLanguageDependentPkgItem) {
+ localize_deployment:!isEmpty(TRANSLATIONS):isEmpty(SYMBIAN_MATCHED_LANGUAGES) {
+ matchSymbianLanguages()
+ }
+
+ pkgItem = $$eval($$1)
+ pkgLanguageList =
+
+ for(dummyItem, SYMBIAN_MATCHED_LANGUAGES) {
+ pkgLanguageList += "\"$$pkgItem\""
+ }
+
+ isEmpty(pkgLanguageList): pkgLanguageList = "\"$$pkgItem\""
+
+ return($$join(pkgLanguageList,",",,))
+}
diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf
index 09c6587aad..9fb9f10e76 100644
--- a/mkspecs/features/default_post.prf
+++ b/mkspecs/features/default_post.prf
@@ -110,3 +110,13 @@ QMAKE_LIBDIR += $$QMAKE_LIBDIR_POST
}
QMAKE_EXTRA_TARGETS += check
}
+
+# Add special translation sources for projects that require them.
+# Note 1: Since lupdate will not parse regular config scopes right, contains checks are used instead.
+# Note 2: Checking for last value of TEMPLATE is used instead of simple contains check because
+# lupdate doesn't respect "-=" variable assignments and therefore always finds "app"
+# as the first value of TEMPLATE variable.
+contains(CONFIG, lupdate_run):contains(CONFIG, localize_deployment) {
+ equals($$list($$last(TEMPLATE)), app): SOURCES += $$[QT_INSTALL_DATA]/mkspecs/common/symbian/appCaptionForTranslation.cpp
+ SOURCES += $$[QT_INSTALL_DATA]/mkspecs/common/symbian/packageNameForTranslation.cpp
+}
diff --git a/mkspecs/features/link_pkgconfig.prf b/mkspecs/features/link_pkgconfig.prf
index 4c528aa251..d70e5de104 100644
--- a/mkspecs/features/link_pkgconfig.prf
+++ b/mkspecs/features/link_pkgconfig.prf
@@ -1,6 +1,7 @@
# handle pkg-config files
+isEmpty(PKG_CONFIG):PKG_CONFIG = pkg-config
for(PKGCONFIG_LIB, $$list($$unique(PKGCONFIG))) {
- QMAKE_CXXFLAGS += $$system(pkg-config --cflags $$PKGCONFIG_LIB)
- QMAKE_CFLAGS += $$system(pkg-config --cflags $$PKGCONFIG_LIB)
- LIBS += $$system(pkg-config --libs $$PKGCONFIG_LIB)
+ QMAKE_CXXFLAGS += $$system($$PKG_CONFIG --cflags $$PKGCONFIG_LIB)
+ QMAKE_CFLAGS += $$system($$PKG_CONFIG --cflags $$PKGCONFIG_LIB)
+ LIBS += $$system($$PKG_CONFIG --libs $$PKGCONFIG_LIB)
}
diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
index afc708a23e..59d49c6aec 100644
--- a/mkspecs/features/qt_functions.prf
+++ b/mkspecs/features/qt_functions.prf
@@ -49,16 +49,23 @@ defineTest(qtAddLibrary) {
isEqual(LIB_NAME, QtGui) {
# Needed for #include <QtGui> because qs60mainapplication.h includes aknapp.h
INCLUDEPATH *= $$MW_LAYER_SYSTEMINCLUDE
- }
- isEqual(LIB_NAME, QtWebKit) {
+ } else:isEqual(LIB_NAME, QtWebKit) {
# Needed for because relative inclusion problem in toolchain
INCLUDEPATH *= $$QMAKE_INCDIR_QT/QtXmlPatterns
INCLUDEPATH *= $$QMAKE_INCDIR_QT/QtNetwork
- }
- isEqual(LIB_NAME, QtXmlPatterns) {
+ TARGET.CAPABILITY *= NetworkServices
+ isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
+ } else:isEqual(LIB_NAME, QtXmlPatterns) {
# Needed for #include <QtXmlPatterns/QtXmlPatterns> because relative inclusion problem in toolchain
INCLUDEPATH *= $$QMAKE_INCDIR_QT/QtNetwork
+ } else:isEqual(LIB_NAME, QtNetwork) {
+ TARGET.CAPABILITY *= NetworkServices
+ } else:isEqual(LIB_NAME, QtDeclarative) {
+ TARGET.CAPABILITY *= NetworkServices
+ isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x20000 0x2000000
}
+ export(TARGET.EPOCHEAPSIZE)
+ export(TARGET.CAPABILITY)
}
isEmpty(LINKAGE) {
if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
diff --git a/mkspecs/features/symbian/application_icon.prf b/mkspecs/features/symbian/application_icon.prf
index 9a9395a526..6e1aa8e0c0 100644
--- a/mkspecs/features/symbian/application_icon.prf
+++ b/mkspecs/features/symbian/application_icon.prf
@@ -1,21 +1,41 @@
load(data_caging_paths)
-# If no_icon keyword exist, the S60 UI app is just made hidden. This because S60 app FW
-# requires the registration resource file to exist always
-contains( CONFIG, no_icon ) {
- symbian:RSS_RULES += "hidden = KAppIsHidden;"
- CONFIG -= no_icon
-} else {
-# There is no point in compiling the MIF icon if no_icon CONFIGS is set
- !isEmpty(ICON) {
+contains(CONFIG, no_icon) {
+ # If no_icon keyword exist, the S60 UI app is just made hidden. This because S60 app FW
+ # requires the registration resource file to exist always
+ contains(QT, gui):contains(CONFIG, qt) {
+ symbian:RSS_RULES += "hidden = KAppIsHidden;"
+ CONFIG -= no_icon
+ }
+}
+
+!contains(CONFIG, no_icon) {
+ baseTarget = $$symbianRemoveSpecialCharacters($$basename(TARGET))
+ symbian-abld|symbian-sbsv2 {
+ resourceZDir = $$EPOCROOT$$HW_ZDIR$$APP_RESOURCE_DIR
+ regZDir = $$EPOCROOT$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR
+ } else {
+ contains(DESTDIR, "/.*") {
+ resourceZDir = $$DESTDIR
+ } else:isEmpty(DESTDIR) {
+ resourceZDir = $$OUT_PWD
+ } else {
+ resourceZDir = $$OUT_PWD/$$DESTDIR
+ }
+ regZDir = $$resourceZDir
+ }
+ default_resource_deployment.sources += $$resourceZDir/$${baseTarget}.rsc
+ default_resource_deployment.path = $$APP_RESOURCE_DIR
+ default_reg_deployment.sources += $$regZDir/$${baseTarget}_reg.rsc
+ default_reg_deployment.path = $$REG_RESOURCE_IMPORT_DIR
+
+ !isEmpty(ICON) {
!count(ICON, 1) {
ICON = $$first(ICON)
warning("Only first icon specified in ICON variable is used: $$ICON")
}
- baseTarget = $$symbianRemoveSpecialCharacters($$basename(TARGET))
-
# Note: symbian-sbsv2 builds can't utilize extra compiler for mifconv, so ICON handling is done in code
!symbian-sbsv2 {
# Absolute path required for shadow builds.
@@ -27,13 +47,10 @@ contains( CONFIG, no_icon ) {
ICON_backslashed = $$ICON
symbian-abld {
+ # ${ZDIR} is defined in Makefile
mifIconZDir = ${ZDIR}$$APP_RESOURCE_DIR
} else {
- isEmpty(DESTDIR) {
- mifIconZDir = .
- } else {
- mifIconZDir = $$DESTDIR
- }
+ mifIconZDir = $$resourceZDir
}
# Extra compiler rules for mifconv
@@ -54,5 +71,9 @@ 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.sources += $$resourceZDir/$${baseTarget}.mif
}
}
+
+
diff --git a/mkspecs/features/symbian/default_post.prf b/mkspecs/features/symbian/default_post.prf
index 0564e9b8ea..ec6ecd0c84 100644
--- a/mkspecs/features/symbian/default_post.prf
+++ b/mkspecs/features/symbian/default_post.prf
@@ -3,12 +3,22 @@ load(default_post)
contains(TEMPLATE, ".*app") {
contains(CONFIG, stdbinary) {
QMAKE_LIBS +=
- } else:contains(QT, gui):contains(CONFIG,qt) {
- S60MAIN_LIBS = -leuser
- QMAKE_LIBS += -lqtmain$${QT_LIBINFIX}.lib $$S60MAIN_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.path += /sys/bin
+
+ load(application_icon.prf)
}
contains(TEMPLATE, lib): {
contains(CONFIG, staticlib)|contains(CONFIG, static): {
@@ -26,10 +36,6 @@ contains(TEMPLATE, lib): {
MMP_RULES -= EXPORTUNFROZEN
}
-contains(TEMPLATE, ".*app"):contains(QT, gui):contains(CONFIG,qt) {
- load(application_icon.prf)
-}
-
isEmpty(TARGET.UID3):TARGET.UID3 = $$generate_uid("$${OUT_PWD}/$${TARGET}")
isEmpty(TARGET.UID2) {
contains(CONFIG, stdbinary) {
@@ -46,3 +52,15 @@ isEmpty(TARGET.UID2) {
}
}
}
+
+# Supports S60 3.1, 3.2, 5.0, Symbian^3, and Symbian^4 by default
+platform_product_id = S60ProductID
+platform_product_id = $$addLanguageDependentPkgItem(platform_product_id)
+pkg_platform_dependencies = \
+ "; Default HW/platform dependencies" \
+ "[0x102032BE],0,0,0,{$$platform_product_id}" \
+ "[0x102752AE],0,0,0,{$$platform_product_id}" \
+ "[0x1028315F],0,0,0,{$$platform_product_id}" \
+ "[0x20022E6D],0,0,0,{$$platform_product_id}" \
+ "[0x20032DE7],0,0,0,{$$platform_product_id}" \
+ " "
diff --git a/mkspecs/features/symbian/localize_deployment.prf b/mkspecs/features/symbian/localize_deployment.prf
new file mode 100644
index 0000000000..26a254b6be
--- /dev/null
+++ b/mkspecs/features/symbian/localize_deployment.prf
@@ -0,0 +1,109 @@
+SYMBIAN_LANG.af = 34 #Afrikaans
+SYMBIAN_LANG.sq = 35 #Albanian
+SYMBIAN_LANG.am = 36 #Amharic
+SYMBIAN_LANG.ar = 37 #Arabic
+SYMBIAN_LANG.hy = 38 #Armenian
+SYMBIAN_LANG.eu = 102 #Basque
+SYMBIAN_LANG.bn = 41 #Bengali
+SYMBIAN_LANG.bg = 42 #Bulgarian
+SYMBIAN_LANG.my = 43 #Burmese
+SYMBIAN_LANG.be = 40 #Byelorussian
+SYMBIAN_LANG.ca = 44 #Catalan
+SYMBIAN_LANG.zh = 31 #Chinese
+SYMBIAN_LANG.hr = 45 #Croatian
+SYMBIAN_LANG.cs = 25 #Czech
+SYMBIAN_LANG.da = 07 #Danish
+SYMBIAN_LANG.nl = 18 #Dutch
+SYMBIAN_LANG.en = 01 #English(UK)
+SYMBIAN_LANG.et = 49 #Estonian
+SYMBIAN_LANG.fi = 09 #Finnish
+SYMBIAN_LANG.fr = 02 #French
+SYMBIAN_LANG.gd = 52 #Gaelic
+SYMBIAN_LANG.gl = 103 #Galician
+SYMBIAN_LANG.ka = 53 #Georgian
+SYMBIAN_LANG.de = 03 #German
+SYMBIAN_LANG.el = 54 #Greek
+SYMBIAN_LANG.gu = 56 #Gujarati
+SYMBIAN_LANG.he = 57 #Hebrew
+SYMBIAN_LANG.hi = 58 #Hindi
+SYMBIAN_LANG.hu = 17 #Hungarian
+SYMBIAN_LANG.is = 15 #Icelandic
+SYMBIAN_LANG.id = 59 #Indonesian
+SYMBIAN_LANG.ga = 60 #Irish
+SYMBIAN_LANG.it = 05 #Italian
+SYMBIAN_LANG.ja = 32 #Japanese
+SYMBIAN_LANG.kn = 62 #Kannada
+SYMBIAN_LANG.kk = 63 #Kazakh
+SYMBIAN_LANG.ko = 65 #Korean
+SYMBIAN_LANG.lo = 66 #Laothian
+SYMBIAN_LANG.lv = 67 #Latvian
+SYMBIAN_LANG.lt = 68 #Lithuanian
+SYMBIAN_LANG.mk = 69 #Macedonian
+SYMBIAN_LANG.ms = 70 #Malay
+SYMBIAN_LANG.ml = 71 #Malayalam
+SYMBIAN_LANG.mr = 72 #Marathi
+SYMBIAN_LANG.mo = 73 #Moldavian
+SYMBIAN_LANG.mn = 74 #Mongolian
+SYMBIAN_LANG.nb = 08 #Norwegian
+SYMBIAN_LANG.nn = 75 #Nynorsk
+SYMBIAN_LANG.fa = 50 #Persian
+SYMBIAN_LANG.pl = 27 #Polish
+SYMBIAN_LANG.pt = 13 #Portuguese
+SYMBIAN_LANG.pa = 77 #Punjabi
+SYMBIAN_LANG.ro = 78 #Romanian
+SYMBIAN_LANG.ru = 16 #Russian
+SYMBIAN_LANG.sr = 79 #Serbian
+SYMBIAN_LANG.si = 80 #Singhalese
+SYMBIAN_LANG.sk = 26 #Slovak
+SYMBIAN_LANG.sl = 28 #Slovenian
+SYMBIAN_LANG.so = 81 #Somali
+SYMBIAN_LANG.st = 101 #South Sotho/Sesotho
+SYMBIAN_LANG.es = 04 #Spanish
+SYMBIAN_LANG.sw = 84 #Swahili
+SYMBIAN_LANG.sv = 06 #Swedish
+SYMBIAN_LANG.tl = 39 #Tagalog
+SYMBIAN_LANG.ta = 87 #Tamil
+SYMBIAN_LANG.te = 88 #Telugu
+SYMBIAN_LANG.th = 33 #Thai
+SYMBIAN_LANG.bo = 89 #Tibetan
+SYMBIAN_LANG.ti = 90 #Tigrinya
+SYMBIAN_LANG.tr = 14 #Turkish
+SYMBIAN_LANG.tk = 92 #Turkmen
+SYMBIAN_LANG.uk = 93 #Ukrainian
+SYMBIAN_LANG.ur = 94 #Urdu
+SYMBIAN_LANG.vi = 96 #Vietnamese
+SYMBIAN_LANG.cy = 97 #Welsh
+SYMBIAN_LANG.zu = 98 #Zulu
+
+# Regional dialects
+SYMBIAN_LANG.en_US = 10 #American English
+SYMBIAN_LANG.fr_BE = 21 #Belgian French
+SYMBIAN_LANG.pt_BR = 76 #Brazilian Portuguese
+SYMBIAN_LANG.en_CA = 46 #Canadian English
+SYMBIAN_LANG.fr_CA = 51 #Canadian French
+SYMBIAN_LANG.el_CY = 55 #Cyprus Greek
+SYMBIAN_LANG.tr_CY = 91 #Cyprus Turkish
+SYMBIAN_LANG.en_TW = 157 #English as appropriate for use in Taiwan
+SYMBIAN_LANG.en_HK = 158 #English as appropriate for use in Hong Kong
+SYMBIAN_LANG.en_CN = 159 #English as appropriate for use in the Peoples Republic of China
+SYMBIAN_LANG.en_JP = 160 #English as appropriate for use in Japan
+SYMBIAN_LANG.en_TH = 161 #English as appropriate for use in Thailand
+SYMBIAN_LANG.sv_FI = 85 #Finland Swedish
+SYMBIAN_LANG.zh_HK = 30 #HongKong Chinese
+SYMBIAN_LANG.es_419 = 83 #Latin American Spanish
+SYMBIAN_LANG.en_ZA = 48 #South African English
+SYMBIAN_LANG.fr_CH = 11 #Swiss French
+SYMBIAN_LANG.de_CH = 12 #Swiss German
+SYMBIAN_LANG.it_CH = 61 #Swiss Italian
+SYMBIAN_LANG.zh_TW = 29 #Taiwan Chinese
+
+isEmpty(SYMBIAN_MATCHED_LANGUAGES) {
+ matchSymbianLanguages()
+}
+
+!isEmpty(SYMBIAN_MATCHED_TRANSLATIONS) {
+ # Generate dependencies to .ts files for pkg files
+ template_pkg_target.depends += $$SYMBIAN_MATCHED_TRANSLATIONS
+ installer_pkg_target.depends += $$SYMBIAN_MATCHED_TRANSLATIONS
+ stub_pkg_target.depends += $$SYMBIAN_MATCHED_TRANSLATIONS
+}
diff --git a/mkspecs/features/symbian/qt.prf b/mkspecs/features/symbian/qt.prf
index b5d3d98002..c8f97aa439 100644
--- a/mkspecs/features/symbian/qt.prf
+++ b/mkspecs/features/symbian/qt.prf
@@ -25,9 +25,10 @@ INCLUDEPATH = $$PREPEND_INCLUDEPATH $$INCLUDEPATH
# Note: Qt libs package with full capabilities has UID3 of 0x2001E61C,
# while self-signed version typically has temporary UID3 of 0xE001E61C.
contains(CONFIG, qt):!contains(TARGET.UID3, 0x2001E61C):!contains(TARGET.UID3, 0xE001E61C):isEmpty(QT_LIBINFIX) {
+ qt_pkg_name = Qt
pkg_depends_qt += \
"; Default dependency to Qt libraries" \
- "(0x2001E61C), $${QT_MAJOR_VERSION}, $${QT_MINOR_VERSION}, $${QT_PATCH_VERSION}, {\"Qt\"}"
+ "(0x2001E61C), $${QT_MAJOR_VERSION}, $${QT_MINOR_VERSION}, $${QT_PATCH_VERSION}, {$$addLanguageDependentPkgItem(qt_pkg_name)}"
# Projects linking to webkit need dependency to webkit
contains(QT, webkit): {
@@ -38,9 +39,10 @@ contains(CONFIG, qt):!contains(TARGET.UID3, 0x2001E61C):!contains(TARGET.UID3, 0
QT_WEBKIT_PATCH_VERSION = $${QT_PATCH_VERSION}
}
+ webkit_pkg_name = QtWebKit
pkg_depends_webkit += \
"; Dependency to Qt Webkit" \
- "(0x200267C2), $${QT_WEBKIT_MAJOR_VERSION}, $${QT_WEBKIT_MINOR_VERSION}, $${QT_WEBKIT_PATCH_VERSION}, {\"QtWebKit\"}"
+ "(0x200267C2), $${QT_WEBKIT_MAJOR_VERSION}, $${QT_WEBKIT_MINOR_VERSION}, $${QT_WEBKIT_PATCH_VERSION}, {$$addLanguageDependentPkgItem(webkit_pkg_name)}"
} else {
default_deployment.pkg_prerules -= pkg_depends_webkit
}
diff --git a/mkspecs/features/symbian/sis_targets.prf b/mkspecs/features/symbian/sis_targets.prf
index e838e10d3a..ad81803e17 100644
--- a/mkspecs/features/symbian/sis_targets.prf
+++ b/mkspecs/features/symbian/sis_targets.prf
@@ -12,6 +12,17 @@ else:!equals(DEPLOYMENT, default_deployment) {
equals(GENERATE_SIS_TARGETS, true) {
baseTarget = $$symbianRemoveSpecialCharacters($$basename(TARGET))
+ template_pkg_target.target = $${baseTarget}_template.pkg
+ template_pkg_target.depends += $$_PRO_FILE_
+ template_pkg_target.commands = $(MAKE) -f $(MAKEFILE) qmake
+ installer_pkg_target.target = $${baseTarget}_installer.pkg
+ installer_pkg_target.depends += $$_PRO_FILE_
+ installer_pkg_target.commands = $(MAKE) -f $(MAKEFILE) qmake
+ stub_pkg_target.target = $${baseTarget}_stub.pkg
+ stub_pkg_target.depends += $$_PRO_FILE_
+ stub_pkg_target.commands = $(MAKE) -f $(MAKEFILE) qmake
+ QMAKE_EXTRA_TARGETS += template_pkg_target installer_pkg_target stub_pkg_target
+
symbian-abld|symbian-sbsv2 {
symbian-sbsv2 {
@@ -35,6 +46,7 @@ equals(GENERATE_SIS_TARGETS, true) {
, \
$(MAKE) -f $(MAKEFILE) fail_sis_nopkg \
)
+ sis_target.depends += $${baseTarget}_template.pkg
ok_sis_target.target = ok_sis
ok_sis_target.commands = createpackage $$CONVERT_GCCE_PARAM $(QT_SIS_OPTIONS) $${baseTarget}_template.pkg \
@@ -54,6 +66,7 @@ equals(GENERATE_SIS_TARGETS, true) {
, \
$(MAKE) -f $(MAKEFILE) fail_sis_nopkg \
)
+ unsigned_sis_target.depends += $${baseTarget}_template.pkg
ok_unsigned_sis_target.target = ok_unsigned_sis
ok_unsigned_sis_target.commands = createpackage $$CONVERT_GCCE_PARAM $(QT_SIS_OPTIONS) -o $${baseTarget}_template.pkg $(QT_SIS_TARGET)
@@ -67,7 +80,7 @@ equals(GENERATE_SIS_TARGETS, true) {
, \
$(MAKE) -f $(MAKEFILE) fail_sis_nopkg \
)
- installer_sis_target.depends = sis
+ installer_sis_target.depends = $${baseTarget}_installer.pkg sis
ok_installer_sis_target.target = ok_installer_sis
ok_installer_sis_target.commands = createpackage $(QT_SIS_OPTIONS) $${baseTarget}_installer.pkg - \
@@ -79,7 +92,7 @@ equals(GENERATE_SIS_TARGETS, true) {
, \
$(MAKE) -f $(MAKEFILE) fail_sis_nopkg \
)
- unsigned_installer_sis_target.depends = unsigned_sis
+ unsigned_installer_sis_target.depends = $${baseTarget}_installer.pkg unsigned_sis
ok_unsigned_installer_sis_target.target = ok_unsigned_installer_sis
ok_unsigned_installer_sis_target.commands = createpackage $(QT_SIS_OPTIONS) -o $${baseTarget}_installer.pkg
@@ -104,6 +117,7 @@ equals(GENERATE_SIS_TARGETS, true) {
, \
$(MAKE) -f $(MAKEFILE) fail_sis_nopkg \
)
+ stub_sis_target.depends += $${baseTarget}_stub.pkg
ok_stub_sis_target.target = ok_stub_sis
ok_stub_sis_target.commands = createpackage -s $(QT_SIS_OPTIONS) $${baseTarget}_stub.pkg \
@@ -154,11 +168,11 @@ equals(GENERATE_SIS_TARGETS, true) {
sis_target.target = sis
sis_target.commands = $$QMAKE_CREATEPACKAGE $(QT_SIS_OPTIONS) $${baseTarget}_template.pkg \
- $(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE)
- sis_target.depends = first
+ sis_target.depends = first $${baseTarget}_template.pkg
unsigned_sis_target.target = unsigned_sis
unsigned_sis_target.commands = $$QMAKE_CREATEPACKAGE $(QT_SIS_OPTIONS) -o $${baseTarget}_template.pkg
- unsigned_sis_target.depends = first
+ unsigned_sis_target.depends = first $${baseTarget}_template.pkg
target_sis_target.target = $${sis_destdir}/$${baseTarget}.sis
target_sis_target.commands = $(MAKE) -f $(MAKEFILE) sis
@@ -166,11 +180,11 @@ equals(GENERATE_SIS_TARGETS, true) {
installer_sis_target.target = installer_sis
installer_sis_target.commands = $$QMAKE_CREATEPACKAGE $(QT_SIS_OPTIONS) $${baseTarget}_installer.pkg - \
$(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE)
- installer_sis_target.depends = sis
+ installer_sis_target.depends = $${baseTarget}_installer.pkg sis
unsigned_installer_sis_target.target = unsigned_installer_sis
unsigned_installer_sis_target.commands = $$QMAKE_CREATEPACKAGE $(QT_SIS_OPTIONS) -o $${baseTarget}_installer.pkg
- unsigned_installer_sis_target.depends = unsigned_sis
+ unsigned_installer_sis_target.depends = $${baseTarget}_installer.pkg unsigned_sis
!isEmpty(sis_destdir):!equals(sis_destdir, "."):!equals(sis_destdir, "./") {
sis_target.commands += && $$QMAKE_MOVE $${baseTarget}.sis $$sis_destdir
diff --git a/mkspecs/features/symbian/stl.prf b/mkspecs/features/symbian/stl.prf
index 65d4b93af2..1fd5e16e32 100644
--- a/mkspecs/features/symbian/stl.prf
+++ b/mkspecs/features/symbian/stl.prf
@@ -12,7 +12,7 @@ INCLUDEPATH += $$OS_LAYER_STDCPP_SYSTEMINCLUDE
# Remove mkspecs/common/symbian/stl-off from beginning of includepath
# in order to use new and delete operators from STL
-INCLUDEPATH -= $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off
+INCLUDEPATH -= $$[QT_INSTALL_DATA]/mkspecs/common/symbian/stl-off
# libstdcppv5 is preferred over libstdcpp as it has/uses the throwing version of operator new
# STDCPP turns on standard C++ new behaviour (ie. throwing new)
diff --git a/mkspecs/features/symbian/symbian_building.prf b/mkspecs/features/symbian/symbian_building.prf
index 1a51cb27a0..0cedaa03ec 100644
--- a/mkspecs/features/symbian/symbian_building.prf
+++ b/mkspecs/features/symbian/symbian_building.prf
@@ -187,25 +187,28 @@ contains(TEMPLATE, app):!contains(QMAKE_LINK, "^@:.*") {
linux-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\\)
- contains(CONFIG, "qt"):contains(QT, "gui") { #if linking with QtCore
- QMAKE_LIBS -= -lqtmain$${QT_LIBINFIX}.lib
- QMAKE_LIBS += -lqtmain$${QT_LIBINFIX}.lib
+ contains(CONFIG, "qt") {
+ QMAKE_LIBS -= $$QMAKE_LIBS_QT_ENTRY
+ QMAKE_LIBS += $$QMAKE_LIBS_QT_ENTRY
} else {
- QMAKE_LIBS -= -llibcrt0.lib
- QMAKE_LIBS += -llibcrt0.lib
+ QMAKE_LIBS -= $$QMAKE_LIBS_NO_QT_ENTRY
+ QMAKE_LIBS += $$QMAKE_LIBS_NO_QT_ENTRY
}
} else :linux-gcce {
# notice that we can't merge these as ordering of arguments is important.
QMAKE_LIBS += \
-l:eexe.lib \
-l:usrt2_2.lib
- contains(CONFIG, "qt"):contains(QT, "gui") { #if linking with QtCore
- QMAKE_LIBS -= -l:qtmain$${QT_LIBINFIX}.lib
- QMAKE_LIBS += -l:qtmain$${QT_LIBINFIX}.lib
+ contains(CONFIG, "qt") {
+ modified_entry = $$replace(QMAKE_LIBS_QT_ENTRY, "^-l", "-l:")
+ QMAKE_LIBS -= $$modified_entry
+ QMAKE_LIBS += $$modified_entry
} else {
- QMAKE_LIBS -= -l:libcrt0.lib
- QMAKE_LIBS -= -l:libcrt0_gcce.lib
- QMAKE_LIBS += -l:libcrt0_gcce.lib
+ 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 \
diff --git a/mkspecs/linux-g++-maemo/qmake.conf b/mkspecs/linux-g++-maemo/qmake.conf
index a977e7ac42..0178f14d3e 100644
--- a/mkspecs/linux-g++-maemo/qmake.conf
+++ b/mkspecs/linux-g++-maemo/qmake.conf
@@ -21,10 +21,7 @@ QMAKE_LIBDIR_X11 = /usr/lib
QMAKE_LIBDIR_OPENGL = /usr/lib
# We still need to generate debug symbols in release mode to put into the *-dbg packages:
-QMAKE_CFLAGS_RELEASE += -g -fno-omit-frame-pointer -fno-optimize-sibling-calls
-QMAKE_CXXFLAGS_RELEASE += -g -fno-omit-frame-pointer -fno-optimize-sibling-calls
-
-# Work round PowerVR SGX 1.3 driver bug with glScissor & FBOs:
-DEFINES += QT_GL_NO_SCISSOR_TEST
+QMAKE_CFLAGS_RELEASE += -g -Wno-psabi
+QMAKE_CXXFLAGS_RELEASE += -g -Wno-psabi
load(qt_config)
diff --git a/mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm b/mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm
index 1338515014..2dc4028200 100644
--- a/mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm
+++ b/mkspecs/symbian-sbsv2/flm/qt/qmake_extra_pre_targetdep.flm
@@ -12,6 +12,10 @@ SINGLETON:=$(call sanitise,TARGET_$(PREDEP_TARGET))
$(call makepathfor,$(PREDEP_TARGET))
+ifeq ($(patsubst /epoc32/%,MATCH,$(firstword $(COMMAND))),MATCH)
+COMMAND:=$(EPOCROOT)$(COMMAND)
+endif
+
define qmake_extra_pre_targetdep
EXPORT:: $(PREDEP_TARGET)
diff --git a/mkspecs/win32-msvc2003/qmake.conf b/mkspecs/win32-msvc2003/qmake.conf
index 63d1ffda90..a573a4dd8c 100644
--- a/mkspecs/win32-msvc2003/qmake.conf
+++ b/mkspecs/win32-msvc2003/qmake.conf
@@ -53,7 +53,7 @@ QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
QMAKE_LINK = link
QMAKE_LFLAGS = /NOLOGO
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
-QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /INCREMENTAL:NO /DEBUG
+QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF
QMAKE_LFLAGS_DEBUG = /DEBUG
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS
diff --git a/mkspecs/win32-msvc2005/qmake.conf b/mkspecs/win32-msvc2005/qmake.conf
index 265d0287b5..aa58e3044c 100644
--- a/mkspecs/win32-msvc2005/qmake.conf
+++ b/mkspecs/win32-msvc2005/qmake.conf
@@ -55,7 +55,7 @@ QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
QMAKE_LINK = link
QMAKE_LFLAGS = /NOLOGO
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
-QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /INCREMENTAL:NO /DEBUG
+QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF
QMAKE_LFLAGS_DEBUG = /DEBUG
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS \"/MANIFESTDEPENDENCY:type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\' processorArchitecture=\'*\'\"
diff --git a/mkspecs/win32-msvc2008/qmake.conf b/mkspecs/win32-msvc2008/qmake.conf
index 1432645a9e..ee7b99ad74 100644
--- a/mkspecs/win32-msvc2008/qmake.conf
+++ b/mkspecs/win32-msvc2008/qmake.conf
@@ -57,7 +57,7 @@ QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
QMAKE_LINK = link
QMAKE_LFLAGS = /NOLOGO
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
-QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /INCREMENTAL:NO /DEBUG
+QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF
QMAKE_LFLAGS_DEBUG = /DEBUG
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS \"/MANIFESTDEPENDENCY:type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\' processorArchitecture=\'*\'\"
diff --git a/mkspecs/win32-msvc2010/qmake.conf b/mkspecs/win32-msvc2010/qmake.conf
index 84086e299c..44e460e6af 100644
--- a/mkspecs/win32-msvc2010/qmake.conf
+++ b/mkspecs/win32-msvc2010/qmake.conf
@@ -57,7 +57,7 @@ QMAKE_RUN_CXX_IMP_BATCH = $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$@ @<<
QMAKE_LINK = link
QMAKE_LFLAGS = /NOLOGO
QMAKE_LFLAGS_RELEASE = /INCREMENTAL:NO
-QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /INCREMENTAL:NO /DEBUG
+QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO = /DEBUG /OPT:REF
QMAKE_LFLAGS_DEBUG = /DEBUG
QMAKE_LFLAGS_CONSOLE = /SUBSYSTEM:CONSOLE
QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS \"/MANIFESTDEPENDENCY:type=\'win32\' name=\'Microsoft.Windows.Common-Controls\' version=\'6.0.0.0\' publicKeyToken=\'6595b64144ccf1df\' language=\'*\' processorArchitecture=\'*\'\"
diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix
index 8d56fc8d0f..d941dc4a15 100644
--- a/qmake/Makefile.unix
+++ b/qmake/Makefile.unix
@@ -68,7 +68,7 @@ CPPFLAGS = -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/ma
-I$(BUILD_PATH)/src/corelib/global -I$(BUILD_PATH)/src/corelib/xml \
-I$(SOURCE_PATH)/tools/shared \
-DQT_NO_PCRE \
- -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED \
+ -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL \
-DQT_NO_COMPRESS -I$(QMAKESPEC) -DHAVE_QCONFIG_CPP -DQT_NO_THREAD -DQT_NO_QOBJECT \
-DQT_NO_GEOM_VARIANT $(OPENSOURCE_CXXFLAGS)
diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32
index 4d0121c02b..c04bcb29a3 100644
--- a/qmake/Makefile.win32
+++ b/qmake/Makefile.win32
@@ -40,7 +40,8 @@ CFLAGS_BARE = -c -Fo./ \
-I$(SOURCE_PATH)\tools\shared \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL \
-DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP -DQT_BUILD_QMAKE -DQT_NO_THREAD \
- -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM -DQT_NO_PCRE -DQT_BOOTSTRAPPED
+ -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM -DQT_NO_PCRE -DQT_BOOTSTRAPPED \
+ -DQLIBRARYINFO_EPOCROOT
CFLAGS = -Yuqmake_pch.h -FIqmake_pch.h -Fpqmake_pch.pch $(CFLAGS_BARE) $(CFLAGS)
CXXFLAGS_BARE = $(CFLAGS_BARE)
diff --git a/qmake/Makefile.win32-g++ b/qmake/Makefile.win32-g++
index f313f9ef0b..29fbd0af7a 100644
--- a/qmake/Makefile.win32-g++
+++ b/qmake/Makefile.win32-g++
@@ -25,7 +25,7 @@ CFLAGS = -c -o$@ -O \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_PCRE \
-DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP \
-DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \
- -DQT_BOOTSTRAPPED
+ -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT
CXXFLAGS = $(CFLAGS)
LFLAGS = -static-libgcc -static-libstdc++ -s
LIBS = -lole32 -luuid
diff --git a/qmake/Makefile.win32-g++-sh b/qmake/Makefile.win32-g++-sh
index af5428877d..9c7942c3ca 100644
--- a/qmake/Makefile.win32-g++-sh
+++ b/qmake/Makefile.win32-g++-sh
@@ -25,7 +25,7 @@ CFLAGS = -c -o$@ -O \
-DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_PCRE \
-DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP \
-DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \
- -DQT_BOOTSTRAPPED
+ -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT
CXXFLAGS = $(CFLAGS)
LFLAGS = -static-libgcc -static-libstdc++ -s
LIBS = -lole32 -luuid
diff --git a/qmake/generators/symbian/initprojectdeploy_symbian.cpp b/qmake/generators/symbian/initprojectdeploy_symbian.cpp
index 776a6460d1..81236d40c2 100644
--- a/qmake/generators/symbian/initprojectdeploy_symbian.cpp
+++ b/qmake/generators/symbian/initprojectdeploy_symbian.cpp
@@ -47,7 +47,7 @@
#include <qdebug.h>
// Included from tools/shared
-#include <symbian/epocroot.h>
+#include <symbian/epocroot_p.h>
#define SYSBIN_DIR "/sys/bin"
#define HW_Z_DIR "epoc32/data/z"
@@ -59,7 +59,12 @@
static QString fixPathToEpocOS(const QString &src)
{
QString ret = Option::fixPathToTargetOS(src);
- return ret.replace('/', '\\');
+
+ bool pathHasDriveLetter = false;
+ if (ret.size() > 1)
+ pathHasDriveLetter = (ret.at(1) == QLatin1Char(':'));
+
+ return pathHasDriveLetter ? ret.replace('/', '\\') : QDir::toNativeSeparators(ret);
}
static bool isPlugin(const QFileInfo& info, const QString& devicePath)
@@ -70,7 +75,7 @@ static bool isPlugin(const QFileInfo& info, const QString& devicePath)
&& (devicePath.size() < 8
|| (0 != devicePath.compare(QLatin1String(SYSBIN_DIR), Qt::CaseInsensitive)
&& 0 != devicePath.mid(1).compare(QLatin1String(":" SYSBIN_DIR), Qt::CaseInsensitive)
- && 0 != devicePath.compare(epocRoot() + QLatin1String(HW_Z_DIR SYSBIN_DIR))))) {
+ && 0 != devicePath.compare(qt_epocRoot() + QLatin1String(HW_Z_DIR SYSBIN_DIR))))) {
return true;
} else {
return false;
@@ -177,7 +182,7 @@ void initProjectDeploySymbian(QMakeProject* project,
QString deploymentDrive;
if (0 == platform.compare(QLatin1String(ROM_DEPLOYMENT_PLATFORM))) {
- deploymentDrive = epocRoot() + HW_Z_DIR;
+ deploymentDrive = qt_epocRoot() + HW_Z_DIR;
} else {
deploymentDrive = targetPathHasDriveLetter ? targetPath.left(2) : QLatin1String("c:");
}
@@ -220,9 +225,9 @@ void initProjectDeploySymbian(QMakeProject* project,
} else {
if (0 == platform.compare(QLatin1String(EMULATOR_DEPLOYMENT_PLATFORM))) {
if (devicePathHasDriveLetter) {
- devicePath = epocRoot() + "epoc32/winscw/" + devicePath.remove(1, 1);
+ devicePath = qt_epocRoot() + "epoc32/winscw/" + devicePath.remove(1, 1);
} else {
- devicePath = epocRoot() + "epoc32/winscw/c" + devicePath;
+ devicePath = qt_epocRoot() + "epoc32/winscw/c" + devicePath;
}
} else {
if (devicePathHasDriveLetter
@@ -248,6 +253,8 @@ void initProjectDeploySymbian(QMakeProject* project,
continue;
}
+ QStringList flags = project->values(item + ".flags");
+
foreach(QString source, project->values(item + ".sources")) {
source = Option::fixPathToLocalOS(source);
QString nameFilter;
@@ -271,7 +278,7 @@ void initProjectDeploySymbian(QMakeProject* project,
// Executables and libraries are deployed to \sys\bin
QFileInfo targetPath;
if (epocBuild)
- targetPath.setFile(epocRoot() + "epoc32/release/" + platform + "/" + build + "/");
+ targetPath.setFile(qt_epocRoot() + "epoc32/release/" + platform + "/" + build + "/");
else
targetPath.setFile(info.path() + QDir::separator());
if(devicePathHasDriveLetter) {
@@ -279,13 +286,15 @@ void initProjectDeploySymbian(QMakeProject* project,
Option::fixPathToLocalOS(targetPath.absolutePath() + "/" + info.fileName(),
false, true),
fixPathToEpocOS(devicePath.left(2) + QLatin1String(SYSBIN_DIR "/")
- + info.fileName())));
+ + info.fileName()),
+ flags));
} else {
deploymentList.append(CopyItem(
Option::fixPathToLocalOS(targetPath.absolutePath() + "/" + info.fileName(),
false, true),
fixPathToEpocOS(deploymentDrive + QLatin1String("/" SYSBIN_DIR "/")
- + info.fileName())));
+ + info.fileName()),
+ flags));
}
}
if (isPlugin(info, devicePath)) {
@@ -296,7 +305,8 @@ void initProjectDeploySymbian(QMakeProject* project,
// Generate deployment even if file doesn't exist, as this may be the case
// when generating .pkg files.
deploymentList.append(CopyItem(Option::fixPathToLocalOS(info.absoluteFilePath()),
- fixPathToEpocOS(devicePath + "/" + info.fileName())));
+ fixPathToEpocOS(devicePath + "/" + info.fileName()),
+ flags));
continue;
}
}
@@ -323,12 +333,14 @@ void initProjectDeploySymbian(QMakeProject* project,
deploymentList.append(CopyItem(
Option::fixPathToLocalOS(absoluteItemPath + "/" + iterator.fileName()),
fixPathToEpocOS(devicePath.left(2) + QLatin1String(SYSBIN_DIR "/")
- + iterator.fileName())));
+ + iterator.fileName()),
+ flags));
} else {
deploymentList.append(CopyItem(
Option::fixPathToLocalOS(absoluteItemPath + "/" + iterator.fileName()),
fixPathToEpocOS(deploymentDrive + QLatin1String("/" SYSBIN_DIR "/")
- + iterator.fileName())));
+ + iterator.fileName()),
+ flags));
}
}
createPluginStub(info, devicePath + "/" + absoluteItemPath.right(diffSize),
@@ -338,7 +350,8 @@ void initProjectDeploySymbian(QMakeProject* project,
deploymentList.append(CopyItem(
Option::fixPathToLocalOS(absoluteItemPath + "/" + iterator.fileName()),
fixPathToEpocOS(devicePath + "/" + absoluteItemPath.right(diffSize)
- + "/" + iterator.fileName())));
+ + "/" + iterator.fileName()),
+ flags));
}
}
}
diff --git a/qmake/generators/symbian/initprojectdeploy_symbian.h b/qmake/generators/symbian/initprojectdeploy_symbian.h
index 2653d2a46f..bc17b0489f 100644
--- a/qmake/generators/symbian/initprojectdeploy_symbian.h
+++ b/qmake/generators/symbian/initprojectdeploy_symbian.h
@@ -56,9 +56,13 @@
struct CopyItem
{
- CopyItem(const QString& f, const QString& t) : from(f) , to(t) { }
+ CopyItem(const QString& f, const QString& t)
+ : from(f) , to(t) { }
+ CopyItem(const QString& f, const QString& t, const QStringList& l)
+ : from(f) , to(t), flags(l) { }
QString from;
QString to;
+ QStringList flags;
};
typedef QList<CopyItem> DeploymentList;
diff --git a/qmake/generators/symbian/symbian_makefile.h b/qmake/generators/symbian/symbian_makefile.h
index 94f01453c7..28a6206103 100644
--- a/qmake/generators/symbian/symbian_makefile.h
+++ b/qmake/generators/symbian/symbian_makefile.h
@@ -79,18 +79,18 @@ public:
}
}
+ SymbianLocalizationList symbianLocalizationList;
+ parseTsFiles(&symbianLocalizationList);
+
if (generatePkg) {
- generatePkgFile(iconFile, false);
+ generatePkgFile(iconFile, false, symbianLocalizationList);
}
- // Get the application translations and convert to symbian OS lang code, i.e. decical number
- QStringList symbianLangCodes = symbianLangCodesFromTsFiles();
-
if (targetType == TypeExe) {
if (!this->project->values("CONFIG").contains("no_icon", Qt::CaseInsensitive)) {
writeRegRssFile(userRssRules);
writeRssFile(numberOfIcons, iconFile);
- writeLocFile(symbianLangCodes);
+ writeLocFile(symbianLocalizationList);
}
}
diff --git a/qmake/generators/symbian/symbiancommon.cpp b/qmake/generators/symbian/symbiancommon.cpp
index 9af3fe4a26..602bcc29df 100644
--- a/qmake/generators/symbian/symbiancommon.cpp
+++ b/qmake/generators/symbian/symbiancommon.cpp
@@ -41,9 +41,10 @@
#include "symbiancommon.h"
#include <qdebug.h>
+#include <qxmlstream.h>
// Included from tools/shared
-#include <symbian/epocroot.h>
+#include <symbian/epocroot_p.h>
#define RESOURCE_DIRECTORY_RESOURCE "\\\\resource\\\\apps\\\\"
@@ -151,7 +152,9 @@ QString romPath(const QString& path)
return QLatin1String("z:") + path;
}
-void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocBuild)
+void SymbianCommonGenerator::generatePkgFile(const QString &iconFile,
+ bool epocBuild,
+ const SymbianLocalizationList &symbianLocalizationList)
{
QMakeProject *project = generator->project;
QString pkgFilename = Option::output_dir + QLatin1Char('/') +
@@ -204,47 +207,83 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB
tw << headerComment.arg(wrapperPkgFilename).arg(dateStr);
ts << headerComment.arg(stubPkgFileName).arg(dateStr);
- // Construct QStringList from pkg_prerules since we need search it before printed to file
- // Note: Though there can't be more than one language or header line, use stringlists
+ QStringList commonRawPreRules;
+ QStringList mainRawPreRules;
+ QStringList instRawPreRules;
+ QStringList stubRawPreRules;
+
+ // Though there can't be more than one language or header line, use stringlists
// in case user wants comments to go with the rules.
- QStringList rawPkgPreRules;
+ // Note that it makes no sense to have file specific language or header rules,
+ // except what is provided for installer header via "DEPLOYMENT.installer_header" variable,
+ // because stub and main headers should always match. Vendor rules are similarly limited to
+ // make code cleaner as it is unlikely anyone will want different vendor in different files.
QStringList languageRules;
QStringList headerRules;
- foreach(QString deploymentItem, project->values("DEPLOYMENT")) {
- foreach(QString pkgrulesItem, project->values(deploymentItem + ".pkg_prerules")) {
- QStringList pkgrulesValue = project->values(pkgrulesItem);
- // If there is no stringlist defined for a rule, use rule name directly
- // This is convenience for defining single line mmp statements
- if (pkgrulesValue.isEmpty()) {
- if (pkgrulesItem.startsWith("&"))
- languageRules << pkgrulesItem;
- else if (pkgrulesItem.startsWith("#"))
- headerRules << pkgrulesItem;
- else
- rawPkgPreRules << pkgrulesItem;
- } else {
- if (containsStartWithItem('&', pkgrulesValue)) {
- foreach(QString pkgrule, pkgrulesValue) {
- languageRules << pkgrule;
- }
- } else if (containsStartWithItem('#', pkgrulesValue)) {
- foreach(QString pkgrule, pkgrulesValue) {
- headerRules << pkgrule;
- }
- } else {
- foreach(QString pkgrule, pkgrulesValue) {
- rawPkgPreRules << pkgrule;
- }
- }
- }
+ QStringList vendorRules;
+
+ QStringList commonRawPostRules;
+ QStringList mainRawPostRules;
+ QStringList instRawPostRules;
+ QStringList stubRawPostRules;
+
+ QStringList failList; // Used for detecting incorrect usage
+
+ QString emptySuffix;
+ QString mainSuffix(".main");
+ QString instSuffix(".installer");
+ QString stubSuffix(".stub");
+
+ foreach(QString item, project->values("DEPLOYMENT")) {
+ parsePreRules(item, emptySuffix, &commonRawPreRules, &languageRules, &headerRules, &vendorRules);
+ parsePreRules(item, mainSuffix, &mainRawPreRules, &failList, &failList, &failList);
+ parsePreRules(item, instSuffix, &instRawPreRules, &failList, &failList, &failList);
+ parsePreRules(item, stubSuffix, &stubRawPreRules, &failList, &failList, &failList);
+
+ parsePostRules(item, emptySuffix, &commonRawPostRules);
+ parsePostRules(item, mainSuffix, &mainRawPostRules);
+ parsePostRules(item, instSuffix, &instRawPostRules);
+ parsePostRules(item, stubSuffix, &stubRawPostRules);
+ }
+
+ if (!failList.isEmpty()) {
+ fprintf(stderr, "Warning: Custom language, header, or vendor definitions are not "
+ "supported by file specific pkg_prerules.* variables.\n"
+ "Use plain pkg_prerules and/or DEPLOYMENT.installer_header for customizing "
+ "these items.\n");
+ }
+
+ foreach(QString item, commonRawPreRules) {
+ if (item.startsWith("(")) {
+ // Only regular pkg file should have package dependencies
+ mainRawPreRules << item;
+ } else if (item.startsWith("[")) {
+ // stub pkg file should not have platform dependencies
+ mainRawPreRules << item;
+ instRawPreRules << item;
+ } else {
+ mainRawPreRules << item;
+ instRawPreRules << item;
+ stubRawPreRules << item;
}
}
- // Apply some defaults if specific data does not exist in PKG pre-rules
+ // Currently common postrules only go to main
+ mainRawPostRules << commonRawPostRules;
+ // Apply some defaults if specific data does not exist in PKG pre-rules
if (languageRules.isEmpty()) {
- // language, (*** hardcoded to english atm, should be parsed from TRANSLATIONS)
- languageRules << "; Language\n&EN\n\n";
+ if (symbianLocalizationList.isEmpty()) {
+ languageRules << "; Language\n&EN\n\n";
+ } else {
+ QStringList langCodes;
+ SymbianLocalizationListIterator iter(symbianLocalizationList);
+ while (iter.hasNext()) {
+ const SymbianLocalization &loc = iter.next();
+ langCodes << loc.symbianLanguageCode;
+ }
+ languageRules << QString("; Languages\n&%1\n\n").arg(langCodes.join(","));
+ }
} else if (headerRules.isEmpty()) {
// In case user defines langs, he must take care also about SIS header
fprintf(stderr, "Warning: If language is defined with DEPLOYMENT pkg_prerules, also the SIS header must be defined\n");
@@ -293,10 +332,14 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB
// Package header
QString sisHeader = "; SIS header: name, uid, version\n#{\"%1\"},(%2),%3\n\n";
- QString visualTarget = generator->escapeFilePath(project->first("TARGET"));
- visualTarget = removePathSeparators(visualTarget);
- QString wrapperTarget = visualTarget + " installer";
+ QString defaultVisualTarget = project->values("DEPLOYMENT.display_name").join(" ");
+ if (defaultVisualTarget.isEmpty())
+ defaultVisualTarget = generator->escapeFilePath(project->first("TARGET"));
+ defaultVisualTarget = removePathSeparators(defaultVisualTarget);
+
+ QString visualTarget = generatePkgNameForHeader(symbianLocalizationList, defaultVisualTarget, false);
+ QString wrapperTarget = generatePkgNameForHeader(symbianLocalizationList, defaultVisualTarget, true);
if (installerSisHeader.startsWith("0x", Qt::CaseInsensitive)) {
tw << sisHeader.arg(wrapperTarget).arg(installerSisHeader).arg(applicationVersion);
@@ -313,49 +356,44 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB
ts << headerRules.join("\n") << endl;
}
- // Localized vendor name
- QString vendorName;
- if (!containsStartWithItem('%', rawPkgPreRules)) {
- vendorName += "; Localised Vendor name\n%{\"Vendor\"}\n\n";
+ // Vendor name
+ if (!containsStartWithItem('%', vendorRules)) {
+ QString vendorStr = QLatin1String("\"Vendor\",");
+ QString locVendors = vendorStr;
+ for (int i = 1; i < symbianLocalizationList.size(); i++) {
+ locVendors.append(vendorStr);
+ }
+ locVendors.chop(1);
+ vendorRules << QString("; Default localized vendor name\n%{%1}\n\n").arg(locVendors);
}
-
- // Unique vendor name
- if (!containsStartWithItem(':', rawPkgPreRules)) {
- vendorName += "; Unique Vendor name\n:\"Vendor\"\n\n";
+ if (!containsStartWithItem(':', vendorRules)) {
+ vendorRules << "; Default unique vendor name\n:\"Vendor\"\n\n";
}
- t << vendorName;
- tw << vendorName;
- ts << vendorName;
+ t << vendorRules.join("\n") << endl;
+ tw << vendorRules.join("\n") << endl;
+ ts << vendorRules.join("\n") << endl;
// PKG pre-rules - these are added before actual file installations i.e. SIS package body
- if (rawPkgPreRules.size()) {
- QString comment = "\n; Manual PKG pre-rules from PRO files\n";
+ QString comment = "\n; Manual PKG pre-rules from PRO files\n";
+
+ if (mainRawPreRules.size()) {
t << comment;
+ t << mainRawPreRules.join("\n") << endl;
+ }
+ if (instRawPreRules.size()) {
tw << comment;
+ tw << instRawPreRules.join("\n") << endl;
+ }
+ if (stubRawPreRules.size()) {
ts << comment;
-
- foreach(QString item, rawPkgPreRules) {
- // Only regular pkg file should have package dependencies
- if (item.startsWith("(")) {
- t << item << endl;
- }
- // stub pkg file should not have platform dependencies
- else if (item.startsWith("[")) {
- t << item << endl;
- tw << item << endl;
- }
- else {
- t << item << endl;
- ts << item << endl;
- tw << item << endl;
- }
- }
- t << endl;
- ts << endl;
- tw << endl;
+ ts << stubRawPreRules.join("\n") << endl;
}
+ t << endl;
+ tw << endl;
+ ts << endl;
+
// Begin Manufacturer block
if (!project->values("DEPLOYMENT.manufacturers").isEmpty()) {
QString manufacturerStr("IF ");
@@ -367,92 +405,19 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB
t << manufacturerStr << endl;
}
- // Install paths on the phone *** should be dynamic at some point
- QString installPathBin = "!:\\sys\\bin";
- QString installPathResource = "!:\\resource\\apps";
- QString installPathRegResource = "!:\\private\\10003a3f\\import\\apps";
-
- // Find location of builds
- QString destDirBin;
- QString destDirResource;
- QString destDirRegResource;
- if (epocBuild) {
- destDirBin = QString("%1epoc32/release/$(PLATFORM)/$(TARGET)").arg(epocRoot());
- destDirResource = QString("%1epoc32/data/z/resource/apps").arg(epocRoot());
- destDirRegResource = QString("%1epoc32/data/z/private/10003a3f/import/apps").arg(epocRoot());
- } else {
- destDirBin = project->first("DESTDIR");
- if (destDirBin.isEmpty())
- destDirBin = ".";
- else if (destDirBin.endsWith('/') || destDirBin.endsWith('\\'))
- destDirBin.chop(1);
- destDirResource = destDirBin;
- destDirRegResource = destDirBin;
- }
-
- if (targetType == TypeExe) {
- // deploy .exe file
- t << "; Executable and default resource files" << endl;
- QString exeFile = fixedTarget + ".exe";
- t << QString("\"%1/%2\" - \"%3\\%4\"")
- .arg(destDirBin)
- .arg(exeFile)
- .arg(installPathBin)
- .arg(exeFile) << endl;
- ts << QString("\"\" - \"%1\\%2\"")
- .arg(romPath(installPathBin))
- .arg(exeFile) << endl;
-
- // deploy rsc & reg_rsc file
- if (!project->isActiveConfig("no_icon")) {
- t << QString("\"%1/%2\" - \"%3\\%4\"")
- .arg(destDirResource)
- .arg(fixedTarget + ".rsc")
- .arg(installPathResource)
- .arg(fixedTarget + ".rsc") << endl;
- ts << QString("\"\" - \"%1\\%2\"")
- .arg(romPath(installPathResource))
- .arg(fixedTarget + ".rsc") << endl;
-
- t << QString("\"%1/%2\" - \"%3\\%4\"")
- .arg(destDirRegResource)
- .arg(fixedTarget + "_reg.rsc")
- .arg(installPathRegResource)
- .arg(fixedTarget + "_reg.rsc") << endl;
- ts << QString("\"\" - \"%1\\%2\"")
- .arg(romPath(installPathRegResource))
- .arg(fixedTarget + "_reg.rsc") << endl;
-
- if (!iconFile.isEmpty()) {
- if (epocBuild) {
- t << QString("\"%1epoc32/data/z%2\" - \"!:%3\"")
- .arg(epocRoot())
- .arg(iconFile)
- .arg(QDir::toNativeSeparators(iconFile)) << endl << endl;
- ts << QString("\"\" - \"%1\"")
- .arg(romPath(QDir::toNativeSeparators(iconFile))) << endl << endl;
- } else {
- QDir mifIconDir(project->first("DESTDIR"));
- QFileInfo mifIcon(mifIconDir.relativeFilePath(project->first("TARGET")));
- QString mifIconFileName = mifIcon.fileName();
- mifIconFileName.append(".mif");
- t << QString("\"%1/%2\" - \"!:%3\"")
- .arg(mifIcon.path())
- .arg(mifIconFileName)
- .arg(QDir::toNativeSeparators(iconFile)) << endl << endl;
- ts << QString("\"\" - \"%1\"")
- .arg(romPath(QDir::toNativeSeparators(iconFile))) << endl << endl;
- }
- }
- }
+ // ### FIXME: remove epocBuild check once makefile based mkspecs support localized resource generation
+ if (epocBuild && symbianLocalizationList.size()) {
+ // Add localized resources to DEPLOYMENT if default resource deployment is done
+ addLocalizedResourcesToDeployment("default_resource_deployment.sources", symbianLocalizationList);
+ addLocalizedResourcesToDeployment("default_reg_deployment.sources", symbianLocalizationList);
}
- // deploy any additional DEPLOYMENT files
+ // deploy files specified by DEPLOYMENT variable
QString remoteTestPath;
QString zDir;
remoteTestPath = QString("!:\\private\\%1").arg(privateDirUid);
if (epocBuild)
- zDir = epocRoot() + QLatin1String("epoc32/data/z");
+ zDir = qt_epocRoot() + QLatin1String("epoc32/data/z");
DeploymentList depList;
initProjectDeploySymbian(project, depList, remoteTestPath, true, epocBuild, "$(PLATFORM)", "$(TARGET)", generatedDirs, generatedFiles);
@@ -461,6 +426,15 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB
for (int i = 0; i < depList.size(); ++i) {
QString from = depList.at(i).from;
QString to = depList.at(i).to;
+ QString flags;
+ bool showOnlyFile = false;
+ foreach(QString flag, depList.at(i).flags) {
+ if (flag == QLatin1String("FT")
+ || flag == QLatin1String("FILETEXT")) {
+ showOnlyFile = true;
+ }
+ flags.append(QLatin1Char(',')).append(flag);
+ }
if (epocBuild) {
// Deploy anything not already deployed from under epoc32 instead from under
@@ -474,28 +448,33 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB
}
}
- t << QString("\"%1\" - \"%2\"").arg(from.replace('\\','/')).arg(to) << endl;
- ts << QString("\"\" - \"%1\"").arg(romPath(to)) << endl;
+ // Files with "FILETEXT"/"FT" flag are meant for showing only at installation time
+ // and therefore do not belong to the stub package and will not install the file into phone.
+ if (showOnlyFile)
+ to.clear();
+ else
+ ts << QString("\"\" - \"%1\"").arg(romPath(to)) << endl;
+
+ t << QString("\"%1\" - \"%2\"%3").arg(from.replace('\\','/')).arg(to).arg(flags) << endl;
+
}
t << endl;
ts << endl;
// PKG post-rules - these are added after actual file installations i.e. SIS package body
- t << "; Manual PKG post-rules from PRO files" << endl;
- foreach(QString deploymentItem, project->values("DEPLOYMENT")) {
- foreach(QString pkgrulesItem, project->values(deploymentItem + ".pkg_postrules")) {
- QStringList pkgrulesValue = project->values(pkgrulesItem);
- // If there is no stringlist defined for a rule, use rule name directly
- // This is convenience for defining single line statements
- if (pkgrulesValue.isEmpty()) {
- t << pkgrulesItem << endl;
- } else {
- foreach(QString pkgrule, pkgrulesValue) {
- t << pkgrule << endl;
- }
- }
- t << endl;
- }
+ comment = "; Manual PKG post-rules from PRO files\n";
+
+ if (mainRawPostRules.size()) {
+ t << comment;
+ t << mainRawPostRules.join("\n") << endl;
+ }
+ if (instRawPostRules.size()) {
+ tw << comment;
+ tw << instRawPostRules.join("\n") << endl;
+ }
+ if (stubRawPostRules.size()) {
+ ts << comment;
+ ts << stubRawPostRules.join("\n") << endl;
}
// Close Manufacturer block
@@ -681,16 +660,18 @@ void SymbianCommonGenerator::writeRssFile(QString &numberOfIcons, QString &iconF
}
}
-void SymbianCommonGenerator::writeLocFile(QStringList &symbianLangCodes)
+void SymbianCommonGenerator::writeLocFile(const SymbianLocalizationList &symbianLocalizationList)
{
- QString filename(fixedTarget);
- if (!Option::output_dir.isEmpty())
- filename = Option::output_dir + '/' + filename;
- filename.append(".loc");
+ QString filename = generateLocFileName();
QFile ft(filename);
if (ft.open(QIODevice::WriteOnly)) {
generatedFiles << ft.fileName();
QTextStream t(&ft);
+
+ QString displayName = generator->project->values("DEPLOYMENT.display_name").join(" ");
+ if (displayName.isEmpty())
+ displayName = generator->escapeFilePath(generator->project->first("TARGET"));
+
t << "// ============================================================================" << endl;
t << "// * Generated by qmake (" << qmake_version() << ") (Qt " QT_VERSION_STR ") on: ";
t << QDateTime::currentDateTime().toString(Qt::ISODate) << endl;
@@ -699,16 +680,27 @@ void SymbianCommonGenerator::writeLocFile(QStringList &symbianLangCodes)
t << "// ============================================================================" << endl;
t << endl;
t << "#ifdef LANGUAGE_SC" << endl;
- t << "#define STRING_r_short_caption \"" << fixedTarget << "\"" << endl;
- t << "#define STRING_r_caption \"" << fixedTarget << "\"" << endl;
- foreach(QString lang, symbianLangCodes) {
- t << "#elif defined LANGUAGE_" << lang << endl;
- t << "#define STRING_r_short_caption \"" << fixedTarget << "\"" << endl;
- t << "#define STRING_r_caption \"" << fixedTarget << "\"" << endl;
+ t << "#define STRING_r_short_caption \"" << displayName << "\"" << endl;
+ t << "#define STRING_r_caption \"" << displayName << "\"" << endl;
+
+ SymbianLocalizationListIterator iter(symbianLocalizationList);
+ while (iter.hasNext()) {
+ const SymbianLocalization &loc = iter.next();
+ QString shortCaption = loc.shortCaption;
+ QString longCaption = loc.longCaption;
+ if (shortCaption.isEmpty())
+ shortCaption = displayName;
+ if (longCaption.isEmpty())
+ longCaption = displayName;
+
+ t << "#elif defined LANGUAGE_" << loc.symbianLanguageCode << endl;
+ t << "#define STRING_r_short_caption \"" << shortCaption << "\"" << endl;
+ t << "#define STRING_r_caption \"" << longCaption << "\"" << endl;
}
+
t << "#else" << endl;
- t << "#define STRING_r_short_caption \"" << fixedTarget << "\"" << endl;
- t << "#define STRING_r_caption \"" << fixedTarget << "\"" << endl;
+ t << "#define STRING_r_short_caption \"" << displayName << "\"" << endl;
+ t << "#define STRING_r_caption \"" << displayName << "\"" << endl;
t << "#endif" << endl;
} else {
PRINT_FILE_CREATE_ERROR(filename);
@@ -742,7 +734,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];
@@ -751,7 +743,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];
@@ -846,194 +838,291 @@ void SymbianCommonGenerator::writeCustomDefFile()
}
}
-QStringList SymbianCommonGenerator::symbianLangCodesFromTsFiles()
+void SymbianCommonGenerator::parseTsFiles(SymbianLocalizationList *symbianLocalizationList)
{
- QStringList tsfiles;
- QStringList symbianLangCodes;
- tsfiles << generator->project->values("TRANSLATIONS");
+ if (!generator->project->isActiveConfig("localize_deployment")) {
+ return;
+ }
- fillQt2S60LangMapTable();
+ QStringList symbianTsFiles;
- foreach(QString file, tsfiles) {
- int extIndex = file.lastIndexOf(".");
- int langIndex = file.lastIndexOf("_", (extIndex - file.length()));
- langIndex += 1;
- QString qtlang = file.mid(langIndex, extIndex - langIndex);
- QString s60lang = qt2S60LangMapTable.value(qtlang, QString("SC"));
+ symbianTsFiles << generator->project->values("SYMBIAN_MATCHED_TRANSLATIONS");
- if (!symbianLangCodes.contains(s60lang) && s60lang != "SC")
- symbianLangCodes += s60lang;
+ if (!symbianTsFiles.isEmpty()) {
+ fillQt2SymbianLocalizationList(symbianLocalizationList);
+
+ QMutableListIterator<SymbianLocalization> iter(*symbianLocalizationList);
+ while (iter.hasNext()) {
+ SymbianLocalization &loc = iter.next();
+ static QString matchStrTemplate = QLatin1String(".*_%1\\.ts");
+ QString matchStr = matchStrTemplate.arg(loc.qtLanguageCode);
+
+ foreach (QString file, symbianTsFiles) {
+ QRegExp matcher(matchStr);
+ if (matcher.exactMatch(file) && parseTsContent(file, &loc))
+ break;
+ }
+ }
+ }
+}
+
+void SymbianCommonGenerator::fillQt2SymbianLocalizationList(SymbianLocalizationList *symbianLocalizationList)
+{
+ static QString symbianCodePrefix = QLatin1String("SYMBIAN_LANG.");
+
+ QStringList symbianLanguages = generator->project->values("SYMBIAN_MATCHED_LANGUAGES");
+
+ foreach (QString qtCode, symbianLanguages) {
+ SymbianLocalization newLoc;
+ QString symbianCodeVariable = symbianCodePrefix + qtCode;
+ newLoc.symbianLanguageCode = generator->project->first(symbianCodeVariable);
+ if (!newLoc.symbianLanguageCode.isEmpty()) {
+ newLoc.qtLanguageCode = qtCode;
+ symbianLocalizationList->append(newLoc);
+ }
+ }
+}
+
+void SymbianCommonGenerator::parsePreRules(const QString &deploymentVariable,
+ const QString &variableSuffix,
+ QStringList *rawRuleList,
+ QStringList *languageRuleList,
+ QStringList *headerRuleList,
+ QStringList *vendorRuleList)
+{
+ QMakeProject *project = generator->project;
+ foreach(QString pkgrulesItem, project->values(deploymentVariable + ".pkg_prerules" + variableSuffix)) {
+ QStringList pkgrulesValue = project->values(pkgrulesItem);
+ // If there is no stringlist defined for a rule, use rule name directly
+ // This is convenience for defining single line statements
+ if (pkgrulesValue.isEmpty()) {
+ if (pkgrulesItem.startsWith("&"))
+ *languageRuleList << pkgrulesItem;
+ else if (pkgrulesItem.startsWith("#"))
+ *headerRuleList << pkgrulesItem;
+ else if (pkgrulesItem.startsWith("%") || pkgrulesItem.startsWith(":"))
+ *vendorRuleList << pkgrulesItem;
+ else
+ *rawRuleList << pkgrulesItem;
+ } else {
+ if (containsStartWithItem('&', pkgrulesValue)) {
+ foreach(QString pkgrule, pkgrulesValue) {
+ *languageRuleList << pkgrule;
+ }
+ } else if (containsStartWithItem('#', pkgrulesValue)) {
+ foreach(QString pkgrule, pkgrulesValue) {
+ *headerRuleList << pkgrule;
+ }
+ } else if (containsStartWithItem('%', pkgrulesValue)
+ || containsStartWithItem(':', pkgrulesValue)) {
+ foreach(QString pkgrule, pkgrulesValue) {
+ *vendorRuleList << pkgrule;
+ }
+ } else {
+ foreach(QString pkgrule, pkgrulesValue) {
+ *rawRuleList << pkgrule;
+ }
+ }
+ }
+ }
+}
+
+void SymbianCommonGenerator::parsePostRules(const QString &deploymentVariable,
+ const QString &variableSuffix,
+ QStringList *rawRuleList)
+{
+ QMakeProject *project = generator->project;
+ foreach(QString pkgrulesItem, project->values(deploymentVariable + ".pkg_postrules" + variableSuffix)) {
+ QStringList pkgrulesValue = project->values(pkgrulesItem);
+ // If there is no stringlist defined for a rule, use rule name directly
+ // This is convenience for defining single line statements
+ if (pkgrulesValue.isEmpty()) {
+ *rawRuleList << pkgrulesItem;
+ } else {
+ foreach(QString pkgrule, pkgrulesValue) {
+ *rawRuleList << pkgrule;
+ }
+ }
+ }
+}
+
+bool SymbianCommonGenerator::parseTsContent(const QString &tsFilename, SymbianLocalization *loc)
+{
+ bool retval = true;
+ QMakeProject *project = generator->project;
+ QFile tsFile(tsFilename);
+
+ if (tsFile.exists()) {
+ if (tsFile.open(QIODevice::ReadOnly)) {
+ static QString applicationCaptionsContext = QLatin1String("QtApplicationCaptions");
+ static QString pkgNameContext = QLatin1String("QtPackageNames");
+ static QString tsElement = QLatin1String("TS");
+ static QString contextElement = QLatin1String("context");
+ static QString nameElement = QLatin1String("name");
+ static QString messageElement = QLatin1String("message");
+ static QString sourceElement = QLatin1String("source");
+ static QString translationElement = QLatin1String("translation");
+ static QString shortCaptionId = QLatin1String("Application short caption");
+ static QString longCaptionId = QLatin1String("Application long caption");
+ static QString pkgDisplayNameId = QLatin1String("Package name");
+ static QString installerPkgDisplayNameId = QLatin1String("Smart installer package name");
+ static QString languageAttribute = QLatin1String("language");
+ static QChar underscoreChar = QLatin1Char('_');
+
+ enum CurrentContext {
+ ContextUnknown,
+ ContextUninteresting,
+ ContextInteresting
+ };
+
+ QXmlStreamReader xml(&tsFile);
+
+ while (xml.name() != tsElement)
+ xml.readNextStartElement();
+
+ while (xml.readNextStartElement()) {
+ if (xml.name() == contextElement) {
+ CurrentContext currentContext = ContextUnknown;
+ while (xml.readNextStartElement()) {
+ if (currentContext == ContextUnknown) {
+ // Expect name element before message elements
+ if (xml.name() == nameElement) {
+ QString nameText = xml.readElementText();
+ if (nameText == applicationCaptionsContext || nameText == pkgNameContext) {
+ currentContext = ContextInteresting;
+ } else {
+ currentContext = ContextUninteresting;
+ }
+ } else {
+ xml.skipCurrentElement();
+ }
+ } else if (currentContext == ContextInteresting) {
+ if (xml.name() == messageElement) {
+ QString source;
+ QString translation;
+ while (xml.readNextStartElement()) {
+ if (xml.name() == sourceElement) {
+ source = xml.readElementText();
+ } else if (xml.name() == translationElement) {
+ translation = xml.readElementText();
+ } else {
+ xml.skipCurrentElement();
+ }
+ }
+
+ if (source == shortCaptionId) {
+ if (loc->shortCaption.isEmpty()) {
+ loc->shortCaption = translation;
+ } else {
+ fprintf(stderr, "Warning: Duplicate application short caption defined in (%s).\n",
+ qPrintable(tsFilename));
+ }
+ } else if (source == longCaptionId) {
+ if (loc->longCaption.isEmpty()) {
+ loc->longCaption = translation;
+ } else {
+ fprintf(stderr, "Warning: Duplicate application long caption defined in (%s).\n",
+ qPrintable(tsFilename));
+ }
+ } else if (source == pkgDisplayNameId) {
+ if (loc->pkgDisplayName.isEmpty()) {
+ loc->pkgDisplayName = translation;
+ } else {
+ fprintf(stderr, "Warning: Duplicate package display name defined in (%s).\n",
+ qPrintable(tsFilename));
+ }
+ } else if (source == installerPkgDisplayNameId) {
+ if (loc->installerPkgDisplayName.isEmpty()) {
+ loc->installerPkgDisplayName = translation;
+ } else {
+ fprintf(stderr, "Warning: Duplicate smart installer package display name defined in (%s).\n",
+ qPrintable(tsFilename));
+ }
+ }
+ } else {
+ xml.skipCurrentElement();
+ }
+ } else {
+ xml.skipCurrentElement();
+ }
+ }
+ } else {
+ xml.skipCurrentElement();
+ }
+ }
+ if (xml.hasError()) {
+ retval = false;
+ fprintf(stderr, "ERROR: Encountered error \"%s\" when parsing ts file (%s).\n",
+ qPrintable(xml.errorString()), qPrintable(tsFilename));
+ }
+ } else {
+ retval = false;
+ fprintf(stderr, "Warning: Could not open ts file (%s).\n", qPrintable(tsFilename));
+ }
+ } else {
+ retval = false;
+ fprintf(stderr, "Warning: ts file does not exist: (%s), unable to parse it.\n",
+ qPrintable(tsFilename));
}
- return symbianLangCodes;
+ return retval;
}
-void SymbianCommonGenerator::fillQt2S60LangMapTable()
+QString SymbianCommonGenerator::generatePkgNameForHeader(const SymbianLocalizationList &symbianLocalizationList,
+ const QString &defaultName,
+ bool isForSmartInstaller)
{
- qt2S60LangMapTable.reserve(170); // 165 items at time of writing.
- qt2S60LangMapTable.insert("ab", "SC"); //Abkhazian //
- qt2S60LangMapTable.insert("om", "SC"); //Afan //
- qt2S60LangMapTable.insert("aa", "SC"); //Afar //
- qt2S60LangMapTable.insert("af", "34"); //Afrikaans //Afrikaans
- qt2S60LangMapTable.insert("sq", "35"); //Albanian //Albanian
- qt2S60LangMapTable.insert("am", "36"); //Amharic //Amharic
- qt2S60LangMapTable.insert("ar", "37"); //Arabic //Arabic
- qt2S60LangMapTable.insert("hy", "38"); //Armenian //Armenian
- qt2S60LangMapTable.insert("as", "SC"); //Assamese //
- qt2S60LangMapTable.insert("ay", "SC"); //Aymara //
- qt2S60LangMapTable.insert("az", "SC"); //Azerbaijani //
- qt2S60LangMapTable.insert("ba", "SC"); //Bashkir //
- qt2S60LangMapTable.insert("eu", "SC"); //Basque //
- qt2S60LangMapTable.insert("bn", "41"); //Bengali //Bengali
- qt2S60LangMapTable.insert("dz", "SC"); //Bhutani //
- qt2S60LangMapTable.insert("bh", "SC"); //Bihari //
- qt2S60LangMapTable.insert("bi", "SC"); //Bislama //
- qt2S60LangMapTable.insert("br", "SC"); //Breton //
- qt2S60LangMapTable.insert("bg", "42"); //Bulgarian //Bulgarian
- qt2S60LangMapTable.insert("my", "43"); //Burmese //Burmese
- qt2S60LangMapTable.insert("be", "40"); //Byelorussian //Belarussian
- qt2S60LangMapTable.insert("km", "SC"); //Cambodian //
- qt2S60LangMapTable.insert("ca", "44"); //Catalan //Catalan
- qt2S60LangMapTable.insert("zh", "SC"); //Chinese //
- qt2S60LangMapTable.insert("co", "SC"); //Corsican //
- qt2S60LangMapTable.insert("hr", "45"); //Croatian //Croatian
- qt2S60LangMapTable.insert("cs", "25"); //Czech //Czech
- qt2S60LangMapTable.insert("da", "07"); //Danish //Danish
- qt2S60LangMapTable.insert("nl", "18"); //Dutch //Dutch
- qt2S60LangMapTable.insert("en", "01"); //English //English(UK)
- qt2S60LangMapTable.insert("eo", "SC"); //Esperanto //
- qt2S60LangMapTable.insert("et", "49"); //Estonian //Estonian
- qt2S60LangMapTable.insert("fo", "SC"); //Faroese //
- qt2S60LangMapTable.insert("fj", "SC"); //Fiji //
- qt2S60LangMapTable.insert("fi", "09"); //Finnish //Finnish
- qt2S60LangMapTable.insert("fr", "02"); //French //French
- qt2S60LangMapTable.insert("fy", "SC"); //Frisian //
- qt2S60LangMapTable.insert("gd", "52"); //Gaelic //Gaelic
- qt2S60LangMapTable.insert("gl", "SC"); //Galician //
- qt2S60LangMapTable.insert("ka", "53"); //Georgian //Georgian
- qt2S60LangMapTable.insert("de", "03"); //German //German
- qt2S60LangMapTable.insert("el", "54"); //Greek //Greek
- qt2S60LangMapTable.insert("kl", "SC"); //Greenlandic //
- qt2S60LangMapTable.insert("gn", "SC"); //Guarani //
- qt2S60LangMapTable.insert("gu", "56"); //Gujarati //Gujarati
- qt2S60LangMapTable.insert("ha", "SC"); //Hausa //
- qt2S60LangMapTable.insert("he", "57"); //Hebrew //Hebrew
- qt2S60LangMapTable.insert("hi", "58"); //Hindi //Hindi
- qt2S60LangMapTable.insert("hu", "17"); //Hungarian //Hungarian
- qt2S60LangMapTable.insert("is", "15"); //Icelandic //Icelandic
- qt2S60LangMapTable.insert("id", "59"); //Indonesian //Indonesian
- qt2S60LangMapTable.insert("ia", "SC"); //Interlingua //
- qt2S60LangMapTable.insert("ie", "SC"); //Interlingue //
- qt2S60LangMapTable.insert("iu", "SC"); //Inuktitut //
- qt2S60LangMapTable.insert("ik", "SC"); //Inupiak //
- qt2S60LangMapTable.insert("ga", "60"); //Irish //Irish
- qt2S60LangMapTable.insert("it", "05"); //Italian //Italian
- qt2S60LangMapTable.insert("ja", "32"); //Japanese //Japanese
- qt2S60LangMapTable.insert("jv", "SC"); //Javanese //
- qt2S60LangMapTable.insert("kn", "62"); //Kannada //Kannada
- qt2S60LangMapTable.insert("ks", "SC"); //Kashmiri //
- qt2S60LangMapTable.insert("kk", "63"); //Kazakh //Kazakh
- qt2S60LangMapTable.insert("rw", "SC"); //Kinyarwanda //
- qt2S60LangMapTable.insert("ky", "SC"); //Kirghiz //
- qt2S60LangMapTable.insert("ko", "65"); //Korean //Korean
- qt2S60LangMapTable.insert("ku", "SC"); //Kurdish //
- qt2S60LangMapTable.insert("rn", "SC"); //Kurundi //
- qt2S60LangMapTable.insert("lo", "66"); //Laothian //Laothian
- qt2S60LangMapTable.insert("la", "SC"); //Latin //
- qt2S60LangMapTable.insert("lv", "67"); //Latvian //Latvian
- qt2S60LangMapTable.insert("ln", "SC"); //Lingala //
- qt2S60LangMapTable.insert("lt", "68"); //Lithuanian //Lithuanian
- qt2S60LangMapTable.insert("mk", "69"); //Macedonian //Macedonian
- qt2S60LangMapTable.insert("mg", "SC"); //Malagasy //
- qt2S60LangMapTable.insert("ms", "70"); //Malay //Malay
- qt2S60LangMapTable.insert("ml", "71"); //Malayalam //Malayalam
- qt2S60LangMapTable.insert("mt", "SC"); //Maltese //
- qt2S60LangMapTable.insert("mi", "SC"); //Maori //
- qt2S60LangMapTable.insert("mr", "72"); //Marathi //Marathi
- qt2S60LangMapTable.insert("mo", "73"); //Moldavian //Moldovian
- qt2S60LangMapTable.insert("mn", "74"); //Mongolian //Mongolian
- qt2S60LangMapTable.insert("na", "SC"); //Nauru //
- qt2S60LangMapTable.insert("ne", "SC"); //Nepali //
- qt2S60LangMapTable.insert("nb", "08"); //Norwegian //Norwegian
- qt2S60LangMapTable.insert("oc", "SC"); //Occitan //
- qt2S60LangMapTable.insert("or", "SC"); //Oriya //
- qt2S60LangMapTable.insert("ps", "SC"); //Pashto //
- qt2S60LangMapTable.insert("fa", "SC"); //Persian //
- qt2S60LangMapTable.insert("pl", "27"); //Polish //Polish
- qt2S60LangMapTable.insert("pt", "13"); //Portuguese //Portuguese
- qt2S60LangMapTable.insert("pa", "77"); //Punjabi //Punjabi
- qt2S60LangMapTable.insert("qu", "SC"); //Quechua //
- qt2S60LangMapTable.insert("rm", "SC"); //RhaetoRomance //
- qt2S60LangMapTable.insert("ro", "78"); //Romanian //Romanian
- qt2S60LangMapTable.insert("ru", "16"); //Russian //Russian
- qt2S60LangMapTable.insert("sm", "SC"); //Samoan //
- qt2S60LangMapTable.insert("sg", "SC"); //Sangho //
- qt2S60LangMapTable.insert("sa", "SC"); //Sanskrit //
- qt2S60LangMapTable.insert("sr", "79"); //Serbian //Serbian
- qt2S60LangMapTable.insert("sh", "SC"); //SerboCroatian //
- qt2S60LangMapTable.insert("st", "SC"); //Sesotho //
- qt2S60LangMapTable.insert("tn", "SC"); //Setswana //
- qt2S60LangMapTable.insert("sn", "SC"); //Shona //
- qt2S60LangMapTable.insert("sd", "SC"); //Sindhi //
- qt2S60LangMapTable.insert("si", "80"); //Singhalese //Sinhalese
- qt2S60LangMapTable.insert("ss", "SC"); //Siswati //
- qt2S60LangMapTable.insert("sk", "26"); //Slovak //Slovak
- qt2S60LangMapTable.insert("sl", "28"); //Slovenian //Slovenian
- qt2S60LangMapTable.insert("so", "81"); //Somali //Somali
- qt2S60LangMapTable.insert("es", "04"); //Spanish //Spanish
- qt2S60LangMapTable.insert("su", "SC"); //Sundanese //
- qt2S60LangMapTable.insert("sw", "84"); //Swahili //Swahili
- qt2S60LangMapTable.insert("sv", "06"); //Swedish //Swedish
- qt2S60LangMapTable.insert("tl", "39"); //Tagalog //Tagalog
- qt2S60LangMapTable.insert("tg", "SC"); //Tajik //
- qt2S60LangMapTable.insert("ta", "87"); //Tamil //Tamil
- qt2S60LangMapTable.insert("tt", "SC"); //Tatar //
- qt2S60LangMapTable.insert("te", "88"); //Telugu //Telugu
- qt2S60LangMapTable.insert("th", "33"); //Thai //Thai
- qt2S60LangMapTable.insert("bo", "89"); //Tibetan //Tibetan
- qt2S60LangMapTable.insert("ti", "90"); //Tigrinya //Tigrinya
- qt2S60LangMapTable.insert("to", "SC"); //Tonga //
- qt2S60LangMapTable.insert("ts", "SC"); //Tsonga //
- qt2S60LangMapTable.insert("tr", "14"); //Turkish //Turkish
- qt2S60LangMapTable.insert("tk", "92"); //Turkmen //Turkmen
- qt2S60LangMapTable.insert("tw", "SC"); //Twi //
- qt2S60LangMapTable.insert("ug", "SC"); //Uigur //
- qt2S60LangMapTable.insert("uk", "93"); //Ukrainian //Ukrainian
- qt2S60LangMapTable.insert("ur", "94"); //Urdu //Urdu
- qt2S60LangMapTable.insert("uz", "SC"); //Uzbek //
- qt2S60LangMapTable.insert("vi", "96"); //Vietnamese //Vietnamese
- qt2S60LangMapTable.insert("vo", "SC"); //Volapuk //
- qt2S60LangMapTable.insert("cy", "97"); //Welsh //Welsh
- qt2S60LangMapTable.insert("wo", "SC"); //Wolof //
- qt2S60LangMapTable.insert("xh", "SC"); //Xhosa //
- qt2S60LangMapTable.insert("yi", "SC"); //Yiddish //
- qt2S60LangMapTable.insert("yo", "SC"); //Yoruba //
- qt2S60LangMapTable.insert("za", "SC"); //Zhuang //
- qt2S60LangMapTable.insert("zu", "98"); //Zulu //Zulu
- qt2S60LangMapTable.insert("nn", "75"); //Nynorsk //NorwegianNynorsk
- qt2S60LangMapTable.insert("bs", "SC"); //Bosnian //
- qt2S60LangMapTable.insert("dv", "SC"); //Divehi //
- qt2S60LangMapTable.insert("gv", "SC"); //Manx //
- qt2S60LangMapTable.insert("kw", "SC"); //Cornish //
- qt2S60LangMapTable.insert("ak", "SC"); //Akan //
- qt2S60LangMapTable.insert("kok", "SC"); //Konkani //
- qt2S60LangMapTable.insert("gaa", "SC"); //Ga //
- qt2S60LangMapTable.insert("ig", "SC"); //Igbo //
- qt2S60LangMapTable.insert("kam", "SC"); //Kamba //
- qt2S60LangMapTable.insert("syr", "SC"); //Syriac //
- qt2S60LangMapTable.insert("byn", "SC"); //Blin //
- qt2S60LangMapTable.insert("gez", "SC"); //Geez //
- qt2S60LangMapTable.insert("kfo", "SC"); //Koro //
- qt2S60LangMapTable.insert("sid", "SC"); //Sidamo //
- qt2S60LangMapTable.insert("cch", "SC"); //Atsam //
- qt2S60LangMapTable.insert("tig", "SC"); //Tigre //
- qt2S60LangMapTable.insert("kaj", "SC"); //Jju //
- qt2S60LangMapTable.insert("fur", "SC"); //Friulian //
- qt2S60LangMapTable.insert("ve", "SC"); //Venda //
- qt2S60LangMapTable.insert("ee", "SC"); //Ewe //
- qt2S60LangMapTable.insert("wa", "SC"); //Walamo //
- qt2S60LangMapTable.insert("haw", "SC"); //Hawaiian //
- qt2S60LangMapTable.insert("kcg", "SC"); //Tyap //
- qt2S60LangMapTable.insert("ny", "SC"); //Chewa //
+ QStringList allNames;
+ QString noTranslation = defaultName;
+
+ if (isForSmartInstaller)
+ noTranslation += QLatin1String(" installer");
+
+ SymbianLocalizationListIterator iter(symbianLocalizationList);
+ while (iter.hasNext()) {
+ const SymbianLocalization &loc = iter.next();
+ QString currentName;
+ if (isForSmartInstaller) {
+ currentName = loc.installerPkgDisplayName;
+ } else {
+ currentName = loc.pkgDisplayName;
+ }
+
+ if (currentName.isEmpty())
+ currentName = noTranslation;
+
+ allNames << currentName;
+ }
+
+ if (!allNames.size())
+ allNames << noTranslation;
+
+ return allNames.join("\",\"");
+
}
+void SymbianCommonGenerator::addLocalizedResourcesToDeployment(const QString &deploymentFilesVar,
+ const SymbianLocalizationList &symbianLocalizationList)
+{
+ QStringList locResources;
+ foreach (QString defaultResource, generator->project->values(deploymentFilesVar)) {
+ if (defaultResource.endsWith(".rsc")) {
+ defaultResource.chop(2);
+ SymbianLocalizationListIterator iter(symbianLocalizationList);
+ while (iter.hasNext()) {
+ const SymbianLocalization &loc = iter.next();
+ locResources << QString(defaultResource + loc.symbianLanguageCode);
+ }
+ }
+ }
+ generator->project->values(deploymentFilesVar) << locResources;
+}
+
+QString SymbianCommonGenerator::generateLocFileName()
+{
+ QString fileName(fixedTarget);
+ if (!Option::output_dir.isEmpty())
+ fileName = Option::output_dir + QLatin1Char('/') + fileName;
+ fileName.append(".loc");
+ return fileName;
+}
diff --git a/qmake/generators/symbian/symbiancommon.h b/qmake/generators/symbian/symbiancommon.h
index dae1e4aa50..1db5890448 100644
--- a/qmake/generators/symbian/symbiancommon.h
+++ b/qmake/generators/symbian/symbiancommon.h
@@ -48,6 +48,20 @@
#define PRINT_FILE_CREATE_ERROR(filename) fprintf(stderr, "Error: Could not create '%s'\n", qPrintable(filename));
+class SymbianLocalization
+{
+public:
+ QString qtLanguageCode;
+ QString symbianLanguageCode;
+ QString shortCaption;
+ QString longCaption;
+ QString pkgDisplayName;
+ QString installerPkgDisplayName;
+};
+
+typedef QList<SymbianLocalization> SymbianLocalizationList;
+typedef QListIterator<SymbianLocalization> SymbianLocalizationListIterator;
+
class SymbianCommonGenerator
{
public:
@@ -59,6 +73,7 @@ public:
TypeSubdirs
};
+
SymbianCommonGenerator(MakefileGenerator *generator);
virtual void init();
@@ -68,7 +83,9 @@ protected:
QString removePathSeparators(QString &file);
void removeSpecialCharacters(QString& str);
void removeEpocSpecialCharacters(QString& str);
- void generatePkgFile(const QString &iconFile, bool epocBuild);
+ void generatePkgFile(const QString &iconFile,
+ bool epocBuild,
+ const SymbianLocalizationList &symbianLocalizationList);
bool containsStartWithItem(const QChar &c, const QStringList& src);
void writeRegRssFile(QMap<QString, QStringList> &useritems);
@@ -76,15 +93,32 @@ protected:
const QString &listTag,
const QString &listItem);
void writeRssFile(QString &numberOfIcons, QString &iconfile);
- void writeLocFile(QStringList &symbianLangCodes);
+ void writeLocFile(const SymbianLocalizationList &symbianLocalizationList);
void readRssRules(QString &numberOfIcons,
QString &iconFile,
QMap<QString, QStringList> &userRssRules);
void writeCustomDefFile();
- QStringList symbianLangCodesFromTsFiles();
- void fillQt2S60LangMapTable();
+ void parseTsFiles(SymbianLocalizationList *symbianLocalizationList);
+ void fillQt2SymbianLocalizationList(SymbianLocalizationList *symbianLocalizationList);
+
+ void parsePreRules(const QString &deploymentVariable,
+ const QString &variableSuffix,
+ QStringList *rawRuleList,
+ QStringList *languageRuleList,
+ QStringList *headerRuleList,
+ QStringList *vendorRuleList);
+ void parsePostRules(const QString &deploymentVariable,
+ const QString &variableSuffix,
+ QStringList *rawRuleList);
+ bool parseTsContent(const QString &tsFilename, SymbianLocalization *loc);
+ QString generatePkgNameForHeader(const SymbianLocalizationList &symbianLocalizationList,
+ const QString &defaultName,
+ bool isForSmartInstaller);
+ void addLocalizedResourcesToDeployment(const QString &deploymentFilesVar,
+ const SymbianLocalizationList &symbianLocalizationList);
+ QString generateLocFileName();
protected:
MakefileGenerator *generator;
@@ -95,8 +129,6 @@ protected:
QString privateDirUid;
QString uid3;
TargetType targetType;
-
- QHash<QString, QString> qt2S60LangMapTable;
};
#endif // SYMBIANCOMMON_H
diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp
index 0b0033a79b..7bebd562ac 100644
--- a/qmake/generators/symbian/symmake.cpp
+++ b/qmake/generators/symbian/symmake.cpp
@@ -50,7 +50,7 @@
#include <qdebug.h>
// Included from tools/shared
-#include <symbian/epocroot.h>
+#include <symbian/epocroot_p.h>
#define RESOURCE_DIRECTORY_MMP "/resource/apps"
#define REGISTRATION_RESOURCE_DIRECTORY_HW "/private/10003a3f/import/apps"
@@ -87,10 +87,10 @@ QString SymbianMakefileGenerator::fixPathForMmp(const QString& origPath, const Q
{
static QString epocRootStr;
if (epocRootStr.isEmpty()) {
- epocRootStr = epocRoot();
+ epocRootStr = qt_epocRoot();
QFileInfo efi(epocRootStr);
if (!efi.exists() || epocRootStr.isEmpty()) {
- fprintf(stderr, "Unable to resolve epocRoot '%s' to real dir on current drive, defaulting to '/' for mmp paths\n", qPrintable(epocRoot()));
+ fprintf(stderr, "Unable to resolve epocRoot '%s' to real dir on current drive, defaulting to '/' for mmp paths\n", qPrintable(qt_epocRoot()));
epocRootStr = "/";
} else {
epocRootStr = efi.absoluteFilePath();
@@ -122,7 +122,7 @@ QString SymbianMakefileGenerator::absolutizePath(const QString& origPath)
// Prepend epocroot to any paths beginning with "/epoc32/"
QString resultPath = QDir::fromNativeSeparators(origPath);
if (resultPath.startsWith("/epoc32/", Qt::CaseInsensitive))
- resultPath = QDir::fromNativeSeparators(epocRoot()) + resultPath.mid(1);
+ resultPath = QDir::fromNativeSeparators(qt_epocRoot()) + resultPath.mid(1);
QFileInfo fi(fileInfo(resultPath));
@@ -187,8 +187,8 @@ bool SymbianMakefileGenerator::writeMakefile(QTextStream &t)
QMap<QString, QStringList> userRssRules;
readRssRules(numberOfIcons, iconFile, userRssRules);
- // Get the application translations and convert to symbian OS lang code, i.e. decical number
- QStringList symbianLangCodes = symbianLangCodesFromTsFiles();
+ SymbianLocalizationList symbianLocalizationList;
+ parseTsFiles(&symbianLocalizationList);
// Generate pkg files if there are any actual files to deploy
bool generatePkg = false;
@@ -205,7 +205,7 @@ bool SymbianMakefileGenerator::writeMakefile(QTextStream &t)
}
if (generatePkg) {
- generatePkgFile(iconFile, true);
+ generatePkgFile(iconFile, true, symbianLocalizationList);
}
writeBldInfContent(t, generatePkg, iconFile);
@@ -242,13 +242,13 @@ bool SymbianMakefileGenerator::writeMakefile(QTextStream &t)
writeMkFile(wrapperFileName, false);
QString absoluteMmpFileName = Option::output_dir + QLatin1Char('/') + mmpFileName;
- writeMmpFile(absoluteMmpFileName, symbianLangCodes);
+ writeMmpFile(absoluteMmpFileName, symbianLocalizationList);
if (targetType == TypeExe) {
if (!project->isActiveConfig("no_icon")) {
writeRegRssFile(userRssRules);
writeRssFile(numberOfIcons, iconFile);
- writeLocFile(symbianLangCodes);
+ writeLocFile(symbianLocalizationList);
}
}
@@ -489,7 +489,7 @@ void SymbianMakefileGenerator::writeMmpFileHeader(QTextStream &t)
t << "// ==============================================================================" << endl << endl;
}
-void SymbianMakefileGenerator::writeMmpFile(QString &filename, QStringList &symbianLangCodes)
+void SymbianMakefileGenerator::writeMmpFile(QString &filename, const SymbianLocalizationList &symbianLocalizationList)
{
QFile ft(filename);
if (ft.open(QIODevice::WriteOnly)) {
@@ -501,7 +501,7 @@ void SymbianMakefileGenerator::writeMmpFile(QString &filename, QStringList &symb
writeMmpFileTargetPart(t);
- writeMmpFileResourcePart(t, symbianLangCodes);
+ writeMmpFileResourcePart(t, symbianLocalizationList);
writeMmpFileMacrosPart(t);
@@ -643,7 +643,7 @@ void SymbianMakefileGenerator::writeMmpFileTargetPart(QTextStream& t)
Application registration resource files should be installed to the
\private\10003a3f\import\apps directory.
*/
-void SymbianMakefileGenerator::writeMmpFileResourcePart(QTextStream& t, QStringList &symbianLangCodes)
+void SymbianMakefileGenerator::writeMmpFileResourcePart(QTextStream& t, const SymbianLocalizationList &symbianLocalizationList)
{
if ((targetType == TypeExe) &&
!project->isActiveConfig("no_icon")) {
@@ -653,8 +653,10 @@ void SymbianMakefileGenerator::writeMmpFileResourcePart(QTextStream& t, QStringL
t << "SOURCEPATH\t\t\t. " << endl;
t << "LANG SC "; // no endl
- foreach(QString lang, symbianLangCodes) {
- t << lang << " "; // no endl
+ SymbianLocalizationListIterator iter(symbianLocalizationList);
+ while (iter.hasNext()) {
+ const SymbianLocalization &loc = iter.next();
+ t << loc.symbianLanguageCode << " "; // no endl
}
t << endl;
t << MMP_START_RESOURCE "\t\t" << locTarget << endl;
@@ -717,7 +719,7 @@ void SymbianMakefileGenerator::writeMmpFileLibraryPart(QTextStream& t)
// Hacky way to find out what kind of library it is. Check the
// ARMV5 build directory for library type. We default to shared
// library, since that is more common.
- QString udebStaticLibLocation(epocRoot());
+ QString udebStaticLibLocation(qt_epocRoot());
QString urelStaticLibLocation(udebStaticLibLocation);
udebStaticLibLocation += QString("epoc32/release/armv5/udeb/%1.lib").arg(lib);
urelStaticLibLocation += QString("epoc32/release/armv5/urel/%1.lib").arg(lib);
@@ -1108,3 +1110,18 @@ void SymbianMakefileGenerator::generateDistcleanTargets(QTextStream& t)
t << "distclean: clean dodistclean" << endl;
t << endl;
}
+
+// Returns a string that can be used as a dependency to loc file on other targets
+QString SymbianMakefileGenerator::generateLocFileTarget(QTextStream& t, const QString& locCmd)
+{
+ QString locFile;
+ if (targetType == TypeExe && !project->isActiveConfig("no_icon")) {
+ locFile = Option::fixPathToLocalOS(generateLocFileName());
+ t << locFile << QLatin1String(": ") << project->values("SYMBIAN_MATCHED_TRANSLATIONS").join(" ") << endl;
+ t << locCmd << endl;
+ t << endl;
+ locFile += QLatin1Char(' ');
+ }
+
+ return locFile;
+} \ No newline at end of file
diff --git a/qmake/generators/symbian/symmake.h b/qmake/generators/symbian/symmake.h
index a1a8e887c1..aba11dea12 100644
--- a/qmake/generators/symbian/symmake.h
+++ b/qmake/generators/symbian/symmake.h
@@ -97,11 +97,11 @@ protected:
static bool removeDuplicatedStrings(QStringList& stringList);
void writeMmpFileHeader(QTextStream &t);
- void writeMmpFile(QString &filename, QStringList &symbianLangCodes);
+ void writeMmpFile(QString &filename, const SymbianLocalizationList &symbianLocalizationList);
void writeMmpFileMacrosPart(QTextStream& t);
void addMacro(QTextStream& t, const QString& value);
void writeMmpFileTargetPart(QTextStream& t);
- void writeMmpFileResourcePart(QTextStream& t, QStringList &symbianLangCodes);
+ void writeMmpFileResourcePart(QTextStream& t, const SymbianLocalizationList &symbianLocalizationList);
void writeMmpFileSystemIncludePart(QTextStream& t);
void writeMmpFileIncludePart(QTextStream& t);
void writeMmpFileLibraryPart(QTextStream& t);
@@ -131,6 +131,7 @@ protected:
const QString& itemSuffix);
void generateDistcleanTargets(QTextStream& t);
+ QString generateLocFileTarget(QTextStream& t, const QString& locCmd);
// Subclass implements
virtual void writeBldInfExtensionRulesPart(QTextStream& t, const QString &iconTargetFile) = 0;
diff --git a/qmake/generators/symbian/symmake_abld.cpp b/qmake/generators/symbian/symmake_abld.cpp
index 7416cbe64e..eb39d36170 100644
--- a/qmake/generators/symbian/symmake_abld.cpp
+++ b/qmake/generators/symbian/symmake_abld.cpp
@@ -49,7 +49,7 @@
#include <qdebug.h>
// Included from tools/shared
-#include <symbian/epocroot.h>
+#include <symbian/epocroot_p.h>
#define DO_NOTHING_TARGET "do_nothing"
#define CREATE_TEMPS_TARGET "create_temps"
@@ -184,16 +184,7 @@ void SymbianAbldMakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool
QTextStream t(&wrapperFile);
- t << "# ==============================================================================" << endl;
- t << "# Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: ";
- t << QDateTime::currentDateTime().toString() << endl;
- t << "# This file is generated by qmake and should not be modified by the" << endl;
- t << "# user." << endl;
- t << "# Name : " << wrapperFile.fileName() << endl;
- t << "# Description : Wrapper Makefile for calling Symbian build tools" << endl;
- t << "#" << endl;
- t << "# ==============================================================================" << "\n" << endl;
- t << endl;
+ MakefileGenerator::writeHeader(t);
t << "MAKEFILE = " << fileInfo(wrapperFile.fileName()).fileName() << endl;
t << "QMAKE = " << var("QMAKE_QMAKE") << endl;
@@ -205,8 +196,11 @@ void SymbianAbldMakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool
#ifdef Q_OS_WIN32
t << "XCOPY = xcopy /d /f /h /r /y /i" << endl;
t << "ABLD = ABLD.BAT" << endl;
+#elif defined(Q_OS_MAC)
+ t << "XCOPY = cp -R -v" << endl;
+ t << "ABLD = abld" << endl;
#else
- t << "XCOPY = cp -u -v" << endl;
+ t << "XCOPY = cp -R -u -v" << endl;
t << "ABLD = abld" << endl;
#endif
t << "DEBUG_PLATFORMS = " << debugPlatforms.join(" ") << endl;
@@ -264,12 +258,14 @@ void SymbianAbldMakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool
t << "\tbldmake bldfiles" << endl;
t << endl;
- t << "debug: $(ABLD)" << endl;
+ QString locFileDep = generateLocFileTarget(t, qmakeCmd);
+
+ t << "debug: " << locFileDep << "$(ABLD)" << endl;
foreach(QString item, debugPlatforms) {
t << "\t$(ABLD)" << testClause << " build " << item << " udeb" << endl;
}
t << endl;
- t << "release: $(ABLD)" << endl;
+ t << "release: " << locFileDep << "$(ABLD)" << endl;
foreach(QString item, releasePlatforms) {
t << "\t$(ABLD)" << testClause << " build " << item << " urel" << endl;
}
@@ -277,12 +273,12 @@ void SymbianAbldMakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool
// For more specific builds, targets are in this form: build-platform, e.g. release-armv5
foreach(QString item, debugPlatforms) {
- t << "debug-" << item << ": $(ABLD)" << endl;
+ t << "debug-" << item << ": " << locFileDep << "$(ABLD)" << endl;
t << "\t$(ABLD)" << testClause << " build " << item << " udeb" << endl;
}
foreach(QString item, releasePlatforms) {
- t << "release-" << item << ": $(ABLD)" << endl;
+ t << "release-" << item << ": " << locFileDep << "$(ABLD)" << endl;
t << "\t$(ABLD)" << testClause << " build " << item << " urel" << endl;
}
@@ -426,8 +422,9 @@ bool SymbianAbldMakefileGenerator::writeDeploymentTargets(QTextStream &t, bool i
else
t << WINSCW_DEPLOYMENT_TARGET ":" << endl;
- QString remoteTestPath = epocRoot()
- + QLatin1String(isRom ? "epoc32\\data\\z\\private\\" : "epoc32\\winscw\\c\\private\\")
+ QString remoteTestPath = qt_epocRoot()
+ + QDir::toNativeSeparators(QLatin1String(isRom ? "epoc32/data/z/private/"
+ : "epoc32/winscw/c/private/"))
+ privateDirUid;
DeploymentList depList;
@@ -439,11 +436,21 @@ bool SymbianAbldMakefileGenerator::writeDeploymentTargets(QTextStream &t, bool i
t << "\t-echo Deploying changed files..." << endl;
for (int i = 0; i < depList.size(); ++i) {
+#ifdef Q_OS_WIN32
// Xcopy prompts for selecting file or directory if target doesn't exist,
// and doesn't provide switch to force file selection. It does provide dir forcing, though,
// so strip the last part of the destination.
t << "\t-$(XCOPY) \"" << depList.at(i).from << "\" \""
<< depList.at(i).to.left(depList.at(i).to.lastIndexOf("\\") + 1) << "\"" << endl;
+#else
+ QString dirExists = var("QMAKE_CHK_DIR_EXISTS");
+ QString mkdir = var("QMAKE_MKDIR");
+ QString dir = QFileInfo(depList.at(i).to).dir().path();
+ t << "\t-@ " << dirExists << " \"" << dir << "\" || "
+ << mkdir << " \"" << dir << "\"" << endl;
+ t << "\t-$(XCOPY) \"" << QDir::toNativeSeparators(depList.at(i).from) << "\" \""
+ << QDir::toNativeSeparators(depList.at(i).to) << "\"" << endl;
+#endif
}
t << endl;
@@ -455,7 +462,7 @@ bool SymbianAbldMakefileGenerator::writeDeploymentTargets(QTextStream &t, bool i
QStringList cleanList;
for (int i = 0; i < depList.size(); ++i) {
- cleanList.append(depList.at(i).to);
+ cleanList.append(QDir::toNativeSeparators(depList.at(i).to));
}
generateCleanCommands(t, cleanList, "$(DEL_FILE)", "", "", "");
diff --git a/qmake/generators/symbian/symmake_sbsv2.cpp b/qmake/generators/symbian/symmake_sbsv2.cpp
index 32c31eed75..c219f1d791 100644
--- a/qmake/generators/symbian/symmake_sbsv2.cpp
+++ b/qmake/generators/symbian/symmake_sbsv2.cpp
@@ -49,7 +49,7 @@
#include <qdebug.h>
// Included from tools/shared
-#include <symbian/epocroot.h>
+#include <symbian/epocroot_p.h>
SymbianSbsv2MakefileGenerator::SymbianSbsv2MakefileGenerator() : SymbianMakefileGenerator() { }
SymbianSbsv2MakefileGenerator::~SymbianSbsv2MakefileGenerator() { }
@@ -82,7 +82,7 @@ void SymbianSbsv2MakefileGenerator::exportFlm()
QDir sourceDir = QDir(QLibraryInfo::location(QLibraryInfo::PrefixPath) + FLM_SOURCE_DIR);
QFileInfoList sourceInfos = sourceDir.entryInfoList(QDir::Files);
- QDir destDir(epocRoot() + FLM_DEST_DIR);
+ QDir destDir(qt_epocRoot() + FLM_DEST_DIR);
if (!destDir.exists()) {
if (destDir.mkpath(destDir.absolutePath()))
generatedDirs << destDir.absolutePath();
@@ -120,7 +120,7 @@ void SymbianSbsv2MakefileGenerator::findInstalledCompilerVersions(const QString
&& fileInfo(matcher.cap(matcher.captureCount())).exists()) {
// First capture (index 0) is the whole match, which is skipped.
// Next n captures are version numbers, which are interesting.
- // Final capture is the env var value, which we alrady used, so that is skipped, too.
+ // Final capture is the env var value, which we already used, so that is skipped, too.
int capture = 1;
int finalCapture = matcher.captureCount() - 1;
QString version = versionPrefix;
@@ -324,16 +324,8 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo
QTextStream t(&wrapperFile);
- t << "# ==============================================================================" << endl;
- t << "# Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: ";
- t << QDateTime::currentDateTime().toString() << endl;
- t << "# This file is generated by qmake and should not be modified by the" << endl;
- t << "# user." << endl;
- t << "# Name : " << wrapperFile.fileName() << endl;
- t << "# Description : Wrapper Makefile for calling Symbian build tools" << endl;
- t << "#" << endl;
- t << "# ==============================================================================" << "\n" << endl;
- t << endl;
+ MakefileGenerator::writeHeader(t);
+
t << "MAKEFILE = " << fileInfo(wrapperFile.fileName()).fileName() << endl;
t << "QMAKE = " << var("QMAKE_QMAKE") << endl;
t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl;
@@ -385,9 +377,9 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo
t << qmakeCmd << endl;
t << endl;
- QString currentClause;
+ QString locFileDep = generateLocFileTarget(t, qmakeCmd);
- t << "debug: " << BLD_INF_FILENAME << endl;
+ t << "debug: " << locFileDep << BLD_INF_FILENAME << endl;
t << "\t$(SBS)";
foreach(QString clause, debugClauses) {
t << clause;
@@ -399,7 +391,7 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo
t << clause;
}
t << endl;
- t << "release: " << BLD_INF_FILENAME << endl;
+ t << "release: " << locFileDep << BLD_INF_FILENAME << endl;
t << "\t$(SBS)";
foreach(QString clause, releaseClauses) {
t << clause;
@@ -431,7 +423,7 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo
else // use generic arm clause
clause = configClause(item, debugBuild, defaultRvctCompilerVersion, genericArmClause);
- t << "debug-" << item << ": " << BLD_INF_FILENAME << endl;
+ t << "debug-" << item << ": " << locFileDep << BLD_INF_FILENAME << endl;
t << "\t$(SBS)" << clause << endl;
t << "clean-debug-" << item << ": " << BLD_INF_FILENAME << endl;
t << "\t$(SBS) reallyclean" << clause << endl;
@@ -444,7 +436,7 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo
else // use generic arm clause
clause = configClause(item, releaseBuild, defaultRvctCompilerVersion, genericArmClause);
- t << "release-" << item << ": " << BLD_INF_FILENAME << endl;
+ t << "release-" << item << ": " << locFileDep << BLD_INF_FILENAME << endl;
t << "\t$(SBS)" << clause << endl;
t << "clean-release-" << item << ": " << BLD_INF_FILENAME << endl;
t << "\t$(SBS) reallyclean" << clause << endl;
@@ -454,11 +446,11 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo
foreach(QString compilerVersion, allArmCompilerVersions) {
QString debugClause = configClause(item, debugBuild, compilerVersion, armClause);
QString releaseClause = configClause(item, releaseBuild, compilerVersion, armClause);
- t << "debug-" << item << "-" << compilerVersion << ": " << BLD_INF_FILENAME << endl;
+ t << "debug-" << item << "-" << compilerVersion << ": " << locFileDep << BLD_INF_FILENAME << endl;
t << "\t$(SBS)" << debugClause << endl;
t << "clean-debug-" << item << "-" << compilerVersion << ": " << BLD_INF_FILENAME << endl;
t << "\t$(SBS) reallyclean" << debugClause << endl;
- t << "release-" << item << "-" << compilerVersion << ": " << BLD_INF_FILENAME << endl;
+ t << "release-" << item << "-" << compilerVersion << ": " << locFileDep << BLD_INF_FILENAME << endl;
t << "\t$(SBS)" << releaseClause << endl;
t << "clean-release-" << item << "-" << compilerVersion << ": " << BLD_INF_FILENAME << endl;
t << "\t$(SBS) reallyclean" << releaseClause << endl;
@@ -629,7 +621,7 @@ void SymbianSbsv2MakefileGenerator::writeBldInfExtensionRulesPart(QTextStream& t
t << endl;
// Write deployment rules
- QString remoteTestPath = epocRoot() + QLatin1String("epoc32/winscw/c/private/") + privateDirUid;
+ QString remoteTestPath = qt_epocRoot() + QLatin1String("epoc32/winscw/c/private/") + privateDirUid;
DeploymentList depList;
//write emulator deployment
@@ -640,7 +632,7 @@ void SymbianSbsv2MakefileGenerator::writeBldInfExtensionRulesPart(QTextStream& t
t << "#endif" << endl;
//write ROM deployment
- remoteTestPath = epocRoot() + QLatin1String("epoc32/data/z/private/") + privateDirUid;
+ remoteTestPath = qt_epocRoot() + QLatin1String("epoc32/data/z/private/") + privateDirUid;
depList.clear();
initProjectDeploySymbian(project, depList, remoteTestPath, false, true,
QLatin1String(ROM_DEPLOYMENT_PLATFORM), QString(), generatedDirs, generatedFiles);
diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp
index c963f46dae..3381d532e4 100644
--- a/qmake/generators/win32/msbuild_objectmodel.cpp
+++ b/qmake/generators/win32/msbuild_objectmodel.cpp
@@ -2507,7 +2507,7 @@ bool VCXFilter::addExtraCompiler(const VCXFilterFile &info)
// Output in info.additionalFile -----------
if (!CustomBuildTool.Description.isEmpty())
- CustomBuildTool.Description += " & ";
+ CustomBuildTool.Description += ", ";
CustomBuildTool.Description += cmd_name;
CustomBuildTool.CommandLine += VCToolBase::fixCommandLine(cmd.trimmed());
int space = cmd.indexOf(' ');
@@ -2908,26 +2908,43 @@ void XTreeNode::generateXML(XmlOutput &xml, XmlOutput &xmlFilter, const QString
if (children.size()) {
// Filter
+ QString tempFilterName;
ChildrenMap::ConstIterator it, end = children.constEnd();
if (!tagName.isEmpty()) {
+ tempFilterName.append(filter);
+ tempFilterName.append("\\");
+ tempFilterName.append(tagName);
+ xmlFilter << tag(_ItemGroup);
xmlFilter << tag("Filter")
- << attrTag("Include", tagName)
- << attrTagS("Extensions", "");
+ << attrTag("Include", tempFilterName)
+ << closetag();
+ xmlFilter << closetag();
}
// First round, do nested filters
for (it = children.constBegin(); it != end; ++it)
if ((*it)->children.size())
- (*it)->generateXML(xml, xmlFilter, it.key(), tool, filter);
+ {
+ if ( !tempFilterName.isEmpty() )
+ (*it)->generateXML(xml, xmlFilter, it.key(), tool, tempFilterName);
+ else
+ (*it)->generateXML(xml, xmlFilter, it.key(), tool, filter);
+ }
// Second round, do leafs
for (it = children.constBegin(); it != end; ++it)
if (!(*it)->children.size())
- (*it)->generateXML(xml, xmlFilter, it.key(), tool, filter);
-
- if (!tagName.isEmpty())
- xml << closetag("Filter");
+ {
+ if ( !tempFilterName.isEmpty() )
+ (*it)->generateXML(xml, xmlFilter, it.key(), tool, tempFilterName);
+ else
+ (*it)->generateXML(xml, xmlFilter, it.key(), tool, filter);
+ }
} else {
// Leaf
+ xml << tag(_ItemGroup);
+ xmlFilter << tag(_ItemGroup);
tool.outputFileConfigs(xml, xmlFilter, info, filter);
+ xmlFilter << closetag();
+ xml << closetag();
}
}
diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp
index 907f8dcc7e..b707607926 100644
--- a/qmake/generators/win32/msvc_nmake.cpp
+++ b/qmake/generators/win32/msvc_nmake.cpp
@@ -213,7 +213,7 @@ void NmakeMakefileGenerator::init()
project->values("QMAKE_CLEAN").append(project->first("DESTDIR") + project->first("TARGET") + version + ".exp");
}
if(project->isActiveConfig("debug")) {
- project->values("QMAKE_CLEAN").append(project->first("DESTDIR") + project->first("TARGET") + version + ".pdb");
+ project->values("QMAKE_DISTCLEAN").append(project->first("DESTDIR") + project->first("TARGET") + version + ".pdb");
project->values("QMAKE_CLEAN").append(project->first("DESTDIR") + project->first("TARGET") + version + ".ilk");
project->values("QMAKE_CLEAN").append("vc*.pdb");
project->values("QMAKE_CLEAN").append("vc*.idb");
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index cff7a14936..6f27515ae2 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -67,7 +67,7 @@ QT_END_NAMESPACE
#ifdef Q_OS_WIN32
#include <qt_windows.h>
-#include <windows/registry.h>
+#include <windows/registry_p.h>
QT_BEGIN_NAMESPACE
@@ -119,7 +119,7 @@ DotNET which_dotnet_version()
int installed = 0;
int i = 0;
for(; dotNetCombo[i].version; ++i) {
- QString path = readRegistryKey(HKEY_LOCAL_MACHINE, dotNetCombo[i].regKey);
+ QString path = qt_readRegistryKey(HKEY_LOCAL_MACHINE, dotNetCombo[i].regKey);
if(!path.isEmpty()) {
++installed;
current_version = dotNetCombo[i].version;
@@ -136,7 +136,7 @@ DotNET which_dotnet_version()
i = installed = 0;
for(; dotNetCombo[i].version; ++i) {
- QString productPath = readRegistryKey(HKEY_LOCAL_MACHINE, dotNetCombo[i].regKey).toLower();
+ QString productPath = qt_readRegistryKey(HKEY_LOCAL_MACHINE, dotNetCombo[i].regKey).toLower();
if (productPath.isEmpty())
continue;
QStringList::iterator it;
@@ -1587,10 +1587,10 @@ QString VcprojGenerator::fixFilename(QString ofile) const
if(slashfind == -1) {
ofile = ofile.replace('-', '_');
} else {
- int hypenfind = ofile.indexOf('-', slashfind);
- while (hypenfind != -1 && slashfind < hypenfind) {
- ofile = ofile.replace(hypenfind, 1, '_');
- hypenfind = ofile.indexOf('-', hypenfind + 1);
+ int hyphenfind = ofile.indexOf('-', slashfind);
+ while (hyphenfind != -1 && slashfind < hyphenfind) {
+ ofile = ofile.replace(hyphenfind, 1, '_');
+ hyphenfind = ofile.indexOf('-', hyphenfind + 1);
}
}
return ofile;
diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp
index ecb20c70f9..8d1a803b2a 100644
--- a/qmake/generators/win32/winmakefile.cpp
+++ b/qmake/generators/win32/winmakefile.cpp
@@ -646,7 +646,7 @@ void Win32MakefileGenerator::writeStandardParts(QTextStream &t)
t << "DIST = " << varList("DISTFILES") << endl;
t << "QMAKE_TARGET = " << var("QMAKE_ORIG_TARGET") << endl;
- // The comment is important to maintain variable compatability with Unix
+ // The comment is important to maintain variable compatibility with Unix
// Makefiles, while not interpreting a trailing-slash as a linebreak
t << "DESTDIR = " << escapeFilePath(destDir) << " #avoid trailing-slash linebreak" << endl;
t << "TARGET = " << escapeFilePath(target) << endl;
diff --git a/qmake/project.cpp b/qmake/project.cpp
index cb029234e2..2586c575e2 100644
--- a/qmake/project.cpp
+++ b/qmake/project.cpp
@@ -64,7 +64,7 @@
#include <stdlib.h>
// Included from tools/shared
-#include <symbian/epocroot.h>
+#include <symbian/epocroot_p.h>
#ifdef Q_OS_WIN32
#define QT_POPEN _popen
@@ -76,7 +76,7 @@
QT_BEGIN_NAMESPACE
-//expand fucntions
+//expand functions
enum ExpandFunc { E_MEMBER=1, E_FIRST, E_LAST, E_CAT, E_FROMFILE, E_EVAL, E_LIST,
E_SPRINTF, E_JOIN, E_SPLIT, E_BASENAME, E_DIRNAME, E_SECTION,
E_FIND, E_SYSTEM, E_UNIQUE, E_QUOTE, E_ESCAPE_EXPAND,
@@ -677,7 +677,23 @@ QMakeProject::reset()
bool
QMakeProject::parse(const QString &t, QMap<QString, QStringList> &place, int numLines)
{
- QString s = t.simplified();
+ // To preserve the integrity of any UTF-8 characters in .pro file, temporarily replace the
+ // non-breaking space (0xA0) characters with another non-space character, so that
+ // QString::simplified() call will not replace it with space.
+ // Note: There won't be any two byte characters in .pro files, so 0x10A0 should be a safe
+ // replacement character.
+ static QChar nbsp(0xA0);
+ static QChar nbspFix(0x01A0);
+ QString s;
+ if (t.indexOf(nbsp) != -1) {
+ s = t;
+ s.replace(nbsp, nbspFix);
+ s = s.simplified();
+ s.replace(nbspFix, nbsp);
+ } else {
+ s = t.simplified();
+ }
+
int hash_mark = s.indexOf("#");
if(hash_mark != -1) //good bye comments
s = s.left(hash_mark);
@@ -1063,7 +1079,7 @@ QMakeProject::parse(const QString &t, QMap<QString, QStringList> &place, int num
#undef SKIP_WS
doVariableReplace(var, place);
- var = varMap(var); //backwards compatability
+ var = varMap(var); //backwards compatibility
if(!var.isEmpty() && Option::mkfile::do_preprocess) {
static QString last_file("*none*");
if(parser.file != last_file) {
@@ -3102,7 +3118,7 @@ QStringList &QMakeProject::values(const QString &_var, QMap<QString, QStringList
false));
} else if (var == QLatin1String("EPOCROOT")) {
if (place[var].isEmpty())
- place[var] = QStringList(epocRoot());
+ place[var] = QStringList(qt_epocRoot());
}
#if defined(Q_OS_WIN32) && defined(Q_CC_MSVC)
else if(var.startsWith(QLatin1String("QMAKE_TARGET."))) {
diff --git a/qmake/qmake.pri b/qmake/qmake.pri
index 36c5d36a83..8f46a2eb7f 100644
--- a/qmake/qmake.pri
+++ b/qmake/qmake.pri
@@ -3,7 +3,7 @@ CONFIG += depend_includepath
QMAKE_INCREMENTAL =
SKIP_DEPENDS += qconfig.h qmodules.h
DEFINES += QT_NO_TEXTCODEC QT_NO_LIBRARY QT_NO_STL QT_NO_COMPRESS QT_NO_UNICODETABLES \
- QT_NO_GEOM_VARIANT QT_NO_DATASTREAM
+ QT_NO_GEOM_VARIANT QT_NO_DATASTREAM QLIBRARYINFO_EPOCROOT
#qmake code
SOURCES += project.cpp property.cpp main.cpp generators/makefile.cpp \
@@ -36,8 +36,8 @@ HEADERS += project.h property.h generators/makefile.h \
generators/symbian/symmake_abld.h \
generators/symbian/symmake_sbsv2.h \
generators/symbian/initprojectdeploy_symbian.h \
- windows/registry.h \
- symbian/epocroot.h
+ windows/registry_p.h \
+ symbian/epocroot_p.h
contains(QT_EDITION, OpenSource) {
DEFINES += QMAKE_OPENSOURCE_EDITION
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-buffer.h b/src/3rdparty/harfbuzz/src/harfbuzz-buffer.h
index 0d7c2c2c7c..0d631b20a6 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-buffer.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-buffer.h
@@ -32,10 +32,6 @@
HB_BEGIN_HEADER
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(push, 1)
-#endif
-
typedef struct HB_GlyphItemRec_ {
HB_UInt gindex;
HB_UInt properties;
@@ -93,10 +89,6 @@ hb_buffer_add_glyph( HB_Buffer buffer,
HB_UInt properties,
HB_UInt cluster );
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(pop)
-#endif
-
HB_END_HEADER
#endif /* HARFBUZZ_BUFFER_H */
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gdef-private.h b/src/3rdparty/harfbuzz/src/harfbuzz-gdef-private.h
index 2a6d9581f9..94e9b43e61 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-gdef-private.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-gdef-private.h
@@ -33,11 +33,6 @@
HB_BEGIN_HEADER
-
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(push, 1)
-#endif
-
/* Attachment related structures */
struct HB_AttachPoint_
@@ -126,10 +121,6 @@ _HB_GDEF_LoadMarkAttachClassDef_From_LookupFlags( HB_GDEFHeader* gdef,
HB_Lookup* lo,
HB_UShort num_lookups );
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(pop)
-#endif
-
HB_END_HEADER
#endif /* HARFBUZZ_GDEF_PRIVATE_H */
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gdef.h b/src/3rdparty/harfbuzz/src/harfbuzz-gdef.h
index f9a03dde9d..ccb6bf9734 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-gdef.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-gdef.h
@@ -31,10 +31,6 @@
HB_BEGIN_HEADER
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(push, 1)
-#endif
-
/* GDEF glyph properties. Note that HB_GDEF_COMPONENT has no corresponding
* flag in the LookupFlag field. */
#define HB_GDEF_BASE_GLYPH 0x0002
@@ -131,10 +127,6 @@ HB_Error HB_GDEF_Build_ClassDefinition( HB_GDEFHeader* gdef,
HB_UShort* glyph_array,
HB_UShort* class_array );
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(pop)
-#endif
-
HB_END_HEADER
#endif /* HARFBUZZ_GDEF_H */
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-global.h b/src/3rdparty/harfbuzz/src/harfbuzz-global.h
index bccd6a265d..d4e6b466b6 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-global.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-global.h
@@ -39,10 +39,6 @@
#define HB_END_HEADER /* nothing */
#endif
-#if defined(__GNUC__) || defined(_MSC_VER)
-#define HB_USE_PACKED_STRUCTS
-#endif
-
HB_BEGIN_HEADER
#ifndef FALSE
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h b/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h
index 39f3159987..63ba90797d 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-gpos-private.h
@@ -32,10 +32,6 @@
HB_BEGIN_HEADER
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(push, 1)
-#endif
-
/* shared tables */
#define VR_X_PLACEMENT_DEVICE 0
@@ -720,10 +716,6 @@ HB_INTERNAL void
_HB_GPOS_Free_SubTable( HB_GPOS_SubTable* st,
HB_UShort lookup_type );
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(pop)
-#endif
-
HB_END_HEADER
#endif /* HARFBUZZ_GPOS_PRIVATE_H */
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gsub-private.h b/src/3rdparty/harfbuzz/src/harfbuzz-gsub-private.h
index 7eb329e20c..df0c3f639f 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-gsub-private.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-gsub-private.h
@@ -32,10 +32,6 @@
HB_BEGIN_HEADER
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(push, 1)
-#endif
-
typedef union HB_GSUB_SubTable_ HB_GSUB_SubTable;
/* LookupType 1 */
@@ -474,10 +470,6 @@ HB_INTERNAL void
_HB_GSUB_Free_SubTable( HB_GSUB_SubTable* st,
HB_UShort lookup_type );
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(pop)
-#endif
-
HB_END_HEADER
#endif /* HARFBUZZ_GSUB_PRIVATE_H */
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-gsub.h b/src/3rdparty/harfbuzz/src/harfbuzz-gsub.h
index b00df4401f..6e452bdb35 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-gsub.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-gsub.h
@@ -31,11 +31,6 @@
HB_BEGIN_HEADER
-
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(push, 1)
-#endif
-
/* Lookup types for glyph substitution */
#define HB_GSUB_LOOKUP_SINGLE 1
@@ -139,10 +134,6 @@ HB_Error HB_GSUB_Register_Alternate_Function( HB_GSUBHeader* gsub,
HB_Error HB_GSUB_Apply_String( HB_GSUBHeader* gsub,
HB_Buffer buffer );
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(pop)
-#endif
-
HB_END_HEADER
#endif /* HARFBUZZ_GSUB_H */
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp b/src/3rdparty/harfbuzz/src/harfbuzz-indic.cpp
index 4d8418bcbd..237c9ae6d9 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/3rdparty/harfbuzz/src/harfbuzz-open.h b/src/3rdparty/harfbuzz/src/harfbuzz-open.h
index 4ba6cf5803..9ad7c98b2c 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-open.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-open.h
@@ -30,10 +30,6 @@
HB_BEGIN_HEADER
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(push, 1)
-#endif
-
/* Use this if a feature applies to all glyphs */
#define HB_ALL_GLYPHS 0xFFFF
@@ -279,10 +275,6 @@ enum HB_Type_
typedef enum HB_Type_ HB_Type;
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(pop)
-#endif
-
HB_END_HEADER
#endif /* HARFBUZZ_OPEN_H */
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h b/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h
index ab5c07a6c8..470e27b6f9 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h
@@ -34,10 +34,6 @@
HB_BEGIN_HEADER
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(push, 1)
-#endif
-
/*
using anything else than signed or unsigned for bitfields in C is non standard,
but accepted by almost all compilers. And it gives a significant reduction in
@@ -258,10 +254,6 @@ typedef struct HB_Font_ {
void *userData;
} HB_FontRec;
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(pop)
-#endif
-
typedef struct HB_ShaperItem_ HB_ShaperItem;
struct HB_ShaperItem_ {
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-stream.h b/src/3rdparty/harfbuzz/src/harfbuzz-stream.h
index a155cc277c..cfbfb1c4fe 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-stream.h
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-stream.h
@@ -30,10 +30,6 @@
HB_BEGIN_HEADER
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(push, 1)
-#endif
-
typedef struct HB_StreamRec_
{
HB_Byte* base;
@@ -42,10 +38,6 @@ typedef struct HB_StreamRec_
HB_UInt pos;
} HB_StreamRec;
-#ifdef HB_USE_PACKED_STRUCTS
-#pragma pack(pop)
-#endif
-
HB_END_HEADER
#endif
diff --git a/src/3rdparty/phonon/ds9/videorenderer_evr.cpp b/src/3rdparty/phonon/ds9/videorenderer_evr.cpp
index de3f46f0be..ff39eccc4b 100644
--- a/src/3rdparty/phonon/ds9/videorenderer_evr.cpp
+++ b/src/3rdparty/phonon/ds9/videorenderer_evr.cpp
@@ -62,19 +62,21 @@ namespace Phonon
VideoRendererEVR::VideoRendererEVR(QWidget *target) : m_target(target)
{
+ if (QSysInfo::WindowsVersion < QSysInfo::WV_VISTA)
+ return;
m_filter = Filter(CLSID_EnhancedVideoRenderer, IID_IBaseFilter);
if (!m_filter) {
return;
}
ComPointer<IMFVideoDisplayControl> filterControl = getService<IMFVideoDisplayControl>(m_filter, MR_VIDEO_RENDER_SERVICE, IID_IMFVideoDisplayControl);
- if (!filterControl) {
+ if (!filterControl ||
+ FAILED(filterControl->SetVideoWindow(reinterpret_cast<HWND>(target->winId()))) ||
+ FAILED(filterControl->SetAspectRatioMode(MFVideoARMode_None)) || // We're in control of the size
+ !getService<IMFVideoMixerControl>(m_filter, MR_VIDEO_MIXER_SERVICE, IID_IMFVideoMixerControl) ||
+ !getService<IMFVideoProcessor>(m_filter, MR_VIDEO_MIXER_SERVICE, IID_IMFVideoProcessor)) {
m_filter = Filter(); //will release the interface
- return;
}
-
- filterControl->SetVideoWindow(reinterpret_cast<HWND>(target->winId()));
- filterControl->SetAspectRatioMode(MFVideoARMode_None); // We're in control of the size
}
QImage VideoRendererEVR::snapshot() const
diff --git a/src/3rdparty/phonon/mmf/abstractvideooutput.cpp b/src/3rdparty/phonon/mmf/abstractvideooutput.cpp
index 2d221ed5e8..068118bda2 100644
--- a/src/3rdparty/phonon/mmf/abstractvideooutput.cpp
+++ b/src/3rdparty/phonon/mmf/abstractvideooutput.cpp
@@ -161,24 +161,10 @@ void MMF::AbstractVideoOutput::dump() const
{
#ifndef QT_NO_DEBUG
TRACE_CONTEXT(AbstractVideoOutput::dump, EVideoInternal);
-
QScopedPointer<ObjectDump::QVisitor> visitor(new ObjectDump::QVisitor);
visitor->setPrefix("Phonon::MMF"); // to aid searchability of logs
ObjectDump::addDefaultAnnotators(*visitor);
-
- if (QWidget *window = QApplication::activeWindow()) {
- TRACE("Dumping from root window 0x%08x:", window);
- ObjectDump::dumpTreeFromLeaf(*window, *visitor);
- }
-
- TRACE("Dumping tree from leaf 0x%08x:", this);
ObjectDump::dumpTreeFromLeaf(*this, *visitor);
-
- QScopedPointer<ObjectDump::QDumper> dumper(new ObjectDump::QDumper);
- dumper->setPrefix("Phonon::MMF"); // to aid searchability of logs
- ObjectDump::addDefaultAnnotators(*dumper);
- TRACE_0("Dumping AbstractVideoOutput:");
- dumper->dumpObject(*this);
#endif
}
diff --git a/src/3rdparty/phonon/mmf/videowidget.cpp b/src/3rdparty/phonon/mmf/videowidget.cpp
index 122094edf1..d59e82aec6 100644
--- a/src/3rdparty/phonon/mmf/videowidget.cpp
+++ b/src/3rdparty/phonon/mmf/videowidget.cpp
@@ -65,6 +65,8 @@ MMF::VideoWidget::VideoWidget(QWidget *parent)
TRACE_CONTEXT(VideoWidget::VideoWidget, EVideoApi);
TRACE_ENTRY_0();
+ parent->setProperty("_q_DummyWindowSurface", true);
+
TRACE_EXIT_0();
}
diff --git a/src/3rdparty/phonon/phonon/effectwidget.cpp b/src/3rdparty/phonon/phonon/effectwidget.cpp
index a2fe50fea4..edcbe1f6aa 100644
--- a/src/3rdparty/phonon/phonon/effectwidget.cpp
+++ b/src/3rdparty/phonon/phonon/effectwidget.cpp
@@ -112,7 +112,7 @@ void EffectWidgetPrivate::autogenerateUi()
#endif
QWidget *control = 0;
- switch (para.type()) {
+ switch (int(para.type())) {
case QVariant::String:
{
QComboBox *cb = new QComboBox(q);
diff --git a/src/3rdparty/phonon/phonon/globalconfig.cpp b/src/3rdparty/phonon/phonon/globalconfig.cpp
index be751ce4ac..f83ebc4ab0 100644
--- a/src/3rdparty/phonon/phonon/globalconfig.cpp
+++ b/src/3rdparty/phonon/phonon/globalconfig.cpp
@@ -97,7 +97,7 @@ static void filter(ObjectDescriptionType type, BackendInterface *backendIface, Q
static QList<int> sortDevicesByCategoryPriority(const GlobalConfig *config, const QSettingsGroup *backendConfig, ObjectDescriptionType type, Phonon::Category category, QList<int> &defaultList)
{
- Q_ASSERT(config);
+ Q_ASSERT(config); Q_UNUSED(config);
Q_ASSERT(backendConfig);
Q_ASSERT(type == AudioOutputDeviceType || type == AudioCaptureDeviceType);
diff --git a/src/3rdparty/phonon/phonon/mediacontroller.cpp b/src/3rdparty/phonon/phonon/mediacontroller.cpp
index 59fd5c7dfd..37af3f7f25 100644
--- a/src/3rdparty/phonon/phonon/mediacontroller.cpp
+++ b/src/3rdparty/phonon/phonon/mediacontroller.cpp
@@ -76,9 +76,9 @@ MediaController::~MediaController()
MediaController::Features MediaController::supportedFeatures() const
{
if (!d || !d->media) {
- return false;
+ return Features();
}
- IFACE false;
+ IFACE Features();
Features ret;
if (iface->hasInterface(AddonInterface::AngleInterface)) {
ret |= Angles;
diff --git a/src/3rdparty/phonon/phonon/pulsesupport.cpp b/src/3rdparty/phonon/phonon/pulsesupport.cpp
index 642843f6fa..b1ba196839 100644
--- a/src/3rdparty/phonon/phonon/pulsesupport.cpp
+++ b/src/3rdparty/phonon/phonon/pulsesupport.cpp
@@ -56,7 +56,7 @@ static int debugLevel() {
static int level = -1;
if (level < 1) {
level = 0;
- QString pulseenv = qgetenv("PHONON_PULSEAUDIO_DEBUG");
+ QByteArray pulseenv = qgetenv("PHONON_PULSEAUDIO_DEBUG");
int l = pulseenv.toInt();
if (l > 0)
level = (l > 2 ? 2 : l);
@@ -71,18 +71,18 @@ static void logMessage(const QString &message, int priority, QObject *obj)
QString output;
if (obj) {
// Strip away namespace from className
- QString className(obj->metaObject()->className());
+ QByteArray className(obj->metaObject()->className());
int nameLength = className.length() - className.lastIndexOf(':') - 1;
className = className.right(nameLength);
output.sprintf("%s %s (%s %p)", message.toLatin1().constData(),
obj->objectName().toLatin1().constData(),
- className.toLatin1().constData(), obj);
+ className.constData(), obj);
}
else {
output = message;
}
if (priority <= debugLevel()) {
- qDebug() << QString("PulseSupport(%1): %2").arg(priority).arg(output);
+ qDebug() << QString::fromLatin1("PulseSupport(%1): %2").arg(priority).arg(output);
}
}
}
@@ -96,7 +96,7 @@ class AudioDevice
: pulseName(name), pulseIndex(index)
{
properties["name"] = desc;
- properties["description"] = ""; // We don't have descriptions (well we do, but we use them as the name!)
+ properties["description"] = QLatin1String(""); // We don't have descriptions (well we do, but we use them as the name!)
properties["icon"] = icon;
properties["available"] = (index != PA_INVALID_INDEX);
properties["isAdvanced"] = false; // Nothing is advanced!
@@ -158,8 +158,8 @@ static void createGenericDevices()
s_outputDevices.clear();
s_outputDevicePriorities.clear();
index = s_deviceIndexCounter++;
- s_outputDeviceIndexes.insert("sink:default", index);
- s_outputDevices.insert(index, AudioDevice("sink:default", QObject::tr("PulseAudio Sound Server").toUtf8(), "audio-backend-pulseaudio", 0));
+ s_outputDeviceIndexes.insert(QLatin1String("sink:default"), index);
+ s_outputDevices.insert(index, AudioDevice(QLatin1String("sink:default"), QObject::tr("PulseAudio Sound Server"), QLatin1String("audio-backend-pulseaudio"), 0));
for (int i = Phonon::NoCategory; i <= Phonon::LastCategory; ++i) {
Phonon::Category cat = static_cast<Phonon::Category>(i);
s_outputDevicePriorities[cat].insert(0, index);
@@ -169,8 +169,8 @@ static void createGenericDevices()
s_captureDevices.clear();
s_captureDevicePriorities.clear();
index = s_deviceIndexCounter++;
- s_captureDeviceIndexes.insert("source:default", index);
- s_captureDevices.insert(index, AudioDevice("source:default", QObject::tr("PulseAudio Sound Server").toUtf8(), "audio-backend-pulseaudio", 0));
+ s_captureDeviceIndexes.insert(QLatin1String("source:default"), index);
+ s_captureDevices.insert(index, AudioDevice(QLatin1String("source:default"), QObject::tr("PulseAudio Sound Server"), QLatin1String("audio-backend-pulseaudio"), 0));
for (int i = Phonon::NoCategory; i <= Phonon::LastCategory; ++i) {
Phonon::Category cat = static_cast<Phonon::Category>(i);
s_captureDevicePriorities[cat].insert(0, index);
@@ -397,7 +397,7 @@ void sink_input_cb(pa_context *c, const pa_sink_input_info *i, int eol, void *us
if (pa_context_errno(c) == PA_ERR_NOENTITY)
return;
- logMessage(QString("Sink input callback failure"));
+ logMessage(QLatin1String("Sink input callback failure"));
return;
}
@@ -409,8 +409,8 @@ void sink_input_cb(pa_context *c, const pa_sink_input_info *i, int eol, void *us
// loop through (*i) and extract phonon->streamindex...
const char *t;
if ((t = pa_proplist_gets(i->proplist, "phonon.streamid"))) {
- logMessage(QString("Found PulseAudio stream index %1 for Phonon Output Stream %2").arg(i->index).arg(t));
- s_outputStreamIndexMap[QString(t)] = i->index;
+ logMessage(QString::fromLatin1("Found PulseAudio stream index %1 for Phonon Output Stream %2").arg(i->index).arg(QLatin1String(t)));
+ s_outputStreamIndexMap[QLatin1String(t)] = i->index;
// Find the sink's phonon index and notify whoever cares...
if (PA_INVALID_INDEX != i->sink) {
@@ -426,8 +426,8 @@ void sink_input_cb(pa_context *c, const pa_sink_input_info *i, int eol, void *us
}
if (found) {
// OK so we just emit our signal
- logMessage(QString("Letting the rest of phonon know about this"));
- s_instance->emitUsingDevice(QString(t), device);
+ logMessage(QLatin1String("Letting the rest of phonon know about this"));
+ s_instance->emitUsingDevice(QLatin1String(t), device);
}
}
}
@@ -441,7 +441,7 @@ void source_output_cb(pa_context *c, const pa_source_output_info *i, int eol, vo
if (pa_context_errno(c) == PA_ERR_NOENTITY)
return;
- logMessage(QString("Source output callback failure"));
+ logMessage(QLatin1String("Source output callback failure"));
return;
}
@@ -453,8 +453,8 @@ void source_output_cb(pa_context *c, const pa_source_output_info *i, int eol, vo
// loop through (*i) and extract phonon->streamindex...
const char *t;
if ((t = pa_proplist_gets(i->proplist, "phonon.streamid"))) {
- logMessage(QString("Found PulseAudio stream index %1 for Phonon Capture Stream %2").arg(i->index).arg(t));
- s_captureStreamIndexMap[QString(t)] = i->index;
+ logMessage(QString::fromLatin1("Found PulseAudio stream index %1 for Phonon Capture Stream %2").arg(i->index).arg(QLatin1String(t)));
+ s_captureStreamIndexMap[QLatin1String(t)] = i->index;
// Find the source's phonon index and notify whoever cares...
if (PA_INVALID_INDEX != i->source) {
@@ -470,8 +470,8 @@ void source_output_cb(pa_context *c, const pa_source_output_info *i, int eol, vo
}
if (found) {
// OK so we just emit our signal
- logMessage(QString("Letting the rest of phonon know about this"));
- s_instance->emitUsingDevice(QString(t), device);
+ logMessage(QLatin1String("Letting the rest of phonon know about this"));
+ s_instance->emitUsingDevice(QLatin1String(t), device);
}
}
}
@@ -486,17 +486,17 @@ static void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, uint32_t
QString phononid = s_outputStreamIndexMap.key(index);
if (!phononid.isEmpty()) {
if (s_outputStreamIndexMap.contains(phononid)) {
- logMessage(QString("Phonon Output Stream %1 is gone at the PA end. Marking it as invalid in our cache as we may reuse it.").arg(phononid));
+ logMessage(QString::fromLatin1("Phonon Output Stream %1 is gone at the PA end. Marking it as invalid in our cache as we may reuse it.").arg(phononid));
s_outputStreamIndexMap[phononid] = PA_INVALID_INDEX;
} else {
- logMessage(QString("Removing Phonon Output Stream %1 (it's gone!)").arg(phononid));
+ logMessage(QString::fromLatin1("Removing Phonon Output Stream %1 (it's gone!)").arg(phononid));
s_outputStreamIndexMap.remove(phononid);
}
}
} else {
pa_operation *o;
if (!(o = pa_context_get_sink_input_info(c, index, sink_input_cb, NULL))) {
- logMessage(QString("pa_context_get_sink_input_info() failed"));
+ logMessage(QLatin1String("pa_context_get_sink_input_info() failed"));
return;
}
pa_operation_unref(o);
@@ -508,17 +508,17 @@ static void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, uint32_t
QString phononid = s_captureStreamIndexMap.key(index);
if (!phononid.isEmpty()) {
if (s_captureStreamIndexMap.contains(phononid)) {
- logMessage(QString("Phonon Capture Stream %1 is gone at the PA end. Marking it as invalid in our cache as we may reuse it.").arg(phononid));
+ logMessage(QString::fromLatin1("Phonon Capture Stream %1 is gone at the PA end. Marking it as invalid in our cache as we may reuse it.").arg(phononid));
s_captureStreamIndexMap[phononid] = PA_INVALID_INDEX;
} else {
- logMessage(QString("Removing Phonon Capture Stream %1 (it's gone!)").arg(phononid));
+ logMessage(QString::fromLatin1("Removing Phonon Capture Stream %1 (it's gone!)").arg(phononid));
s_captureStreamIndexMap.remove(phononid);
}
}
} else {
pa_operation *o;
if (!(o = pa_context_get_source_output_info(c, index, source_output_cb, NULL))) {
- logMessage(QString("pa_context_get_sink_input_info() failed"));
+ logMessage(QLatin1String("pa_context_get_sink_input_info() failed"));
return;
}
pa_operation_unref(o);
@@ -528,29 +528,27 @@ static void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, uint32_t
}
-static const char* statename(pa_context_state_t state)
+static QString statename(pa_context_state_t state)
{
switch (state)
{
- case PA_CONTEXT_UNCONNECTED: return "Unconnected";
- case PA_CONTEXT_CONNECTING: return "Connecting";
- case PA_CONTEXT_AUTHORIZING: return "Authorizing";
- case PA_CONTEXT_SETTING_NAME: return "Setting Name";
- case PA_CONTEXT_READY: return "Ready";
- case PA_CONTEXT_FAILED: return "Failed";
- case PA_CONTEXT_TERMINATED: return "Terminated";
+ case PA_CONTEXT_UNCONNECTED: return QLatin1String("Unconnected");
+ case PA_CONTEXT_CONNECTING: return QLatin1String("Connecting");
+ case PA_CONTEXT_AUTHORIZING: return QLatin1String("Authorizing");
+ case PA_CONTEXT_SETTING_NAME: return QLatin1String("Setting Name");
+ case PA_CONTEXT_READY: return QLatin1String("Ready");
+ case PA_CONTEXT_FAILED: return QLatin1String("Failed");
+ case PA_CONTEXT_TERMINATED: return QLatin1String("Terminated");
}
- static QString unknown;
- unknown = QString("Unknown state: %0").arg(state);
- return unknown.toAscii().constData();
+ return QString::fromLatin1("Unknown state: %0").arg(state);
}
static void context_state_callback(pa_context *c, void *)
{
Q_ASSERT(c);
- logMessage(QString("context_state_callback %1").arg(statename(pa_context_get_state(c))));
+ logMessage(QString::fromLatin1("context_state_callback %1").arg(statename(pa_context_get_state(c))));
pa_context_state_t state = pa_context_get_state(c);
if (state == PA_CONTEXT_READY) {
// We've connected to PA, so it is active
@@ -566,7 +564,7 @@ static void context_state_callback(pa_context *c, void *)
if (!(o = pa_context_subscribe(c, (pa_subscription_mask_t)
(PA_SUBSCRIPTION_MASK_SINK_INPUT|
PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT), NULL, NULL))) {
- logMessage(QString("pa_context_subscribe() failed"));
+ logMessage(QLatin1String("pa_context_subscribe() failed"));
return;
}
pa_operation_unref(o);
@@ -639,27 +637,27 @@ PulseSupport::PulseSupport()
{
#ifdef HAVE_PULSEAUDIO
// Initialise our map (is there a better way to do this?)
- s_roleCategoryMap["none"] = Phonon::NoCategory;
- s_roleCategoryMap["video"] = Phonon::VideoCategory;
- s_roleCategoryMap["music"] = Phonon::MusicCategory;
- s_roleCategoryMap["game"] = Phonon::GameCategory;
- s_roleCategoryMap["event"] = Phonon::NotificationCategory;
- s_roleCategoryMap["phone"] = Phonon::CommunicationCategory;
- //s_roleCategoryMap["animation"]; // No Mapping
- //s_roleCategoryMap["production"]; // No Mapping
- s_roleCategoryMap["a11y"] = Phonon::AccessibilityCategory;
+ s_roleCategoryMap[QLatin1String("none")] = Phonon::NoCategory;
+ s_roleCategoryMap[QLatin1String("video")] = Phonon::VideoCategory;
+ s_roleCategoryMap[QLatin1String("music")] = Phonon::MusicCategory;
+ s_roleCategoryMap[QLatin1String("game")] = Phonon::GameCategory;
+ s_roleCategoryMap[QLatin1String("event")] = Phonon::NotificationCategory;
+ s_roleCategoryMap[QLatin1String("phone")] = Phonon::CommunicationCategory;
+ //s_roleCategoryMap[QLatin1String("animation")]; // No Mapping
+ //s_roleCategoryMap[QLatin1String("production")]; // No Mapping
+ s_roleCategoryMap[QLatin1String("a11y")] = Phonon::AccessibilityCategory;
// To allow for easy debugging, give an easy way to disable this pulseaudio check
- QString pulseenv = qgetenv("PHONON_PULSEAUDIO_DISABLE");
+ QByteArray pulseenv = qgetenv("PHONON_PULSEAUDIO_DISABLE");
if (pulseenv.toInt()) {
- logMessage("PulseAudio support disabled: PHONON_PULSEAUDIO_DISABLE is set");
+ logMessage(QLatin1String("PulseAudio support disabled: PHONON_PULSEAUDIO_DISABLE is set"));
return;
}
// We require a glib event loop
- if (QLatin1String(QAbstractEventDispatcher::instance()->metaObject()->className())
- != "QGuiEventDispatcherGlib") {
- logMessage("Disabling PulseAudio integration for lack of GLib event loop.");
+ if (strcmp(QAbstractEventDispatcher::instance()->metaObject()->className(),
+ "QGuiEventDispatcherGlib") != 0) {
+ logMessage(QLatin1String("Disabling PulseAudio integration for lack of GLib event loop."));
return;
}
@@ -667,21 +665,21 @@ PulseSupport::PulseSupport()
// use a fully async integrated mainloop method to connect and get proper support.
pa_mainloop *p_test_mainloop;
if (!(p_test_mainloop = pa_mainloop_new())) {
- logMessage("PulseAudio support disabled: Unable to create mainloop");
+ logMessage(QLatin1String("PulseAudio support disabled: Unable to create mainloop"));
return;
}
pa_context *p_test_context;
if (!(p_test_context = pa_context_new(pa_mainloop_get_api(p_test_mainloop), "libphonon-probe"))) {
- logMessage("PulseAudio support disabled: Unable to create context");
+ logMessage(QLatin1String("PulseAudio support disabled: Unable to create context"));
pa_mainloop_free(p_test_mainloop);
return;
}
- logMessage("Probing for PulseAudio...");
+ logMessage(QLatin1String("Probing for PulseAudio..."));
// (cg) Convert to PA_CONTEXT_NOFLAGS when PulseAudio 0.9.19 is required
if (pa_context_connect(p_test_context, NULL, static_cast<pa_context_flags_t>(0), NULL) < 0) {
- logMessage(QString("PulseAudio support disabled: %1").arg(pa_strerror(pa_context_errno(p_test_context))));
+ logMessage(QString::fromLatin1("PulseAudio support disabled: %1").arg(QString::fromLocal8Bit(pa_strerror(pa_context_errno(p_test_context)))));
pa_context_disconnect(p_test_context);
pa_context_unref(p_test_context);
pa_mainloop_free(p_test_mainloop);
@@ -693,7 +691,7 @@ PulseSupport::PulseSupport()
pa_mainloop_iterate(p_test_mainloop, 1, NULL);
if (!PA_CONTEXT_IS_GOOD(pa_context_get_state(p_test_context))) {
- logMessage("PulseAudio probe complete.");
+ logMessage(QLatin1String("PulseAudio probe complete."));
break;
}
}
@@ -702,12 +700,12 @@ PulseSupport::PulseSupport()
pa_mainloop_free(p_test_mainloop);
if (!s_pulseActive) {
- logMessage("PulseAudio support is not available.");
+ logMessage(QLatin1String("PulseAudio support is not available."));
return;
}
// If we're still here, PA is available.
- logMessage("PulseAudio support enabled");
+ logMessage(QLatin1String("PulseAudio support enabled"));
// Now we connect for real using a proper main loop that we can forget
// all about processing.
@@ -856,7 +854,7 @@ static void setDevicePriority(Category category, QStringList list)
if (role.isEmpty())
return;
- logMessage(QString("Reindexing %1: %2").arg(role).arg(list.join(", ")));
+ logMessage(QString::fromLatin1("Reindexing %1: %2").arg(role).arg(list.join(QLatin1String(", "))));
char **devices;
devices = pa_xnew(char *, list.size()+1);
@@ -926,7 +924,7 @@ void PulseSupport::setStreamPropList(Category category, QString streamUuid)
if (role.isEmpty())
return;
- logMessage(QString("Setting role to %1 for streamindex %2").arg(role).arg(streamUuid));
+ logMessage(QString::fromLatin1("Setting role to %1 for streamindex %2").arg(role).arg(streamUuid));
setenv("PULSE_PROP_media.role", role.toLatin1().constData(), 1);
setenv("PULSE_PROP_phonon.streamid", streamUuid.toLatin1().constData(), 1);
#endif
@@ -952,30 +950,30 @@ bool PulseSupport::setOutputDevice(QString streamUuid, int device) {
return true;
if (!s_outputDevices.contains(device)) {
- logMessage(QString("Attempting to set Output Device for invalid device id %1.").arg(device));
+ logMessage(QString::fromLatin1("Attempting to set Output Device for invalid device id %1.").arg(device));
return false;
}
const QVariant var = s_outputDevices[device].properties["name"];
- logMessage(QString("Attempting to set Output Device to '%1' for Output Stream %2").arg(var.toString()).arg(streamUuid));
+ logMessage(QString::fromLatin1("Attempting to set Output Device to '%1' for Output Stream %2").arg(var.toString()).arg(streamUuid));
// Attempt to look up the pulse stream index.
if (s_outputStreamIndexMap.contains(streamUuid) && s_outputStreamIndexMap[streamUuid] != PA_INVALID_INDEX) {
- logMessage(QString("... Found in map. Moving now"));
+ logMessage(QLatin1String("... Found in map. Moving now"));
uint32_t pulse_device_index = s_outputDevices[device].pulseIndex;
uint32_t pulse_stream_index = s_outputStreamIndexMap[streamUuid];
- logMessage(QString("Moving Pulse Sink Input %1 to '%2' (Pulse Sink %3)").arg(pulse_stream_index).arg(var.toString()).arg(pulse_device_index));
+ logMessage(QString::fromLatin1("Moving Pulse Sink Input %1 to '%2' (Pulse Sink %3)").arg(pulse_stream_index).arg(var.toString()).arg(pulse_device_index));
/// @todo Find a way to move the stream without saving it... We don't want to pollute the stream restore db.
pa_operation* o;
if (!(o = pa_context_move_sink_input_by_index(s_context, pulse_stream_index, pulse_device_index, NULL, NULL))) {
- logMessage(QString("pa_context_move_sink_input_by_index() failed"));
+ logMessage(QLatin1String("pa_context_move_sink_input_by_index() failed"));
return false;
}
pa_operation_unref(o);
} else {
- logMessage(QString("... Not found in map. We will be notified of the device when the stream appears and we can process any moves needed then"));
+ logMessage(QLatin1String("... Not found in map. We will be notified of the device when the stream appears and we can process any moves needed then"));
}
return true;
#endif
@@ -991,30 +989,30 @@ bool PulseSupport::setCaptureDevice(QString streamUuid, int device) {
return true;
if (!s_captureDevices.contains(device)) {
- logMessage(QString("Attempting to set Capture Device for invalid device id %1.").arg(device));
+ logMessage(QString::fromLatin1("Attempting to set Capture Device for invalid device id %1.").arg(device));
return false;
}
const QVariant var = s_captureDevices[device].properties["name"];
- logMessage(QString("Attempting to set Capture Device to '%1' for Capture Stream %2").arg(var.toString()).arg(streamUuid));
+ logMessage(QString::fromLatin1("Attempting to set Capture Device to '%1' for Capture Stream %2").arg(var.toString()).arg(streamUuid));
// Attempt to look up the pulse stream index.
if (s_captureStreamIndexMap.contains(streamUuid) && s_captureStreamIndexMap[streamUuid] == PA_INVALID_INDEX) {
- logMessage(QString("... Found in map. Moving now"));
+ logMessage(QString::fromLatin1("... Found in map. Moving now"));
uint32_t pulse_device_index = s_captureDevices[device].pulseIndex;
uint32_t pulse_stream_index = s_captureStreamIndexMap[streamUuid];
- logMessage(QString("Moving Pulse Source Output %1 to '%2' (Pulse Sink %3)").arg(pulse_stream_index).arg(var.toString()).arg(pulse_device_index));
+ logMessage(QString::fromLatin1("Moving Pulse Source Output %1 to '%2' (Pulse Sink %3)").arg(pulse_stream_index).arg(var.toString()).arg(pulse_device_index));
/// @todo Find a way to move the stream without saving it... We don't want to pollute the stream restore db.
pa_operation* o;
if (!(o = pa_context_move_source_output_by_index(s_context, pulse_stream_index, pulse_device_index, NULL, NULL))) {
- logMessage(QString("pa_context_move_source_output_by_index() failed"));
+ logMessage(QString::fromLatin1("pa_context_move_source_output_by_index() failed"));
return false;
}
pa_operation_unref(o);
} else {
- logMessage(QString("... Not found in map. We will be notified of the device when the stream appears and we can process any moves needed then"));
+ logMessage(QString::fromLatin1("... Not found in map. We will be notified of the device when the stream appears and we can process any moves needed then"));
}
return true;
#endif
@@ -1025,7 +1023,7 @@ void PulseSupport::clearStreamCache(QString streamUuid) {
Q_UNUSED(streamUuid);
return;
#else
- logMessage(QString("Clearing stream cache for stream %1").arg(streamUuid));
+ logMessage(QString::fromLatin1("Clearing stream cache for stream %1").arg(streamUuid));
s_outputStreamIndexMap.remove(streamUuid);
s_captureStreamIndexMap.remove(streamUuid);
#endif
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
index 9b97c8b350..5bb3c57e92 100644
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp
@@ -1351,26 +1351,30 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev)
}
}
- if (!ev->commitString().isEmpty())
+ if (renderTextControl && ev->replacementLength() > 0) {
+ renderTextControl->setSelectionStart(qMax(renderTextControl->selectionStart() + ev->replacementStart(), 0));
+ renderTextControl->setSelectionEnd(qMin(renderTextControl->selectionStart() + ev->replacementLength(), static_cast<int>(renderTextControl->text().length())));
+ // Commit regardless of whether commitString is empty, to get rid of selection.
editor->confirmComposition(ev->commitString());
- else {
- // 1. empty preedit with a selection attribute, and start/end of 0 cancels composition
- // 2. empty preedit with a selection attribute, and start/end of non-0 updates selection of current preedit text
- // 3. populated preedit with a selection attribute, and start/end of 0 or non-0 updates selection of supplied preedit text
- // 4. otherwise event is updating supplied pre-edit text
- QString preedit = ev->preeditString();
+ } else if (!ev->commitString().isEmpty()) {
+ editor->confirmComposition(ev->commitString());
+ }
+ // 1. empty preedit with a selection attribute, and start/end of 0 cancels composition
+ // 2. empty preedit with a selection attribute, and start/end of non-0 updates selection of current preedit text
+ // 3. populated preedit with a selection attribute, and start/end of 0 or non-0 updates selection of supplied preedit text
+ // 4. otherwise event is updating supplied pre-edit text
+ QString preedit = ev->preeditString();
#if QT_VERSION >= 0x040600
- if (hasSelection) {
- QString text = (renderTextControl) ? QString(renderTextControl->text()) : QString();
- if (preedit.isEmpty() && selection.start + selection.length > 0)
- preedit = text;
- editor->setComposition(preedit, underlines,
- (selection.length < 0) ? selection.start + selection.length : selection.start,
- (selection.length < 0) ? selection.start : selection.start + selection.length);
- } else
+ if (hasSelection) {
+ QString text = (renderTextControl) ? QString(renderTextControl->text()) : QString();
+ if (preedit.isEmpty() && selection.start + selection.length > 0)
+ preedit = text;
+ editor->setComposition(preedit, underlines,
+ (selection.length < 0) ? selection.start + selection.length : selection.start,
+ (selection.length < 0) ? selection.start : selection.start + selection.length);
+ } else
#endif
- editor->setComposition(preedit, underlines, preedit.length(), 0);
- }
+ editor->setComposition(preedit, underlines, preedit.length(), 0);
ev->accept();
}
diff --git a/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp b/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp
index e4f70deb76..7a8aae7535 100644
--- a/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp
@@ -141,6 +141,16 @@ void GraphicsWebView::mouseMoveEvent(QGraphicsSceneMouseEvent* event)
QGraphicsWebView::mouseMoveEvent(event);
}
+bool GraphicsWebView::sceneEvent(QEvent *event)
+{
+ bool rv = QGraphicsWebView::sceneEvent(event);
+ if (event->type() == QEvent::UngrabMouse) {
+ pressTimer.stop();
+ parent->setKeepMouseGrab(false);
+ }
+ return rv;
+}
+
/*!
\qmlclass WebView QDeclarativeWebView
\ingroup qml-view-elements
diff --git a/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview_p.h b/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview_p.h
index b2055bf121..ca15a1eefb 100644
--- a/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview_p.h
+++ b/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview_p.h
@@ -70,6 +70,8 @@ protected:
void mouseMoveEvent(QGraphicsSceneMouseEvent* event);
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
void timerEvent(QTimerEvent* event);
+ bool sceneEvent(QEvent *event);
+
Q_SIGNALS:
void doubleClick(int clickX, int clickY);
private:
diff --git a/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri b/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri
index f2282f847d..b98617f439 100644
--- a/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri
+++ b/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri
@@ -1,5 +1,5 @@
-QT_WEBKIT_VERSION = 4.7.1
+QT_WEBKIT_VERSION = 4.7.2
QT_WEBKIT_MAJOR_VERSION = 4
QT_WEBKIT_MINOR_VERSION = 7
-QT_WEBKIT_PATCH_VERSION = 1
+QT_WEBKIT_PATCH_VERSION = 2
QT_CONFIG += webkit
diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
index b7ffb8a60c..31cf277607 100644
--- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp
@@ -1502,6 +1502,20 @@ void tst_QWebPage::inputMethods()
QCOMPARE(value, QString("QtWebKit"));
#endif
+ {
+ QList<QInputMethodEvent::Attribute> attributes;
+ QInputMethodEvent event(QString(), attributes);
+ event.setCommitString("XXX", 0, 0);
+ page->event(&event);
+ event.setCommitString(QString(), -2, 2); // Erase two characters.
+ page->event(&event);
+ event.setCommitString(QString(), -1, 1); // Erase one character.
+ page->event(&event);
+ variant = page->inputMethodQuery(Qt::ImSurroundingText);
+ value = variant.value<QString>();
+ QCOMPARE(value, QString("QtWebKit"));
+ }
+
// Cancel current composition first
inputAttributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, 0, 0, QVariant());
QInputMethodEvent eventSelection4("", inputAttributes);
diff --git a/src/activeqt/container/qaxwidget.cpp b/src/activeqt/container/qaxwidget.cpp
index 7afce5bf2b..c2108ba5ed 100644
--- a/src/activeqt/container/qaxwidget.cpp
+++ b/src/activeqt/container/qaxwidget.cpp
@@ -1008,7 +1008,7 @@ HRESULT WINAPI QAxClientSite::TranslateAccelerator(LPMSG lpMsg, DWORD /*grfModif
}
}
// ActiveQt based in-processes-servers will handle the event properly, so
- // we dont need to send this key event to the host.
+ // we don't need to send this key event to the host.
return S_OK;
}
diff --git a/src/activeqt/shared/qaxtypes.cpp b/src/activeqt/shared/qaxtypes.cpp
index ff21a9feb5..88f408e7e6 100644
--- a/src/activeqt/shared/qaxtypes.cpp
+++ b/src/activeqt/shared/qaxtypes.cpp
@@ -547,7 +547,7 @@ bool QVariantToVARIANT(const QVariant &var, VARIANT &arg, const QByteArray &type
SAFEARRAY *array = 0;
bool is2D = false;
// If the first element in the array is a list the whole list is
- // treated as a 2D array. The colum count is taken from the 1st element.
+ // treated as a 2D array. The column count is taken from the 1st element.
if (count) {
QVariantList col = list.at(0).toList();
int maxColumns = col.count();
diff --git a/src/corelib/arch/armv6/qatomic_generic_armv6.cpp b/src/corelib/arch/armv6/qatomic_generic_armv6.cpp
index 39d966ab42..444d3d3d48 100644
--- a/src/corelib/arch/armv6/qatomic_generic_armv6.cpp
+++ b/src/corelib/arch/armv6/qatomic_generic_armv6.cpp
@@ -38,7 +38,7 @@
** $QT_END_LICENSE$
**
** This file implements the generic atomics interface using ARMv6 assembly
-** instructions. It is more efficent than the inline versions when Qt is
+** instructions. It is more efficient than the inline versions when Qt is
** built for the THUMB instruction set, as the required instructions are
** only available in ARM state.
****************************************************************************/
diff --git a/src/corelib/arch/symbian/heap_hybrid.cpp b/src/corelib/arch/symbian/heap_hybrid.cpp
index 91faaedad3..5d2b2b6c26 100644
--- a/src/corelib/arch/symbian/heap_hybrid.cpp
+++ b/src/corelib/arch/symbian/heap_hybrid.cpp
@@ -134,7 +134,7 @@ The constant can be changed at ROM build time using patchdata OBY keyword.
@deprecated Patching this constant no longer has any effect.
*/
-#ifdef __X86GCC__ // For X86GCC we dont use the proper data import attribute
+#ifdef __X86GCC__ // For X86GCC we don't use the proper data import attribute
#undef IMPORT_D // since the constants are not really imported. GCC doesn't
#define IMPORT_D // allow imports from self.
#endif
@@ -451,7 +451,7 @@ TInt RHybridHeap::ConstructLock(TUint32 aMode)
void RHybridHeap::Init(TInt aBitmapSlab, TInt aPagePower)
{
- /*Moved code which does initilization */
+ /*Moved code which does initialization */
iTop = (TUint8*)this + iMinLength;
iBase = Ceiling(iBase, ECellAlignment); // Align iBase address
@@ -874,7 +874,7 @@ available in the largest free block.
Note that this function exists mainly for compatibility reasons. In a modern
heap implementation such as that present in Symbian it is not appropriate to
concern oneself with details such as the amount of free memory available on a
-heap and its largeset free block, because the way that a modern heap implmentation
+heap and its largeset free block, because the way that a modern heap implementation
works is not simple. The amount of available virtual memory != physical memory
and there are multiple allocation strategies used internally, which makes all
memory usage figures "fuzzy" at best.
@@ -1616,7 +1616,7 @@ void* RHybridHeap::DlMalloc(size_t bytes)
void RHybridHeap::DlFree(void* mem)
{
/*
- Consolidate freed chunks with preceeding or succeeding bordering
+ Consolidate freed chunks with preceding or succeeding bordering
free chunks, if they exist, and then place in a bin. Intermixed
with special cases for iTop, iDv, mmapped chunks, and usage errors.
*/
diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp
index f747bf754f..031baa32ed 100644
--- a/src/corelib/codecs/qutfcodec.cpp
+++ b/src/corelib/codecs/qutfcodec.cpp
@@ -195,7 +195,7 @@ QString QUtf8::convertToUnicode(const char *chars, int len, QTextCodec::Converte
// utf-8 bom composes into 0xfeff code point
bool nonCharacter;
if (!headerdone && uc == 0xfeff) {
- // dont do anything, just skip the BOM
+ // don't do anything, just skip the BOM
} else if (!(nonCharacter = isUnicodeNonCharacter(uc)) && uc > 0xffff && uc < 0x110000) {
// surrogate pair
Q_ASSERT((qch - (ushort*)result.unicode()) + 2 < result.length());
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index b7d6034609..a0019407b5 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -37,10 +37,3 @@ symbian: {
MMP_RULES -= PAGED
MMP_RULES *= UNPAGED
}
-
-neon {
- DEFINES += QT_HAVE_NEON
- QMAKE_CXXFLAGS *= -mfpu=neon
-}
-
-
diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri
index 4800716664..86800efc33 100644
--- a/src/corelib/global/global.pri
+++ b/src/corelib/global/global.pri
@@ -27,3 +27,5 @@ linux*:!static:!linux-armcc:!linux-gcce {
# Compensate for lack of platform defines in Symbian3 and Symbian4
symbian: DEFINES += SYMBIAN_VERSION_$$upper($$replace(SYMBIAN_VERSION,\\.,_))
+
+include(../../../tools/shared/symbian/epocroot.pri)
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index 35607d5dd3..b148a1d6ab 100644
--- a/src/corelib/global/qglobal.h
+++ b/src/corelib/global/qglobal.h
@@ -44,11 +44,11 @@
#include <stddef.h>
-#define QT_VERSION_STR "4.7.1"
+#define QT_VERSION_STR "4.7.2"
/*
QT_VERSION is (major << 16) + (minor << 8) + patch.
*/
-#define QT_VERSION 0x040701
+#define QT_VERSION 0x040702
/*
can be used like #if (QT_VERSION >= QT_VERSION_CHECK(4, 4, 0))
*/
diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
index 957abbfe60..898b860019 100644
--- a/src/corelib/global/qlibraryinfo.cpp
+++ b/src/corelib/global/qlibraryinfo.cpp
@@ -62,6 +62,10 @@ QT_END_NAMESPACE
# include "private/qcore_mac_p.h"
#endif
+#ifdef QLIBRARYINFO_EPOCROOT
+# include "symbian/epocroot_p.h"
+#endif
+
#include "qconfig.cpp"
QT_BEGIN_NAMESPACE
@@ -433,6 +437,14 @@ QLibraryInfo::location(LibraryLocation loc)
QString::fromLocal8Bit(qgetenv(ret.mid(rep + 2,
reg_var.matchedLength() - 3).toLatin1().constData()).constData()));
}
+
+#ifdef QLIBRARYINFO_EPOCROOT
+ // $${EPOCROOT} is a special case, resolve it similarly to qmake.
+ QRegExp epocrootMatcher(QLatin1String("\\$\\$\\{EPOCROOT\\}"));
+ if ((rep = epocrootMatcher.indexIn(ret)) != -1)
+ ret.replace(rep, epocrootMatcher.matchedLength(), qt_epocRoot());
+#endif
+
config->endGroup();
}
}
diff --git a/src/corelib/global/qmalloc.cpp b/src/corelib/global/qmalloc.cpp
index 090998c0cf..028a0a580d 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/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc
index 1c41eca47e..6b1aa17442 100644
--- a/src/corelib/global/qnamespace.qdoc
+++ b/src/corelib/global/qnamespace.qdoc
@@ -470,9 +470,9 @@
text; otherwise this width is excluded.
\value TextIncludeTrailingSpaces Same as IncludeTrailingSpaces
\value TextJustificationForced Ensures that text lines are justified.
- \value TextLongestVariant Ensures that the longest variant is always used
- when computing the size of a multi-variant string.
+ \omitvalue TextLongestVariant Ensures that the longest variant is always used
+ when computing the size of a multi-variant string. (Internal)
\omitvalue TextBypassShaping
\omitvalue BreakAnywhere
\omitvalue DontClip
@@ -511,11 +511,11 @@
delivery at a later time.
\value AutoConnection
- (default) If the object sending the signal is in a different thread
- than the receiving object, the signal is queued, behaving as
- Qt::QueuedConnection. If both objects are in the same thread,
- the slot is invoked directly, behaving as Qt::DirectConnection. The
- type of connection is determined when the signal is emitted.
+ (default) If the signal is emitted from a different thread than the
+ receiving object, the signal is queued, behaving as
+ Qt::QueuedConnection. Otherwise, the slot is invoked directly,
+ behaving as Qt::DirectConnection. The type of connection is
+ determined when the signal is emitted.
\value DirectConnection
The slot is invoked immediately, when the signal is
diff --git a/src/corelib/io/qdiriterator.cpp b/src/corelib/io/qdiriterator.cpp
index fd4b9c181b..dbb333fdc0 100644
--- a/src/corelib/io/qdiriterator.cpp
+++ b/src/corelib/io/qdiriterator.cpp
@@ -389,9 +389,6 @@ QDirIterator::QDirIterator(const QDir &dir, IteratorFlags flags)
\note To list symlinks that point to non existing files, QDir::System must be
passed to the flags.
- \warning This constructor expects \a flags to be left at its default value. Use
- the constructors that do not take the \a filters argument instead.
-
\sa hasNext(), next(), IteratorFlags
*/
QDirIterator::QDirIterator(const QString &path, QDir::Filters filters, IteratorFlags flags)
@@ -429,9 +426,6 @@ QDirIterator::QDirIterator(const QString &path, IteratorFlags flags)
\note To list symlinks that point to non existing files, QDir::System must be
passed to the flags.
- \warning This constructor expects \c flags to be left at its default value. Use the
- constructors that do not take the \a filters argument instead.
-
\sa hasNext(), next(), IteratorFlags
*/
QDirIterator::QDirIterator(const QString &path, const QStringList &nameFilters,
diff --git a/src/corelib/io/qfilesystemwatcher.cpp b/src/corelib/io/qfilesystemwatcher.cpp
index 18c3c9fd8d..1e6dcee5a6 100644
--- a/src/corelib/io/qfilesystemwatcher.cpp
+++ b/src/corelib/io/qfilesystemwatcher.cpp
@@ -228,8 +228,14 @@ void QPollingFileSystemWatcherEngine::timeout()
dit.remove();
emit directoryChanged(path, true);
} else if (x.value() != fi) {
- x.value() = fi;
- emit directoryChanged(path, false);
+ fi.refresh();
+ if (!fi.exists()) {
+ dit.remove();
+ emit directoryChanged(path, true);
+ } else {
+ x.value() = fi;
+ emit directoryChanged(path, false);
+ }
}
}
diff --git a/src/corelib/io/qfilesystemwatcher_kqueue.cpp b/src/corelib/io/qfilesystemwatcher_kqueue.cpp
index 378ad20af2..3664396048 100644
--- a/src/corelib/io/qfilesystemwatcher_kqueue.cpp
+++ b/src/corelib/io/qfilesystemwatcher_kqueue.cpp
@@ -117,67 +117,77 @@ QStringList QKqueueFileSystemWatcherEngine::addPaths(const QStringList &paths,
QStringList *files,
QStringList *directories)
{
- QMutexLocker locker(&mutex);
-
QStringList p = paths;
- QMutableListIterator<QString> it(p);
- while (it.hasNext()) {
- QString path = it.next();
- int fd;
+ {
+ QMutexLocker locker(&mutex);
+
+ QMutableListIterator<QString> it(p);
+ while (it.hasNext()) {
+ QString path = it.next();
+ int fd;
#if defined(O_EVTONLY)
- fd = qt_safe_open(QFile::encodeName(path), O_EVTONLY);
+ fd = qt_safe_open(QFile::encodeName(path), O_EVTONLY);
#else
- fd = qt_safe_open(QFile::encodeName(path), O_RDONLY);
+ fd = qt_safe_open(QFile::encodeName(path), O_RDONLY);
#endif
- if (fd == -1) {
- perror("QKqueueFileSystemWatcherEngine::addPaths: open");
- continue;
- }
+ if (fd == -1) {
+ perror("QKqueueFileSystemWatcherEngine::addPaths: open");
+ continue;
+ }
+ if (fd >= (int)FD_SETSIZE / 2 && fd < (int)FD_SETSIZE) {
+ int fddup = fcntl(fd, F_DUPFD, FD_SETSIZE);
+ if (fddup != -1) {
+ ::close(fd);
+ fd = fddup;
+ }
+ }
+ fcntl(fd, F_SETFD, FD_CLOEXEC);
- QT_STATBUF st;
- if (QT_FSTAT(fd, &st) == -1) {
- perror("QKqueueFileSystemWatcherEngine::addPaths: fstat");
- ::close(fd);
- continue;
- }
- int id = (S_ISDIR(st.st_mode)) ? -fd : fd;
- if (id < 0) {
- if (directories->contains(path)) {
+ QT_STATBUF st;
+ if (QT_FSTAT(fd, &st) == -1) {
+ perror("QKqueueFileSystemWatcherEngine::addPaths: fstat");
::close(fd);
continue;
}
- } else {
- if (files->contains(path)) {
+ int id = (S_ISDIR(st.st_mode)) ? -fd : fd;
+ if (id < 0) {
+ if (directories->contains(path)) {
+ ::close(fd);
+ continue;
+ }
+ } else {
+ if (files->contains(path)) {
+ ::close(fd);
+ continue;
+ }
+ }
+
+ struct kevent kev;
+ EV_SET(&kev,
+ fd,
+ EVFILT_VNODE,
+ EV_ADD | EV_ENABLE | EV_CLEAR,
+ NOTE_DELETE | NOTE_WRITE | NOTE_EXTEND | NOTE_ATTRIB | NOTE_RENAME | NOTE_REVOKE,
+ 0,
+ 0);
+ if (kevent(kqfd, &kev, 1, 0, 0, 0) == -1) {
+ perror("QKqueueFileSystemWatcherEngine::addPaths: kevent");
::close(fd);
continue;
}
- }
- struct kevent kev;
- EV_SET(&kev,
- fd,
- EVFILT_VNODE,
- EV_ADD | EV_ENABLE | EV_ONESHOT,
- NOTE_DELETE | NOTE_WRITE | NOTE_EXTEND | NOTE_ATTRIB | NOTE_RENAME | NOTE_REVOKE,
- 0,
- 0);
- if (kevent(kqfd, &kev, 1, 0, 0, 0) == -1) {
- perror("QKqueueFileSystemWatcherEngine::addPaths: kevent");
- ::close(fd);
- continue;
- }
+ it.remove();
+ if (id < 0) {
+ DEBUG() << "QKqueueFileSystemWatcherEngine: added directory path" << path;
+ directories->append(path);
+ } else {
+ DEBUG() << "QKqueueFileSystemWatcherEngine: added file path" << path;
+ files->append(path);
+ }
- it.remove();
- if (id < 0) {
- DEBUG() << "QKqueueFileSystemWatcherEngine: added directory path" << path;
- directories->append(path);
- } else {
- DEBUG() << "QKqueueFileSystemWatcherEngine: added file path" << path;
- files->append(path);
+ pathToID.insert(path, id);
+ idToPath.insert(id, path);
}
-
- pathToID.insert(path, id);
- idToPath.insert(id, path);
}
if (!isRunning())
@@ -192,43 +202,35 @@ QStringList QKqueueFileSystemWatcherEngine::removePaths(const QStringList &paths
QStringList *files,
QStringList *directories)
{
- QMutexLocker locker(&mutex);
-
+ bool isEmpty;
QStringList p = paths;
- QMutableListIterator<QString> it(p);
- while (it.hasNext()) {
- QString path = it.next();
- int id = pathToID.take(path);
- QString x = idToPath.take(id);
- if (x.isEmpty() || x != path)
- continue;
-
- int fd = id < 0 ? -id : id;
- struct kevent kev;
- EV_SET(&kev,
- fd,
- EVFILT_VNODE,
- EV_DELETE,
- NOTE_DELETE | NOTE_WRITE | NOTE_EXTEND | NOTE_ATTRIB | NOTE_RENAME | NOTE_REVOKE,
- 0,
- 0);
- if (kevent(kqfd, &kev, 1, 0, 0, 0) == -1) {
- perror("QKqueueFileSystemWatcherEngine::removeWatch: kevent");
- }
- ::close(fd);
+ {
+ QMutexLocker locker(&mutex);
+ if (pathToID.isEmpty())
+ return p;
+
+ QMutableListIterator<QString> it(p);
+ while (it.hasNext()) {
+ QString path = it.next();
+ int id = pathToID.take(path);
+ QString x = idToPath.take(id);
+ if (x.isEmpty() || x != path)
+ continue;
- it.remove();
- if (id < 0)
- directories->removeAll(path);
- else
- files->removeAll(path);
+ ::close(id < 0 ? -id : id);
+
+ it.remove();
+ if (id < 0)
+ directories->removeAll(path);
+ else
+ files->removeAll(path);
+ }
+ isEmpty = pathToID.isEmpty();
}
- if (pathToID.isEmpty()) {
+ if (isEmpty) {
stop();
- locker.unlock();
wait();
- locker.relock();
} else {
write(kqpipe[1], "@", 1);
}
@@ -243,19 +245,15 @@ void QKqueueFileSystemWatcherEngine::stop()
void QKqueueFileSystemWatcherEngine::run()
{
- static const struct timespec ZeroTimeout = { 0, 0 };
-
forever {
+ int r;
struct kevent kev;
DEBUG() << "QKqueueFileSystemWatcherEngine: waiting for kevents...";
- int r = kevent(kqfd, 0, 0, &kev, 1, 0);
+ EINTR_LOOP(r, kevent(kqfd, 0, 0, &kev, 1, 0));
if (r < 0) {
perror("QKqueueFileSystemWatcherEngine: error during kevent wait");
return;
- }
-
- QMutexLocker locker(&mutex);
- do {
+ } else {
int fd = kev.ident;
DEBUG() << "QKqueueFileSystemWatcherEngine: processing kevent" << kev.ident << kev.filter;
@@ -287,6 +285,8 @@ void QKqueueFileSystemWatcherEngine::run()
break;
}
} else {
+ QMutexLocker locker(&mutex);
+
int id = fd;
QString path = idToPath.value(id);
if (path.isEmpty()) {
@@ -295,12 +295,12 @@ void QKqueueFileSystemWatcherEngine::run()
path = idToPath.value(id);
if (path.isEmpty()) {
DEBUG() << "QKqueueFileSystemWatcherEngine: received a kevent for a file we're not watching";
- goto process_next_event;
+ continue;
}
}
if (kev.filter != EVFILT_VNODE) {
DEBUG() << "QKqueueFileSystemWatcherEngine: received a kevent with the wrong filter";
- goto process_next_event;
+ continue;
}
if ((kev.fflags & (NOTE_DELETE | NOTE_REVOKE | NOTE_RENAME)) != 0) {
@@ -315,31 +315,15 @@ void QKqueueFileSystemWatcherEngine::run()
else
emit fileChanged(path, true);
} else {
- DEBUG() << path << "changed, re-enabling watch";
+ DEBUG() << path << "changed";
if (id < 0)
emit directoryChanged(path, false);
else
emit fileChanged(path, false);
-
- // renable the watch
- EV_SET(&kev,
- fd,
- EVFILT_VNODE,
- EV_ADD | EV_ENABLE | EV_ONESHOT,
- NOTE_DELETE | NOTE_WRITE | NOTE_EXTEND | NOTE_ATTRIB | NOTE_RENAME | NOTE_REVOKE,
- 0,
- 0);
- if (kevent(kqfd, &kev, 1, 0, 0, 0) == -1) {
- perror("QKqueueFileSystemWatcherEngine::processKqueueEvents: kevent EV_ADD");
- }
}
}
-
- // are there any more?
-process_next_event:
- r = kevent(kqfd, 0, 0, &kev, 1, &ZeroTimeout);
- } while (r > 0);
+ }
}
}
diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp
index d83f7eec45..69e921943a 100644
--- a/src/corelib/io/qfsfileengine_unix.cpp
+++ b/src/corelib/io/qfsfileengine_unix.cpp
@@ -695,7 +695,7 @@ bool QFSFileEnginePrivate::doStat() const
} else if (fd == -1) {
// ### actually covers two cases: d->fh and when the file is not open
#if defined(Q_OS_SYMBIAN)
- // Optimisation for Symbian where fileFlags() calls both doStat() and isSymlink(), but rarely on real links.
+ // Optimization for Symbian where fileFlags() calls both doStat() and isSymlink(), but rarely on real links.
// When the filename is not a link, lstat will return the same info as stat, but this also removes
// any need for a further call to lstat to check if the file is a link.
need_lstat = false;
diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp
index 26e587ded2..68fb2bfa94 100644
--- a/src/corelib/io/qiodevice.cpp
+++ b/src/corelib/io/qiodevice.cpp
@@ -395,7 +395,10 @@ QIODevice::QIODevice(QIODevicePrivate &dd, QObject *parent)
/*!
- Destructs the QIODevice object.
+ The destructor is virtual, and QIODevice is an abstract base
+ class. This destructor does not call close(), but the subclass
+ destructor might. If you are in doubt, call close() before
+ destroying the QIODevice.
*/
QIODevice::~QIODevice()
{
diff --git a/src/corelib/io/qiodevice_p.h b/src/corelib/io/qiodevice_p.h
index 1dd51ea8b2..8b77da5126 100644
--- a/src/corelib/io/qiodevice_p.h
+++ b/src/corelib/io/qiodevice_p.h
@@ -68,7 +68,7 @@ QT_BEGIN_NAMESPACE
#define QIODEVICE_BUFFERSIZE Q_INT64_C(16384)
#endif
-// This is QIODevice's read buffer, optimised for read(), isEmpty() and getChar()
+// This is QIODevice's read buffer, optimized for read(), isEmpty() and getChar()
class QIODevicePrivateLinearBuffer
{
public:
diff --git a/src/corelib/io/qprocess_symbian.cpp b/src/corelib/io/qprocess_symbian.cpp
index 003e78167f..5b283a57ce 100644
--- a/src/corelib/io/qprocess_symbian.cpp
+++ b/src/corelib/io/qprocess_symbian.cpp
@@ -1050,6 +1050,7 @@ bool QProcessPrivate::startDetached(const QString &program, const QStringList &a
newProc->Resume();
newProc->Close();
+ delete newProc;
return true;
}
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index edd6d2b701..e6c5fb92bf 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -88,6 +88,12 @@
#define CSIDL_APPDATA 0x001a // <username>\Application Data
#endif
+#ifdef Q_AUTOTEST_EXPORT
+# define Q_AUTOTEST_EXPORT_HELPER Q_AUTOTEST_EXPORT
+#else
+# define Q_AUTOTEST_EXPORT_HELPER static
+#endif
+
// ************************************************************************
// QConfFile
@@ -134,7 +140,7 @@ QT_BEGIN_INCLUDE_NAMESPACE
# include <sys/mount.h>
QT_END_INCLUDE_NAMESPACE
-static bool isLikelyToBeNfs(int handle)
+Q_AUTOTEST_EXPORT_HELPER bool qIsLikelyToBeNfs(int handle)
{
struct statfs buf;
if (fstatfs(handle, &buf) != 0)
@@ -160,7 +166,7 @@ QT_END_INCLUDE_NAMESPACE
# define AUTOFSNG_SUPER_MAGIC 0x7d92b1a0
# endif
-static bool isLikelyToBeNfs(int handle)
+Q_AUTOTEST_EXPORT_HELPER bool qIsLikelyToBeNfs(int handle)
{
struct statfs buf;
if (fstatfs(handle, &buf) != 0)
@@ -177,7 +183,7 @@ QT_BEGIN_INCLUDE_NAMESPACE
# include <sys/statvfs.h>
QT_END_INCLUDE_NAMESPACE
-static bool isLikelyToBeNfs(int handle)
+Q_AUTOTEST_EXPORT_HELPER bool qIsLikelyToBeNfs(int handle)
{
struct statvfs buf;
if (fstatvfs(handle, &buf) != 0)
@@ -189,7 +195,7 @@ static bool isLikelyToBeNfs(int handle)
#endif
}
#else
-static inline bool isLikelyToBeNfs(int /* handle */)
+Q_AUTOTEST_EXPORT_HELPER inline bool qIsLikelyToBeNfs(int /* handle */)
{
return true;
}
@@ -203,7 +209,7 @@ static bool unixLock(int handle, int lockType)
now is to disable locking when we detect NFS (or AutoFS or
CacheFS, which are probably wrapping NFS).
*/
- if (isLikelyToBeNfs(handle))
+ if (qIsLikelyToBeNfs(handle))
return false;
struct flock fl;
@@ -1231,16 +1237,21 @@ QConfFileSettingsPrivate::~QConfFileSettingsPrivate()
if (confFiles[i] && !confFiles[i]->ref.deref()) {
if (confFiles[i]->size == 0) {
delete confFiles[i].take();
- } else if (unusedCache) {
+ } else {
if (usedHash)
usedHash->remove(confFiles[i]->name);
- QT_TRY {
- // compute a better size?
- unusedCache->insert(confFiles[i]->name, confFiles[i].data(),
- 10 + (confFiles[i]->originalKeys.size() / 4));
- confFiles[i].take();
- } QT_CATCH(...) {
- // out of memory. Do not cache the file.
+ if (unusedCache) {
+ QT_TRY {
+ // compute a better size?
+ unusedCache->insert(confFiles[i]->name, confFiles[i].data(),
+ 10 + (confFiles[i]->originalKeys.size() / 4));
+ confFiles[i].take();
+ } QT_CATCH(...) {
+ // out of memory. Do not cache the file.
+ delete confFiles[i].take();
+ }
+ } else {
+ // unusedCache is gone - delete the entry to prevent a memory leak
delete confFiles[i].take();
}
}
@@ -3506,7 +3517,7 @@ void QSettings::setPath(Format format, Scope scope, const QString &path)
\threadsafe
Registers a custom storage format. On success, returns a special
- Format value that can then be passed to the QSettings constuctor.
+ Format value that can then be passed to the QSettings constructor.
On failure, returns InvalidFormat.
The \a extension is the file
diff --git a/src/corelib/kernel/qabstractitemmodel.cpp b/src/corelib/kernel/qabstractitemmodel.cpp
index 6e37aee2e5..589d304790 100644
--- a/src/corelib/kernel/qabstractitemmodel.cpp
+++ b/src/corelib/kernel/qabstractitemmodel.cpp
@@ -1197,7 +1197,7 @@ void QAbstractItemModelPrivate::columnsRemoved(const QModelIndex &parent,
\l{QAbstractItemModel::}{endInsertRows()} must be called.
\sa {Model Classes}, {Model Subclassing Reference}, QModelIndex,
- QAbstractItemView, {Using drag & drop with item views},
+ QAbstractItemView, {Using drag and drop with item views},
{Simple DOM Model Example}, {Simple Tree Model Example},
{Editable Tree Model Example}, {Fetch More Example}
*/
@@ -1760,7 +1760,7 @@ QMimeData *QAbstractItemModel::mimeData(const QModelIndexList &indexes) const
where to place the data. This can occur in a tree when data is dropped on
a parent. Models will usually append the data to the parent in this case.
- \sa supportedDropActions(), {Using drag & drop with item views}
+ \sa supportedDropActions(), {Using drag and drop with item views}
*/
bool QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action,
int row, int column, const QModelIndex &parent)
@@ -1797,7 +1797,7 @@ bool QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction acti
reimplement the dropMimeData() function to handle the additional
operations.
- \sa dropMimeData(), Qt::DropActions, {Using drag & drop with item
+ \sa dropMimeData(), Qt::DropActions, {Using drag and drop with item
views}
*/
Qt::DropActions QAbstractItemModel::supportedDropActions() const
@@ -1814,7 +1814,7 @@ Qt::DropActions QAbstractItemModel::supportedDropActions() const
supportedDragActions() is used by QAbstractItemView::startDrag() as the
default values when a drag occurs.
- \sa Qt::DropActions, {Using drag & drop with item views}
+ \sa Qt::DropActions, {Using drag and drop with item views}
*/
Qt::DropActions QAbstractItemModel::supportedDragActions() const
{
@@ -1830,7 +1830,7 @@ Qt::DropActions QAbstractItemModel::supportedDragActions() const
Sets the supported drag \a actions for the items in the model.
- \sa supportedDragActions(), {Using drag & drop with item views}
+ \sa supportedDragActions(), {Using drag and drop with item views}
*/
void QAbstractItemModel::setSupportedDragActions(Qt::DropActions actions)
{
@@ -2636,8 +2636,6 @@ void QAbstractItemModel::endMoveRows()
QAbstractItemModelPrivate::Change insertChange = d->changes.pop();
QAbstractItemModelPrivate::Change removeChange = d->changes.pop();
- d->itemsMoved(removeChange.parent, removeChange.first, removeChange.last, insertChange.parent, insertChange.first, Qt::Vertical);
-
QModelIndex adjustedSource = removeChange.parent;
QModelIndex adjustedDestination = insertChange.parent;
@@ -2648,6 +2646,8 @@ void QAbstractItemModel::endMoveRows()
if (removeChange.needsAdjust)
adjustedSource = createIndex(adjustedSource.row() + numMoved, adjustedSource.column(), adjustedSource.internalPointer());
+ d->itemsMoved(adjustedSource, removeChange.first, removeChange.last, adjustedDestination, insertChange.first, Qt::Vertical);
+
emit rowsMoved(adjustedSource, removeChange.first, removeChange.last, adjustedDestination, insertChange.first);
emit layoutChanged();
}
@@ -2860,8 +2860,6 @@ void QAbstractItemModel::endMoveColumns()
QAbstractItemModelPrivate::Change insertChange = d->changes.pop();
QAbstractItemModelPrivate::Change removeChange = d->changes.pop();
- d->itemsMoved(removeChange.parent, removeChange.first, removeChange.last, insertChange.parent, insertChange.first, Qt::Horizontal);
-
QModelIndex adjustedSource = removeChange.parent;
QModelIndex adjustedDestination = insertChange.parent;
@@ -2872,6 +2870,8 @@ void QAbstractItemModel::endMoveColumns()
if (removeChange.needsAdjust)
adjustedSource = createIndex(adjustedSource.row(), adjustedSource.column() + numMoved, adjustedSource.internalPointer());
+ d->itemsMoved(adjustedSource, removeChange.first, removeChange.last, adjustedDestination, insertChange.first, Qt::Horizontal);
+
emit columnsMoved(adjustedSource, removeChange.first, removeChange.last, adjustedDestination, insertChange.first);
emit layoutChanged();
}
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index d3f399b754..5598187cf3 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -406,11 +406,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_glib.cpp b/src/corelib/kernel/qeventdispatcher_glib.cpp
index 8390275bb7..6fa2707f87 100644
--- a/src/corelib/kernel/qeventdispatcher_glib.cpp
+++ b/src/corelib/kernel/qeventdispatcher_glib.cpp
@@ -311,6 +311,10 @@ QEventDispatcherGlibPrivate::QEventDispatcherGlibPrivate(GMainContext *context)
}
}
+#if GLIB_CHECK_VERSION (2, 22, 0)
+ g_main_context_push_thread_default (mainContext);
+#endif
+
// setup post event source
postEventSource = reinterpret_cast<GPostEventSource *>(g_source_new(&postEventSourceFuncs,
sizeof(GPostEventSource)));
@@ -389,6 +393,9 @@ QEventDispatcherGlib::~QEventDispatcherGlib()
d->postEventSource = 0;
Q_ASSERT(d->mainContext != 0);
+#if GLIB_CHECK_VERSION (2, 22, 0)
+ g_main_context_pop_thread_default (d->mainContext);
+#endif
g_main_context_unref(d->mainContext);
d->mainContext = 0;
}
diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp
index d8cc344a80..bb9bd01eca 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 1486db504e..3615996f54 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/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index 153ccdf7b2..4eb007350d 100644
--- a/src/corelib/kernel/qeventdispatcher_win.cpp
+++ b/src/corelib/kernel/qeventdispatcher_win.cpp
@@ -84,7 +84,8 @@ extern uint qGlobalPostedEventsCount();
enum {
WM_QT_SOCKETNOTIFIER = WM_USER,
- WM_QT_SENDPOSTEDEVENTS = WM_USER + 1
+ WM_QT_SENDPOSTEDEVENTS = WM_USER + 1,
+ SendPostedEventsWindowsTimerId = ~1u
};
#if defined(Q_OS_WINCE)
@@ -353,10 +354,7 @@ public:
// for controlling when to send posted events
QAtomicInt serialNumber;
- int lastSerialNumber;
-#ifndef Q_OS_WINCE
- int lastMessageTime;
-#endif
+ int lastSerialNumber, sendPostedEventsWindowsTimerId;
QAtomicInt wakeUps;
// timers
@@ -381,11 +379,7 @@ public:
QEventDispatcherWin32Private::QEventDispatcherWin32Private()
: threadId(GetCurrentThreadId()), interrupt(false), internalHwnd(0), getMessageHook(0),
- serialNumber(0), lastSerialNumber(0),
-#ifndef Q_OS_WINCE
- lastMessageTime(0),
-#endif
- wakeUps(0)
+ serialNumber(0), lastSerialNumber(0), sendPostedEventsWindowsTimerId(0), wakeUps(0)
{
resolveTimerAPI();
}
@@ -492,20 +486,21 @@ LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPA
}
}
return 0;
- } else if (message == WM_TIMER) {
- Q_ASSERT(d != 0);
- d->sendTimerEvent(wp);
- return 0;
- } else if (message == WM_QT_SENDPOSTEDEVENTS) {
+ } else if (message == WM_QT_SENDPOSTEDEVENTS
+ // we also use a Windows timer to send posted events when the message queue is full
+ || (message == WM_TIMER
+ && d->sendPostedEventsWindowsTimerId != 0
+ && wp == d->sendPostedEventsWindowsTimerId)) {
int localSerialNumber = d->serialNumber;
if (localSerialNumber != d->lastSerialNumber) {
d->lastSerialNumber = localSerialNumber;
-#ifndef Q_OS_WINCE
- d->lastMessageTime = GetMessageTime();
-#endif
QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
}
return 0;
+ } else if (message == WM_TIMER) {
+ Q_ASSERT(d != 0);
+ d->sendTimerEvent(wp);
+ return 0;
}
return DefWindowProc(hwnd, message, wp, lp);
@@ -517,25 +512,36 @@ LRESULT QT_WIN_CALLBACK qt_GetMessageHook(int code, WPARAM wp, LPARAM lp)
QEventDispatcherWin32 *q = qobject_cast<QEventDispatcherWin32 *>(QAbstractEventDispatcher::instance());
Q_ASSERT(q != 0);
if (q) {
+ MSG *msg = (MSG *) lp;
QEventDispatcherWin32Private *d = q->d_func();
int localSerialNumber = d->serialNumber;
- MSG unused;
- if ((HIWORD(GetQueueStatus(QS_INPUT | QS_RAWINPUT)) == 0
- && PeekMessage(&unused, 0, WM_TIMER, WM_TIMER, PM_NOREMOVE) == 0)
-#ifndef Q_OS_WINCE
- || GetMessageTime() - d->lastMessageTime >= 10
-#endif
- ) {
- // no more input or timer events in the message queue or more than 10ms has elapsed since
- // we send posted events, we can allow posted events to be sent now
+ if (HIWORD(GetQueueStatus(QS_TIMER | QS_INPUT | QS_RAWINPUT)) == 0) {
+ // no more input or timer events in the message queue, we can allow posted events to be sent normally now
+ if (d->sendPostedEventsWindowsTimerId != 0) {
+ // stop the timer to send posted events, since we now allow the WM_QT_SENDPOSTEDEVENTS message
+ KillTimer(d->internalHwnd, d->sendPostedEventsWindowsTimerId);
+ d->sendPostedEventsWindowsTimerId = 0;
+ }
(void) d->wakeUps.fetchAndStoreRelease(0);
- MSG *msg = (MSG *) lp;
if (localSerialNumber != d->lastSerialNumber
// if this message IS the one that triggers sendPostedEvents(), no need to post it again
&& (msg->hwnd != d->internalHwnd
|| msg->message != WM_QT_SENDPOSTEDEVENTS)) {
PostMessage(d->internalHwnd, WM_QT_SENDPOSTEDEVENTS, 0, 0);
}
+ } else if (d->sendPostedEventsWindowsTimerId == 0
+ && localSerialNumber != d->lastSerialNumber
+ // if this message IS the one that triggers sendPostedEvents(), no need to post it again
+ && (msg->hwnd != d->internalHwnd
+ || msg->message != WM_QT_SENDPOSTEDEVENTS)) {
+ // start a special timer to continue delivering posted events while
+ // there are still input and timer messages in the message queue
+ d->sendPostedEventsWindowsTimerId = SetTimer(d->internalHwnd,
+ SendPostedEventsWindowsTimerId,
+ 0, // we specify zero, but Windows uses USER_TIMER_MINIMUM
+ NULL);
+ // we don't check the return value of SetTimer()... if creating the timer failed, there's little
+ // we can do. we just have to accept that posted events will be starved
}
}
}
diff --git a/src/corelib/kernel/qmimedata.cpp b/src/corelib/kernel/qmimedata.cpp
index bf4001a1fc..899ca7bc9a 100644
--- a/src/corelib/kernel/qmimedata.cpp
+++ b/src/corelib/kernel/qmimedata.cpp
@@ -249,7 +249,7 @@ QVariant QMimeDataPrivate::retrieveTypedData(const QString &format, QVariant::Ty
\o We can subclass QMimeData and reimplement hasFormat(),
formats(), and retrieveData().
- \o If the drag and drop operation occurs withing a single
+ \o If the drag and drop operation occurs within a single
application, we can subclass QMimeData and add extra data in
it, and use a qobject_cast() in the receiver's drop event
handler. For example:
diff --git a/src/corelib/kernel/qtcore_eval.cpp b/src/corelib/kernel/qtcore_eval.cpp
index 78556c3cc9..da76b74878 100644
--- a/src/corelib/kernel/qtcore_eval.cpp
+++ b/src/corelib/kernel/qtcore_eval.cpp
@@ -90,14 +90,14 @@ static const char will_shutdown_now[] =
static int qt_eval_is_supported()
{
- const char *const license_key = qt_eval_key_data + 12;
+ const volatile char *const license_key = qt_eval_key_data + 12;
// fast fail
if (!qt_eval_key_data[0] || !*license_key)
return -1;
// is this an unsupported evaluation?
- const char* typecode = license_key;
+ const volatile char *typecode = license_key;
int field = 2;
for ( ; field && *typecode; ++typecode)
if (*typecode == '-')
diff --git a/src/corelib/statemachine/qstatemachine.cpp b/src/corelib/statemachine/qstatemachine.cpp
index 4b371f7067..6324cc954a 100644
--- a/src/corelib/statemachine/qstatemachine.cpp
+++ b/src/corelib/statemachine/qstatemachine.cpp
@@ -178,7 +178,7 @@ QT_BEGIN_NAMESPACE
QStateMachinePrivate::QStateMachinePrivate()
{
- QAbstractStatePrivate::isMachine = true;
+ isMachine = true;
state = NotRunning;
_startState = 0;
diff --git a/src/corelib/thread/qthread.cpp b/src/corelib/thread/qthread.cpp
index 69b70cb4d2..6fb182b76f 100644
--- a/src/corelib/thread/qthread.cpp
+++ b/src/corelib/thread/qthread.cpp
@@ -482,8 +482,10 @@ int QThread::exec()
Q_D(QThread);
QMutexLocker locker(&d->mutex);
d->data->quitNow = false;
- if (d->exited)
+ if (d->exited) {
+ d->exited = false;
return d->returnCode;
+ }
locker.unlock();
QEventLoop eventLoop;
diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
index a7601b654a..e3b587daf8 100644
--- a/src/corelib/thread/qthread_unix.cpp
+++ b/src/corelib/thread/qthread_unix.cpp
@@ -97,6 +97,11 @@
# define SCHED_IDLE 5
#endif
+#if defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0)
+#define QT_HAS_THREAD_PRIORITY_SCHEDULING
+#endif
+
+
QT_BEGIN_NAMESPACE
#ifndef QT_NO_THREAD
@@ -142,6 +147,39 @@ static void destroy_current_thread_data_key()
}
Q_DESTRUCTOR_FUNCTION(destroy_current_thread_data_key)
+
+// Utility functions for getting, setting and clearing thread specific data.
+// In Symbian, TLS access is significantly faster than pthread_getspecific.
+// However Symbian does not have the thread destruction cleanup functionality
+// that pthread has, so pthread_setspecific is also used.
+static QThreadData *get_thread_data()
+{
+#ifdef Q_OS_SYMBIAN
+ return reinterpret_cast<QThreadData *>(Dll::Tls());
+#else
+ pthread_once(&current_thread_data_once, create_current_thread_data_key);
+ return reinterpret_cast<QThreadData *>(pthread_getspecific(current_thread_data_key));
+#endif
+}
+
+static void set_thread_data(QThreadData *data)
+{
+#ifdef Q_OS_SYMBIAN
+ qt_symbian_throwIfError(Dll::SetTls(data));
+#endif
+ pthread_once(&current_thread_data_once, create_current_thread_data_key);
+ pthread_setspecific(current_thread_data_key, data);
+}
+
+static void clear_thread_data()
+{
+#ifdef Q_OS_SYMBIAN
+ Dll::FreeTls();
+#endif
+ pthread_setspecific(current_thread_data_key, 0);
+}
+
+
#ifdef Q_OS_SYMBIAN
static void init_symbian_thread_handle(RThread &thread)
{
@@ -158,26 +196,24 @@ static void init_symbian_thread_handle(RThread &thread)
QThreadData *QThreadData::current()
{
- pthread_once(&current_thread_data_once, create_current_thread_data_key);
-
- QThreadData *data = reinterpret_cast<QThreadData *>(pthread_getspecific(current_thread_data_key));
+ QThreadData *data = get_thread_data();
if (!data) {
void *a;
if (QInternal::activateCallbacks(QInternal::AdoptCurrentThread, &a)) {
QThread *adopted = static_cast<QThread*>(a);
Q_ASSERT(adopted);
data = QThreadData::get2(adopted);
- pthread_setspecific(current_thread_data_key, data);
+ set_thread_data(data);
adopted->d_func()->running = true;
adopted->d_func()->finished = false;
static_cast<QAdoptedThread *>(adopted)->init();
} else {
data = new QThreadData;
- pthread_setspecific(current_thread_data_key, data);
QT_TRY {
+ set_thread_data(data);
data->thread = new QAdoptedThread(data);
} QT_CATCH(...) {
- pthread_setspecific(current_thread_data_key, 0);
+ clear_thread_data();
data->deref();
data = 0;
QT_RETHROW;
@@ -268,8 +304,7 @@ void *QThreadPrivate::start(void *arg)
User::SetCritical(User::EProcessCritical);
#endif
- pthread_once(&current_thread_data_once, create_current_thread_data_key);
- pthread_setspecific(current_thread_data_key, data);
+ set_thread_data(data);
data->ref();
data->quitNow = false;
@@ -473,6 +508,7 @@ void QThread::usleep(unsigned long usecs)
thread_sleep(&ti);
}
+#ifdef QT_HAS_THREAD_PRIORITY_SCHEDULING
// Does some magic and calculate the Unix scheduler priorities
// sched_policy is IN/OUT: it must be set to a valid policy before calling this function
// sched_priority is OUT only
@@ -503,6 +539,7 @@ static bool calculateUnixPriority(int priority, int *sched_policy, int *sched_pr
*sched_priority = prio;
return true;
}
+#endif
void QThread::start(Priority priority)
{
@@ -523,7 +560,7 @@ void QThread::start(Priority priority)
d->priority = priority;
-#if defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && !defined(Q_OS_SYMBIAN) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0)
+#if defined(QT_HAS_THREAD_PRIORITY_SCHEDULING) && !defined(Q_OS_SYMBIAN)
// ### Need to implement thread sheduling and priorities for symbian os. Implementation removed for now
switch (priority) {
case InheritPriority:
@@ -564,7 +601,7 @@ void QThread::start(Priority priority)
break;
}
}
-#endif // _POSIX_THREAD_PRIORITY_SCHEDULING
+#endif // QT_HAS_THREAD_PRIORITY_SCHEDULING
#ifdef Q_OS_SYMBIAN
if (d->stackSize == 0)
@@ -727,7 +764,7 @@ void QThread::setPriority(Priority priority)
// copied from start() with a few modifications:
-#if defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0)
+#ifdef QT_HAS_THREAD_PRIORITY_SCHEDULING
int sched_policy;
sched_param param;
diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp
index b0c784eca9..fac0f453b0 100644
--- a/src/corelib/tools/qbytearray.cpp
+++ b/src/corelib/tools/qbytearray.cpp
@@ -1812,7 +1812,7 @@ QByteArray &QByteArray::replace(int pos, int len, const QByteArray &after)
return *this;
} else {
QByteArray copy(after);
- // ### optimise me
+ // ### optimize me
remove(pos, len);
return insert(pos, copy);
}
@@ -1853,7 +1853,7 @@ QByteArray &QByteArray::replace(int pos, int len, const char *after, int alen)
}
}
-// ### optimise all other replace method, by offering
+// ### optimize all other replace method, by offering
// QByteArray::replace(const char *before, int blen, const char *after, int alen)
/*!
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index 6b1de5ef0e..b817eb2fe9 100644
--- a/src/corelib/tools/qlocale.cpp
+++ b/src/corelib/tools/qlocale.cpp
@@ -77,7 +77,7 @@ QT_END_NAMESPACE
#include <qdebug.h>
#include <time.h>
-#if defined(Q_OS_LINUX) && !defined(__UCLIBC__)
+#if defined(__GLIBC__) && !defined(__UCLIBC__)
# include <fenv.h>
#endif
@@ -1576,8 +1576,6 @@ QDataStream &operator>>(QDataStream &ds, QLocale &l)
defaults to the default locale (see setDefault()).
\endlist
- The "C" locale is identical in behavior to \l{English}/\l{UnitedStates}.
-
Use language() and country() to determine the actual language and
country values used.
@@ -6637,7 +6635,7 @@ Q_CORE_EXPORT char *qdtoa ( double d, int mode, int ndigits, int *decpt, int *si
_control87(MCW_EM, MCW_EM);
#endif
-#if defined(Q_OS_LINUX) && !defined(__UCLIBC__)
+#if defined(__GLIBC__) && !defined(__UCLIBC__)
fenv_t envp;
feholdexcept(&envp);
#endif
@@ -6653,7 +6651,7 @@ Q_CORE_EXPORT char *qdtoa ( double d, int mode, int ndigits, int *decpt, int *si
#endif //_M_X64
#endif //Q_OS_WIN
-#if defined(Q_OS_LINUX) && !defined(__UCLIBC__)
+#if defined(__GLIBC__) && !defined(__UCLIBC__)
fesetenv(&envp);
#endif
@@ -7308,6 +7306,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 8b424bbc3a..1af2cb476a 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/corelib/tools/qpoint.cpp b/src/corelib/tools/qpoint.cpp
index 66f06e9ccd..c297709ee5 100644
--- a/src/corelib/tools/qpoint.cpp
+++ b/src/corelib/tools/qpoint.cpp
@@ -438,8 +438,12 @@ QDebug operator<<(QDebug d, const QPointF &p)
/*!
\fn bool QPointF::isNull() const
- Returns true if both the x and y coordinates are set to 0.0,
+ Returns true if both the x and y coordinates are set to +0.0;
otherwise returns false.
+
+ \note Since this function treats +0.0 and -0.0 differently, points
+ with zero-valued coordinates where either or both values have a
+ negative sign are not defined to be null points.
*/
diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
index 4cce33941b..2895bbaeb6 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -378,6 +378,13 @@ namespace QtSharedPointer {
inline ExternalRefCount() : d(0) { }
inline ExternalRefCount(Qt::Initialization i) : Basic<T>(i) { }
+
+ inline ExternalRefCount(T *ptr) : Basic<T>(Qt::Uninitialized) // throws
+ { internalConstruct(ptr); }
+ template <typename Deleter>
+ inline ExternalRefCount(T *ptr, Deleter deleter) : Basic<T>(Qt::Uninitialized) // throws
+ { internalConstruct(ptr, deleter); }
+
inline ExternalRefCount(const ExternalRefCount<T> &other) : Basic<T>(other), d(other.d)
{ if (d) ref(); }
template <class X>
@@ -448,11 +455,12 @@ public:
inline QSharedPointer() { }
// inline ~QSharedPointer() { }
- inline explicit QSharedPointer(T *ptr) : BaseClass(Qt::Uninitialized)
- { BaseClass::internalConstruct(ptr); }
+ inline explicit QSharedPointer(T *ptr) : BaseClass(ptr) // throws
+ { }
template <typename Deleter>
- inline QSharedPointer(T *ptr, Deleter d) { BaseClass::internalConstruct(ptr, d); }
+ inline QSharedPointer(T *ptr, Deleter d) : BaseClass(ptr, d) // throws
+ { }
inline QSharedPointer(const QSharedPointer<T> &other) : BaseClass(other) { }
inline QSharedPointer<T> &operator=(const QSharedPointer<T> &other)
diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp
index b2fe2dabad..63ebafbde2 100644
--- a/src/corelib/tools/qsimd.cpp
+++ b/src/corelib/tools/qsimd.cpp
@@ -135,7 +135,7 @@ static inline uint detectProcessorFeatures()
#if defined(QT_HAVE_IWMMXT)
// runtime detection only available when running as a previlegied process
features = IWMMXT;
-#elif defined(QT_HAVE_NEON)
+#elif defined(QT_ALWAYS_HAVE_NEON)
features = NEON;
#endif
diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h
index 664543b136..2dbed76523 100644
--- a/src/corelib/tools/qsimd_p.h
+++ b/src/corelib/tools/qsimd_p.h
@@ -87,9 +87,13 @@ QT_BEGIN_HEADER
#include <tmmintrin.h>
#endif
-// SSE4.1 and SSE4.2 intrinsics
-#if (defined(QT_HAVE_SSE4_1) || defined(QT_HAVE_SSE4_2)) && (defined(__SSE4_1__) || defined(Q_CC_MSVC))
+// SSE4.1 intrinsics
+#if defined(QT_HAVE_SSE4_1) && (defined(__SSE4_1__) || defined(Q_CC_MSVC))
#include <smmintrin.h>
+#endif
+
+// SSE4.2 intrinsics
+#if defined(QT_HAVE_SSE4_2) && (defined(__SSE4_2__) || defined(Q_CC_MSVC))
#include <nmmintrin.h>
#endif
@@ -105,7 +109,8 @@ QT_BEGIN_HEADER
#endif // defined(QT_HAVE_SSE2) && (defined(__SSE2__) || defined(Q_CC_MSVC))
// NEON intrinsics
-#if defined(QT_HAVE_NEON)
+#if defined __ARM_NEON__
+#define QT_ALWAYS_HAVE_NEON
#include <arm_neon.h>
#endif
diff --git a/src/corelib/tools/qsize.cpp b/src/corelib/tools/qsize.cpp
index 20ac344b39..12287abf5c 100644
--- a/src/corelib/tools/qsize.cpp
+++ b/src/corelib/tools/qsize.cpp
@@ -492,9 +492,13 @@ QDebug operator<<(QDebug dbg, const QSize &s) {
/*!
\fn bool QSizeF::isNull() const
- Returns true if both the width and height is 0; otherwise returns
+ Returns true if both the width and height are +0.0; otherwise returns
false.
+ \note Since this function treats +0.0 and -0.0 differently, sizes with
+ zero width and height where either or both values have a negative
+ sign are not defined to be null sizes.
+
\sa isValid(), isEmpty()
*/
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 8083aeebb2..114c4eea24 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -567,7 +567,7 @@ const QString::Null QString::null = { };
strings from a string list that contain a particular substring or
that match a particular QRegExp using the QStringList::filter()
function.
-:
+
\section1 Querying String Data
If you want to see if a QString starts or ends with a particular
@@ -3573,7 +3573,7 @@ static QByteArray toLatin1_helper(const QChar *data, int length)
}
length = length % 16;
}
-#elif QT_HAVE_NEON
+#elif defined(QT_ALWAYS_HAVE_NEON)
// Refer to the documentation of the SSE2 implementation
// this use eactly the same method as for SSE except:
// 1) neon has unsigned comparison
diff --git a/src/dbus/qdbusabstractinterface.cpp b/src/dbus/qdbusabstractinterface.cpp
index 4e9c1adc7a..0ea8c8d48b 100644
--- a/src/dbus/qdbusabstractinterface.cpp
+++ b/src/dbus/qdbusabstractinterface.cpp
@@ -560,7 +560,7 @@ void QDBusAbstractInterface::connectNotify(const char *signal)
if (!d->isValid)
return;
- // we end up recursing here, so optimise away
+ // we end up recursing here, so optimize away
if (qstrcmp(signal + 1, "destroyed(QObject*)") == 0)
return;
diff --git a/src/dbus/qdbusargument.h b/src/dbus/qdbusargument.h
index 30f2cdabb8..84d034922c 100644
--- a/src/dbus/qdbusargument.h
+++ b/src/dbus/qdbusargument.h
@@ -172,7 +172,7 @@ template<typename T> inline T qdbus_cast(const QVariant &v
return qvariant_cast<T>(v);
}
-// specialise for QVariant, allowing it to be used in place of QDBusVariant
+// specialize for QVariant, allowing it to be used in place of QDBusVariant
template<> inline QVariant qdbus_cast<QVariant>(const QDBusArgument &arg, QVariant *)
{
QDBusVariant item;
diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp
index bf771a848d..f68a8caaba 100644
--- a/src/dbus/qdbusconnection.cpp
+++ b/src/dbus/qdbusconnection.cpp
@@ -140,9 +140,9 @@ void QDBusConnectionManager::setConnection(const QString &name, QDBusConnectionP
\fn QDBusConnection &QDBusConnection::sessionBus()
\relates QDBusConnection
- Returns a QDBusConnection object opened with the session bus. The object reference returned
- by this function is valid until the QCoreApplication's destructor is run, when the
- connection will be closed and the object, deleted.
+ Returns a QDBusConnection object opened with the session bus. The object
+ reference returned by this function is valid until the application terminates,
+ at which point the connection will be closed and the object deleted.
*/
/*!
\fn QDBusConnection &QDBusConnection::systemBus()
diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h
index 1bd00dafae..67145b885e 100644
--- a/src/dbus/qdbusconnection_p.h
+++ b/src/dbus/qdbusconnection_p.h
@@ -203,6 +203,8 @@ public:
void disconnectRelay(const QString &service,
const QString &path, const QString &interface,
QDBusAbstractInterface *receiver, const char *signal);
+ void registerService(const QString &serviceName);
+ void unregisterService(const QString &serviceName);
bool handleMessage(const QDBusMessage &msg);
void waitForFinished(QDBusPendingCallPrivate *pcall);
@@ -247,9 +249,11 @@ public slots:
void socketWrite(int);
void objectDestroyed(QObject *o);
void relaySignal(QObject *obj, const QMetaObject *, int signalId, const QVariantList &args);
- void _q_serviceOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner);
- void registerService(const QString &serviceName);
- void unregisterService(const QString &serviceName);
+
+private slots:
+ void serviceOwnerChangedNoLock(const QString &name, const QString &oldOwner, const QString &newOwner);
+ void registerServiceNoLock(const QString &serviceName);
+ void unregisterServiceNoLock(const QString &serviceName);
signals:
void serviceOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner);
@@ -303,6 +307,9 @@ public:
QObject *receiver, const char *signal, int minMIdx,
bool buildSignature);
static DBusHandlerResult messageFilter(DBusConnection *, DBusMessage *, void *);
+ static bool checkReplyForDelivery(QDBusConnectionPrivate *target, QObject *object,
+ int idx, const QList<int> &metaTypes,
+ const QDBusMessage &msg);
static QDBusCallDeliveryEvent *prepareReply(QDBusConnectionPrivate *target, QObject *object,
int idx, const QList<int> &metaTypes,
const QDBusMessage &msg);
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 31588e7511..1842e5aec9 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -552,6 +552,9 @@ bool QDBusConnectionPrivate::handleMessage(const QDBusMessage &amsg)
(*(*list)[i])(amsg);
}
+ if (!ref)
+ return false;
+
switch (amsg.type()) {
case QDBusMessage::SignalMessage:
handleSignal(amsg);
@@ -713,6 +716,8 @@ static int findSlot(const QMetaObject *mo, const QByteArray &name, int flags,
return -1;
}
+static QDBusCallDeliveryEvent * const DIRECT_DELIVERY = (QDBusCallDeliveryEvent *)1;
+
QDBusCallDeliveryEvent* QDBusConnectionPrivate::prepareReply(QDBusConnectionPrivate *target,
QObject *object, int idx,
const QList<int> &metaTypes,
@@ -736,6 +741,8 @@ QDBusCallDeliveryEvent* QDBusConnectionPrivate::prepareReply(QDBusConnectionPriv
// we can deliver
// prepare for the call
+ if (target == object)
+ return DIRECT_DELIVERY;
return new QDBusCallDeliveryEvent(QDBusConnection(target), idx, target, msg, metaTypes);
}
@@ -750,6 +757,12 @@ void QDBusConnectionPrivate::activateSignal(const QDBusConnectionPrivate::Signal
// Slots can optionally have one final parameter that is a QDBusMessage
// Slots receive read-only copies of the message (i.e., pass by value or by const-ref)
QDBusCallDeliveryEvent *call = prepareReply(this, hook.obj, hook.midx, hook.params, msg);
+ if (call == DIRECT_DELIVERY) {
+ // short-circuit delivery
+ Q_ASSERT(this == hook.obj);
+ deliverCall(this, 0, msg, hook.params, hook.midx);
+ return;
+ }
if (call)
postEventToThread(ActivateSignalAction, hook.obj, call);
}
@@ -801,7 +814,7 @@ bool QDBusConnectionPrivate::activateCall(QObject* object, int flags, const QDBu
++cacheIt;
if (cacheIt == slotCache.hash.constEnd() || cacheIt.key() != cacheKey)
{
- // not cached, analyse the meta object
+ // not cached, analyze the meta object
const QMetaObject *mo = object->metaObject();
QByteArray memberName = msg.member().toUtf8();
@@ -1207,11 +1220,11 @@ void QDBusConnectionPrivate::relaySignal(QObject *obj, const QMetaObject *mo, in
q_dbus_message_unref(msg);
}
-void QDBusConnectionPrivate::_q_serviceOwnerChanged(const QString &name,
- const QString &oldOwner, const QString &newOwner)
+void QDBusConnectionPrivate::serviceOwnerChangedNoLock(const QString &name,
+ const QString &oldOwner, const QString &newOwner)
{
Q_UNUSED(oldOwner);
- QDBusWriteLocker locker(UpdateSignalHookOwnerAction, this);
+// QDBusWriteLocker locker(UpdateSignalHookOwnerAction, this);
WatchedServicesHash::Iterator it = watchedServices.find(name);
if (it == watchedServices.end())
return;
@@ -1686,11 +1699,11 @@ void QDBusConnectionPrivate::setConnection(DBusConnection *dbc, const QDBusError
hook.obj = this;
hook.params << QMetaType::Void << QVariant::String; // both functions take a QString as parameter and return void
- hook.midx = staticMetaObject.indexOfSlot("registerService(QString)");
+ hook.midx = staticMetaObject.indexOfSlot("registerServiceNoLock(QString)");
Q_ASSERT(hook.midx != -1);
signalHooks.insert(QLatin1String("NameAcquired:" DBUS_INTERFACE_DBUS), hook);
- hook.midx = staticMetaObject.indexOfSlot("unregisterService(QString)");
+ hook.midx = staticMetaObject.indexOfSlot("unregisterServiceNoLock(QString)");
Q_ASSERT(hook.midx != -1);
signalHooks.insert(QLatin1String("NameLost:" DBUS_INTERFACE_DBUS), hook);
@@ -2081,7 +2094,7 @@ void QDBusConnectionPrivate::connectSignal(const QString &key, const SignalHook
// we need to watch for this service changing
connectSignal(dbusServiceString(), QString(), dbusInterfaceString(),
QLatin1String("NameOwnerChanged"), QStringList() << hook.service, QString(),
- this, SLOT(_q_serviceOwnerChanged(QString,QString,QString)));
+ this, SLOT(serviceOwnerChangedNoLock(QString,QString,QString)));
data.owner = getNameOwnerNoCache(hook.service);
qDBusDebug() << this << "Watching service" << hook.service << "for owner changes (current owner:"
<< data.owner << ")";
@@ -2342,12 +2355,22 @@ QDBusConnectionPrivate::findMetaObject(const QString &service, const QString &pa
void QDBusConnectionPrivate::registerService(const QString &serviceName)
{
QDBusWriteLocker locker(RegisterServiceAction, this);
+ registerServiceNoLock(serviceName);
+}
+
+void QDBusConnectionPrivate::registerServiceNoLock(const QString &serviceName)
+{
serviceNames.append(serviceName);
}
void QDBusConnectionPrivate::unregisterService(const QString &serviceName)
{
QDBusWriteLocker locker(UnregisterServiceAction, this);
+ unregisterServiceNoLock(serviceName);
+}
+
+void QDBusConnectionPrivate::unregisterServiceNoLock(const QString &serviceName)
+{
serviceNames.removeAll(serviceName);
}
diff --git a/src/dbus/qdbusmarshaller.cpp b/src/dbus/qdbusmarshaller.cpp
index 8b174a1758..e62015249c 100644
--- a/src/dbus/qdbusmarshaller.cpp
+++ b/src/dbus/qdbusmarshaller.cpp
@@ -507,7 +507,7 @@ bool QDBusMarshaller::appendCrossMarshalling(QDBusDemarshaller *demarshaller)
if (code == DBUS_TYPE_ARRAY) {
int element = q_dbus_message_iter_get_element_type(&demarshaller->iterator);
if (q_dbus_type_is_fixed(element)) {
- // another optimisation: fixed size arrays
+ // another optimization: fixed size arrays
// code is exactly like QDBusDemarshaller::toByteArray
DBusMessageIter sub;
q_dbus_message_iter_recurse(&demarshaller->iterator, &sub);
diff --git a/src/dbus/qdbusmessage.cpp b/src/dbus/qdbusmessage.cpp
index d838e37dbe..10b2768afc 100644
--- a/src/dbus/qdbusmessage.cpp
+++ b/src/dbus/qdbusmessage.cpp
@@ -292,7 +292,7 @@ QDBusMessage QDBusMessagePrivate::makeLocal(const QDBusConnectionPrivate &conn,
}
// no complex types seen
- // optimise by using the variant list itself
+ // optimize by using the variant list itself
QDBusMessage retval;
QDBusMessagePrivate *d = retval.d_ptr;
d->arguments = asSent.d_ptr->arguments;
@@ -452,7 +452,7 @@ QDBusMessage QDBusMessage::createReply(const QVariantList &arguments) const
d_ptr->localReply = new QDBusMessage(reply); // keep an internal copy
}
- // the reply must have a msg or be a local-loop optimisation
+ // the reply must have a msg or be a local-loop optimization
Q_ASSERT(reply.d_ptr->reply || reply.d_ptr->localMessage);
return reply;
}
@@ -471,7 +471,7 @@ QDBusMessage QDBusMessage::createErrorReply(const QString name, const QString &m
d_ptr->localReply = new QDBusMessage(reply); // keep an internal copy
}
- // the reply must have a msg or be a local-loop optimisation
+ // the reply must have a msg or be a local-loop optimization
Q_ASSERT(reply.d_ptr->reply || reply.d_ptr->localMessage);
return reply;
}
diff --git a/src/dbus/qdbusmetatype.cpp b/src/dbus/qdbusmetatype.cpp
index cb377cb781..821a2278c9 100644
--- a/src/dbus/qdbusmetatype.cpp
+++ b/src/dbus/qdbusmetatype.cpp
@@ -242,7 +242,7 @@ bool QDBusMetaType::marshall(QDBusArgument &arg, int id, const void *data)
QReadLocker locker(customTypesLock());
QVector<QDBusCustomTypeInfo> *ct = customTypes();
if (id >= ct->size())
- return false; // non-existant
+ return false; // non-existent
const QDBusCustomTypeInfo &info = (*ct).at(id);
if (!info.marshall) {
@@ -271,7 +271,7 @@ bool QDBusMetaType::demarshall(const QDBusArgument &arg, int id, void *data)
QReadLocker locker(customTypesLock());
QVector<QDBusCustomTypeInfo> *ct = customTypes();
if (id >= ct->size())
- return false; // non-existant
+ return false; // non-existent
const QDBusCustomTypeInfo &info = (*ct).at(id);
if (!info.demarshall) {
diff --git a/src/dbus/qdbuspendingreply.h b/src/dbus/qdbuspendingreply.h
index 61e561e800..918a46ceb3 100644
--- a/src/dbus/qdbuspendingreply.h
+++ b/src/dbus/qdbuspendingreply.h
@@ -85,7 +85,7 @@ namespace QDBusPendingReplyTypes {
template<typename T1> inline int metaTypeFor(T1 * = 0)
{ return qMetaTypeId<T1>(); }
- // specialise for QVariant, allowing it to be used in place of QDBusVariant
+ // specialize for QVariant, allowing it to be used in place of QDBusVariant
template<> inline int metaTypeFor<QVariant>(QVariant *)
{ return qMetaTypeId<QDBusVariant>(); }
diff --git a/src/dbus/qdbusutil.cpp b/src/dbus/qdbusutil.cpp
index 2fcdc739af..b7b0407c28 100644
--- a/src/dbus/qdbusutil.cpp
+++ b/src/dbus/qdbusutil.cpp
@@ -309,7 +309,7 @@ namespace QDBusUtil
Returns true if \a connName is a valid unique connection name.
Unique connection names start with a colon (":") and are followed by a list of dot-separated
- components composed of ASCII letters, digits, the hypen or the underscore ("_") character.
+ components composed of ASCII letters, digits, the hyphen or the underscore ("_") character.
*/
bool isValidUniqueConnectionName(const QString &connName)
{
diff --git a/src/declarative/debugger/qdeclarativedebug_p.h b/src/declarative/debugger/qdeclarativedebug_p.h
index 3d83e8a209..9b8572b93b 100644
--- a/src/declarative/debugger/qdeclarativedebug_p.h
+++ b/src/declarative/debugger/qdeclarativedebug_p.h
@@ -45,6 +45,8 @@
#include <QtCore/qurl.h>
#include <QtCore/qvariant.h>
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -65,7 +67,7 @@ class QDeclarativeDebugObjectReference;
class QDeclarativeDebugFileReference;
class QDeclarativeDebugEngineReference;
class QDeclarativeEngineDebugPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeEngineDebug : public QObject
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeEngineDebug : public QObject
{
Q_OBJECT
public:
@@ -111,7 +113,7 @@ private:
Q_DECLARE_PRIVATE(QDeclarativeEngineDebug)
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugWatch : public QObject
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugWatch : public QObject
{
Q_OBJECT
public:
@@ -142,7 +144,7 @@ private:
int m_objectDebugId;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugPropertyWatch : public QDeclarativeDebugWatch
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugPropertyWatch : public QDeclarativeDebugWatch
{
Q_OBJECT
public:
@@ -155,7 +157,7 @@ private:
QString m_name;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugObjectExpressionWatch : public QDeclarativeDebugWatch
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugObjectExpressionWatch : public QDeclarativeDebugWatch
{
Q_OBJECT
public:
@@ -170,7 +172,7 @@ private:
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugQuery : public QObject
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugQuery : public QObject
{
Q_OBJECT
public:
@@ -194,7 +196,7 @@ private:
State m_state;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugFileReference
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugFileReference
{
public:
QDeclarativeDebugFileReference();
@@ -215,7 +217,7 @@ private:
int m_columnNumber;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugEngineReference
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugEngineReference
{
public:
QDeclarativeDebugEngineReference();
@@ -232,7 +234,7 @@ private:
QString m_name;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugObjectReference
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugObjectReference
{
public:
QDeclarativeDebugObjectReference();
@@ -263,7 +265,7 @@ private:
QList<QDeclarativeDebugObjectReference> m_children;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugContextReference
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugContextReference
{
public:
QDeclarativeDebugContextReference();
@@ -284,7 +286,7 @@ private:
QList<QDeclarativeDebugContextReference> m_contexts;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugPropertyReference
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugPropertyReference
{
public:
QDeclarativeDebugPropertyReference();
@@ -309,7 +311,7 @@ private:
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugEnginesQuery : public QDeclarativeDebugQuery
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugEnginesQuery : public QDeclarativeDebugQuery
{
Q_OBJECT
public:
@@ -324,7 +326,7 @@ private:
QList<QDeclarativeDebugEngineReference> m_engines;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugRootContextQuery : public QDeclarativeDebugQuery
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugRootContextQuery : public QDeclarativeDebugQuery
{
Q_OBJECT
public:
@@ -339,7 +341,7 @@ private:
QDeclarativeDebugContextReference m_context;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugObjectQuery : public QDeclarativeDebugQuery
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugObjectQuery : public QDeclarativeDebugQuery
{
Q_OBJECT
public:
@@ -355,7 +357,7 @@ private:
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugExpressionQuery : public QDeclarativeDebugQuery
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugExpressionQuery : public QDeclarativeDebugQuery
{
Q_OBJECT
public:
diff --git a/src/declarative/debugger/qdeclarativedebugclient.cpp b/src/declarative/debugger/qdeclarativedebugclient.cpp
index 977e58e227..f5c57511af 100644
--- a/src/declarative/debugger/qdeclarativedebugclient.cpp
+++ b/src/declarative/debugger/qdeclarativedebugclient.cpp
@@ -93,7 +93,7 @@ QDeclarativeDebugConnectionPrivate::QDeclarativeDebugConnectionPrivate(QDeclarat
void QDeclarativeDebugConnectionPrivate::advertisePlugins()
{
- if (!q->isConnected() || !gotHello)
+ if (!q->isConnected())
return;
QPacket pack;
diff --git a/src/declarative/debugger/qdeclarativedebugclient_p.h b/src/declarative/debugger/qdeclarativedebugclient_p.h
index 8d1706dced..47f87a5937 100644
--- a/src/declarative/debugger/qdeclarativedebugclient_p.h
+++ b/src/declarative/debugger/qdeclarativedebugclient_p.h
@@ -44,6 +44,8 @@
#include <QtNetwork/qtcpsocket.h>
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -51,7 +53,7 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QDeclarativeDebugConnectionPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugConnection : public QTcpSocket
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugConnection : public QTcpSocket
{
Q_OBJECT
Q_DISABLE_COPY(QDeclarativeDebugConnection)
@@ -67,7 +69,7 @@ private:
};
class QDeclarativeDebugClientPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugClient : public QObject
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugClient : public QObject
{
Q_OBJECT
Q_DECLARE_PRIVATE(QDeclarativeDebugClient)
diff --git a/src/declarative/debugger/qdeclarativedebuggerstatus_p.h b/src/declarative/debugger/qdeclarativedebuggerstatus_p.h
index a3ba40a790..a1499d8900 100644
--- a/src/declarative/debugger/qdeclarativedebuggerstatus_p.h
+++ b/src/declarative/debugger/qdeclarativedebuggerstatus_p.h
@@ -44,13 +44,15 @@
#include <QtCore/qobject.h>
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
-class Q_DECLARATIVE_EXPORT QDeclarativeDebuggerStatus
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebuggerStatus
{
public:
virtual ~QDeclarativeDebuggerStatus();
diff --git a/src/declarative/debugger/qdeclarativedebughelper.cpp b/src/declarative/debugger/qdeclarativedebughelper.cpp
index 207ad2bc7f..b003c12324 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 c9cb839121..fcd71151cd 100644
--- a/src/declarative/debugger/qdeclarativedebughelper_p.h
+++ b/src/declarative/debugger/qdeclarativedebughelper_p.h
@@ -44,6 +44,8 @@
#include <QtCore/qglobal.h>
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -58,6 +60,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/src/declarative/debugger/qdeclarativedebugservice.cpp b/src/declarative/debugger/qdeclarativedebugservice.cpp
index b98cd5dab3..8c86ae820e 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>
@@ -204,13 +205,19 @@ QDeclarativeDebugServer *QDeclarativeDebugServer::instance()
bool ok = false;
// format: qmljsdebugger=port:3768[,block]
- if (!appD->qmljsDebugArguments.isEmpty()) {
+ 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->qmljsDebugArguments.indexOf(QLatin1String("port:")) == 0) {
- int separatorIndex = appD->qmljsDebugArguments.indexOf(QLatin1Char(','));
- port = appD->qmljsDebugArguments.mid(5, separatorIndex - 5).toInt(&ok);
+ if (appD->qmljsDebugArgumentsString().indexOf(QLatin1String("port:")) == 0) {
+ int separatorIndex = appD->qmljsDebugArgumentsString().indexOf(QLatin1Char(','));
+ port = appD->qmljsDebugArgumentsString().mid(5, separatorIndex - 5).toInt(&ok);
}
- block = appD->qmljsDebugArguments.contains(QLatin1String("block"));
+ block = appD->qmljsDebugArgumentsString().contains(QLatin1String("block"));
if (ok) {
server = new QDeclarativeDebugServer(port);
@@ -221,7 +228,7 @@ QDeclarativeDebugServer *QDeclarativeDebugServer::instance()
} else {
qWarning(QString::fromAscii("QDeclarativeDebugServer: Ignoring \"-qmljsdebugger=%1\". "
"Format is -qmljsdebugger=port:<port>[,block]").arg(
- appD->qmljsDebugArguments).toAscii().constData());
+ appD->qmljsDebugArgumentsString()).toAscii().constData());
}
}
#endif
diff --git a/src/declarative/debugger/qdeclarativedebugservice_p.h b/src/declarative/debugger/qdeclarativedebugservice_p.h
index 0cadbe5b58..da27b9aeaa 100644
--- a/src/declarative/debugger/qdeclarativedebugservice_p.h
+++ b/src/declarative/debugger/qdeclarativedebugservice_p.h
@@ -44,6 +44,8 @@
#include <QtCore/qobject.h>
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -51,7 +53,7 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QDeclarativeDebugServicePrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeDebugService : public QObject
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDebugService : public QObject
{
Q_OBJECT
Q_DECLARE_PRIVATE(QDeclarativeDebugService)
diff --git a/src/declarative/debugger/qpacketprotocol_p.h b/src/declarative/debugger/qpacketprotocol_p.h
index cfdce4ec03..d1538336b7 100644
--- a/src/declarative/debugger/qpacketprotocol_p.h
+++ b/src/declarative/debugger/qpacketprotocol_p.h
@@ -45,6 +45,8 @@
#include <QtCore/qobject.h>
#include <QtCore/qdatastream.h>
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -57,7 +59,7 @@ class QPacket;
class QPacketAutoSend;
class QPacketProtocolPrivate;
-class Q_DECLARATIVE_EXPORT QPacketProtocol : public QObject
+class Q_DECLARATIVE_PRIVATE_EXPORT QPacketProtocol : public QObject
{
Q_OBJECT
public:
@@ -87,7 +89,7 @@ private:
};
-class Q_DECLARATIVE_EXPORT QPacket : public QDataStream
+class Q_DECLARATIVE_PRIVATE_EXPORT QPacket : public QDataStream
{
public:
QPacket();
@@ -104,7 +106,7 @@ protected:
QBuffer * buf;
};
-class Q_DECLARATIVE_EXPORT QPacketAutoSend : public QPacket
+class Q_DECLARATIVE_PRIVATE_EXPORT QPacketAutoSend : public QPacket
{
public:
virtual ~QPacketAutoSend();
diff --git a/src/declarative/graphicsitems/qdeclarativeanchors.cpp b/src/declarative/graphicsitems/qdeclarativeanchors.cpp
index 26fb97fa64..c96ca0e12a 100644
--- a/src/declarative/graphicsitems/qdeclarativeanchors.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeanchors.cpp
@@ -272,7 +272,7 @@ void QDeclarativeAnchorsPrivate::addDepend(QGraphicsObject *item)
} else if(itemPrivate->isWidget) {
Q_Q(QDeclarativeAnchors);
QGraphicsWidget *widget = static_cast<QGraphicsWidget *>(item);
- QObject::connect(widget, SIGNAL(destroyed(QObject *)), q, SLOT(_q_widgetDestroyed(QObject *)));
+ QObject::connect(widget, SIGNAL(destroyed(QObject*)), q, SLOT(_q_widgetDestroyed(QObject*)));
QObject::connect(widget, SIGNAL(geometryChanged()), q, SLOT(_q_widgetGeometryChanged()));
}
}
@@ -289,7 +289,7 @@ void QDeclarativeAnchorsPrivate::remDepend(QGraphicsObject *item)
} else if(itemPrivate->isWidget) {
Q_Q(QDeclarativeAnchors);
QGraphicsWidget *widget = static_cast<QGraphicsWidget *>(item);
- QObject::disconnect(widget, SIGNAL(destroyed(QObject *)), q, SLOT(_q_widgetDestroyed(QObject *)));
+ QObject::disconnect(widget, SIGNAL(destroyed(QObject*)), q, SLOT(_q_widgetDestroyed(QObject*)));
QObject::disconnect(widget, SIGNAL(geometryChanged()), q, SLOT(_q_widgetGeometryChanged()));
}
}
diff --git a/src/declarative/graphicsitems/qdeclarativeanchors_p.h b/src/declarative/graphicsitems/qdeclarativeanchors_p.h
index c9297977fb..8223b17b3f 100644
--- a/src/declarative/graphicsitems/qdeclarativeanchors_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeanchors_p.h
@@ -48,6 +48,8 @@
#include <QtCore/QObject>
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -56,7 +58,7 @@ QT_MODULE(Declarative)
class QDeclarativeAnchorsPrivate;
class QDeclarativeAnchorLine;
-class Q_DECLARATIVE_EXPORT QDeclarativeAnchors : public QObject
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeAnchors : public QObject
{
Q_OBJECT
diff --git a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
index c58a08ddd5..649c8fb074 100644
--- a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp
@@ -361,6 +361,8 @@ QDeclarativeScaleGrid *QDeclarativeBorderImage::border()
\o BorderImage.Repeat - Tile the image until there is no more space. May crop the last image.
\o BorderImage.Round - Like Repeat, but scales the images down to ensure that the last image is not cropped.
\endlist
+
+ The default tile mode for each property is BorderImage.Stretch.
*/
QDeclarativeBorderImage::TileMode QDeclarativeBorderImage::horizontalTileMode() const
{
diff --git a/src/declarative/graphicsitems/qdeclarativeevents.cpp b/src/declarative/graphicsitems/qdeclarativeevents.cpp
index 61fd562ce7..4b5e7774ca 100644
--- a/src/declarative/graphicsitems/qdeclarativeevents.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeevents.cpp
@@ -108,6 +108,34 @@ Item {
so that ancestor items do not also respond to the same event.
*/
+/*!
+ \qmlproperty int KeyEvent::modifiers
+
+ This property holds the keyboard modifier flags that existed immediately
+ before the event occurred.
+
+ It contains a bitwise combination of:
+ \list
+ \o Qt.NoModifier - No modifier key is pressed.
+ \o Qt.ShiftModifier - A Shift key on the keyboard is pressed.
+ \o Qt.ControlModifier - A Ctrl key on the keyboard is pressed.
+ \o Qt.AltModifier - An Alt key on the keyboard is pressed.
+ \o Qt.MetaModifier - A Meta key on the keyboard is pressed.
+ \o Qt.KeypadModifier - A keypad button is pressed.
+ \endlist
+
+ For example, to react to a Shift key + Enter key combination:
+ \qml
+ Item {
+ focus: true
+ Keys.onPressed: {
+ if ((event.key == Qt.Key_Enter) && (event.modifiers & Qt.ShiftModifier))
+ doSomething();
+ }
+ }
+ \endqml
+*/
+
/*!
\qmlclass MouseEvent QDeclarativeMouseEvent
@@ -199,7 +227,7 @@ Item {
\qml
MouseArea {
onClicked: {
- if (mouse.button == Qt.LeftButton && mouse.modifiers & Qt.ShiftModifier)
+ if ((mouse.button == Qt.LeftButton) && (mouse.modifiers & Qt.ShiftModifier))
doSomething();
}
}
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp
index 001abca80c..377f3b5407 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.)
@@ -85,7 +82,11 @@ qreal QDeclarativeFlickableVisibleArea::yPosition() const
void QDeclarativeFlickableVisibleArea::updateVisible()
{
QDeclarativeFlickablePrivate *p = static_cast<QDeclarativeFlickablePrivate *>(QGraphicsItemPrivate::get(flickable));
- bool pageChange = false;
+
+ bool changeX = false;
+ bool changeY = false;
+ bool changeWidth = false;
+ bool changeHeight = false;
// Vertical
const qreal viewheight = flickable->height();
@@ -95,11 +96,11 @@ void QDeclarativeFlickableVisibleArea::updateVisible()
if (pageSize != m_heightRatio) {
m_heightRatio = pageSize;
- pageChange = true;
+ changeHeight = true;
}
if (pagePos != m_yPosition) {
m_yPosition = pagePos;
- pageChange = true;
+ changeY = true;
}
// Horizontal
@@ -110,14 +111,21 @@ void QDeclarativeFlickableVisibleArea::updateVisible()
if (pageSize != m_widthRatio) {
m_widthRatio = pageSize;
- pageChange = true;
+ changeWidth = true;
}
if (pagePos != m_xPosition) {
m_xPosition = pagePos;
- pageChange = true;
+ changeX = true;
}
- if (pageChange)
- emit pageChanged();
+
+ if (changeX)
+ emit xPositionChanged(m_xPosition);
+ if (changeY)
+ emit yPositionChanged(m_yPosition);
+ if (changeWidth)
+ emit widthRatioChanged(m_widthRatio);
+ if (changeHeight)
+ emit heightRatioChanged(m_heightRatio);
}
@@ -273,7 +281,6 @@ void QDeclarativeFlickablePrivate::fixupY()
void QDeclarativeFlickablePrivate::fixup(AxisData &data, qreal minExtent, qreal maxExtent)
{
- Q_Q(QDeclarativeFlickable);
if (data.move.value() > minExtent || maxExtent > minExtent) {
timeline.reset(data.move);
if (data.move.value() != minExtent) {
@@ -282,8 +289,7 @@ void QDeclarativeFlickablePrivate::fixup(AxisData &data, qreal minExtent, qreal
timeline.move(data.move, minExtent - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4);
timeline.move(data.move, minExtent, QEasingCurve(QEasingCurve::OutExpo), 3*fixupDuration/4);
} else {
- data.move.setValue(minExtent);
- q->viewportMoved();
+ timeline.set(data.move, minExtent);
}
}
} else if (data.move.value() < maxExtent) {
@@ -293,8 +299,7 @@ void QDeclarativeFlickablePrivate::fixup(AxisData &data, qreal minExtent, qreal
timeline.move(data.move, maxExtent - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4);
timeline.move(data.move, maxExtent, QEasingCurve(QEasingCurve::OutExpo), 3*fixupDuration/4);
} else {
- data.move.setValue(maxExtent);
- q->viewportMoved();
+ timeline.set(data.move, minExtent);
}
}
vTime = timeline.time();
@@ -378,6 +383,13 @@ void QDeclarativeFlickablePrivate::updateBeginningEnd()
\snippet doc/src/snippets/declarative/flickable.qml document
\clearfloat
+
+ Items declared as children of a Flickable are automatically parented to the
+ Flickable's \l contentItem. This should be taken into account when
+ operating on the children of the Flickable; it is usually the children of
+ \c contentItem that are relevant. For example, the bound of Items added
+ to the Flickable will be available by \c contentItem.childrenRect
+
\section1 Limitations
\note Due to an implementation detail, items placed inside a Flickable cannot anchor to it by
@@ -472,9 +484,9 @@ qreal QDeclarativeFlickable::contentX() const
void QDeclarativeFlickable::setContentX(qreal pos)
{
Q_D(QDeclarativeFlickable);
- pos = qRound(pos);
d->timeline.reset(d->hData.move);
d->vTime = d->timeline.time();
+ movementXEnding();
if (-pos != d->hData.move.value()) {
d->hData.move.setValue(-pos);
viewportMoved();
@@ -490,9 +502,9 @@ qreal QDeclarativeFlickable::contentY() const
void QDeclarativeFlickable::setContentY(qreal pos)
{
Q_D(QDeclarativeFlickable);
- pos = qRound(pos);
d->timeline.reset(d->vData.move);
d->vTime = d->timeline.time();
+ movementYEnding();
if (-pos != d->vData.move.value()) {
d->vData.move.setValue(-pos);
viewportMoved();
@@ -688,6 +700,9 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent
bool rejectY = false;
bool rejectX = false;
+ bool stealY = false;
+ bool stealX = false;
+
if (q->yflick()) {
int dy = int(event->pos().y() - pressPos.y());
if (qAbs(dy) > QApplication::startDragDistance() || QDeclarativeItemPrivate::elapsed(pressTime) > 200) {
@@ -716,7 +731,7 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent
vMoved = true;
}
if (qAbs(dy) > QApplication::startDragDistance())
- stealMouse = true;
+ stealY = true;
}
}
@@ -749,10 +764,12 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent
}
if (qAbs(dx) > QApplication::startDragDistance())
- stealMouse = true;
+ stealX = true;
}
}
+ stealMouse = stealX || stealY;
+
if (!lastPos.isNull()) {
qreal elapsed = qreal(QDeclarativeItemPrivate::restart(lastPosTime)) / 1000.;
if (elapsed <= 0)
@@ -979,8 +996,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);
@@ -1001,7 +1018,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();
@@ -1021,6 +1038,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())
@@ -1029,6 +1053,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)
@@ -1171,19 +1202,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
{
@@ -1505,6 +1535,15 @@ void QDeclarativeFlickable::movementStarting()
void QDeclarativeFlickable::movementEnding()
{
Q_D(QDeclarativeFlickable);
+ movementXEnding();
+ movementYEnding();
+ d->hData.smoothVelocity.setValue(0);
+ d->vData.smoothVelocity.setValue(0);
+}
+
+void QDeclarativeFlickable::movementXEnding()
+{
+ Q_D(QDeclarativeFlickable);
if (d->flickingHorizontally) {
d->flickingHorizontally = false;
emit flickingChanged();
@@ -1512,13 +1551,6 @@ void QDeclarativeFlickable::movementEnding()
if (!d->flickingVertically)
emit flickEnded();
}
- if (d->flickingVertically) {
- d->flickingVertically = false;
- emit flickingChanged();
- emit flickingVerticallyChanged();
- if (!d->flickingHorizontally)
- emit flickEnded();
- }
if (!d->pressed && !d->stealMouse) {
if (d->movingHorizontally) {
d->movingHorizontally = false;
@@ -1528,6 +1560,20 @@ void QDeclarativeFlickable::movementEnding()
if (!d->movingVertically)
emit movementEnded();
}
+ }
+}
+
+void QDeclarativeFlickable::movementYEnding()
+{
+ Q_D(QDeclarativeFlickable);
+ if (d->flickingVertically) {
+ d->flickingVertically = false;
+ emit flickingChanged();
+ emit flickingVerticallyChanged();
+ if (!d->flickingHorizontally)
+ emit flickEnded();
+ }
+ if (!d->pressed && !d->stealMouse) {
if (d->movingVertically) {
d->movingVertically = false;
d->vMoved = false;
@@ -1537,8 +1583,6 @@ void QDeclarativeFlickable::movementEnding()
emit movementEnded();
}
}
- d->hData.smoothVelocity.setValue(0);
- d->vData.smoothVelocity.setValue(0);
}
void QDeclarativeFlickablePrivate::updateVelocity()
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p.h
index 44f2bcfe04..6e4d8ed0a7 100644
--- a/src/declarative/graphicsitems/qdeclarativeflickable_p.h
+++ b/src/declarative/graphicsitems/qdeclarativeflickable_p.h
@@ -163,7 +163,6 @@ Q_SIGNALS:
void horizontalVelocityChanged();
void verticalVelocityChanged();
void isAtBoundaryChanged();
- void pageChanged();
void flickableDirectionChanged();
void interactiveChanged();
void boundsBehaviorChanged();
@@ -191,6 +190,8 @@ protected Q_SLOTS:
void movementEnding();
protected:
+ void movementXEnding();
+ void movementYEnding();
virtual qreal minXExtent() const;
virtual qreal minYExtent() const;
virtual qreal maxXExtent() const;
diff --git a/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h b/src/declarative/graphicsitems/qdeclarativeflickable_p_p.h
index beee741a29..92cf74874b 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
{
@@ -182,10 +185,10 @@ class QDeclarativeFlickableVisibleArea : public QObject
{
Q_OBJECT
- Q_PROPERTY(qreal xPosition READ xPosition NOTIFY pageChanged)
- Q_PROPERTY(qreal yPosition READ yPosition NOTIFY pageChanged)
- Q_PROPERTY(qreal widthRatio READ widthRatio NOTIFY pageChanged)
- Q_PROPERTY(qreal heightRatio READ heightRatio NOTIFY pageChanged)
+ Q_PROPERTY(qreal xPosition READ xPosition NOTIFY xPositionChanged)
+ Q_PROPERTY(qreal yPosition READ yPosition NOTIFY yPositionChanged)
+ Q_PROPERTY(qreal widthRatio READ widthRatio NOTIFY widthRatioChanged)
+ Q_PROPERTY(qreal heightRatio READ heightRatio NOTIFY heightRatioChanged)
public:
QDeclarativeFlickableVisibleArea(QDeclarativeFlickable *parent=0);
@@ -198,7 +201,10 @@ public:
void updateVisible();
signals:
- void pageChanged();
+ void xPositionChanged(qreal xPosition);
+ void yPositionChanged(qreal yPosition);
+ void widthRatioChanged(qreal widthRatio);
+ void heightRatioChanged(qreal heightRatio);
private:
QDeclarativeFlickable *flickable;
diff --git a/src/declarative/graphicsitems/qdeclarativeflipable.cpp b/src/declarative/graphicsitems/qdeclarativeflipable.cpp
index 4ecf87b3f6..f118a8591b 100644
--- a/src/declarative/graphicsitems/qdeclarativeflipable.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeflipable.cpp
@@ -83,27 +83,28 @@ public:
\section1 Example Usage
- \beginfloatright
- \inlineimage flipable.gif
- \endfloat
-
The following example shows a Flipable item that flips whenever it is
clicked, rotating about the y-axis.
- The \l Rotation element is used to specify the angle and axis of the flip.
- When \c flipped is true, the item changes to the "back" state, where
- the angle is changed to 180 degrees to produce the flipping effect.
+ This flipable item has a \c flipped boolean property that is toggled
+ whenever the MouseArea within the flipable is clicked. When
+ \c flipped is true, the item changes to the "back" state; in this
+ state, the \c angle of the \l Rotation item is changed to 180
+ degrees to produce the flipping effect. When \c flipped is false, the
+ item reverts to the default state, in which the \c angle value is 0.
+
+ \snippet doc/src/snippets/declarative/flipable/flipable.qml 0
- \clearfloat
- \snippet doc/src/snippets/declarative/flipable/flipable-snippet.qml 0
+ \image flipable.gif
- The \l Transition creates the animation that changes the angle over the
- duration of one second. When the item changes between its "back" and
+ The \l Transition creates the animation that changes the angle over
+ four seconds. When the item changes between its "back" and
default states, the NumberAnimation animates the angle between
its old and new values.
- See the \l {QML States} and \l {QML Animation} documentation for more
- details on state changes and how animations work within transitions.
+ See \l {QML States} for details on state changes and the default
+ state, and \l {QML Animation} for more information on how animations
+ work within transitions.
\sa {declarative/ui-components/flipable}{Flipable example}
*/
diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp
index 6ee6b0d4e9..6f38f63449 100644
--- a/src/declarative/graphicsitems/qdeclarativegridview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp
@@ -112,7 +112,7 @@ public:
, bufferMode(BufferBefore | BufferAfter), snapMode(QDeclarativeGridView::NoSnap)
, ownModel(false), wrap(false), autoHighlight(true)
, fixCurrentVisibility(false), lazyRelease(false), layoutScheduled(false)
- , deferredRelease(false), haveHighlightRange(false) {}
+ , deferredRelease(false), haveHighlightRange(false), currentIndexCleared(false) {}
void init();
void clear();
@@ -392,6 +392,7 @@ public:
bool layoutScheduled : 1;
bool deferredRelease : 1;
bool haveHighlightRange : 1;
+ bool currentIndexCleared : 1;
};
void QDeclarativeGridViewPrivate::init()
@@ -730,6 +731,8 @@ void QDeclarativeGridViewPrivate::createHighlight()
QDeclarative_setParent_noEvent(item, q->contentItem());
item->setParentItem(q->contentItem());
highlight = new FxGridItem(item, q);
+ if (currentItem)
+ highlight->setPosition(currentItem->colPos(), currentItem->rowPos());
highlightXAnimator = new QSmoothedAnimation(q);
highlightXAnimator->target = QDeclarativeProperty(highlight->item, QLatin1String("x"));
highlightXAnimator->userDuration = highlightMoveDuration;
@@ -771,8 +774,11 @@ void QDeclarativeGridViewPrivate::updateCurrent(int modelIndex)
currentItem->attached->setIsCurrentItem(false);
releaseItem(currentItem);
currentItem = 0;
- currentIndex = -1;
+ currentIndex = modelIndex;
+ emit q->currentIndexChanged();
updateHighlight();
+ } else if (currentIndex != modelIndex) {
+ currentIndex = modelIndex;
emit q->currentIndexChanged();
}
return;
@@ -1211,7 +1217,7 @@ void QDeclarativeGridView::setModel(const QVariant &model)
disconnect(d->model, SIGNAL(itemsRemoved(int,int)), this, SLOT(itemsRemoved(int,int)));
disconnect(d->model, SIGNAL(itemsMoved(int,int,int)), this, SLOT(itemsMoved(int,int,int)));
disconnect(d->model, SIGNAL(modelReset()), this, SLOT(modelReset()));
- disconnect(d->model, SIGNAL(createdItem(int, QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
+ disconnect(d->model, SIGNAL(createdItem(int,QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
disconnect(d->model, SIGNAL(destroyingItem(QDeclarativeItem*)), this, SLOT(destroyingItem(QDeclarativeItem*)));
}
d->clear();
@@ -1236,7 +1242,7 @@ void QDeclarativeGridView::setModel(const QVariant &model)
d->bufferMode = QDeclarativeGridViewPrivate::BufferBefore | QDeclarativeGridViewPrivate::BufferAfter;
if (isComponentComplete()) {
refill();
- if (d->currentIndex >= d->model->count() || d->currentIndex < 0) {
+ if ((d->currentIndex >= d->model->count() || d->currentIndex < 0) && !d->currentIndexCleared) {
setCurrentIndex(0);
} else {
d->moveReason = QDeclarativeGridViewPrivate::SetIndex;
@@ -1252,7 +1258,7 @@ void QDeclarativeGridView::setModel(const QVariant &model)
connect(d->model, SIGNAL(itemsRemoved(int,int)), this, SLOT(itemsRemoved(int,int)));
connect(d->model, SIGNAL(itemsMoved(int,int,int)), this, SLOT(itemsMoved(int,int,int)));
connect(d->model, SIGNAL(modelReset()), this, SLOT(modelReset()));
- connect(d->model, SIGNAL(createdItem(int, QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
+ connect(d->model, SIGNAL(createdItem(int,QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
connect(d->model, SIGNAL(destroyingItem(QDeclarativeItem*)), this, SLOT(destroyingItem(QDeclarativeItem*)));
emit countChanged();
}
@@ -1324,7 +1330,8 @@ void QDeclarativeGridView::setDelegate(QDeclarativeComponent *delegate)
\qmlproperty Item GridView::currentItem
The \c currentIndex property holds the index of the current item, and
- \c currentItem holds the current item.
+ \c currentItem holds the current item. Setting the currentIndex to -1
+ will clear the highlight and set currentItem to null.
If highlightFollowsCurrentItem is \c true, setting either of these
properties will smoothly scroll the GridView so that the current
@@ -1344,10 +1351,13 @@ void QDeclarativeGridView::setCurrentIndex(int index)
Q_D(QDeclarativeGridView);
if (d->requestedIndex >= 0) // currently creating item
return;
- if (isComponentComplete() && d->isValid() && index != d->currentIndex && index < d->model->count() && index >= 0) {
+ d->currentIndexCleared = (index == -1);
+ if (index == d->currentIndex)
+ return;
+ if (isComponentComplete() && d->isValid()) {
d->moveReason = QDeclarativeGridViewPrivate::SetIndex;
d->updateCurrent(index);
- } else if (index != d->currentIndex) {
+ } else {
d->currentIndex = index;
emit currentIndexChanged();
}
@@ -1822,6 +1832,8 @@ void QDeclarativeGridView::viewportMoved()
{
Q_D(QDeclarativeGridView);
QDeclarativeFlickable::viewportMoved();
+ if (!d->itemCount)
+ return;
d->lazyRelease = true;
if (d->flickingHorizontally || d->flickingVertically) {
if (yflick()) {
@@ -1983,22 +1995,25 @@ void QDeclarativeGridView::keyPressEvent(QKeyEvent *event)
Move the currentIndex up one item in the view.
The current index will wrap if keyNavigationWraps is true and it
- is currently at the end.
+ is currently at the end. This method has no effect if the \l count is zero.
\bold Note: methods should only be called after the Component has completed.
*/
void QDeclarativeGridView::moveCurrentIndexUp()
{
Q_D(QDeclarativeGridView);
+ const int count = d->model ? d->model->count() : 0;
+ if (!count)
+ return;
if (d->flow == QDeclarativeGridView::LeftToRight) {
if (currentIndex() >= d->columns || d->wrap) {
int index = currentIndex() - d->columns;
- setCurrentIndex(index >= 0 ? index : d->model->count()-1);
+ setCurrentIndex((index >= 0 && index < count) ? index : count-1);
}
} else {
if (currentIndex() > 0 || d->wrap) {
int index = currentIndex() - 1;
- setCurrentIndex(index >= 0 ? index : d->model->count()-1);
+ setCurrentIndex((index >= 0 && index < count) ? index : count-1);
}
}
}
@@ -2008,22 +2023,25 @@ void QDeclarativeGridView::moveCurrentIndexUp()
Move the currentIndex down one item in the view.
The current index will wrap if keyNavigationWraps is true and it
- is currently at the end.
+ is currently at the end. This method has no effect if the \l count is zero.
\bold Note: methods should only be called after the Component has completed.
*/
void QDeclarativeGridView::moveCurrentIndexDown()
{
Q_D(QDeclarativeGridView);
+ const int count = d->model ? d->model->count() : 0;
+ if (!count)
+ return;
if (d->flow == QDeclarativeGridView::LeftToRight) {
- if (currentIndex() < d->model->count() - d->columns || d->wrap) {
+ if (currentIndex() < count - d->columns || d->wrap) {
int index = currentIndex()+d->columns;
- setCurrentIndex(index < d->model->count() ? index : 0);
+ setCurrentIndex((index >= 0 && index < count) ? index : 0);
}
} else {
- if (currentIndex() < d->model->count() - 1 || d->wrap) {
+ if (currentIndex() < count - 1 || d->wrap) {
int index = currentIndex() + 1;
- setCurrentIndex(index < d->model->count() ? index : 0);
+ setCurrentIndex((index >= 0 && index < count) ? index : 0);
}
}
}
@@ -2033,22 +2051,25 @@ void QDeclarativeGridView::moveCurrentIndexDown()
Move the currentIndex left one item in the view.
The current index will wrap if keyNavigationWraps is true and it
- is currently at the end.
+ is currently at the end. This method has no effect if the \l count is zero.
\bold Note: methods should only be called after the Component has completed.
*/
void QDeclarativeGridView::moveCurrentIndexLeft()
{
Q_D(QDeclarativeGridView);
+ const int count = d->model ? d->model->count() : 0;
+ if (!count)
+ return;
if (d->flow == QDeclarativeGridView::LeftToRight) {
if (currentIndex() > 0 || d->wrap) {
int index = currentIndex() - 1;
- setCurrentIndex(index >= 0 ? index : d->model->count()-1);
+ setCurrentIndex((index >= 0 && index < count) ? index : count-1);
}
} else {
if (currentIndex() >= d->columns || d->wrap) {
int index = currentIndex() - d->columns;
- setCurrentIndex(index >= 0 ? index : d->model->count()-1);
+ setCurrentIndex((index >= 0 && index < count) ? index : count-1);
}
}
}
@@ -2058,22 +2079,25 @@ void QDeclarativeGridView::moveCurrentIndexLeft()
Move the currentIndex right one item in the view.
The current index will wrap if keyNavigationWraps is true and it
- is currently at the end.
+ is currently at the end. This method has no effect if the \l count is zero.
\bold Note: methods should only be called after the Component has completed.
*/
void QDeclarativeGridView::moveCurrentIndexRight()
{
Q_D(QDeclarativeGridView);
+ const int count = d->model ? d->model->count() : 0;
+ if (!count)
+ return;
if (d->flow == QDeclarativeGridView::LeftToRight) {
- if (currentIndex() < d->model->count() - 1 || d->wrap) {
+ if (currentIndex() < count - 1 || d->wrap) {
int index = currentIndex() + 1;
- setCurrentIndex(index < d->model->count() ? index : 0);
+ setCurrentIndex((index >= 0 && index < count) ? index : 0);
}
} else {
- if (currentIndex() < d->model->count() - d->columns || d->wrap) {
+ if (currentIndex() < count - d->columns || d->wrap) {
int index = currentIndex()+d->columns;
- setCurrentIndex(index < d->model->count() ? index : 0);
+ setCurrentIndex((index >= 0 && index < count) ? index : 0);
}
}
}
@@ -2201,7 +2225,7 @@ void QDeclarativeGridView::componentComplete()
if (d->isValid()) {
refill();
d->moveReason = QDeclarativeGridViewPrivate::SetIndex;
- if (d->currentIndex < 0)
+ if (d->currentIndex < 0 && !d->currentIndexCleared)
d->updateCurrent(0);
else
d->updateCurrent(d->currentIndex);
@@ -2276,13 +2300,13 @@ void QDeclarativeGridView::itemsInserted(int modelIndex, int count)
return;
if (!d->visibleItems.count() || d->model->count() <= 1) {
d->scheduleLayout();
- if (d->currentIndex >= modelIndex) {
+ if (d->itemCount && d->currentIndex >= modelIndex) {
// adjust current item index
d->currentIndex += count;
if (d->currentItem)
d->currentItem->index = d->currentIndex;
emit currentIndexChanged();
- } else if (d->currentIndex < 0) {
+ } else if (!d->currentIndex || (d->currentIndex < 0 && !d->currentIndexCleared)) {
d->updateCurrent(0);
}
d->itemCount += count;
@@ -2390,7 +2414,7 @@ void QDeclarativeGridView::itemsInserted(int modelIndex, int count)
}
}
- if (d->currentIndex >= modelIndex) {
+ if (d->itemCount && d->currentIndex >= modelIndex) {
// adjust current item index
d->currentIndex += count;
if (d->currentItem) {
@@ -2477,8 +2501,8 @@ void QDeclarativeGridView::itemsRemoved(int modelIndex, int count)
if (removedVisible && d->visibleItems.isEmpty()) {
d->timeline.clear();
- d->setPosition(0);
if (d->itemCount == 0) {
+ d->setPosition(0);
d->updateHeader();
d->updateFooter();
update();
diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp
index 08d237f265..3b08a9bcb3 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 c8bb30be8f..0e8034e743 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 95a4fd65c0..93572a0e72 100644
--- a/src/declarative/graphicsitems/qdeclarativeitem.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp
@@ -484,10 +484,18 @@ void QDeclarativeItemKeyFilter::componentComplete()
\qmlproperty Item KeyNavigation::down
These properties hold the item to assign focus to
- when Key_Left, Key_Right, Key_Up or Key_Down are
+ when the left, right, up or down cursor keys are
pressed.
*/
+/*!
+ \qmlproperty Item KeyNavigation::tab
+ \qmlproperty Item KeyNavigation::backtab
+
+ These properties hold the item to assign focus to
+ when the Tab key or Shift+Tab key combination (Backtab) are pressed.
+*/
+
QDeclarativeKeyNavigationAttached::QDeclarativeKeyNavigationAttached(QObject *parent)
: QObject(*(new QDeclarativeKeyNavigationAttachedPrivate), parent),
QDeclarativeItemKeyFilter(qobject_cast<QDeclarativeItem*>(parent))
@@ -941,6 +949,20 @@ void QDeclarativeKeyNavigationAttached::keyReleased(QKeyEvent *event, bool post)
*/
/*!
+ \qmlsignal Keys::onTabPressed(KeyEvent event)
+
+ This handler is called when the Tab key has been pressed. The \a event
+ parameter provides information about the event.
+*/
+
+/*!
+ \qmlsignal Keys::onBacktabPressed(KeyEvent event)
+
+ This handler is called when the Shift+Tab key combination (Backtab) has
+ been pressed. The \a event parameter provides information about the event.
+*/
+
+/*!
\qmlsignal Keys::onAsteriskPressed(KeyEvent event)
This handler is called when the Asterisk '*' has been pressed. The \a event
@@ -1955,12 +1977,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 6fd3b71e15..450b6af6da 100644
--- a/src/declarative/graphicsitems/qdeclarativelistview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp
@@ -124,8 +124,8 @@ public:
}
qreal endPosition() const {
return (view->orientation() == QDeclarativeListView::Vertical
- ? item->y() + (item->height() > 0 ? item->height() : 1)
- : item->x() + (item->width() > 0 ? item->width() : 1)) - 1;
+ ? item->y() + (item->height() >= 1.0 ? item->height() : 1)
+ : item->x() + (item->width() >= 1.0 ? item->width() : 1)) - 1;
}
void setPosition(qreal pos) {
if (view->orientation() == QDeclarativeListView::Vertical) {
@@ -182,7 +182,9 @@ public:
, bufferMode(BufferBefore | BufferAfter)
, ownModel(false), wrap(false), autoHighlight(true), haveHighlightRange(false)
, correctFlick(false), inFlickCorrection(false), lazyRelease(false)
- , deferredRelease(false), layoutScheduled(false), minExtentDirty(true), maxExtentDirty(true)
+ , deferredRelease(false), layoutScheduled(false), currentIndexCleared(false)
+ , inViewportMoved(false)
+ , minExtentDirty(true), maxExtentDirty(true)
{}
void init();
@@ -333,28 +335,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();
@@ -367,17 +350,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 {
@@ -393,44 +377,19 @@ public:
}
// map a model index to visibleItems index.
- // These may differ if removed items are still present in the visible list,
- // e.g. doing a removal animation
int mapFromModel(int modelIndex) const {
if (modelIndex < visibleIndex || modelIndex >= visibleIndex + visibleItems.count())
return -1;
for (int i = 0; i < visibleItems.count(); ++i) {
FxListItem *listItem = visibleItems.at(i);
if (listItem->index == modelIndex)
- return i + visibleIndex;
+ return i;
if (listItem->index > modelIndex)
return -1;
}
return -1; // Not in visibleList
}
- bool mapRangeFromModel(int &index, int &count) const {
- if (index + count < visibleIndex)
- return false;
-
- int lastIndex = -1;
- for (int i = visibleItems.count()-1; i >= 0; --i) {
- FxListItem *listItem = visibleItems.at(i);
- if (listItem->index != -1) {
- lastIndex = listItem->index;
- break;
- }
- }
-
- if (index > lastIndex)
- return false;
-
- int last = qMin(index + count - 1, lastIndex);
- index = qMax(index, visibleIndex);
- count = last - index + 1;
-
- return true;
- }
-
void updateViewport() {
Q_Q(QDeclarativeListView);
if (orient == QDeclarativeListView::Vertical) {
@@ -544,6 +503,8 @@ public:
bool lazyRelease : 1;
bool deferredRelease : 1;
bool layoutScheduled : 1;
+ bool currentIndexCleared : 1;
+ bool inViewportMoved : 1;
mutable bool minExtentDirty : 1;
mutable bool maxExtentDirty : 1;
};
@@ -777,7 +738,7 @@ void QDeclarativeListViewPrivate::layout()
}
if (!visibleItems.isEmpty()) {
qreal oldEnd = visibleItems.last()->endPosition();
- qreal pos = visibleItems.first()->endPosition() + spacing + 1;
+ qreal pos = visibleItems.first()->position() + visibleItems.first()->size() + spacing;
for (int i=1; i < visibleItems.count(); ++i) {
FxListItem *item = visibleItems.at(i);
item->setPosition(pos);
@@ -791,8 +752,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)
@@ -881,6 +844,7 @@ void QDeclarativeListViewPrivate::createHighlight()
} else {
highlight->item->setWidth(currentItem->item->width());
}
+ highlight->setPosition(currentItem->itemPosition());
}
QDeclarativeItemPrivate *itemPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(item));
itemPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry);
@@ -1045,8 +1009,11 @@ void QDeclarativeListViewPrivate::updateCurrent(int modelIndex)
currentItem->attached->setIsCurrentItem(false);
releaseItem(currentItem);
currentItem = 0;
- currentIndex = -1;
+ currentIndex = modelIndex;
+ emit q->currentIndexChanged();
updateHighlight();
+ } else if (currentIndex != modelIndex) {
+ currentIndex = modelIndex;
emit q->currentIndexChanged();
}
return;
@@ -1192,33 +1159,39 @@ 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;
- if (snapMode != QDeclarativeListView::NoSnap) {
+ if (currentItem && haveHighlightRange && highlightRange == QDeclarativeListView::StrictlyEnforceRange) {
+ updateHighlight();
+ qreal pos = currentItem->itemPosition();
+ qreal viewPos = position();
+ if (viewPos < pos + currentItem->itemSize() - highlightRangeEnd)
+ viewPos = pos + currentItem->itemSize() - highlightRangeEnd;
+ if (viewPos > pos - highlightRangeStart)
+ viewPos = pos - highlightRangeStart;
+
+ timeline.reset(data.move);
+ if (viewPos != position()) {
+ if (fixupDuration)
+ timeline.move(data.move, -viewPos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2);
+ else
+ timeline.set(data.move, -viewPos);
+ }
+ vTime = timeline.time();
+ } else if (snapMode != QDeclarativeListView::NoSnap) {
FxListItem *topItem = snapItemAt(position()+highlightRangeStart);
FxListItem *bottomItem = snapItemAt(position()+highlightRangeEnd);
qreal pos;
- if (topItem && bottomItem && haveHighlightRange && highlightRange == QDeclarativeListView::StrictlyEnforceRange) {
- qreal topPos = qMin(topItem->position() - highlightRangeStart, -maxExtent);
- qreal bottomPos = qMax(bottomItem->position() - highlightRangeEnd, -minExtent);
- pos = qAbs(data.move + topPos) < qAbs(data.move + bottomPos) ? topPos : bottomPos;
- } else if (topItem) {
+ if (topItem) {
pos = qMax(qMin(topItem->position() - highlightRangeStart, -maxExtent), -minExtent);
} else if (bottomItem) {
- pos = qMax(qMin(bottomItem->position() - highlightRangeStart, -maxExtent), -minExtent);
+ pos = qMax(qMin(bottomItem->position() - highlightRangeStart, -maxExtent), -minExtent);
} else {
fixupDuration = oldDuration;
return;
}
- if (currentItem && haveHighlightRange && highlightRange == QDeclarativeListView::StrictlyEnforceRange) {
- updateHighlight();
- qreal currPos = currentItem->itemPosition();
- if (pos < currPos + currentItem->itemSize() - highlightRangeEnd)
- pos = currPos + currentItem->itemSize() - highlightRangeEnd;
- if (pos > currPos - highlightRangeStart)
- pos = currPos - highlightRangeStart;
- }
qreal dist = qAbs(data.move + pos);
if (dist > 0) {
@@ -1229,25 +1202,6 @@ void QDeclarativeListViewPrivate::fixup(AxisData &data, qreal minExtent, qreal m
timeline.set(data.move, -pos);
vTime = timeline.time();
}
- } else if (haveHighlightRange && highlightRange == QDeclarativeListView::StrictlyEnforceRange) {
- if (currentItem) {
- updateHighlight();
- qreal pos = currentItem->itemPosition();
- qreal viewPos = position();
- if (viewPos < pos + currentItem->itemSize() - highlightRangeEnd)
- viewPos = pos + currentItem->itemSize() - highlightRangeEnd;
- if (viewPos > pos - highlightRangeStart)
- viewPos = pos - highlightRangeStart;
-
- timeline.reset(data.move);
- if (viewPos != position()) {
- if (fixupDuration)
- timeline.move(data.move, -viewPos, QEasingCurve(QEasingCurve::InOutQuad), fixupDuration/2);
- else
- timeline.set(data.move, -viewPos);
- }
- vTime = timeline.time();
- }
} else {
QDeclarativeFlickablePrivate::fixup(data, minExtent, maxExtent);
}
@@ -1369,12 +1323,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)) {
@@ -1384,7 +1341,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 {
@@ -1567,7 +1524,7 @@ void QDeclarativeListView::setModel(const QVariant &model)
disconnect(d->model, SIGNAL(itemsMoved(int,int,int)), this, SLOT(itemsMoved(int,int,int)));
disconnect(d->model, SIGNAL(itemsChanged(int,int)), this, SLOT(itemsChanged(int,int)));
disconnect(d->model, SIGNAL(modelReset()), this, SLOT(modelReset()));
- disconnect(d->model, SIGNAL(createdItem(int, QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
+ disconnect(d->model, SIGNAL(createdItem(int,QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
disconnect(d->model, SIGNAL(destroyingItem(QDeclarativeItem*)), this, SLOT(destroyingItem(QDeclarativeItem*)));
}
d->clear();
@@ -1598,7 +1555,7 @@ void QDeclarativeListView::setModel(const QVariant &model)
if (isComponentComplete()) {
updateSections();
refill();
- if (d->currentIndex >= d->model->count() || d->currentIndex < 0) {
+ if ((d->currentIndex >= d->model->count() || d->currentIndex < 0) && !d->currentIndexCleared) {
setCurrentIndex(0);
} else {
d->moveReason = QDeclarativeListViewPrivate::SetIndex;
@@ -1614,7 +1571,7 @@ void QDeclarativeListView::setModel(const QVariant &model)
connect(d->model, SIGNAL(itemsMoved(int,int,int)), this, SLOT(itemsMoved(int,int,int)));
connect(d->model, SIGNAL(itemsChanged(int,int)), this, SLOT(itemsChanged(int,int)));
connect(d->model, SIGNAL(modelReset()), this, SLOT(modelReset()));
- connect(d->model, SIGNAL(createdItem(int, QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
+ connect(d->model, SIGNAL(createdItem(int,QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
connect(d->model, SIGNAL(destroyingItem(QDeclarativeItem*)), this, SLOT(destroyingItem(QDeclarativeItem*)));
emit countChanged();
}
@@ -1688,7 +1645,8 @@ void QDeclarativeListView::setDelegate(QDeclarativeComponent *delegate)
\qmlproperty Item ListView::currentItem
The \c currentIndex property holds the index of the current item, and
- \c currentItem holds the current item.
+ \c currentItem holds the current item. Setting the currentIndex to -1
+ will clear the highlight and set currentItem to null.
If highlightFollowsCurrentItem is \c true, setting either of these
properties will smoothly scroll the ListView so that the current
@@ -1708,10 +1666,13 @@ void QDeclarativeListView::setCurrentIndex(int index)
Q_D(QDeclarativeListView);
if (d->requestedIndex >= 0) // currently creating item
return;
- if (isComponentComplete() && d->isValid() && index != d->currentIndex && index < d->model->count() && index >= 0) {
+ d->currentIndexCleared = (index == -1);
+ if (index == d->currentIndex)
+ return;
+ if (isComponentComplete() && d->isValid()) {
d->moveReason = QDeclarativeListViewPrivate::SetIndex;
d->updateCurrent(index);
- } else if (index != d->currentIndex) {
+ } else if (d->currentIndex != index) {
d->currentIndex = index;
emit currentIndexChanged();
}
@@ -2320,6 +2281,12 @@ void QDeclarativeListView::viewportMoved()
{
Q_D(QDeclarativeListView);
QDeclarativeFlickable::viewportMoved();
+ if (!d->itemCount)
+ return;
+ // Recursion can occur due to refill changing the content size.
+ if (d->inViewportMoved)
+ return;
+ d->inViewportMoved = true;
d->lazyRelease = true;
refill();
if (d->flickingHorizontally || d->flickingVertically || d->movingHorizontally || d->movingVertically)
@@ -2333,12 +2300,14 @@ void QDeclarativeListView::viewportMoved()
pos = viewPos + d->highlightRangeEnd - d->highlight->size();
if (pos < viewPos + d->highlightRangeStart)
pos = viewPos + d->highlightRangeStart;
+ d->highlightPosAnimator->stop();
d->highlight->setPosition(qRound(pos));
// update current index
- 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);
+ }
}
}
@@ -2379,6 +2348,7 @@ void QDeclarativeListView::viewportMoved()
}
d->inFlickCorrection = false;
}
+ d->inViewportMoved = false;
}
qreal QDeclarativeListView::minYExtent() const
@@ -2523,16 +2493,18 @@ void QDeclarativeListView::geometryChanged(const QRectF &newGeometry,
Increments the current index. The current index will wrap
if keyNavigationWraps is true and it is currently at the end.
+ This method has no effect if the \l count is zero.
\bold Note: methods should only be called after the Component has completed.
*/
void QDeclarativeListView::incrementCurrentIndex()
{
Q_D(QDeclarativeListView);
- if (currentIndex() < d->model->count() - 1 || d->wrap) {
+ int count = d->model ? d->model->count() : 0;
+ if (count && (currentIndex() < count - 1 || d->wrap)) {
d->moveReason = QDeclarativeListViewPrivate::SetIndex;
int index = currentIndex()+1;
- d->updateCurrent(index < d->model->count() ? index : 0);
+ setCurrentIndex((index >= 0 && index < count) ? index : 0);
}
}
@@ -2541,16 +2513,18 @@ void QDeclarativeListView::incrementCurrentIndex()
Decrements the current index. The current index will wrap
if keyNavigationWraps is true and it is currently at the beginning.
+ This method has no effect if the \l count is zero.
\bold Note: methods should only be called after the Component has completed.
*/
void QDeclarativeListView::decrementCurrentIndex()
{
Q_D(QDeclarativeListView);
- if (currentIndex() > 0 || d->wrap) {
+ int count = d->model ? d->model->count() : 0;
+ if (count && (currentIndex() > 0 || d->wrap)) {
d->moveReason = QDeclarativeListViewPrivate::SetIndex;
int index = currentIndex()-1;
- d->updateCurrent(index >= 0 ? index : d->model->count()-1);
+ setCurrentIndex((index >= 0 && index < count) ? index : count-1);
}
}
@@ -2684,7 +2658,7 @@ void QDeclarativeListView::componentComplete()
if (d->isValid()) {
refill();
d->moveReason = QDeclarativeListViewPrivate::SetIndex;
- if (d->currentIndex < 0)
+ if (d->currentIndex < 0 && !d->currentIndexCleared)
d->updateCurrent(0);
else
d->updateCurrent(d->currentIndex);
@@ -2784,13 +2758,13 @@ void QDeclarativeListView::itemsInserted(int modelIndex, int count)
d->moveReason = QDeclarativeListViewPrivate::Other;
if (!d->visibleItems.count() || d->model->count() <= 1) {
d->scheduleLayout();
- if (d->currentIndex >= modelIndex) {
+ if (d->itemCount && d->currentIndex >= modelIndex) {
// adjust current item index
d->currentIndex += count;
if (d->currentItem)
d->currentItem->index = d->currentIndex;
emit currentIndexChanged();
- } else if (d->currentIndex < 0) {
+ } else if (!d->currentIndex || (d->currentIndex < 0 && !d->currentIndexCleared)) {
d->updateCurrent(0);
}
d->itemCount += count;
@@ -2798,15 +2772,15 @@ void QDeclarativeListView::itemsInserted(int modelIndex, int count)
return;
}
- int overlapCount = count;
- if (!d->mapRangeFromModel(modelIndex, overlapCount)) {
+ int index = d->mapFromModel(modelIndex);
+ if (index < 0) {
int i = d->visibleItems.count() - 1;
while (i > 0 && d->visibleItems.at(i)->index == -1)
--i;
if (d->visibleItems.at(i)->index + 1 == modelIndex
&& d->visibleItems.at(i)->endPosition() < d->buffer+d->position()+d->size()-1) {
// Special case of appending an item to the model.
- modelIndex = d->visibleIndex + d->visibleItems.count();
+ index = d->visibleItems.count();
} else {
if (modelIndex < d->visibleIndex) {
// Insert before visible items
@@ -2833,7 +2807,6 @@ void QDeclarativeListView::itemsInserted(int modelIndex, int count)
// At least some of the added items will be visible
- int index = modelIndex - d->visibleIndex;
// index can be the next item past the end of the visible items list (i.e. appended)
int pos = index < d->visibleItems.count() ? d->visibleItems.at(index)->position()
: d->visibleItems.at(index-1)->endPosition()+d->spacing+1;
@@ -2897,7 +2870,7 @@ void QDeclarativeListView::itemsInserted(int modelIndex, int count)
}
diff = pos - initialPos;
}
- if (d->currentIndex >= modelIndex) {
+ if (d->itemCount && d->currentIndex >= modelIndex) {
// adjust current item index
d->currentIndex += count;
if (d->currentItem) {
diff --git a/src/declarative/graphicsitems/qdeclarativeloader.cpp b/src/declarative/graphicsitems/qdeclarativeloader.cpp
index 5647b14568..1119b92162 100644
--- a/src/declarative/graphicsitems/qdeclarativeloader.cpp
+++ b/src/declarative/graphicsitems/qdeclarativeloader.cpp
@@ -129,15 +129,41 @@ void QDeclarativeLoaderPrivate::initResize()
The loaded item can be accessed using the \l item property.
- Loader is like any other visual item and must be positioned and sized
- accordingly to become visible. Once the component is loaded, the Loader
- is automatically resized to the size of the component.
-
If the \l source or \l sourceComponent changes, any previously instantiated
items are destroyed. Setting \l source to an empty string or setting
\l sourceComponent to \c undefined destroys the currently loaded item,
freeing resources and leaving the Loader empty.
+ \section2 Loader sizing behavior
+
+ Loader is like any other visual item and must be positioned and sized
+ accordingly to become visible.
+
+ \list
+ \o If an explicit size is not specified for the Loader, the Loader
+ is automatically resized to the size of the loaded item once the
+ component is loaded.
+ \o If the size of the Loader is specified explicitly by setting
+ the width, height or by anchoring, the loaded item will be resized
+ to the size of the Loader.
+ \endlist
+
+ In both scenarios the size of the item and the Loader are identical.
+ This ensures that anchoring to the Loader is equivalent to anchoring
+ to the loaded item.
+
+ \table
+ \row
+ \o sizeloader.qml
+ \o sizeitem.qml
+ \row
+ \o \snippet doc/src/snippets/declarative/loader/sizeloader.qml 0
+ \o \snippet doc/src/snippets/declarative/loader/sizeitem.qml 0
+ \row
+ \o The red rectangle will be sized to the size of the root item.
+ \o The red rectangle will be 50x50, centered in the root item.
+ \endtable
+
\section2 Receiving signals from loaded items
@@ -216,7 +242,8 @@ QDeclarativeLoader::~QDeclarativeLoader()
cannot load non-visual components.
To unload the currently loaded item, set this property to an empty string,
- or set \l sourceComponent to \c undefined.
+ or set \l sourceComponent to \c undefined. Setting \c source to a
+ new URL will also cause the item created by the previous URL to be unloaded.
\sa sourceComponent, status, progress
*/
@@ -342,12 +369,14 @@ void QDeclarativeLoaderPrivate::_q_sourceLoaded()
QDeclarativeContext *ctxt = new QDeclarativeContext(creationContext);
ctxt->setContextObject(q);
- QDeclarativeComponent *c = component;
- QObject *obj = component->create(ctxt);
+ QDeclarativeGuard<QDeclarativeComponent> c = component;
+ QObject *obj = component->beginCreate(ctxt);
if (component != c) {
// component->create could trigger a change in source that causes
// component to be set to something else. In that case we just
// need to cleanup.
+ if (c)
+ c->completeCreate();
delete obj;
delete ctxt;
return;
@@ -372,6 +401,7 @@ void QDeclarativeLoaderPrivate::_q_sourceLoaded()
delete ctxt;
source = QUrl();
}
+ component->completeCreate();
emit q->sourceChanged();
emit q->statusChanged();
emit q->progressChanged();
@@ -394,23 +424,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/qdeclarativemousearea.cpp b/src/declarative/graphicsitems/qdeclarativemousearea.cpp
index 1533d55cde..0a043a7967 100644
--- a/src/declarative/graphicsitems/qdeclarativemousearea.cpp
+++ b/src/declarative/graphicsitems/qdeclarativemousearea.cpp
@@ -335,7 +335,7 @@ QDeclarativeMouseAreaPrivate::~QDeclarativeMouseAreaPrivate()
If the \e accepted property of the \l {MouseEvent}{mouse} parameter is set to false
in the handler, the onPressed/onReleased/onClicked handlers will be called for the second
- click; otherwise they are supressed. The accepted property defaults to true.
+ click; otherwise they are suppressed. The accepted property defaults to true.
*/
/*!
@@ -500,17 +500,9 @@ void QDeclarativeMouseArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
const int dragThreshold = QApplication::startDragDistance();
qreal dx = qAbs(curLocalPos.x() - startLocalPos.x());
qreal dy = qAbs(curLocalPos.y() - startLocalPos.y());
- if ((d->dragX && !(dx < dragThreshold)) || (d->dragY && !(dy < dragThreshold))) {
+
+ if (keepMouseGrab() && d->stealMouse)
d->drag->setActive(true);
- d->stealMouse = true;
- }
- if (!keepMouseGrab()) {
- if ((!d->dragY && dy < dragThreshold && d->dragX && dx > dragThreshold)
- || (!d->dragX && dx < dragThreshold && d->dragY && dy > dragThreshold)
- || (d->dragX && d->dragY)) {
- setKeepMouseGrab(true);
- }
- }
if (d->dragX && d->drag->active()) {
qreal x = (curLocalPos.x() - startLocalPos.x()) + d->startX;
@@ -528,6 +520,16 @@ void QDeclarativeMouseArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
y = drag()->ymax();
drag()->target()->setY(y);
}
+
+ if (!keepMouseGrab()) {
+ if ((!d->dragY && dy < dragThreshold && d->dragX && dx > dragThreshold)
+ || (!d->dragX && dx < dragThreshold && d->dragY && dy > dragThreshold)
+ || (d->dragX && d->dragY && (dx > dragThreshold || dy > dragThreshold))) {
+ setKeepMouseGrab(true);
+ d->stealMouse = true;
+ }
+ }
+
d->moved = true;
}
QDeclarativeMouseEvent me(d->lastPos.x(), d->lastPos.y(), d->lastButton, d->lastButtons, d->lastModifiers, false, d->longPress);
@@ -566,7 +568,8 @@ void QDeclarativeMouseArea::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *even
if (!d->absorb) {
QDeclarativeItem::mouseDoubleClickEvent(event);
} else {
- d->doubleClick = true;
+ if (d->isDoubleClickConnected())
+ d->doubleClick = true;
d->saveEvent(event);
QDeclarativeMouseEvent me(d->lastPos.x(), d->lastPos.y(), d->lastButton, d->lastButtons, d->lastModifiers, true, false);
me.setAccepted(d->isDoubleClickConnected());
@@ -617,6 +620,7 @@ bool QDeclarativeMouseArea::sceneEvent(QEvent *event)
// if our mouse grab has been removed (probably by Flickable), fix our
// state
d->pressed = false;
+ d->stealMouse = false;
setKeepMouseGrab(false);
emit canceled();
emit pressedChanged();
@@ -671,8 +675,18 @@ bool QDeclarativeMouseArea::sendMouseEvent(QGraphicsSceneMouseEvent *event)
return stealThisEvent;
}
if (mouseEvent.type() == QEvent::GraphicsSceneMouseRelease) {
- d->stealMouse = false;
- ungrabMouse();
+ if (d->pressed) {
+ d->pressed = false;
+ d->stealMouse = false;
+ if (s && s->mouseGrabberItem() == this)
+ ungrabMouse();
+ emit canceled();
+ emit pressedChanged();
+ if (d->hovered) {
+ d->hovered = false;
+ emit hoveredChanged();
+ }
+ }
}
return false;
}
diff --git a/src/declarative/graphicsitems/qdeclarativepath.cpp b/src/declarative/graphicsitems/qdeclarativepath.cpp
index d526688151..966c51bc2e 100644
--- a/src/declarative/graphicsitems/qdeclarativepath.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepath.cpp
@@ -871,7 +871,7 @@ void QDeclarativePathCubic::addToPath(QPainterPath &path)
*/
/*!
- \qmlproperty real value
+ \qmlproperty real PathPercent::value
The proporation of items that should be laid out up to this point.
This value should always be higher than the last value specified
diff --git a/src/declarative/graphicsitems/qdeclarativepathview.cpp b/src/declarative/graphicsitems/qdeclarativepathview.cpp
index 81c84f5e2f..7c79afe6bc 100644
--- a/src/declarative/graphicsitems/qdeclarativepathview.cpp
+++ b/src/declarative/graphicsitems/qdeclarativepathview.cpp
@@ -373,7 +373,21 @@ void QDeclarativePathViewPrivate::regenerate()
opacity of the items as they rotate. This additional code can be seen in the
PathAttribute documentation.)
- The \c focus can be set to \c true to enable keyboard navigation.
+ PathView does not automatically handle keyboard navigation. This is because
+ the keys to use for navigation will depend upon the shape of the path. Navigation
+ can be added quite simply by setting \c focus to \c true and calling
+ \l decrementCurrentIndex() or \l incrementCurrentIndex(), for example to navigate
+ using the left and right arrow keys:
+
+ \code
+ PathView {
+ ...
+ focus: true
+ Keys.onLeftPressed: decrementCurrentIndex()
+ Keys.onRightPressed: incrementCurrentIndex()
+ }
+ \endcode
+
The path view itself is a focus scope (see \l{qmlfocus#Acquiring Focus and Focus Scopes}{the focus documentation page} for more details).
Delegates are instantiated as needed and may be destroyed at any time.
@@ -467,7 +481,7 @@ void QDeclarativePathView::setModel(const QVariant &model)
disconnect(d->model, SIGNAL(itemsRemoved(int,int)), this, SLOT(itemsRemoved(int,int)));
disconnect(d->model, SIGNAL(itemsMoved(int,int,int)), this, SLOT(itemsMoved(int,int,int)));
disconnect(d->model, SIGNAL(modelReset()), this, SLOT(modelReset()));
- disconnect(d->model, SIGNAL(createdItem(int, QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
+ disconnect(d->model, SIGNAL(createdItem(int,QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
for (int i=0; i<d->items.count(); i++){
QDeclarativeItem *p = d->items[i];
d->model->release(p);
@@ -498,7 +512,7 @@ void QDeclarativePathView::setModel(const QVariant &model)
connect(d->model, SIGNAL(itemsRemoved(int,int)), this, SLOT(itemsRemoved(int,int)));
connect(d->model, SIGNAL(itemsMoved(int,int,int)), this, SLOT(itemsMoved(int,int,int)));
connect(d->model, SIGNAL(modelReset()), this, SLOT(modelReset()));
- connect(d->model, SIGNAL(createdItem(int, QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
+ connect(d->model, SIGNAL(createdItem(int,QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
d->modelCount = d->model->count();
if (d->model->count())
d->offset = qmlMod(d->offset, qreal(d->model->count()));
@@ -523,7 +537,6 @@ int QDeclarativePathView::count() const
/*!
\qmlproperty Path PathView::path
- \default
This property holds the path used to lay out the items.
For more information see the \l Path documentation.
*/
@@ -607,6 +620,8 @@ void QDeclarativePathView::setCurrentIndex(int idx)
*/
void QDeclarativePathView::incrementCurrentIndex()
{
+ Q_D(QDeclarativePathView);
+ d->moveDirection = QDeclarativePathViewPrivate::Positive;
setCurrentIndex(currentIndex()+1);
}
@@ -625,6 +640,7 @@ void QDeclarativePathView::decrementCurrentIndex()
int idx = currentIndex()-1;
if (idx < 0)
idx = d->modelCount - 1;
+ d->moveDirection = QDeclarativePathViewPrivate::Negative;
setCurrentIndex(idx);
}
}
@@ -995,6 +1011,7 @@ void QDeclarativePathView::setDelegate(QDeclarativeComponent *delegate)
}
if (QDeclarativeVisualDataModel *dataModel = qobject_cast<QDeclarativeVisualDataModel*>(d->model)) {
dataModel->setDelegate(delegate);
+ d->modelCount = dataModel->count();
d->regenerate();
emit delegateChanged();
}
@@ -1636,7 +1653,7 @@ void QDeclarativePathViewPrivate::snapToCurrent()
if (!model || modelCount <= 0)
return;
- qreal targetOffset = modelCount - currentIndex;
+ qreal targetOffset = qmlMod(modelCount - currentIndex, modelCount);
moveReason = Other;
offsetAdj = 0.0;
@@ -1645,19 +1662,28 @@ void QDeclarativePathViewPrivate::snapToCurrent()
const int duration = highlightMoveDuration;
- if (targetOffset - offset > modelCount/2) {
+ if (moveDirection == Positive || (moveDirection == Shortest && targetOffset - offset > modelCount/2)) {
qreal distance = modelCount - targetOffset + offset;
- tl.move(moveOffset, 0.0, QEasingCurve(QEasingCurve::InQuad), int(duration * offset / distance));
- tl.set(moveOffset, modelCount);
- tl.move(moveOffset, targetOffset, QEasingCurve(QEasingCurve::OutQuad), int(duration * (modelCount-targetOffset) / distance));
- } else if (targetOffset - offset <= -modelCount/2) {
+ if (targetOffset > moveOffset) {
+ tl.move(moveOffset, 0.0, QEasingCurve(QEasingCurve::InQuad), int(duration * offset / distance));
+ tl.set(moveOffset, modelCount);
+ tl.move(moveOffset, targetOffset, QEasingCurve(offset == 0.0 ? QEasingCurve::InOutQuad : QEasingCurve::OutQuad), int(duration * (modelCount-targetOffset) / distance));
+ } else {
+ tl.move(moveOffset, targetOffset, QEasingCurve(QEasingCurve::InOutQuad), duration);
+ }
+ } else if (moveDirection == Negative || targetOffset - offset <= -modelCount/2) {
qreal distance = modelCount - offset + targetOffset;
- tl.move(moveOffset, modelCount, QEasingCurve(QEasingCurve::InQuad), int(duration * (modelCount-offset) / distance));
- tl.set(moveOffset, 0.0);
- tl.move(moveOffset, targetOffset, QEasingCurve(QEasingCurve::OutQuad), int(duration * targetOffset / distance));
+ if (targetOffset < moveOffset) {
+ tl.move(moveOffset, modelCount, QEasingCurve(targetOffset == 0 ? QEasingCurve::InOutQuad : QEasingCurve::InQuad), int(duration * (modelCount-offset) / distance));
+ tl.set(moveOffset, 0.0);
+ tl.move(moveOffset, targetOffset, QEasingCurve(QEasingCurve::OutQuad), int(duration * targetOffset / distance));
+ } else {
+ tl.move(moveOffset, targetOffset, QEasingCurve(QEasingCurve::InOutQuad), duration);
+ }
} else {
tl.move(moveOffset, targetOffset, QEasingCurve(QEasingCurve::InOutQuad), duration);
}
+ moveDirection = Shortest;
}
QDeclarativePathViewAttached *QDeclarativePathView::qmlAttachedProperties(QObject *obj)
diff --git a/src/declarative/graphicsitems/qdeclarativepathview_p_p.h b/src/declarative/graphicsitems/qdeclarativepathview_p_p.h
index b21721635b..6232b83cb1 100644
--- a/src/declarative/graphicsitems/qdeclarativepathview_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepathview_p_p.h
@@ -82,7 +82,7 @@ public:
, dragMargin(0), deceleration(100)
, moveOffset(this, &QDeclarativePathViewPrivate::setAdjustedOffset)
, firstIndex(-1), pathItems(-1), requestedIndex(-1)
- , moveReason(Other), attType(0), highlightComponent(0), highlightItem(0)
+ , moveReason(Other), moveDirection(Shortest), attType(0), highlightComponent(0), highlightItem(0)
, moveHighlight(this, &QDeclarativePathViewPrivate::setHighlightPosition)
, highlightPosition(0)
, highlightRangeStart(0), highlightRangeEnd(0)
@@ -173,6 +173,8 @@ public:
QVariant modelVariant;
enum MovementReason { Other, SetIndex, Mouse };
MovementReason moveReason;
+ enum MovementDirection { Shortest, Negative, Positive };
+ MovementDirection moveDirection;
QDeclarativeOpenMetaObjectType *attType;
QDeclarativeComponent *highlightComponent;
QDeclarativeItem *highlightItem;
diff --git a/src/declarative/graphicsitems/qdeclarativepositioners_p.h b/src/declarative/graphicsitems/qdeclarativepositioners_p.h
index 15b91e5cd4..d3ae92677a 100644
--- a/src/declarative/graphicsitems/qdeclarativepositioners_p.h
+++ b/src/declarative/graphicsitems/qdeclarativepositioners_p.h
@@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QDeclarativeBasePositionerPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeBasePositioner : public QDeclarativeItem
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeBasePositioner : public QDeclarativeItem
{
Q_OBJECT
diff --git a/src/declarative/graphicsitems/qdeclarativerectangle.cpp b/src/declarative/graphicsitems/qdeclarativerectangle.cpp
index 9831d5fdd2..dedb3f7b91 100644
--- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp
+++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp
@@ -260,10 +260,13 @@ void QDeclarativeRectangle::doUpdate()
A width of 1 creates a thin line. For no line, use a width of 0 or a transparent color.
+ \note The width of the rectangle's border does not affect the geometry of the
+ rectangle itself or its position relative to other items if anchors are used.
+
If \c border.width is an odd number, the rectangle is painted at a half-pixel offset to retain
- border smoothness. Also, the border is rendered evenly on either side of the
+ border smoothness. Also, the border is rendered evenly on either side of the
rectangle's boundaries, and the spare pixel is rendered to the right and below the
- rectangle (as documented for QRect rendering). This can cause unintended effects if
+ rectangle (as documented for QRect rendering). This can cause unintended effects if
\c border.width is 1 and the rectangle is \l{Item::clip}{clipped} by a parent item:
\beginfloatright
@@ -417,6 +420,10 @@ void QDeclarativeRectangle::generateRoundedRect()
p.drawRoundedRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, d->rectImage.width()-(pw+1), d->rectImage.height()-(pw+1)), d->radius, d->radius);
else
p.drawRoundedRect(QRectF(qreal(pw)/2, qreal(pw)/2, d->rectImage.width()-pw, d->rectImage.height()-pw), d->radius, d->radius);
+
+ // end painting before inserting pixmap
+ // to pixmap cache to avoid a deep copy
+ p.end();
QPixmapCache::insert(key, d->rectImage);
}
}
@@ -451,6 +458,10 @@ void QDeclarativeRectangle::generateBorderedRect()
p.drawRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, d->rectImage.width()-(pw+1), d->rectImage.height()-(pw+1)));
else
p.drawRect(QRectF(qreal(pw)/2, qreal(pw)/2, d->rectImage.width()-pw, d->rectImage.height()-pw));
+
+ // end painting before inserting pixmap
+ // to pixmap cache to avoid a deep copy
+ p.end();
QPixmapCache::insert(key, d->rectImage);
}
}
@@ -477,7 +488,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/qdeclarativerectangle_p.h b/src/declarative/graphicsitems/qdeclarativerectangle_p.h
index ecc3fbf39b..99dca1b16b 100644
--- a/src/declarative/graphicsitems/qdeclarativerectangle_p.h
+++ b/src/declarative/graphicsitems/qdeclarativerectangle_p.h
@@ -46,12 +46,14 @@
#include <QtGui/qbrush.h>
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
-class Q_DECLARATIVE_EXPORT QDeclarativePen : public QObject
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativePen : public QObject
{
Q_OBJECT
@@ -131,7 +133,7 @@ private:
};
class QDeclarativeRectanglePrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeRectangle : public QDeclarativeItem
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeRectangle : public QDeclarativeItem
{
Q_OBJECT
diff --git a/src/declarative/graphicsitems/qdeclarativerepeater.cpp b/src/declarative/graphicsitems/qdeclarativerepeater.cpp
index cb64212899..6f46c7bdf6 100644
--- a/src/declarative/graphicsitems/qdeclarativerepeater.cpp
+++ b/src/declarative/graphicsitems/qdeclarativerepeater.cpp
@@ -202,7 +202,7 @@ void QDeclarativeRepeater::setModel(const QVariant &model)
disconnect(d->model, SIGNAL(itemsMoved(int,int,int)), this, SLOT(itemsMoved(int,int,int)));
disconnect(d->model, SIGNAL(modelReset()), this, SLOT(modelReset()));
/*
- disconnect(d->model, SIGNAL(createdItem(int, QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
+ disconnect(d->model, SIGNAL(createdItem(int,QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
disconnect(d->model, SIGNAL(destroyingItem(QDeclarativeItem*)), this, SLOT(destroyingItem(QDeclarativeItem*)));
*/
}
@@ -230,7 +230,7 @@ void QDeclarativeRepeater::setModel(const QVariant &model)
connect(d->model, SIGNAL(itemsMoved(int,int,int)), this, SLOT(itemsMoved(int,int,int)));
connect(d->model, SIGNAL(modelReset()), this, SLOT(modelReset()));
/*
- connect(d->model, SIGNAL(createdItem(int, QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
+ connect(d->model, SIGNAL(createdItem(int,QDeclarativeItem*)), this, SLOT(createdItem(int,QDeclarativeItem*)));
connect(d->model, SIGNAL(destroyingItem(QDeclarativeItem*)), this, SLOT(destroyingItem(QDeclarativeItem*)));
*/
regenerate();
diff --git a/src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h b/src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h
index 42813dd6d5..c6d4629d37 100644
--- a/src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h
+++ b/src/declarative/graphicsitems/qdeclarativescalegrid_p_p.h
@@ -42,21 +42,22 @@
#ifndef QDECLARATIVESCALEGRID_H
#define QDECLARATIVESCALEGRID_H
-#include "private/qdeclarativeborderimage_p.h"
-
-#include <private/qdeclarativepixmapcache_p.h>
#include <qdeclarative.h>
#include <QtCore/QString>
#include <QtCore/QObject>
+#include <private/qdeclarativeborderimage_p.h>
+#include <private/qdeclarativepixmapcache_p.h>
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
-class Q_DECLARATIVE_EXPORT QDeclarativeScaleGrid : public QObject
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeScaleGrid : public QObject
{
Q_OBJECT
Q_ENUMS(TileRule)
@@ -94,7 +95,7 @@ private:
int _bottom;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeGridScaledImage
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeGridScaledImage
{
public:
QDeclarativeGridScaledImage();
diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp
index 308aefad06..303b21c0ae 100644
--- a/src/declarative/graphicsitems/qdeclarativetext.cpp
+++ b/src/declarative/graphicsitems/qdeclarativetext.cpp
@@ -219,8 +219,10 @@ void QDeclarativeTextPrivate::updateSize()
QFontMetrics fm(font);
if (text.isEmpty()) {
+ q->setImplicitWidth(0);
q->setImplicitHeight(fm.height());
emit q->paintedSizeChanged();
+ q->update();
return;
}
@@ -270,6 +272,7 @@ void QDeclarativeTextPrivate::updateSize()
internalWidthUpdate = false;
q->setImplicitHeight(size.height());
emit q->paintedSizeChanged();
+ q->update();
}
/*!
@@ -282,11 +285,10 @@ 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);
- int height = 0;
+ qreal height = 0;
qreal widthUsed = 0;
qreal lineWidth = 0;
@@ -299,12 +301,12 @@ QSize QDeclarativeTextPrivate::setupTextLayout()
layout.setTextOption(textOption);
layout.beginLayout();
- while (1) {
+ forever {
QTextLine line = layout.createLine();
if (!line.isValid())
break;
- if ((wrapMode != QDeclarativeText::NoWrap || elideMode != QDeclarativeText::ElideNone) && q->widthValid())
+ if (lineWidth)
line.setLineWidth(lineWidth);
}
layout.endLayout();
@@ -314,27 +316,27 @@ QSize QDeclarativeTextPrivate::setupTextLayout()
widthUsed = qMax(widthUsed, line.naturalTextWidth());
}
- qreal layoutWidth = q->widthValid()?q->width():widthUsed;
+ qreal layoutWidth = q->widthValid() ? q->width() : widthUsed;
- int x = 0;
+ qreal x = 0;
for (int i = 0; i < layout.lineCount(); ++i) {
QTextLine line = layout.lineAt(i);
line.setPosition(QPointF(0, height));
- height += int(line.height());
+ height += line.height();
if (!cacheAllTextAsImage) {
if (hAlign == QDeclarativeText::AlignLeft) {
x = 0;
} else if (hAlign == QDeclarativeText::AlignRight) {
- x = layoutWidth - (int)line.naturalTextWidth();
+ x = layoutWidth - line.naturalTextWidth();
} else if (hAlign == QDeclarativeText::AlignHCenter) {
- x = (layoutWidth - (int)line.naturalTextWidth()) / 2;
+ x = (layoutWidth - line.naturalTextWidth()) / 2;
}
- line.setPosition(QPoint(x, (int)line.y()));
+ line.setPosition(QPointF(x, line.y()));
}
}
- return QSize(qCeil(widthUsed), height);
+ return layout.boundingRect().toAlignedRect().size();
}
/*!
@@ -346,17 +348,17 @@ QPixmap QDeclarativeTextPrivate::textLayoutImage(bool drawStyle)
//do layout
QSize size = layedOutTextSize;
- int x = 0;
+ 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() - (int)line.naturalTextWidth();
+ x = size.width() - line.naturalTextWidth();
} else if (hAlign == QDeclarativeText::AlignHCenter) {
- x = (size.width() - (int)line.naturalTextWidth()) / 2;
+ x = (size.width() - line.naturalTextWidth()) / 2;
}
- line.setPosition(QPoint(x, (int)line.y()));
+ line.setPosition(QPointF(x, line.y()));
}
//paint text
@@ -434,12 +436,13 @@ void QDeclarativeTextPrivate::invalidateImageCache()
{
Q_Q(QDeclarativeText);
- if (imageCacheDirty)
- return;
-
- imageCacheDirty = true;
- imageCache = QPixmap();
+ if(cacheAllTextAsImage || style != QDeclarativeText::Normal){//If actually using the image cache
+ if (imageCacheDirty)
+ return;
+ imageCacheDirty = true;
+ imageCache = QPixmap();
+ }
if (q->isComponentComplete())
q->update();
}
@@ -900,7 +903,7 @@ void QDeclarativeText::setStyleColor(const QColor &color)
and \c Text.AlignVCenter.
Note that for a single line of text, the size of the text is the area of the text. In this common case,
- all alignments are equivalent. If you want the text to be, say, centered in it parent, then you will
+ all alignments are equivalent. If you want the text to be, say, centered in its parent, then you will
need to either modify the Item::anchors, or set horizontalAlignment to Text.AlignHCenter and bind the width to
that of the parent.
*/
@@ -1061,7 +1064,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
@@ -1143,9 +1146,10 @@ QRectF QDeclarativeText::boundingRect() const
void QDeclarativeText::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
Q_D(QDeclarativeText);
- if (!d->internalWidthUpdate && newGeometry.width() != oldGeometry.width() &&
- (d->wrapMode != QDeclarativeText::NoWrap || d->elideMode != QDeclarativeText::ElideNone)) {
-
+ if ((!d->internalWidthUpdate && newGeometry.width() != oldGeometry.width())
+ && (d->wrapMode != QDeclarativeText::NoWrap
+ || d->elideMode != QDeclarativeText::ElideNone
+ || d->hAlign != QDeclarativeText::AlignLeft)) {
if (d->singleline && d->elideMode != QDeclarativeText::ElideNone && widthValid()) {
// We need to re-elide
d->updateLayout();
diff --git a/src/declarative/graphicsitems/qdeclarativetext_p.h b/src/declarative/graphicsitems/qdeclarativetext_p.h
index 2cc4d52525..51434d5e63 100644
--- a/src/declarative/graphicsitems/qdeclarativetext_p.h
+++ b/src/declarative/graphicsitems/qdeclarativetext_p.h
@@ -45,13 +45,15 @@
#include <QtGui/qtextoption.h>
#include "qdeclarativeitem.h"
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QDeclarativeTextPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeText : public QDeclarativeItem
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeText : public QDeclarativeItem
{
Q_OBJECT
Q_ENUMS(HAlignment)
diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp
index 0903427d1c..0deacf889b 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);
@@ -792,7 +803,7 @@ void QDeclarativeTextInput::setCursorDelegate(QDeclarativeComponent* c)
d->cursorComponent = c;
if(!c){
//note that the components are owned by something else
- disconnect(d->control, SIGNAL(cursorPositionChanged(int, int)),
+ disconnect(d->control, SIGNAL(cursorPositionChanged(int,int)),
this, SLOT(moveCursor()));
delete d->cursorItem;
}else{
@@ -805,7 +816,7 @@ void QDeclarativeTextInput::setCursorDelegate(QDeclarativeComponent* c)
void QDeclarativeTextInputPrivate::startCreatingCursor()
{
Q_Q(QDeclarativeTextInput);
- q->connect(control, SIGNAL(cursorPositionChanged(int, int)),
+ q->connect(control, SIGNAL(cursorPositionChanged(int,int)),
q, SLOT(moveCursor()));
if(cursorComponent->isReady()){
q->createCursor();
@@ -1446,7 +1457,7 @@ void QDeclarativeTextInputPrivate::init()
q, SLOT(cursorPosChanged()));
q->connect(control, SIGNAL(selectionChanged()),
q, SLOT(selectionChanged()));
- q->connect(control, SIGNAL(textChanged(const QString &)),
+ q->connect(control, SIGNAL(textChanged(QString)),
q, SLOT(q_textChanged()));
q->connect(control, SIGNAL(accepted()),
q, SIGNAL(accepted()));
diff --git a/src/declarative/graphicsitems/qdeclarativetextlayout.cpp b/src/declarative/graphicsitems/qdeclarativetextlayout.cpp
index e8b5fb235c..e8da3676c4 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) {
@@ -321,7 +334,7 @@ void QDeclarativeTextLayout::draw(QPainter *painter, const QPointF &p)
priv->extended->type() == QPaintEngine::OpenVG ||
priv->extended->type() == QPaintEngine::OpenGL);
- if (!paintEngineSupportsTransformations) {
+ if (!paintEngineSupportsTransformations || !priv->state->matrix.isAffine()) {
QTextLayout::draw(painter, p);
return;
}
diff --git a/src/declarative/graphicsitems/qdeclarativetextlayout_p.h b/src/declarative/graphicsitems/qdeclarativetextlayout_p.h
index 90bf0e0979..8b81db3536 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/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
index e569dd2537..4fe6c4cac2 100644
--- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
+++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp
@@ -714,14 +714,14 @@ void QDeclarativeVisualDataModel::setModel(const QVariant &model)
this, SLOT(_q_itemsMoved(int,int,int)));
d->m_listModelInterface = 0;
} else if (d->m_abstractItemModel) {
- QObject::disconnect(d->m_abstractItemModel, SIGNAL(rowsInserted(const QModelIndex &,int,int)),
- this, SLOT(_q_rowsInserted(const QModelIndex &,int,int)));
- QObject::disconnect(d->m_abstractItemModel, SIGNAL(rowsRemoved(const QModelIndex &,int,int)),
- this, SLOT(_q_rowsRemoved(const QModelIndex &,int,int)));
- QObject::disconnect(d->m_abstractItemModel, SIGNAL(dataChanged(const QModelIndex&,const QModelIndex&)),
- this, SLOT(_q_dataChanged(const QModelIndex&,const QModelIndex&)));
- QObject::disconnect(d->m_abstractItemModel, SIGNAL(rowsMoved(const QModelIndex&,int,int,const QModelIndex&,int)),
- this, SLOT(_q_rowsMoved(const QModelIndex&,int,int,const QModelIndex&,int)));
+ QObject::disconnect(d->m_abstractItemModel, SIGNAL(rowsInserted(QModelIndex,int,int)),
+ this, SLOT(_q_rowsInserted(QModelIndex,int,int)));
+ QObject::disconnect(d->m_abstractItemModel, SIGNAL(rowsRemoved(QModelIndex,int,int)),
+ this, SLOT(_q_rowsRemoved(QModelIndex,int,int)));
+ QObject::disconnect(d->m_abstractItemModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
+ this, SLOT(_q_dataChanged(QModelIndex,QModelIndex)));
+ QObject::disconnect(d->m_abstractItemModel, SIGNAL(rowsMoved(QModelIndex,int,int,QModelIndex,int)),
+ this, SLOT(_q_rowsMoved(QModelIndex,int,int,QModelIndex,int)));
QObject::disconnect(d->m_abstractItemModel, SIGNAL(modelReset()), this, SLOT(_q_modelReset()));
QObject::disconnect(d->m_abstractItemModel, SIGNAL(layoutChanged()), this, SLOT(_q_layoutChanged()));
d->m_abstractItemModel = 0;
@@ -762,14 +762,14 @@ void QDeclarativeVisualDataModel::setModel(const QVariant &model)
emit itemsInserted(0, d->m_listModelInterface->count());
return;
} else if (object && (d->m_abstractItemModel = qobject_cast<QAbstractItemModel *>(object))) {
- QObject::connect(d->m_abstractItemModel, SIGNAL(rowsInserted(const QModelIndex &,int,int)),
- this, SLOT(_q_rowsInserted(const QModelIndex &,int,int)));
- QObject::connect(d->m_abstractItemModel, SIGNAL(rowsRemoved(const QModelIndex &,int,int)),
- this, SLOT(_q_rowsRemoved(const QModelIndex &,int,int)));
- QObject::connect(d->m_abstractItemModel, SIGNAL(dataChanged(const QModelIndex&,const QModelIndex&)),
- this, SLOT(_q_dataChanged(const QModelIndex&,const QModelIndex&)));
- QObject::connect(d->m_abstractItemModel, SIGNAL(rowsMoved(const QModelIndex&,int,int,const QModelIndex&,int)),
- this, SLOT(_q_rowsMoved(const QModelIndex&,int,int,const QModelIndex&,int)));
+ QObject::connect(d->m_abstractItemModel, SIGNAL(rowsInserted(QModelIndex,int,int)),
+ this, SLOT(_q_rowsInserted(QModelIndex,int,int)));
+ QObject::connect(d->m_abstractItemModel, SIGNAL(rowsRemoved(QModelIndex,int,int)),
+ this, SLOT(_q_rowsRemoved(QModelIndex,int,int)));
+ QObject::connect(d->m_abstractItemModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
+ this, SLOT(_q_dataChanged(QModelIndex,QModelIndex)));
+ QObject::connect(d->m_abstractItemModel, SIGNAL(rowsMoved(QModelIndex,int,int,QModelIndex,int)),
+ this, SLOT(_q_rowsMoved(QModelIndex,int,int,QModelIndex,int)));
QObject::connect(d->m_abstractItemModel, SIGNAL(modelReset()), this, SLOT(_q_modelReset()));
QObject::connect(d->m_abstractItemModel, SIGNAL(layoutChanged()), this, SLOT(_q_layoutChanged()));
d->m_metaDataCacheable = true;
@@ -937,6 +937,10 @@ void QDeclarativeVisualDataModel::setPart(const QString &part)
int QDeclarativeVisualDataModel::count() const
{
Q_D(const QDeclarativeVisualDataModel);
+ if (d->m_visualItemModel)
+ return d->m_visualItemModel->count();
+ if (!d->m_delegate)
+ return 0;
return d->modelCount();
}
diff --git a/src/declarative/qml/parser/qdeclarativejs.g b/src/declarative/qml/parser/qdeclarativejs.g
index 1b66ba0427..c84f0b30ba 100644
--- a/src/declarative/qml/parser/qdeclarativejs.g
+++ b/src/declarative/qml/parser/qdeclarativejs.g
@@ -1254,7 +1254,7 @@ case $rule_number: {
else
node = makeAstNode<AST::ObjectLiteral> (driver->nodePool());
node->lbraceToken = loc(1);
- node->lbraceToken = loc(3);
+ node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
./
@@ -1265,7 +1265,7 @@ case $rule_number: {
AST::ObjectLiteral *node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
sym(2).PropertyNameAndValueList->finish ());
node->lbraceToken = loc(1);
- node->lbraceToken = loc(4);
+ node->rbraceToken = loc(4);
sym(1).Node = node;
} break;
./
diff --git a/src/declarative/qml/parser/qdeclarativejslexer.cpp b/src/declarative/qml/parser/qdeclarativejslexer.cpp
index 1eb42e4f40..52f62109be 100644
--- a/src/declarative/qml/parser/qdeclarativejslexer.cpp
+++ b/src/declarative/qml/parser/qdeclarativejslexer.cpp
@@ -510,15 +510,18 @@ int Lexer::lex()
setDone(Eof);
}
} else if (isLineTerminator()) {
- shiftWindowsLineBreak();
- yylineno++;
- yycolumn = 0;
- bol = true;
- terminator = true;
- syncProhibitAutomaticSemicolon();
if (restrKeyword) {
+ // automatic semicolon insertion
+ recordStartPos();
token = QDeclarativeJSGrammar::T_SEMICOLON;
setDone(Other);
+ } else {
+ shiftWindowsLineBreak();
+ yylineno++;
+ yycolumn = 0;
+ bol = true;
+ terminator = true;
+ syncProhibitAutomaticSemicolon();
}
} else if (current == '"' || current == '\'') {
recordStartPos();
diff --git a/src/declarative/qml/parser/qdeclarativejsparser.cpp b/src/declarative/qml/parser/qdeclarativejsparser.cpp
index 8afb93d5ba..28ef17d5ae 100644
--- a/src/declarative/qml/parser/qdeclarativejsparser.cpp
+++ b/src/declarative/qml/parser/qdeclarativejsparser.cpp
@@ -679,7 +679,7 @@ case 85: {
else
node = makeAstNode<AST::ObjectLiteral> (driver->nodePool());
node->lbraceToken = loc(1);
- node->lbraceToken = loc(3);
+ node->rbraceToken = loc(3);
sym(1).Node = node;
} break;
@@ -687,7 +687,7 @@ case 86: {
AST::ObjectLiteral *node = makeAstNode<AST::ObjectLiteral> (driver->nodePool(),
sym(2).PropertyNameAndValueList->finish ());
node->lbraceToken = loc(1);
- node->lbraceToken = loc(4);
+ node->rbraceToken = loc(4);
sym(1).Node = node;
} break;
diff --git a/src/declarative/qml/qdeclarativebinding_p.h b/src/declarative/qml/qdeclarativebinding_p.h
index 941a1b3bfe..0b9bde6e75 100644
--- a/src/declarative/qml/qdeclarativebinding_p.h
+++ b/src/declarative/qml/qdeclarativebinding_p.h
@@ -64,7 +64,7 @@
QT_BEGIN_NAMESPACE
-class Q_DECLARATIVE_EXPORT QDeclarativeAbstractBinding
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeAbstractBinding
{
public:
typedef QWeakPointer<QDeclarativeAbstractBinding> Pointer;
@@ -138,7 +138,7 @@ private:
class QDeclarativeContext;
class QDeclarativeBindingPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeBinding : public QDeclarativeExpression, public QDeclarativeAbstractBinding
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeBinding : public QDeclarativeExpression, public QDeclarativeAbstractBinding
{
Q_OBJECT
public:
diff --git a/src/declarative/qml/qdeclarativecompiledbindings.cpp b/src/declarative/qml/qdeclarativecompiledbindings.cpp
index 5f0fd560ab..fbe58297b3 100644
--- a/src/declarative/qml/qdeclarativecompiledbindings.cpp
+++ b/src/declarative/qml/qdeclarativecompiledbindings.cpp
@@ -601,7 +601,7 @@ struct QDeclarativeBindingCompilerPrivate
QDeclarativeImports imports;
QDeclarativeEnginePrivate *engine;
- QString contextName() const { return QLatin1String("$$$SCOPE_") + QString::number((intptr_t)context, 16); }
+ QString contextName() const { return QLatin1String("$$$SCOPE_") + QString::number((quintptr)context, 16); }
bool compile(QDeclarativeJS::AST::Node *);
diff --git a/src/declarative/qml/qdeclarativecompileddata.cpp b/src/declarative/qml/qdeclarativecompileddata.cpp
index 5d73d899cf..690f499b06 100644
--- a/src/declarative/qml/qdeclarativecompileddata.cpp
+++ b/src/declarative/qml/qdeclarativecompileddata.cpp
@@ -169,8 +169,8 @@ QDeclarativeCompiledData::QDeclarativeCompiledData(QDeclarativeEngine *engine)
QDeclarativeCompiledData::~QDeclarativeCompiledData()
{
for (int ii = 0; ii < types.count(); ++ii) {
- if (types.at(ii).ref)
- types.at(ii).ref->release();
+ if (types.at(ii).component)
+ types.at(ii).component->release();
}
for (int ii = 0; ii < propertyCaches.count(); ++ii)
@@ -205,7 +205,7 @@ const QMetaObject *QDeclarativeCompiledData::TypeReference::metaObject() const
return type->metaObject();
} else {
Q_ASSERT(component);
- return static_cast<QDeclarativeComponentPrivate *>(QObjectPrivate::get(component))->cc->root;
+ return component->root;
}
}
diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp
index 74bc5bd9b0..645402ea29 100644
--- a/src/declarative/qml/qdeclarativecompiler.cpp
+++ b/src/declarative/qml/qdeclarativecompiler.cpp
@@ -590,9 +590,7 @@ bool QDeclarativeCompiler::compile(QDeclarativeEngine *engine,
COMPILE_EXCEPTION(parserRef->refObjects.first(), err);
}
} else if (tref.typeData) {
- ref.component = tref.typeData->component();
- ref.ref = tref.typeData;
- ref.ref->addref();
+ ref.component = tref.typeData->compiledData();
}
ref.className = parserRef->name.toUtf8();
out->types << ref;
@@ -722,7 +720,7 @@ bool QDeclarativeCompiler::buildObject(Object *obj, const BindingContext &ctxt)
obj->metatype = tr.metaObject();
if (tr.component)
- obj->url = tr.component->url();
+ obj->url = tr.component->url;
if (tr.type)
obj->typeName = tr.type->qmlTypeName();
obj->className = tr.className;
@@ -940,7 +938,7 @@ void QDeclarativeCompiler::genObject(QDeclarativeParser::Object *obj)
// ### Surely the creation of this property cache could be more efficient
QDeclarativePropertyCache *propertyCache = 0;
if (tr.component)
- propertyCache = QDeclarativeComponentPrivate::get(tr.component)->cc->rootPropertyCache->copy();
+ propertyCache = tr.component->rootPropertyCache->copy();
else
propertyCache = enginePrivate->cache(obj->metaObject()->superClass())->copy();
@@ -957,7 +955,7 @@ void QDeclarativeCompiler::genObject(QDeclarativeParser::Object *obj)
output->bytecode << meta;
} else if (obj == unitRoot) {
if (tr.component)
- output->rootPropertyCache = QDeclarativeComponentPrivate::get(tr.component)->cc->rootPropertyCache;
+ output->rootPropertyCache = tr.component->rootPropertyCache;
else
output->rootPropertyCache = enginePrivate->cache(obj->metaObject());
diff --git a/src/declarative/qml/qdeclarativecompiler_p.h b/src/declarative/qml/qdeclarativecompiler_p.h
index 89eef095fa..5cd1fd2864 100644
--- a/src/declarative/qml/qdeclarativecompiler_p.h
+++ b/src/declarative/qml/qdeclarativecompiler_p.h
@@ -89,14 +89,13 @@ public:
struct TypeReference
{
TypeReference()
- : type(0), component(0), ref(0) {}
+ : type(0), component(0) {}
QByteArray className;
QDeclarativeType *type;
- QDeclarativeComponent *component;
+ QDeclarativeCompiledData *component;
- QDeclarativeRefCount *ref;
- QObject *createInstance(QDeclarativeContextData *, const QBitField &) const;
+ QObject *createInstance(QDeclarativeContextData *, const QBitField &, QList<QDeclarativeError> *) const;
const QMetaObject *metaObject() const;
};
QList<TypeReference> types;
diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp
index cfef9cf485..2686ce3d52 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}
*/
@@ -733,48 +770,45 @@ QDeclarativeComponentPrivate::beginCreate(QDeclarativeContextData *context, cons
return 0;
}
- QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(engine);
+ return begin(context, creationContext, cc, start, count, &state, 0, bindings);
+}
+
+QObject * QDeclarativeComponentPrivate::begin(QDeclarativeContextData *parentContext,
+ QDeclarativeContextData *componentCreationContext,
+ QDeclarativeCompiledData *component, int start, int count,
+ ConstructionState *state, QList<QDeclarativeError> *errors,
+ const QBitField &bindings)
+{
+ QDeclarativeEnginePrivate *enginePriv = QDeclarativeEnginePrivate::get(parentContext->engine);
+ bool isRoot = !enginePriv->inBeginCreate;
+
+ Q_ASSERT(!isRoot || state); // Either this isn't a root component, or a state data must be provided
+ Q_ASSERT((state != 0) ^ (errors != 0)); // One of state or errors (but not both) must be provided
- bool isRoot = !ep->inBeginCreate;
if (isRoot)
QDeclarativeDebugTrace::startRange(QDeclarativeDebugTrace::Creating);
- QDeclarativeDebugTrace::rangeData(QDeclarativeDebugTrace::Creating, cc->url);
QDeclarativeContextData *ctxt = new QDeclarativeContextData;
ctxt->isInternal = true;
- ctxt->url = cc->url;
- ctxt->imports = cc->importCache;
+ ctxt->url = component->url;
+ ctxt->imports = component->importCache;
// Nested global imports
- if (creationContext && start != -1)
- ctxt->importedScripts = creationContext->importedScripts;
-
- cc->importCache->addref();
- ctxt->setParent(context);
-
- QObject *rv = begin(ctxt, ep, cc, start, count, &state, bindings);
+ if (componentCreationContext && start != -1)
+ ctxt->importedScripts = componentCreationContext->importedScripts;
- if (ep->isDebugging && rv) {
- if (!context->isInternal)
- context->asQDeclarativeContextPrivate()->instances.append(rv);
- QDeclarativeEngineDebugServer::instance()->objectCreated(engine, rv);
- }
-
- return rv;
-}
+ component->importCache->addref();
+ ctxt->setParent(parentContext);
-QObject * QDeclarativeComponentPrivate::begin(QDeclarativeContextData *ctxt, QDeclarativeEnginePrivate *enginePriv,
- QDeclarativeCompiledData *component, int start, int count,
- ConstructionState *state, const QBitField &bindings)
-{
- bool isRoot = !enginePriv->inBeginCreate;
enginePriv->inBeginCreate = true;
QDeclarativeVME vme;
QObject *rv = vme.run(ctxt, component, start, count, bindings);
- if (vme.isError())
- state->errors = vme.errors();
+ if (vme.isError()) {
+ if(errors) *errors = vme.errors();
+ else state->errors = vme.errors();
+ }
if (isRoot) {
enginePriv->inBeginCreate = false;
@@ -794,6 +828,12 @@ QObject * QDeclarativeComponentPrivate::begin(QDeclarativeContextData *ctxt, QDe
enginePriv->inProgressCreations++;
}
+ if (enginePriv->isDebugging && rv) {
+ if (!parentContext->isInternal)
+ parentContext->asQDeclarativeContextPrivate()->instances.append(rv);
+ QDeclarativeEngineDebugServer::instance()->objectCreated(parentContext->engine, rv);
+ }
+
return rv;
}
diff --git a/src/declarative/qml/qdeclarativecomponent_p.h b/src/declarative/qml/qdeclarativecomponent_p.h
index a551cc8072..7b30bad051 100644
--- a/src/declarative/qml/qdeclarativecomponent_p.h
+++ b/src/declarative/qml/qdeclarativecomponent_p.h
@@ -109,9 +109,10 @@ public:
};
ConstructionState state;
- static QObject *begin(QDeclarativeContextData *ctxt, QDeclarativeEnginePrivate *enginePriv,
- QDeclarativeCompiledData *component, int start, int count,
- ConstructionState *state, const QBitField &bindings = QBitField());
+ static QObject *begin(QDeclarativeContextData *parentContext, QDeclarativeContextData *componentCreationContext,
+ QDeclarativeCompiledData *component, int start, int count,
+ ConstructionState *state, QList<QDeclarativeError> *errors,
+ const QBitField &bindings = QBitField());
static void beginDeferred(QDeclarativeEnginePrivate *enginePriv, QObject *object,
ConstructionState *state);
static void complete(QDeclarativeEnginePrivate *enginePriv, ConstructionState *state);
diff --git a/src/declarative/qml/qdeclarativecontext.cpp b/src/declarative/qml/qdeclarativecontext.cpp
index 59d5cfa692..3ee0e6f321 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.
@@ -467,7 +474,7 @@ int QDeclarativeContextPrivate::context_count(QDeclarativeListProperty<QObject>
{
QDeclarativeContext *context = static_cast<QDeclarativeContext*>(prop->object);
QDeclarativeContextPrivate *d = QDeclarativeContextPrivate::get(context);
- int contextProperty = (int)(intptr_t)prop->data;
+ int contextProperty = (int)(quintptr)prop->data;
if (d->propertyValues.at(contextProperty).userType() != qMetaTypeId<QList<QObject*> >()) {
return 0;
@@ -480,7 +487,7 @@ QObject *QDeclarativeContextPrivate::context_at(QDeclarativeListProperty<QObject
{
QDeclarativeContext *context = static_cast<QDeclarativeContext*>(prop->object);
QDeclarativeContextPrivate *d = QDeclarativeContextPrivate::get(context);
- int contextProperty = (int)(intptr_t)prop->data;
+ int contextProperty = (int)(quintptr)prop->data;
if (d->propertyValues.at(contextProperty).userType() != qMetaTypeId<QList<QObject*> >()) {
return 0;
diff --git a/src/declarative/qml/qdeclarativedata_p.h b/src/declarative/qml/qdeclarativedata_p.h
index def418842c..476716968a 100644
--- a/src/declarative/qml/qdeclarativedata_p.h
+++ b/src/declarative/qml/qdeclarativedata_p.h
@@ -65,6 +65,7 @@ class QDeclarativeContext;
class QDeclarativePropertyCache;
class QDeclarativeContextData;
class QDeclarativeNotifier;
+class QDeclarativeDataExtended;
// This class is structured in such a way, that simply zero'ing it is the
// default state for elemental object allocations. This is crucial in the
// workings of the QDeclarativeInstruction::CreateSimpleObject instruction.
@@ -150,17 +151,13 @@ public:
}
}
+ bool hasExtendedData() const { return extendedData != 0; }
QDeclarativeNotifier *objectNameNotifier() const;
QHash<int, QObject *> *attachedProperties() const;
- struct ExtendedData {
- ExtendedData();
- ~ExtendedData();
-
- QHash<int, QObject *> attachedProperties;
- void *objectNameNotifier;
- };
- mutable ExtendedData *extendedData;
+private:
+ // For objectNameNotifier and attachedProperties
+ mutable QDeclarativeDataExtended *extendedData;
};
template<class T>
diff --git a/src/declarative/qml/qdeclarativedom_p.h b/src/declarative/qml/qdeclarativedom_p.h
index 6043eaddab..ee3625cf07 100644
--- a/src/declarative/qml/qdeclarativedom_p.h
+++ b/src/declarative/qml/qdeclarativedom_p.h
@@ -58,6 +58,8 @@
#include <QtCore/qlist.h>
#include <QtCore/qshareddata.h>
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -76,7 +78,7 @@ class QIODevice;
class QDeclarativeDomDocumentPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeDomDocument
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDomDocument
{
public:
QDeclarativeDomDocument();
@@ -96,7 +98,7 @@ private:
};
class QDeclarativeDomPropertyPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeDomProperty
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDomProperty
{
public:
QDeclarativeDomProperty();
@@ -123,7 +125,7 @@ private:
};
class QDeclarativeDomDynamicPropertyPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeDomDynamicProperty
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDomDynamicProperty
{
public:
QDeclarativeDomDynamicProperty();
@@ -151,7 +153,7 @@ private:
};
class QDeclarativeDomObjectPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeDomObject
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDomObject
{
public:
QDeclarativeDomObject();
@@ -196,7 +198,7 @@ private:
class QDeclarativeDomValuePrivate;
class QDeclarativeDomBasicValuePrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeDomValueLiteral
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDomValueLiteral
{
public:
QDeclarativeDomValueLiteral();
@@ -211,7 +213,7 @@ private:
QSharedDataPointer<QDeclarativeDomBasicValuePrivate> d;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDomValueBinding
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDomValueBinding
{
public:
QDeclarativeDomValueBinding();
@@ -226,7 +228,7 @@ private:
QSharedDataPointer<QDeclarativeDomBasicValuePrivate> d;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDomValueValueSource
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDomValueValueSource
{
public:
QDeclarativeDomValueValueSource();
@@ -241,7 +243,7 @@ private:
QSharedDataPointer<QDeclarativeDomBasicValuePrivate> d;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDomValueValueInterceptor
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDomValueValueInterceptor
{
public:
QDeclarativeDomValueValueInterceptor();
@@ -257,7 +259,7 @@ private:
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDomComponent : public QDeclarativeDomObject
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDomComponent : public QDeclarativeDomObject
{
public:
QDeclarativeDomComponent();
@@ -268,7 +270,7 @@ public:
QDeclarativeDomObject componentRoot() const;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDomValue
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDomValue
{
public:
enum Type {
@@ -312,7 +314,7 @@ private:
QSharedDataPointer<QDeclarativeDomValuePrivate> d;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeDomList
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDomList
{
public:
QDeclarativeDomList();
@@ -333,7 +335,7 @@ private:
};
class QDeclarativeDomImportPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeDomImport
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeDomImport
{
public:
enum Type { Library, File };
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp
index c3fdf363f5..c6463026e7 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()
{
@@ -608,7 +609,7 @@ QDeclarativeContext *QDeclarativeEngine::rootContext() const
QNetworkAccessManager with specialized caching, proxy and cookie
support.
- The factory must be set before exceuting the engine.
+ The factory must be set before executing the engine.
*/
void QDeclarativeEngine::setNetworkAccessManagerFactory(QDeclarativeNetworkAccessManagerFactory *factory)
{
@@ -878,7 +879,7 @@ void QDeclarativeEngine::setContextForObject(QObject *object, QDeclarativeContex
created by calling QDeclarativeCompnent::create() or
QDeclarativeComponent::beginCreate() which have CppOwnership by
default. The ownership of these root-level objects is considered to
- have been transfered to the C++ caller.
+ have been transferred to the C++ caller.
Objects not-created by QML have CppOwnership by default. The
exception to this is objects returned from a C++ method call. The
@@ -956,7 +957,7 @@ QObject *qmlAttachedPropertiesObjectById(int id, const QObject *object, bool cre
if (!data)
return 0; // Attached properties are only on objects created by QML
- QObject *rv = data->extendedData?data->attachedProperties()->value(id):0;
+ QObject *rv = data->hasExtendedData()?data->attachedProperties()->value(id):0;
if (rv || !create)
return rv;
@@ -984,6 +985,35 @@ QObject *qmlAttachedPropertiesObject(int *idCache, const QObject *object,
return qmlAttachedPropertiesObjectById(*idCache, object, create);
}
+class QDeclarativeDataExtended {
+public:
+ QDeclarativeDataExtended();
+ ~QDeclarativeDataExtended();
+
+ QHash<int, QObject *> attachedProperties;
+ QDeclarativeNotifier objectNameNotifier;
+};
+
+QDeclarativeDataExtended::QDeclarativeDataExtended()
+{
+}
+
+QDeclarativeDataExtended::~QDeclarativeDataExtended()
+{
+}
+
+QDeclarativeNotifier *QDeclarativeData::objectNameNotifier() const
+{
+ if (!extendedData) extendedData = new QDeclarativeDataExtended;
+ return &extendedData->objectNameNotifier;
+}
+
+QHash<int, QObject *> *QDeclarativeData::attachedProperties() const
+{
+ if (!extendedData) extendedData = new QDeclarativeDataExtended;
+ return &extendedData->attachedProperties;
+}
+
void QDeclarativeData::destroyed(QObject *object)
{
if (deferredComponent)
@@ -1074,28 +1104,6 @@ void QDeclarativeData::setBindingBit(QObject *obj, int bit)
bindingBits[bit / 32] |= (1 << (bit % 32));
}
-QDeclarativeData::ExtendedData::ExtendedData()
-: objectNameNotifier(0)
-{
-}
-
-QDeclarativeData::ExtendedData::~ExtendedData()
-{
- ((QDeclarativeNotifier *)&objectNameNotifier)->~QDeclarativeNotifier();
-}
-
-QDeclarativeNotifier *QDeclarativeData::objectNameNotifier() const
-{
- if (!extendedData) extendedData = new ExtendedData;
- return (QDeclarativeNotifier *)&extendedData->objectNameNotifier;
-}
-
-QHash<int, QObject *> *QDeclarativeData::attachedProperties() const
-{
- if (!extendedData) extendedData = new ExtendedData;
- return &extendedData->attachedProperties;
-}
-
/*!
Creates a QScriptValue allowing you to use \a object in QML script.
\a engine is the QDeclarativeEngine it is to be created in.
@@ -2224,6 +2232,8 @@ bool QDeclarative_isFileCaseCorrect(const QString &fileName)
if (a != c)
return false;
}
+#else
+ Q_UNUSED(fileName);
#endif
return true;
diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h
index 8539fbf2d9..deb4a77ee8 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 ed281857d2..bffe681470 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/qdeclarativeenginedebug_p.h b/src/declarative/qml/qdeclarativeenginedebug_p.h
index 613f1fe4db..97b8121b4b 100644
--- a/src/declarative/qml/qdeclarativeenginedebug_p.h
+++ b/src/declarative/qml/qdeclarativeenginedebug_p.h
@@ -117,10 +117,10 @@ private:
QList<QDeclarativeEngine *> m_engines;
QDeclarativeWatcher *m_watch;
};
-Q_DECLARATIVE_EXPORT QDataStream &operator<<(QDataStream &, const QDeclarativeEngineDebugServer::QDeclarativeObjectData &);
-Q_DECLARATIVE_EXPORT QDataStream &operator>>(QDataStream &, QDeclarativeEngineDebugServer::QDeclarativeObjectData &);
-Q_DECLARATIVE_EXPORT QDataStream &operator<<(QDataStream &, const QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &);
-Q_DECLARATIVE_EXPORT QDataStream &operator>>(QDataStream &, QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &);
+Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator<<(QDataStream &, const QDeclarativeEngineDebugServer::QDeclarativeObjectData &);
+Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator>>(QDataStream &, QDeclarativeEngineDebugServer::QDeclarativeObjectData &);
+Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator<<(QDataStream &, const QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &);
+Q_DECLARATIVE_PRIVATE_EXPORT QDataStream &operator>>(QDataStream &, QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &);
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativeglobal_p.h b/src/declarative/qml/qdeclarativeglobal_p.h
index 65d9b2467c..31fbb1ec73 100644
--- a/src/declarative/qml/qdeclarativeglobal_p.h
+++ b/src/declarative/qml/qdeclarativeglobal_p.h
@@ -64,6 +64,12 @@ QT_MODULE(Declarative)
return status == Yes; \
}
+#ifdef Q_OS_SYMBIAN
+#define Q_DECLARATIVE_PRIVATE_EXPORT
+#else
+#define Q_DECLARATIVE_PRIVATE_EXPORT Q_DECLARATIVE_EXPORT
+#endif
+
struct QDeclarativeGraphics_DerivedObject : public QObject
{
void setParent_noEvent(QObject *parent) {
diff --git a/src/declarative/qml/qdeclarativeinfo.cpp b/src/declarative/qml/qdeclarativeinfo.cpp
index c6560ddb94..56c05993b1 100644
--- a/src/declarative/qml/qdeclarativeinfo.cpp
+++ b/src/declarative/qml/qdeclarativeinfo.cpp
@@ -55,7 +55,8 @@ QT_BEGIN_NAMESPACE
\fn QDeclarativeInfo qmlInfo(const QObject *object)
\relates QDeclarativeEngine
- \brief Prints warnings messages that include the file and line number for QML types.
+ Prints warning messages that include the file and line number for the
+ specified QML \a object.
When QML types display warning messages, it improves traceability
if they include the QML file and line number on which the
diff --git a/src/declarative/qml/qdeclarativemetatype_p.h b/src/declarative/qml/qdeclarativemetatype_p.h
index 382abd21e1..9c486d320d 100644
--- a/src/declarative/qml/qdeclarativemetatype_p.h
+++ b/src/declarative/qml/qdeclarativemetatype_p.h
@@ -58,6 +58,7 @@
#include <QtCore/qglobal.h>
#include <QtCore/qvariant.h>
#include <QtCore/qbitarray.h>
+#include <private/qdeclarativeglobal_p.h>
QT_BEGIN_NAMESPACE
@@ -65,7 +66,7 @@ class QDeclarativeType;
class QDeclarativeCustomParser;
class QDeclarativeTypePrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeMetaType
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeMetaType
{
public:
static bool copy(int type, void *data, const void *copy = 0);
@@ -105,7 +106,7 @@ public:
static QList<QDeclarativePrivate::AutoParentFunction> parentFunctions();
};
-class Q_DECLARATIVE_EXPORT QDeclarativeType
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeType
{
public:
QByteArray typeName() const;
diff --git a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
index 61a1f555bd..eff59df2ef 100644
--- a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
+++ b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp
@@ -421,7 +421,7 @@ QScriptValue QDeclarativeObjectScriptClass::tostring(QScriptContext *context, QS
ret += QString::fromUtf8(obj->metaObject()->className());
ret += QLatin1String("(0x");
- ret += QString::number((intptr_t)obj,16);
+ ret += QString::number((quintptr)obj,16);
if (!objectName.isEmpty()) {
ret += QLatin1String(", \"");
@@ -838,9 +838,19 @@ QDeclarativeObjectMethodScriptClass::Value QDeclarativeObjectMethodScriptClass::
{
MethodData *method = static_cast<MethodData *>(o);
- if (method->data.flags & QDeclarativePropertyCache::Data::HasArguments) {
+ if (method->data.relatedIndex == -1)
+ return callPrecise(method->object, method->data, ctxt);
+ else
+ return callOverloaded(method, ctxt);
+}
- QMetaMethod m = method->object->metaObject()->method(method->data.coreIndex);
+QDeclarativeObjectMethodScriptClass::Value
+QDeclarativeObjectMethodScriptClass::callPrecise(QObject *object, const QDeclarativePropertyCache::Data &data,
+ QScriptContext *ctxt)
+{
+ if (data.flags & QDeclarativePropertyCache::Data::HasArguments) {
+
+ QMetaMethod m = object->metaObject()->method(data.coreIndex);
QList<QByteArray> argTypeNames = m.parameterTypes();
QVarLengthArray<int, 9> argTypes(argTypeNames.count());
@@ -848,7 +858,7 @@ QDeclarativeObjectMethodScriptClass::Value QDeclarativeObjectMethodScriptClass::
for (int ii = 0; ii < argTypeNames.count(); ++ii) {
argTypes[ii] = QMetaType::type(argTypeNames.at(ii));
if (argTypes[ii] == QVariant::Invalid)
- argTypes[ii] = enumType(method->object->metaObject(), QString::fromLatin1(argTypeNames.at(ii)));
+ argTypes[ii] = enumType(object->metaObject(), QString::fromLatin1(argTypeNames.at(ii)));
if (argTypes[ii] == QVariant::Invalid)
return Value(ctxt, ctxt->throwError(QString::fromLatin1("Unknown method parameter type: %1").arg(QLatin1String(argTypeNames.at(ii)))));
}
@@ -856,39 +866,301 @@ QDeclarativeObjectMethodScriptClass::Value QDeclarativeObjectMethodScriptClass::
if (argTypes.count() > ctxt->argumentCount())
return Value(ctxt, ctxt->throwError(QLatin1String("Insufficient arguments")));
- QVarLengthArray<MetaCallArgument, 9> args(argTypes.count() + 1);
- args[0].initAsType(method->data.propType, engine);
+ return callMethod(object, data.coreIndex, data.propType, argTypes.count(), argTypes.data(), ctxt);
+
+ } else {
+
+ return callMethod(object, data.coreIndex, data.propType, 0, 0, ctxt);
+
+ }
+}
+
+QDeclarativeObjectMethodScriptClass::Value
+QDeclarativeObjectMethodScriptClass::callMethod(QObject *object, int index,
+ int returnType, int argCount, int *argTypes,
+ QScriptContext *ctxt)
+{
+ if (argCount > 0) {
- for (int ii = 0; ii < argTypes.count(); ++ii)
+ QVarLengthArray<MetaCallArgument, 9> args(argCount + 1);
+ args[0].initAsType(returnType, engine);
+
+ for (int ii = 0; ii < argCount; ++ii)
args[ii + 1].fromScriptValue(argTypes[ii], engine, ctxt->argument(ii));
QVarLengthArray<void *, 9> argData(args.count());
for (int ii = 0; ii < args.count(); ++ii)
argData[ii] = args[ii].dataPtr();
- QMetaObject::metacall(method->object, QMetaObject::InvokeMetaMethod, method->data.coreIndex, argData.data());
+ QMetaObject::metacall(object, QMetaObject::InvokeMetaMethod, index, argData.data());
return args[0].toValue(engine);
- } else if (method->data.propType != 0) {
-
+ } else if (returnType != 0) {
+
MetaCallArgument arg;
- arg.initAsType(method->data.propType, engine);
+ arg.initAsType(returnType, engine);
void *args[] = { arg.dataPtr() };
- QMetaObject::metacall(method->object, QMetaObject::InvokeMetaMethod, method->data.coreIndex, args);
+ QMetaObject::metacall(object, QMetaObject::InvokeMetaMethod, index, args);
return arg.toValue(engine);
} else {
void *args[] = { 0 };
- QMetaObject::metacall(method->object, QMetaObject::InvokeMetaMethod, method->data.coreIndex, args);
+ QMetaObject::metacall(object, QMetaObject::InvokeMetaMethod, index, args);
return Value();
}
- return Value();
+}
+
+/*!
+Resolve the overloaded method to call. The algorithm works conceptually like this:
+ 1. Resolve the set of overloads it is *possible* to call.
+ Impossible overloads include those that have too many parameters or have parameters
+ of unknown type.
+ 2. Filter the set of overloads to only contain those with the closest number of
+ parameters.
+ For example, if we are called with 3 parameters and there are 2 overloads that
+ take 2 parameters and one that takes 3, eliminate the 2 parameter overloads.
+ 3. Find the best remaining overload based on its match score.
+ If two or more overloads have the same match score, call the last one. The match
+ score is constructed by adding the matchScore() result for each of the parameters.
+*/
+QDeclarativeObjectMethodScriptClass::Value
+QDeclarativeObjectMethodScriptClass::callOverloaded(MethodData *method, QScriptContext *ctxt)
+{
+ int argumentCount = ctxt->argumentCount();
+
+ QDeclarativePropertyCache::Data *best = 0;
+ int bestParameterScore = INT_MAX;
+ int bestMatchScore = INT_MAX;
+
+ QDeclarativePropertyCache::Data dummy;
+ QDeclarativePropertyCache::Data *attempt = &method->data;
+
+ do {
+ QList<QByteArray> methodArgTypeNames;
+
+ if (attempt->flags & QDeclarativePropertyCache::Data::HasArguments)
+ methodArgTypeNames = method->object->metaObject()->method(attempt->coreIndex).parameterTypes();
+
+ int methodArgumentCount = methodArgTypeNames.count();
+
+ if (methodArgumentCount > argumentCount)
+ continue; // We don't have sufficient arguments to call this method
+
+ int methodParameterScore = argumentCount - methodArgumentCount;
+ if (methodParameterScore > bestParameterScore)
+ continue; // We already have a better option
+
+ int methodMatchScore = 0;
+ QVarLengthArray<int, 9> methodArgTypes(methodArgumentCount);
+
+ bool unknownArgument = false;
+ for (int ii = 0; ii < methodArgumentCount; ++ii) {
+ methodArgTypes[ii] = QMetaType::type(methodArgTypeNames.at(ii));
+ if (methodArgTypes[ii] == QVariant::Invalid)
+ methodArgTypes[ii] = enumType(method->object->metaObject(),
+ QString::fromLatin1(methodArgTypeNames.at(ii)));
+ if (methodArgTypes[ii] == QVariant::Invalid) {
+ unknownArgument = true;
+ break;
+ }
+ methodMatchScore += matchScore(ctxt->argument(ii), methodArgTypes[ii], methodArgTypeNames.at(ii));
+ }
+ if (unknownArgument)
+ continue; // We don't understand all the parameters
+
+ if (bestParameterScore > methodParameterScore || bestMatchScore > methodMatchScore) {
+ best = attempt;
+ bestParameterScore = methodParameterScore;
+ bestMatchScore = methodMatchScore;
+ }
+
+ if (bestParameterScore == 0 && bestMatchScore == 0)
+ break; // We can't get better than that
+
+ } while((attempt = relatedMethod(method->object, attempt, dummy)) != 0);
+
+ if (best) {
+ return callPrecise(method->object, *best, ctxt);
+ } else {
+ QString error = QLatin1String("Unable to determine callable overload. Candidates are:");
+ QDeclarativePropertyCache::Data *candidate = &method->data;
+ while (candidate) {
+ error += QLatin1String("\n ") + QString::fromUtf8(method->object->metaObject()->method(candidate->coreIndex).signature());
+ candidate = relatedMethod(method->object, candidate, dummy);
+ }
+ return Value(ctxt, ctxt->throwError(error));
+ }
+}
+
+/*!
+ Returns the match score for converting \a actual to be of type \a conversionType. A
+ zero score means "perfect match" whereas a higher score is worse.
+
+ The conversion table is copied out of the QtScript callQtMethod() function.
+*/
+int QDeclarativeObjectMethodScriptClass::matchScore(const QScriptValue &actual, int conversionType,
+ const QByteArray &conversionTypeName)
+{
+ if (actual.isNumber()) {
+ switch (conversionType) {
+ case QMetaType::Double:
+ return 0;
+ case QMetaType::Float:
+ return 1;
+ case QMetaType::LongLong:
+ case QMetaType::ULongLong:
+ return 2;
+ case QMetaType::Long:
+ case QMetaType::ULong:
+ return 3;
+ case QMetaType::Int:
+ case QMetaType::UInt:
+ return 4;
+ case QMetaType::Short:
+ case QMetaType::UShort:
+ return 5;
+ break;
+ case QMetaType::Char:
+ case QMetaType::UChar:
+ return 6;
+ default:
+ return 10;
+ }
+ } else if (actual.isString()) {
+ switch (conversionType) {
+ case QMetaType::QString:
+ return 0;
+ default:
+ return 10;
+ }
+ } else if (actual.isBoolean()) {
+ switch (conversionType) {
+ case QMetaType::Bool:
+ return 0;
+ default:
+ return 10;
+ }
+ } else if (actual.isDate()) {
+ switch (conversionType) {
+ case QMetaType::QDateTime:
+ return 0;
+ case QMetaType::QDate:
+ return 1;
+ case QMetaType::QTime:
+ return 2;
+ default:
+ return 10;
+ }
+ } else if (actual.isRegExp()) {
+ switch (conversionType) {
+ case QMetaType::QRegExp:
+ return 0;
+ default:
+ return 10;
+ }
+ } else if (actual.isVariant()) {
+ if (conversionType == qMetaTypeId<QVariant>())
+ return 0;
+ else if (actual.toVariant().userType() == conversionType)
+ return 0;
+ else
+ return 10;
+ } else if (actual.isArray()) {
+ switch (conversionType) {
+ case QMetaType::QStringList:
+ case QMetaType::QVariantList:
+ return 5;
+ default:
+ return 10;
+ }
+ } else if (actual.isQObject()) {
+ switch (conversionType) {
+ case QMetaType::QObjectStar:
+ return 0;
+ default:
+ return 10;
+ }
+ } else if (actual.isNull()) {
+ switch (conversionType) {
+ case QMetaType::VoidStar:
+ case QMetaType::QObjectStar:
+ return 0;
+ default:
+ if (!conversionTypeName.endsWith('*'))
+ return 10;
+ else
+ return 0;
+ }
+ } else {
+ return 10;
+ }
+}
+
+static inline int QMetaObject_methods(const QMetaObject *metaObject)
+{
+ struct Private
+ {
+ int revision;
+ int className;
+ int classInfoCount, classInfoData;
+ int methodCount, methodData;
+ };
+
+ return reinterpret_cast<const Private *>(metaObject->d.data)->methodCount;
+}
+
+static QByteArray QMetaMethod_name(const QMetaMethod &m)
+{
+ QByteArray sig = m.signature();
+ int paren = sig.indexOf('(');
+ if (paren == -1)
+ return sig;
+ else
+ return sig.left(paren);
+}
+
+/*!
+Returns the next related method, if one, or 0.
+*/
+QDeclarativePropertyCache::Data *
+QDeclarativeObjectMethodScriptClass::relatedMethod(QObject *object, QDeclarativePropertyCache::Data *current,
+ QDeclarativePropertyCache::Data &dummy)
+{
+ QDeclarativePropertyCache *cache = QDeclarativeData::get(object)->propertyCache;
+ if (current->relatedIndex == -1)
+ return 0;
+
+ if (cache) {
+ return cache->method(current->relatedIndex);
+ } else {
+ const QMetaObject *mo = object->metaObject();
+ int methodOffset = mo->methodCount() - QMetaObject_methods(mo);
+
+ while (methodOffset > current->relatedIndex) {
+ mo = mo->superClass();
+ methodOffset -= QMetaObject_methods(mo);
+ }
+
+ QMetaMethod method = mo->method(current->relatedIndex);
+ dummy.load(method);
+
+ // Look for overloaded methods
+ QByteArray methodName = QMetaMethod_name(method);
+ for (int ii = current->relatedIndex - 1; ii >= methodOffset; --ii) {
+ if (methodName == QMetaMethod_name(mo->method(ii))) {
+ dummy.relatedIndex = ii;
+ return &dummy;
+ }
+ }
+
+ return &dummy;
+ }
}
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativeobjectscriptclass_p.h b/src/declarative/qml/qdeclarativeobjectscriptclass_p.h
index 75e384c8b7..7956c405f8 100644
--- a/src/declarative/qml/qdeclarativeobjectscriptclass_p.h
+++ b/src/declarative/qml/qdeclarativeobjectscriptclass_p.h
@@ -65,6 +65,7 @@ class QDeclarativeEngine;
class QScriptContext;
class QScriptEngine;
class QDeclarativeContextData;
+class MethodData;
class Q_AUTOTEST_EXPORT QDeclarativeObjectMethodScriptClass : public QScriptDeclarativeClass
{
@@ -82,6 +83,14 @@ protected:
private:
int enumType(const QMetaObject *, const QString &);
+ Value callPrecise(QObject *, const QDeclarativePropertyCache::Data &, QScriptContext *);
+ Value callOverloaded(MethodData *, QScriptContext *);
+ Value callMethod(QObject *, int index, int returnType, int argCount, int *argTypes, QScriptContext *ctxt);
+
+ int matchScore(const QScriptValue &, int, const QByteArray &);
+ QDeclarativePropertyCache::Data *relatedMethod(QObject *, QDeclarativePropertyCache::Data *current,
+ QDeclarativePropertyCache::Data &dummy);
+
PersistentIdentifier m_connectId;
PersistentIdentifier m_disconnectId;
QScriptValue m_connect;
diff --git a/src/declarative/qml/qdeclarativeparser_p.h b/src/declarative/qml/qdeclarativeparser_p.h
index c58aebc407..77184c2ddb 100644
--- a/src/declarative/qml/qdeclarativeparser_p.h
+++ b/src/declarative/qml/qdeclarativeparser_p.h
@@ -54,7 +54,6 @@
//
#include "qdeclarative.h"
-#include "private/qdeclarativerefcount_p.h"
#include <QtCore/qbytearray.h>
#include <QtCore/qlist.h>
@@ -63,6 +62,8 @@
#include <QtCore/qstringlist.h>
#include <private/qobject_p.h>
+#include <private/qdeclarativerefcount_p.h>
+#include <private/qdeclarativeglobal_p.h>
QT_BEGIN_HEADER
@@ -355,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 d45ddbcbaf..388c92e15c 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/qdeclarativeproperty.cpp b/src/declarative/qml/qdeclarativeproperty.cpp
index b5fb619e1a..1395e975ec 100644
--- a/src/declarative/qml/qdeclarativeproperty.cpp
+++ b/src/declarative/qml/qdeclarativeproperty.cpp
@@ -1408,8 +1408,8 @@ static inline void flush_vme_signal(const QObject *object, int index)
int methodOffset = metaObject->methodOffset();
while (methodOffset > index) {
- methodOffset -= QMetaObject_methods(metaObject);
metaObject = metaObject->d.superdata;
+ methodOffset -= QMetaObject_methods(metaObject);
}
QDeclarativeVMEMetaObject *vme =
diff --git a/src/declarative/qml/qdeclarativeproperty_p.h b/src/declarative/qml/qdeclarativeproperty_p.h
index a8438c8ce2..a9d69791ae 100644
--- a/src/declarative/qml/qdeclarativeproperty_p.h
+++ b/src/declarative/qml/qdeclarativeproperty_p.h
@@ -55,17 +55,17 @@
#include "qdeclarativeproperty.h"
-#include "private/qdeclarativepropertycache_p.h"
-#include "private/qdeclarativeguard_p.h"
-
#include <private/qobject_p.h>
+#include <private/qdeclarativeglobal_p.h>
+#include <private/qdeclarativepropertycache_p.h>
+#include <private/qdeclarativeguard_p.h>
QT_BEGIN_NAMESPACE
class QDeclarativeContext;
class QDeclarativeEnginePrivate;
class QDeclarativeExpression;
-class Q_DECLARATIVE_EXPORT QDeclarativePropertyPrivate
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativePropertyPrivate
{
public:
enum WriteFlag { BypassInterceptor = 0x01, DontRemoveBinding = 0x02 };
diff --git a/src/declarative/qml/qdeclarativepropertycache.cpp b/src/declarative/qml/qdeclarativepropertycache.cpp
index 9e1ceb8695..dd9a2247bd 100644
--- a/src/declarative/qml/qdeclarativepropertycache.cpp
+++ b/src/declarative/qml/qdeclarativepropertycache.cpp
@@ -93,6 +93,7 @@ void QDeclarativePropertyCache::Data::load(const QMetaProperty &p, QDeclarativeE
void QDeclarativePropertyCache::Data::load(const QMetaMethod &m)
{
coreIndex = m.methodIndex();
+ relatedIndex = -1;
flags |= Data::IsFunction;
if (m.methodType() == QMetaMethod::Signal)
flags |= Data::IsSignal;
@@ -140,15 +141,25 @@ void QDeclarativePropertyCache::clear()
if (indexCache.at(ii)) indexCache.at(ii)->release();
}
+ for (int ii = 0; ii < methodIndexCache.count(); ++ii) {
+ RData *data = methodIndexCache.at(ii);
+ if (data) data->release();
+ }
+
for (StringCache::ConstIterator iter = stringCache.begin();
- iter != stringCache.end(); ++iter)
- (*iter)->release();
+ iter != stringCache.end(); ++iter) {
+ RData *data = (*iter);
+ data->release();
+ }
for (IdentifierCache::ConstIterator iter = identifierCache.begin();
- iter != identifierCache.end(); ++iter)
- (*iter)->release();
+ iter != identifierCache.end(); ++iter) {
+ RData *data = (*iter);
+ data->release();
+ }
indexCache.clear();
+ methodIndexCache.clear();
stringCache.clear();
identifierCache.clear();
}
@@ -202,12 +213,16 @@ QDeclarativePropertyCache *QDeclarativePropertyCache::copy() const
{
QDeclarativePropertyCache *cache = new QDeclarativePropertyCache(engine);
cache->indexCache = indexCache;
+ cache->methodIndexCache = methodIndexCache;
cache->stringCache = stringCache;
cache->identifierCache = identifierCache;
for (int ii = 0; ii < indexCache.count(); ++ii) {
if (indexCache.at(ii)) indexCache.at(ii)->addref();
}
+ for (int ii = 0; ii < methodIndexCache.count(); ++ii) {
+ if (methodIndexCache.at(ii)) methodIndexCache.at(ii)->addref();
+ }
for (StringCache::ConstIterator iter = stringCache.begin(); iter != stringCache.end(); ++iter)
(*iter)->addref();
for (IdentifierCache::ConstIterator iter = identifierCache.begin(); iter != identifierCache.end(); ++iter)
@@ -221,43 +236,14 @@ void QDeclarativePropertyCache::append(QDeclarativeEngine *engine, const QMetaOb
{
QDeclarativeEnginePrivate *enginePriv = QDeclarativeEnginePrivate::get(engine);
- int propCount = metaObject->propertyCount();
- int propOffset = metaObject->propertyOffset();
-
- indexCache.resize(propCount);
- for (int ii = propOffset; ii < propCount; ++ii) {
- QMetaProperty p = metaObject->property(ii);
- if (!p.isScriptable())
- continue;
-
- QString propName = QString::fromUtf8(p.name());
-
- RData *data = new RData;
- data->identifier = enginePriv->objectClass->createPersistentIdentifier(propName);
-
- data->load(p, engine);
- data->flags |= propertyFlags;
-
- indexCache[ii] = data;
-
- if (stringCache.contains(propName)) {
- stringCache[propName]->release();
- identifierCache[data->identifier.identifier]->release();
- }
-
- stringCache.insert(propName, data);
- identifierCache.insert(data->identifier.identifier, data);
- data->addref();
- data->addref();
- }
-
int methodCount = metaObject->methodCount();
- int methodOffset = qMax(2, metaObject->methodOffset()); // 2 to block the destroyed signal
+ // 3 to block the destroyed signal and the deleteLater() slot
+ int methodOffset = qMax(3, metaObject->methodOffset());
methodIndexCache.resize(methodCount);
for (int ii = methodOffset; ii < methodCount; ++ii) {
QMetaMethod m = metaObject->method(ii);
- if (m.access() == QMetaMethod::Private)
+ if (m.access() == QMetaMethod::Private)
continue;
QString methodName = QString::fromUtf8(m.signature());
@@ -267,11 +253,7 @@ void QDeclarativePropertyCache::append(QDeclarativeEngine *engine, const QMetaOb
RData *data = new RData;
data->identifier = enginePriv->objectClass->createPersistentIdentifier(methodName);
-
- if (stringCache.contains(methodName)) {
- stringCache[methodName]->release();
- identifierCache[data->identifier.identifier]->release();
- }
+ methodIndexCache[ii] = data;
data->load(m);
if (m.methodType() == QMetaMethod::Slot || m.methodType() == QMetaMethod::Method)
@@ -279,73 +261,73 @@ void QDeclarativePropertyCache::append(QDeclarativeEngine *engine, const QMetaOb
else if (m.methodType() == QMetaMethod::Signal)
data->flags |= signalFlags;
- methodIndexCache[ii] = data;
+ if (stringCache.contains(methodName)) {
+ RData *old = stringCache[methodName];
+ // We only overload methods in the same class, exactly like C++
+ if (old->flags & Data::IsFunction && old->coreIndex >= methodOffset)
+ data->relatedIndex = old->coreIndex;
+ stringCache[methodName]->release();
+ identifierCache[data->identifier.identifier]->release();
+ }
stringCache.insert(methodName, data);
identifierCache.insert(data->identifier.identifier, data);
data->addref();
+ data->addref();
}
-}
-
-void QDeclarativePropertyCache::update(QDeclarativeEngine *engine, const QMetaObject *metaObject)
-{
- Q_ASSERT(engine);
- Q_ASSERT(metaObject);
- QDeclarativeEnginePrivate *enginePriv = QDeclarativeEnginePrivate::get(engine);
-
- clear();
- // ### The properties/methods should probably be spliced on a per-metaobject basis
int propCount = metaObject->propertyCount();
+ int propOffset = metaObject->propertyOffset();
indexCache.resize(propCount);
- for (int ii = propCount - 1; ii >= 0; --ii) {
+ for (int ii = propOffset; ii < propCount; ++ii) {
QMetaProperty p = metaObject->property(ii);
- if (!p.isScriptable()) {
- indexCache[ii] = 0;
+ if (!p.isScriptable())
continue;
- }
+
QString propName = QString::fromUtf8(p.name());
RData *data = new RData;
data->identifier = enginePriv->objectClass->createPersistentIdentifier(propName);
+ indexCache[ii] = data;
data->load(p, engine);
+ data->flags |= propertyFlags;
- indexCache[ii] = data;
-
- if (stringCache.contains(propName))
- continue;
+ if (stringCache.contains(propName)) {
+ stringCache[propName]->release();
+ identifierCache[data->identifier.identifier]->release();
+ }
stringCache.insert(propName, data);
identifierCache.insert(data->identifier.identifier, data);
data->addref();
data->addref();
}
+}
- int methodCount = metaObject->methodCount();
- for (int ii = methodCount - 1; ii >= 3; --ii) { // >=3 to block the destroyed signal and deleteLater() slot
- QMetaMethod m = metaObject->method(ii);
- if (m.access() == QMetaMethod::Private)
- continue;
- QString methodName = QString::fromUtf8(m.signature());
+void QDeclarativePropertyCache::updateRecur(QDeclarativeEngine *engine, const QMetaObject *metaObject)
+{
+ if (!metaObject)
+ return;
- int parenIdx = methodName.indexOf(QLatin1Char('('));
- Q_ASSERT(parenIdx != -1);
- methodName = methodName.left(parenIdx);
+ updateRecur(engine, metaObject->superClass());
- if (stringCache.contains(methodName))
- continue;
+ append(engine, metaObject);
+}
- RData *data = new RData;
- data->identifier = enginePriv->objectClass->createPersistentIdentifier(methodName);
+void QDeclarativePropertyCache::update(QDeclarativeEngine *engine, const QMetaObject *metaObject)
+{
+ Q_ASSERT(engine);
+ Q_ASSERT(metaObject);
- data->load(m);
+ clear();
- stringCache.insert(methodName, data);
- identifierCache.insert(data->identifier.identifier, data);
- data->addref();
- }
+ // Optimization to prevent unnecessary reallocation of lists
+ indexCache.reserve(metaObject->propertyCount());
+ methodIndexCache.reserve(metaObject->methodCount());
+
+ updateRecur(engine,metaObject);
}
QDeclarativePropertyCache::Data *
diff --git a/src/declarative/qml/qdeclarativepropertycache_p.h b/src/declarative/qml/qdeclarativepropertycache_p.h
index 79b126d959..922010d117 100644
--- a/src/declarative/qml/qdeclarativepropertycache_p.h
+++ b/src/declarative/qml/qdeclarativepropertycache_p.h
@@ -96,7 +96,7 @@ public:
IsVMEFunction = 0x00000400,
HasArguments = 0x00000800,
IsSignal = 0x00001000,
- IsVMESignal = 0x00002000,
+ IsVMESignal = 0x00002000
};
Q_DECLARE_FLAGS(Flags, Flag)
@@ -105,7 +105,10 @@ public:
Flags flags;
int propType;
int coreIndex;
- int notifyIndex;
+ union {
+ int notifyIndex; // When !IsFunction
+ int relatedIndex; // When IsFunction
+ };
static Flags flagsForProperty(const QMetaProperty &, QDeclarativeEngine *engine = 0);
void load(const QMetaProperty &, QDeclarativeEngine *engine = 0);
@@ -152,6 +155,8 @@ private:
typedef QHash<QString, RData *> StringCache;
typedef QHash<QScriptDeclarativeClass::Identifier, RData *> IdentifierCache;
+ void updateRecur(QDeclarativeEngine *, const QMetaObject *);
+
QDeclarativeEngine *engine;
IndexCache indexCache;
IndexCache methodIndexCache;
diff --git a/src/declarative/qml/qdeclarativestringconverters_p.h b/src/declarative/qml/qdeclarativestringconverters_p.h
index e6b0abeda4..b6322225ef 100644
--- a/src/declarative/qml/qdeclarativestringconverters_p.h
+++ b/src/declarative/qml/qdeclarativestringconverters_p.h
@@ -56,6 +56,8 @@
#include <QtCore/qglobal.h>
#include <QtCore/qvariant.h>
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_NAMESPACE
class QColor;
@@ -69,19 +71,19 @@ class QVector3D;
// XXX - Bauhaus currently uses these methods which is why they're exported
namespace QDeclarativeStringConverters
{
- QVariant Q_DECLARATIVE_EXPORT variantFromString(const QString &);
- QVariant Q_DECLARATIVE_EXPORT variantFromString(const QString &, int preferredType, bool *ok = 0);
+ QVariant Q_DECLARATIVE_PRIVATE_EXPORT variantFromString(const QString &);
+ QVariant Q_DECLARATIVE_PRIVATE_EXPORT variantFromString(const QString &, int preferredType, bool *ok = 0);
- QColor Q_DECLARATIVE_EXPORT colorFromString(const QString &, bool *ok = 0);
+ QColor Q_DECLARATIVE_PRIVATE_EXPORT colorFromString(const QString &, bool *ok = 0);
#ifndef QT_NO_DATESTRING
- QDate Q_DECLARATIVE_EXPORT dateFromString(const QString &, bool *ok = 0);
- QTime Q_DECLARATIVE_EXPORT timeFromString(const QString &, bool *ok = 0);
- QDateTime Q_DECLARATIVE_EXPORT dateTimeFromString(const QString &, bool *ok = 0);
+ QDate Q_DECLARATIVE_PRIVATE_EXPORT dateFromString(const QString &, bool *ok = 0);
+ QTime Q_DECLARATIVE_PRIVATE_EXPORT timeFromString(const QString &, bool *ok = 0);
+ QDateTime Q_DECLARATIVE_PRIVATE_EXPORT dateTimeFromString(const QString &, bool *ok = 0);
#endif
- QPointF Q_DECLARATIVE_EXPORT pointFFromString(const QString &, bool *ok = 0);
- QSizeF Q_DECLARATIVE_EXPORT sizeFFromString(const QString &, bool *ok = 0);
- QRectF Q_DECLARATIVE_EXPORT rectFFromString(const QString &, bool *ok = 0);
- QVector3D Q_DECLARATIVE_EXPORT vector3DFromString(const QString &, bool *ok = 0);
+ QPointF Q_DECLARATIVE_PRIVATE_EXPORT pointFFromString(const QString &, bool *ok = 0);
+ QSizeF Q_DECLARATIVE_PRIVATE_EXPORT sizeFFromString(const QString &, bool *ok = 0);
+ QRectF Q_DECLARATIVE_PRIVATE_EXPORT rectFFromString(const QString &, bool *ok = 0);
+ QVector3D Q_DECLARATIVE_PRIVATE_EXPORT vector3DFromString(const QString &, bool *ok = 0);
}
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qdeclarativetypeloader.cpp b/src/declarative/qml/qdeclarativetypeloader.cpp
index c8e1a079fd..c015519cb4 100644
--- a/src/declarative/qml/qdeclarativetypeloader.cpp
+++ b/src/declarative/qml/qdeclarativetypeloader.cpp
@@ -719,7 +719,7 @@ void QDeclarativeTypeLoader::clearCache()
QDeclarativeTypeData::QDeclarativeTypeData(const QUrl &url, QDeclarativeTypeLoader::Options options,
QDeclarativeTypeLoader *manager)
: QDeclarativeDataBlob(url, QmlFile), m_options(options), m_typesResolved(false),
- m_compiledData(0), m_component(0), m_typeLoader(manager)
+ m_compiledData(0), m_typeLoader(manager)
{
}
@@ -768,23 +768,6 @@ QDeclarativeCompiledData *QDeclarativeTypeData::compiledData() const
return m_compiledData;
}
-QDeclarativeComponent *QDeclarativeTypeData::component() const
-{
- if (!m_component) {
-
- if (m_compiledData) {
- m_component = new QDeclarativeComponent(typeLoader()->engine(), m_compiledData, -1, -1, 0);
- } else {
- m_component = new QDeclarativeComponent(typeLoader()->engine());
- QDeclarativeComponentPrivate::get(m_component)->url = finalUrl();
- QDeclarativeComponentPrivate::get(m_component)->state.errors = errors();
- }
-
- }
-
- return m_component;
-}
-
void QDeclarativeTypeData::registerCallback(TypeDataCallback *callback)
{
Q_ASSERT(!m_callbacks.contains(callback));
diff --git a/src/declarative/qml/qdeclarativetypeloader_p.h b/src/declarative/qml/qdeclarativetypeloader_p.h
index 7381f28b2b..718537adee 100644
--- a/src/declarative/qml/qdeclarativetypeloader_p.h
+++ b/src/declarative/qml/qdeclarativetypeloader_p.h
@@ -243,7 +243,6 @@ public:
const QList<ScriptReference> &resolvedScripts() const;
QDeclarativeCompiledData *compiledData() const;
- QDeclarativeComponent *component() const;
// Used by QDeclarativeComponent to get notifications
struct TypeDataCallback {
@@ -278,7 +277,6 @@ private:
bool m_typesResolved:1;
QDeclarativeCompiledData *m_compiledData;
- mutable QDeclarativeComponent *m_component;
QList<TypeDataCallback *> m_callbacks;
diff --git a/src/declarative/qml/qdeclarativevaluetype_p.h b/src/declarative/qml/qdeclarativevaluetype_p.h
index 4b1bbd621b..06c8669396 100644
--- a/src/declarative/qml/qdeclarativevaluetype_p.h
+++ b/src/declarative/qml/qdeclarativevaluetype_p.h
@@ -70,7 +70,7 @@
QT_BEGIN_NAMESPACE
-class Q_DECLARATIVE_EXPORT QDeclarativeValueType : public QObject
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeValueType : public QObject
{
Q_OBJECT
public:
@@ -81,7 +81,7 @@ public:
virtual void setValue(QVariant) = 0;
};
-class Q_DECLARATIVE_EXPORT QDeclarativeValueTypeFactory
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeValueTypeFactory
{
public:
QDeclarativeValueTypeFactory();
diff --git a/src/declarative/qml/qdeclarativevme.cpp b/src/declarative/qml/qdeclarativevme.cpp
index 360186c7bf..db90afff81 100644
--- a/src/declarative/qml/qdeclarativevme.cpp
+++ b/src/declarative/qml/qdeclarativevme.cpp
@@ -185,12 +185,9 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack,
bindings = bindings.united(bindingSkipList);
QObject *o =
- types.at(instr.create.type).createInstance(ctxt, bindings);
+ types.at(instr.create.type).createInstance(ctxt, bindings, &vmeErrors);
if (!o) {
- if(types.at(instr.create.type).component)
- vmeErrors << types.at(instr.create.type).component->errors();
-
VME_EXCEPTION(QCoreApplication::translate("QDeclarativeVME","Unable to create object of type %1").arg(QString::fromLatin1(types.at(instr.create.type).className)));
}
@@ -933,8 +930,9 @@ QList<QDeclarativeError> QDeclarativeVME::errors() const
}
QObject *
-QDeclarativeCompiledData::TypeReference::createInstance(QDeclarativeContextData *ctxt,
- const QBitField &bindings) const
+QDeclarativeCompiledData::TypeReference::createInstance(QDeclarativeContextData *ctxt,
+ const QBitField &bindings,
+ QList<QDeclarativeError> *errors) const
{
if (type) {
QObject *rv = 0;
@@ -948,7 +946,7 @@ QDeclarativeCompiledData::TypeReference::createInstance(QDeclarativeContextData
return rv;
} else {
Q_ASSERT(component);
- return QDeclarativeComponentPrivate::get(component)->create(ctxt, bindings);
+ return QDeclarativeComponentPrivate::begin(ctxt, 0, component, -1, -1, 0, errors, bindings);
}
}
diff --git a/src/declarative/qml/qdeclarativeworkerscript.cpp b/src/declarative/qml/qdeclarativeworkerscript.cpp
index 789116e2da..4b78020d6b 100644
--- a/src/declarative/qml/qdeclarativeworkerscript.cpp
+++ b/src/declarative/qml/qdeclarativeworkerscript.cpp
@@ -52,6 +52,7 @@
#include <QtCore/qwaitcondition.h>
#include <QtScript/qscriptvalueiterator.h>
#include <QtCore/qfile.h>
+#include <QtCore/qdatetime.h>
#include <QtNetwork/qnetworkaccessmanager.h>
#include <QtDeclarative/qdeclarativeinfo.h>
#include "qdeclarativenetworkaccessmanagerfactory.h"
@@ -314,6 +315,12 @@ QVariant QDeclarativeWorkerScriptEnginePrivate::scriptValueToVariant(const QScri
return QVariant(value.toString());
} else if (value.isNumber()) {
return QVariant((qreal)value.toNumber());
+ } else if (value.isDate()) {
+ return QVariant(value.toDateTime());
+#ifndef QT_NO_REGEXP
+ } else if (value.isRegExp()) {
+ return QVariant(value.toRegExp());
+#endif
} else if (value.isArray()) {
QVariantList list;
@@ -364,6 +371,12 @@ QScriptValue QDeclarativeWorkerScriptEnginePrivate::variantToScriptValue(const Q
return QScriptValue(value.toString());
} else if (value.userType() == QMetaType::QReal) {
return QScriptValue(value.toReal());
+ } else if (value.userType() == QVariant::DateTime) {
+ return engine->newDate(value.toDateTime());
+#ifndef QT_NO_REGEXP
+ } else if (value.userType() == QVariant::RegExp) {
+ return engine->newRegExp(value.toRegExp());
+#endif
} else if (value.userType() == qMetaTypeId<QDeclarativeListModelWorkerAgent::VariantRef>()) {
QDeclarativeListModelWorkerAgent::VariantRef vr = qvariant_cast<QDeclarativeListModelWorkerAgent::VariantRef>(value);
if (vr.a->scriptEngine() == 0)
@@ -514,7 +527,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 +541,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 +556,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 +612,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 58f8811567..dfe89f843b 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/qml/qmetaobjectbuilder_p.h b/src/declarative/qml/qmetaobjectbuilder_p.h
index dbaf9e6417..a90ba63293 100644
--- a/src/declarative/qml/qmetaobjectbuilder_p.h
+++ b/src/declarative/qml/qmetaobjectbuilder_p.h
@@ -58,6 +58,8 @@
#include <QtCore/qdatastream.h>
#include <QtCore/qmap.h>
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_NAMESPACE
class QMetaObjectBuilderPrivate;
@@ -68,7 +70,7 @@ class QMetaPropertyBuilderPrivate;
class QMetaEnumBuilder;
class QMetaEnumBuilderPrivate;
-class Q_DECLARATIVE_EXPORT QMetaObjectBuilder
+class Q_DECLARATIVE_PRIVATE_EXPORT QMetaObjectBuilder
{
public:
enum AddMember
@@ -193,7 +195,7 @@ private:
friend class QMetaEnumBuilder;
};
-class Q_DECLARATIVE_EXPORT QMetaMethodBuilder
+class Q_DECLARATIVE_PRIVATE_EXPORT QMetaMethodBuilder
{
public:
QMetaMethodBuilder() : _mobj(0), _index(0) {}
@@ -231,7 +233,7 @@ private:
QMetaMethodBuilderPrivate *d_func() const;
};
-class Q_DECLARATIVE_EXPORT QMetaPropertyBuilder
+class Q_DECLARATIVE_PRIVATE_EXPORT QMetaPropertyBuilder
{
public:
QMetaPropertyBuilder() : _mobj(0), _index(0) {}
@@ -282,7 +284,7 @@ private:
QMetaPropertyBuilderPrivate *d_func() const;
};
-class Q_DECLARATIVE_EXPORT QMetaEnumBuilder
+class Q_DECLARATIVE_PRIVATE_EXPORT QMetaEnumBuilder
{
public:
QMetaEnumBuilder() : _mobj(0), _index(0) {}
diff --git a/src/declarative/util/qdeclarativeanimation_p.h b/src/declarative/util/qdeclarativeanimation_p.h
index 8cb17e4ea7..cd9041767e 100644
--- a/src/declarative/util/qdeclarativeanimation_p.h
+++ b/src/declarative/util/qdeclarativeanimation_p.h
@@ -63,7 +63,7 @@ QT_MODULE(Declarative)
class QDeclarativeAbstractAnimationPrivate;
class QDeclarativeAnimationGroup;
-class Q_DECLARATIVE_EXPORT QDeclarativeAbstractAnimation : public QObject, public QDeclarativePropertyValueSource, public QDeclarativeParserStatus
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeAbstractAnimation : public QObject, public QDeclarativePropertyValueSource, public QDeclarativeParserStatus
{
Q_OBJECT
Q_DECLARE_PRIVATE(QDeclarativeAbstractAnimation)
@@ -165,7 +165,7 @@ protected:
};
class QDeclarativeScriptActionPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeScriptAction : public QDeclarativeAbstractAnimation
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeScriptAction : public QDeclarativeAbstractAnimation
{
Q_OBJECT
Q_DECLARE_PRIVATE(QDeclarativeScriptAction)
diff --git a/src/declarative/util/qdeclarativeanimation_p_p.h b/src/declarative/util/qdeclarativeanimation_p_p.h
index e38580cc1f..6305fbda99 100644
--- a/src/declarative/util/qdeclarativeanimation_p_p.h
+++ b/src/declarative/util/qdeclarativeanimation_p_p.h
@@ -328,7 +328,7 @@ public:
QDeclarativeBulkValueAnimator *va;
- // for animations that dont use the QDeclarativeBulkValueAnimator
+ // for animations that don't use the QDeclarativeBulkValueAnimator
QDeclarativeStateActions *actions;
static QVariant interpolateVariant(const QVariant &from, const QVariant &to, qreal progress);
diff --git a/src/declarative/util/qdeclarativebehavior_p.h b/src/declarative/util/qdeclarativebehavior_p.h
index 9801fb2a73..80ed9842eb 100644
--- a/src/declarative/util/qdeclarativebehavior_p.h
+++ b/src/declarative/util/qdeclarativebehavior_p.h
@@ -57,7 +57,7 @@ QT_MODULE(Declarative)
class QDeclarativeAbstractAnimation;
class QDeclarativeBehaviorPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeBehavior : public QObject, public QDeclarativePropertyValueInterceptor
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeBehavior : public QObject, public QDeclarativePropertyValueInterceptor
{
Q_OBJECT
Q_DECLARE_PRIVATE(QDeclarativeBehavior)
diff --git a/src/declarative/util/qdeclarativefontloader.cpp b/src/declarative/util/qdeclarativefontloader.cpp
index d2f65eff88..03a0561fbf 100644
--- a/src/declarative/util/qdeclarativefontloader.cpp
+++ b/src/declarative/util/qdeclarativefontloader.cpp
@@ -220,15 +220,15 @@ void QDeclarativeFontLoader::setSource(const QUrl &url)
fo->download(d->url, qmlEngine(this)->networkAccessManager());
d->status = Loading;
emit statusChanged();
- QObject::connect(fo, SIGNAL(fontDownloaded(QString, QDeclarativeFontLoader::Status)),
- this, SLOT(updateFontInfo(QString, QDeclarativeFontLoader::Status)));
+ QObject::connect(fo, SIGNAL(fontDownloaded(QString,QDeclarativeFontLoader::Status)),
+ this, SLOT(updateFontInfo(QString,QDeclarativeFontLoader::Status)));
} else {
QDeclarativeFontObject *fo = d->fonts[d->url];
if (fo->id == -1) {
d->status = Loading;
emit statusChanged();
- QObject::connect(fo, SIGNAL(fontDownloaded(QString, QDeclarativeFontLoader::Status)),
- this, SLOT(updateFontInfo(QString, QDeclarativeFontLoader::Status)));
+ QObject::connect(fo, SIGNAL(fontDownloaded(QString,QDeclarativeFontLoader::Status)),
+ this, SLOT(updateFontInfo(QString,QDeclarativeFontLoader::Status)));
}
else
updateFontInfo(QFontDatabase::applicationFontFamilies(fo->id).at(0), Ready);
@@ -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/qdeclarativelistmodel_p.h b/src/declarative/util/qdeclarativelistmodel_p.h
index e9673c8e87..90036f92a9 100644
--- a/src/declarative/util/qdeclarativelistmodel_p.h
+++ b/src/declarative/util/qdeclarativelistmodel_p.h
@@ -64,7 +64,7 @@ class NestedListModel;
class QDeclarativeListModelWorkerAgent;
struct ModelNode;
class FlatListScriptClass;
-class Q_DECLARATIVE_EXPORT QDeclarativeListModel : public QListModelInterface
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeListModel : public QListModelInterface
{
Q_OBJECT
Q_PROPERTY(int count READ count NOTIFY countChanged)
diff --git a/src/declarative/util/qdeclarativeopenmetaobject.cpp b/src/declarative/util/qdeclarativeopenmetaobject.cpp
index 40485bd503..c611435a1e 100644
--- a/src/declarative/util/qdeclarativeopenmetaobject.cpp
+++ b/src/declarative/util/qdeclarativeopenmetaobject.cpp
@@ -186,6 +186,7 @@ QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(QObject *obj, bool automa
d->type->d->referers.insert(this);
QObjectPrivate *op = QObjectPrivate::get(obj);
+ d->parent = static_cast<QAbstractDynamicMetaObject *>(op->metaObject);
*static_cast<QMetaObject *>(this) = *d->type->d->mem;
op->metaObject = this;
}
@@ -201,6 +202,7 @@ QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(QObject *obj, QDeclarativ
d->type->d->referers.insert(this);
QObjectPrivate *op = QObjectPrivate::get(obj);
+ d->parent = static_cast<QAbstractDynamicMetaObject *>(op->metaObject);
*static_cast<QMetaObject *>(this) = *d->type->d->mem;
op->metaObject = this;
}
diff --git a/src/declarative/util/qdeclarativeopenmetaobject_p.h b/src/declarative/util/qdeclarativeopenmetaobject_p.h
index c18fa3d036..dff677624e 100644
--- a/src/declarative/util/qdeclarativeopenmetaobject_p.h
+++ b/src/declarative/util/qdeclarativeopenmetaobject_p.h
@@ -42,10 +42,11 @@
#ifndef QDECLARATIVEOPENMETAOBJECT_H
#define QDECLARATIVEOPENMETAOBJECT_H
-#include <private/qdeclarativerefcount_p.h>
#include <QtCore/QMetaObject>
#include <QtCore/QObject>
+#include <private/qdeclarativerefcount_p.h>
+#include <private/qdeclarativeglobal_p.h>
#include <private/qobject_p.h>
QT_BEGIN_HEADER
@@ -57,7 +58,7 @@ QT_MODULE(Declarative)
class QDeclarativeEngine;
class QMetaPropertyBuilder;
class QDeclarativeOpenMetaObjectTypePrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeOpenMetaObjectType : public QDeclarativeRefCount
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeOpenMetaObjectType : public QDeclarativeRefCount
{
public:
QDeclarativeOpenMetaObjectType(const QMetaObject *base, QDeclarativeEngine *engine);
@@ -78,7 +79,7 @@ private:
};
class QDeclarativeOpenMetaObjectPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeOpenMetaObject : public QAbstractDynamicMetaObject
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeOpenMetaObject : public QAbstractDynamicMetaObject
{
public:
QDeclarativeOpenMetaObject(QObject *, bool = true);
diff --git a/src/declarative/util/qdeclarativepixmapcache.cpp b/src/declarative/util/qdeclarativepixmapcache.cpp
index 4fc52f5b31..380d9bc82f 100644
--- a/src/declarative/util/qdeclarativepixmapcache.cpp
+++ b/src/declarative/util/qdeclarativepixmapcache.cpp
@@ -93,6 +93,7 @@ public:
QDeclarativePixmapData *data;
QDeclarativePixmapReader *reader;
+ QSize requestSize;
bool loading;
int redirectCount;
@@ -366,7 +367,7 @@ void QDeclarativePixmapReader::networkRequestDone(QNetworkReply *reply)
QByteArray all = reply->readAll();
QBuffer buff(&all);
buff.open(QIODevice::ReadOnly);
- if (!readImage(reply->url(), &buff, &image, &errorString, &readSize, job->data->requestSize)) {
+ if (!readImage(reply->url(), &buff, &image, &errorString, &readSize, job->requestSize)) {
error = QDeclarativePixmapReply::Decoding;
}
}
@@ -683,7 +684,7 @@ void QDeclarativePixmapStore::timerEvent(QTimerEvent *)
}
QDeclarativePixmapReply::QDeclarativePixmapReply(QDeclarativePixmapData *d)
-: data(d), reader(0), loading(false), redirectCount(0)
+: data(d), reader(0), requestSize(d->requestSize), loading(false), redirectCount(0)
{
if (finishedIndex == -1) {
finishedIndex = QDeclarativePixmapReply::staticMetaObject.indexOfSignal("finished()");
diff --git a/src/declarative/util/qdeclarativepropertychanges_p.h b/src/declarative/util/qdeclarativepropertychanges_p.h
index 199928fef3..449574c058 100644
--- a/src/declarative/util/qdeclarativepropertychanges_p.h
+++ b/src/declarative/util/qdeclarativepropertychanges_p.h
@@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QDeclarativePropertyChangesPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativePropertyChanges : public QDeclarativeStateOperation
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativePropertyChanges : public QDeclarativeStateOperation
{
Q_OBJECT
Q_DECLARE_PRIVATE(QDeclarativePropertyChanges)
diff --git a/src/declarative/util/qdeclarativestate.cpp b/src/declarative/util/qdeclarativestate.cpp
index 0f5413ec46..391548538d 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 a0ab11b867..7b9c18a323 100644
--- a/src/declarative/util/qdeclarativestate_p.h
+++ b/src/declarative/util/qdeclarativestate_p.h
@@ -45,6 +45,8 @@
#include <qdeclarative.h>
#include <qdeclarativeproperty.h>
#include <QtCore/qobject.h>
+#include <private/qdeclarativebinding_p.h>
+#include <private/qdeclarativeglobal_p.h>
QT_BEGIN_HEADER
@@ -56,7 +58,7 @@ class QDeclarativeActionEvent;
class QDeclarativeAbstractBinding;
class QDeclarativeBinding;
class QDeclarativeExpression;
-class Q_DECLARATIVE_EXPORT QDeclarativeAction
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeAction
{
public:
QDeclarativeAction();
@@ -74,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 4fd8f217c9..98c3f7b222 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/qdeclarativestateoperations.cpp b/src/declarative/util/qdeclarativestateoperations.cpp
index 8cb813c675..d1d7822077 100644
--- a/src/declarative/util/qdeclarativestateoperations.cpp
+++ b/src/declarative/util/qdeclarativestateoperations.cpp
@@ -648,7 +648,7 @@ void QDeclarativeStateChangeScript::setScript(const QDeclarativeScriptString &s)
}
/*!
- \qmlproperty script StateChangeScript::script
+ \qmlproperty string StateChangeScript::name
This property holds the name of the script. This name can be used by a
ScriptAction to target a specific script.
diff --git a/src/declarative/util/qdeclarativetimer_p.h b/src/declarative/util/qdeclarativetimer_p.h
index 08c3d4e114..ee3d038296 100644
--- a/src/declarative/util/qdeclarativetimer_p.h
+++ b/src/declarative/util/qdeclarativetimer_p.h
@@ -47,6 +47,8 @@
#include <QtCore/qobject.h>
#include <QtCore/qabstractanimation.h>
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
@@ -54,7 +56,7 @@ QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
class QDeclarativeTimerPrivate;
-class Q_DECLARATIVE_EXPORT QDeclarativeTimer : public QObject, public QDeclarativeParserStatus
+class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeTimer : public QObject, public QDeclarativeParserStatus
{
Q_OBJECT
Q_DECLARE_PRIVATE(QDeclarativeTimer)
diff --git a/src/declarative/util/qdeclarativetransition.cpp b/src/declarative/util/qdeclarativetransition.cpp
index 478c7f45ae..c8bc7b3f03 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 89b00440a0..d19e6f2799 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/declarative/util/qdeclarativeview.cpp b/src/declarative/util/qdeclarativeview.cpp
index 2381172c77..c22f2004ad 100644
--- a/src/declarative/util/qdeclarativeview.cpp
+++ b/src/declarative/util/qdeclarativeview.cpp
@@ -72,6 +72,7 @@
QT_BEGIN_NAMESPACE
DEFINE_BOOL_CONFIG_OPTION(frameRateDebug, QML_SHOW_FRAMERATE)
+extern Q_GUI_EXPORT bool qt_applefontsmoothing_enabled;
class QDeclarativeScene : public QGraphicsScene
{
@@ -191,7 +192,7 @@ void QDeclarativeViewPrivate::itemGeometryChanged(QDeclarativeItem *resizeItem,
/*!
\class QDeclarativeView
- \since 4.7
+ \since 4.7
\brief The QDeclarativeView class provides a widget for displaying a Qt Declarative user interface.
QDeclarativeItem objects can be placed on a standard QGraphicsScene and
@@ -359,13 +360,14 @@ QDeclarativeContext* QDeclarativeView::rootContext() const
}
/*!
- \enum QDeclarativeView::Status
+ \enum QDeclarativeView::Status
Specifies the loading status of the QDeclarativeView.
\value Null This QDeclarativeView has no source set.
\value Ready This QDeclarativeView has loaded and created the QML component.
\value Loading This QDeclarativeView is loading network data.
- \value Error An error has occurred. Call errorDescription() to retrieve a description.
+ \value Error One or more errors has occurred. Call errors() to retrieve a list
+ of errors.
*/
/*! \enum QDeclarativeView::ResizeMode
@@ -696,7 +698,14 @@ void QDeclarativeView::paintEvent(QPaintEvent *event)
if (frameRateDebug())
time = d->frameTimer.restart();
+#ifdef Q_WS_MAC
+ bool oldSmooth = qt_applefontsmoothing_enabled;
+ qt_applefontsmoothing_enabled = false;
+#endif
QGraphicsView::paintEvent(event);
+#ifdef Q_WS_MAC
+ qt_applefontsmoothing_enabled = oldSmooth;
+#endif
QDeclarativeDebugTrace::endRange(QDeclarativeDebugTrace::Painting);
diff --git a/src/declarative/util/qlistmodelinterface.cpp b/src/declarative/util/qlistmodelinterface.cpp
index acf4dd6c0c..1e2dfb7dfa 100644
--- a/src/declarative/util/qlistmodelinterface.cpp
+++ b/src/declarative/util/qlistmodelinterface.cpp
@@ -46,6 +46,7 @@ QT_BEGIN_NAMESPACE
/*!
\internal
\class QListModelInterface
+ \since 4.7
\brief The QListModelInterface class can be subclassed to provide C++ models to QDeclarativeGraphics Views
This class is comprised primarily of pure virtual functions which
@@ -70,15 +71,10 @@ QT_BEGIN_NAMESPACE
Returns the number of data entries in the model.
*/
-/*! \fn QHash<int,QVariant> QListModelInterface::data(int index, const QList<int>& roles) const
+/*! \fn QVariant QListModelInterface::data(int index, int role) const
Returns the data at the given \a index for the specified \a roles.
*/
-/*! \fn bool QListModelInterface::setData(int index, const QHash<int,QVariant>& values)
- Sets the data at the given \a index. \a values is a mapping of
- QVariant values to roles. Returns false.
-*/
-
/*! \fn QList<int> QListModelInterface::roles() const
Returns the list of roles for which the list model interface
provides data.
diff --git a/src/declarative/util/qlistmodelinterface_p.h b/src/declarative/util/qlistmodelinterface_p.h
index 8c8ebb35a4..8b62fc4276 100644
--- a/src/declarative/util/qlistmodelinterface_p.h
+++ b/src/declarative/util/qlistmodelinterface_p.h
@@ -45,13 +45,15 @@
#include <QtCore/QHash>
#include <QtCore/QVariant>
+#include <private/qdeclarativeglobal_p.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
QT_MODULE(Declarative)
-class Q_DECLARATIVE_EXPORT QListModelInterface : public QObject
+class Q_DECLARATIVE_PRIVATE_EXPORT QListModelInterface : public QObject
{
Q_OBJECT
public:
diff --git a/src/gui/accessible/qaccessible_mac_p.h b/src/gui/accessible/qaccessible_mac_p.h
index 4ee3a2d996..e417cb6292 100644
--- a/src/gui/accessible/qaccessible_mac_p.h
+++ b/src/gui/accessible/qaccessible_mac_p.h
@@ -122,7 +122,7 @@ private:
QAccessibleInterfaceWrapper wrapper class.
It has the same API as QAccessibleInterface, minus the child parameter
- in the funcitons.
+ in the functions.
*/
class Q_AUTOTEST_EXPORT QAInterface : public QAccessible
{
@@ -432,7 +432,7 @@ public:
/*
QAccessibleHierarchyManager bridges the Mac and Qt accessibility hierarchies.
There is a one-to-one relationship between QAElements on the Mac side
- and QAInterfaces on the Qt side, and this class provies lookup funcitons
+ and QAInterfaces on the Qt side, and this class provides lookup functions
that translates between these to items.
The identity of a QAInterface is determined by its QAccessibleInterface and
diff --git a/src/gui/dialogs/dialogs.pri b/src/gui/dialogs/dialogs.pri
index 4e1b9a71d1..c25b6d5c1d 100644
--- a/src/gui/dialogs/dialogs.pri
+++ b/src/gui/dialogs/dialogs.pri
@@ -108,6 +108,15 @@ SOURCES += \
dialogs/qwizard.cpp \
dialogs/qprintpreviewdialog.cpp
+symbian:contains(QT_CONFIG, s60) {
+ LIBS += -lcommondialogs
+ SOURCES += dialogs/qfiledialog_symbian.cpp \
+ dialogs/qcolordialog_symbian.cpp
+}
+
FORMS += dialogs/qpagesetupwidget.ui
RESOURCES += dialogs/qprintdialog.qrc
RESOURCES += dialogs/qmessagebox.qrc
+
+# Compensate for lack of platform defines in Symbian3
+symbian: DEFINES += SYMBIAN_VERSION_$$upper($$replace(SYMBIAN_VERSION,\\.,_))
diff --git a/src/gui/dialogs/qabstractprintdialog.cpp b/src/gui/dialogs/qabstractprintdialog.cpp
index 25d9ebbdb3..641419f332 100644
--- a/src/gui/dialogs/qabstractprintdialog.cpp
+++ b/src/gui/dialogs/qabstractprintdialog.cpp
@@ -65,6 +65,9 @@ class QPrintDialogPrivate : public QAbstractPrintDialogPrivate
customize settings shown in print dialogs, but it is not used directly.
Use QPrintDialog to display a print dialog in your application.
+ In Symbian, there is no support for printing. Hence, this dialog should not
+ be used in Symbian.
+
\sa QPrintDialog, QPrinter, {Printing with Qt}
*/
diff --git a/src/gui/dialogs/qcolordialog.cpp b/src/gui/dialogs/qcolordialog.cpp
index e9b5720584..a66a979e22 100644
--- a/src/gui/dialogs/qcolordialog.cpp
+++ b/src/gui/dialogs/qcolordialog.cpp
@@ -1952,6 +1952,12 @@ void QColorDialog::open(QObject *receiver, const char *member)
\sa QDialog::open()
*/
+/*
+ For Symbian color dialogs
+*/
+#ifdef Q_WS_S60
+extern QColor qtSymbianGetColor(const QColor &initial);
+#endif
/*!
\since 4.5
@@ -1961,10 +1967,19 @@ void QColorDialog::open(QObject *receiver, const char *member)
QColor::isValid()) color if the user cancels the dialog.
The \a options argument allows you to customize the dialog.
+
+ On Symbian, this static function will use the native color dialog and not a QColorDialog.
+ On Symbian the parameters \a title and \a parent has no relevance and the
+ \a options parameter is only used to define if the native color dialog is
+ used or not.
*/
QColor QColorDialog::getColor(const QColor &initial, QWidget *parent, const QString &title,
ColorDialogOptions options)
{
+#ifdef Q_WS_S60
+ if (!(options & DontUseNativeDialog))
+ return qtSymbianGetColor(initial);
+#endif
QColorDialog dlg(parent);
if (!title.isEmpty())
dlg.setWindowTitle(title);
@@ -1979,10 +1994,16 @@ QColor QColorDialog::getColor(const QColor &initial, QWidget *parent, const QStr
returns that color. The color is initially set to \a initial. The
dialog is a child of \a parent. It returns an invalid (see
QColor::isValid()) color if the user cancels the dialog.
+
+ On Symbian, this static function will use the native
+ color dialog and not a QColorDialog.
*/
QColor QColorDialog::getColor(const QColor &initial, QWidget *parent)
{
+#ifdef Q_WS_S60
+ return qtSymbianGetColor(initial);
+#endif
return getColor(initial, parent, QString(), ColorDialogOptions(0));
}
diff --git a/src/gui/dialogs/qcolordialog_symbian.cpp b/src/gui/dialogs/qcolordialog_symbian.cpp
new file mode 100644
index 0000000000..8f73f7cc90
--- /dev/null
+++ b/src/gui/dialogs/qcolordialog_symbian.cpp
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qcolordialog_p.h"
+
+#ifndef QT_NO_COLORDIALOG
+
+
+#include "qcolor.h"
+#include "private/qguiplatformplugin_p.h"
+
+#ifdef Q_WS_S60
+#include <AknColourSelectionGrid.h>
+#endif
+
+#include "private/qt_s60_p.h"
+
+QT_BEGIN_NAMESPACE
+
+QColor launchSymbianColorDialog(QColor initial)
+{
+ QColor currentColor = QColor::Invalid;
+#ifdef Q_WS_S60
+ QT_TRAP_THROWING(
+ CArrayFixFlat<TRgb>* array = new( ELeave ) CArrayFixFlat<TRgb>(17);
+ CleanupStack::PushL(array);
+ array->AppendL(KRgbBlack);
+ array->AppendL(KRgbDarkGray);
+ array->AppendL(KRgbDarkRed);
+ array->AppendL(KRgbDarkGreen);
+ array->AppendL(KRgbDarkYellow);
+ array->AppendL(KRgbDarkBlue);
+ array->AppendL(KRgbDarkMagenta);
+ array->AppendL(KRgbDarkCyan);
+ array->AppendL(KRgbRed);
+ array->AppendL(KRgbGreen);
+ array->AppendL(KRgbYellow);
+ array->AppendL(KRgbBlue);
+ array->AppendL(KRgbMagenta);
+ array->AppendL(KRgbCyan);
+ array->AppendL(KRgbGray);
+ array->AppendL(KRgbWhite);
+
+ TRgb initialColour(initial.red(), initial.green(), initial.blue(), initial.alpha());
+
+ TBool noneChosen = EFalse; // If true shows the default colour button
+ CAknColourSelectionGrid* colourSelectionGrid =
+ CAknColourSelectionGrid::NewL(array, EFalse, noneChosen, initialColour);
+ CleanupStack::PushL(colourSelectionGrid);
+
+ if (colourSelectionGrid->ExecuteLD()) {
+ currentColor.setRgb(initialColour.Red(), initialColour.Green(),
+ initialColour.Blue(), initialColour.Alpha());
+ }
+ CleanupStack::Pop(colourSelectionGrid);
+ CleanupStack::PopAndDestroy(array);
+ );
+#endif
+ return currentColor;
+}
+
+QColor qtSymbianGetColor(const QColor &initial)
+{
+ return launchSymbianColorDialog(initial);
+}
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_COLORDIALOG
diff --git a/src/gui/dialogs/qdialog.cpp b/src/gui/dialogs/qdialog.cpp
index 9e0437c5bf..fbdc5221e1 100644
--- a/src/gui/dialogs/qdialog.cpp
+++ b/src/gui/dialogs/qdialog.cpp
@@ -282,8 +282,8 @@ QDialog::QDialog(QWidget *parent, Qt::WindowFlags f)
QDialog::QDialog(QWidget *parent, const char *name, bool modal, Qt::WindowFlags f)
: QWidget(*new QDialogPrivate, parent,
f
- | QFlag(modal ? Qt::WShowModal : 0)
- | QFlag((f & Qt::WindowType_Mask) == 0 ? Qt::Dialog : 0)
+ | QFlag(modal ? Qt::WShowModal : Qt::WindowType(0))
+ | QFlag((f & Qt::WindowType_Mask) == 0 ? Qt::Dialog : Qt::WindowType(0))
)
{
setObjectName(QString::fromAscii(name));
@@ -1111,7 +1111,7 @@ QSize QDialog::sizeHint() const
// if size is not fixed, try to adjust it according to S60 layoutting
if (minimumSize() != maximumSize()) {
// In S60, dialogs are always the width of screen (in portrait, regardless of current layout)
- return QSize(qMax(S60->screenHeightInPixels, S60->screenWidthInPixels), QWidget::sizeHint().height());
+ return QSize(qMin(S60->screenHeightInPixels, S60->screenWidthInPixels), QWidget::sizeHint().height());
} else {
return QWidget::sizeHint();
}
diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp
index fc3c1862ee..f3f746945a 100644
--- a/src/gui/dialogs/qfiledialog.cpp
+++ b/src/gui/dialogs/qfiledialog.cpp
@@ -1616,6 +1616,25 @@ extern QStringList qt_win_get_open_file_names(const QFileDialogArgs &args,
extern QString qt_win_get_existing_directory(const QFileDialogArgs &args);
#endif
+/*
+ For Symbian file dialogs
+*/
+#if defined(Q_WS_S60)
+extern QString qtSymbianGetOpenFileName(const QString &caption,
+ const QString &dir,
+ const QString &filter);
+
+extern QStringList qtSymbianGetOpenFileNames(const QString &caption,
+ const QString &dir,
+ const QString &filter);
+
+extern QString qtSymbianGetSaveFileName(const QString &caption,
+ const QString &dir);
+
+extern QString qtSymbianGetExistingDirectory(const QString &caption,
+ const QString &dir);
+#endif
+
/*!
This is a convenience static function that returns an existing file
selected by the user. If the user presses Cancel, it returns a null string.
@@ -1644,8 +1663,8 @@ extern QString qt_win_get_existing_directory(const QFileDialogArgs &args);
The dialog's caption is set to \a caption. If \a caption is not specified
then a default caption will be used.
- On Windows and Mac OS X, this static function will use the native file
- dialog and not a QFileDialog.
+ On Windows, Mac OS X and Symbian^3, this static function will use the
+ native file dialog and not a QFileDialog.
On Windows the dialog will spin a blocking modal event loop that will not
dispatch any QTimers, and if \a parent is not 0 then it will position the
@@ -1657,6 +1676,10 @@ extern QString qt_win_get_existing_directory(const QFileDialogArgs &args);
\a options includes DontResolveSymlinks, the file dialog will treat
symlinks as regular directories.
+ On Symbian^3 the parameter \a selectedFilter has no meaning and the
+ \a options parameter is only used to define if the native file dialog is
+ used.
+
\warning Do not delete \a parent during the execution of the dialog. If you
want to do this, you should create the dialog yourself using one of the
QFileDialog constructors.
@@ -1672,6 +1695,10 @@ QString QFileDialog::getOpenFileName(QWidget *parent,
{
if (qt_filedialog_open_filename_hook && !(options & DontUseNativeDialog))
return qt_filedialog_open_filename_hook(parent, caption, dir, filter, selectedFilter, options);
+#if defined(Q_WS_S60)
+ if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog))
+ return qtSymbianGetOpenFileName(caption, dir, filter);
+#endif
QFileDialogArgs args;
args.parent = parent;
args.caption = caption;
@@ -1722,8 +1749,8 @@ QString QFileDialog::getOpenFileName(QWidget *parent,
The dialog's caption is set to \a caption. If \a caption is not specified
then a default caption will be used.
- On Windows and Mac OS X, this static function will use the native file
- dialog and not a QFileDialog.
+ On Windows, Mac OS X and Symbian^3, this static function will use the
+ native file dialog and not a QFileDialog.
On Windows the dialog will spin a blocking modal event loop that will not
dispatch any QTimers, and if \a parent is not 0 then it will position the
@@ -1741,6 +1768,10 @@ QString QFileDialog::getOpenFileName(QWidget *parent,
\snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 10
+ On Symbian^3 the parameter \a selectedFilter has no meaning and the
+ \a options parameter is only used to define if the native file dialog is
+ used.
+
\warning Do not delete \a parent during the execution of the dialog. If you
want to do this, you should create the dialog yourself using one of the
QFileDialog constructors.
@@ -1756,6 +1787,10 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent,
{
if (qt_filedialog_open_filenames_hook && !(options & DontUseNativeDialog))
return qt_filedialog_open_filenames_hook(parent, caption, dir, filter, selectedFilter, options);
+#if defined(Q_WS_S60)
+ if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog))
+ return qtSymbianGetOpenFileNames(caption, dir, filter);
+#endif
QFileDialogArgs args;
args.parent = parent;
args.caption = caption;
@@ -1813,8 +1848,8 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent,
The dialog's caption is set to \a caption. If \a caption is not specified,
a default caption will be used.
- On Windows and Mac OS X, this static function will use the native file
- dialog and not a QFileDialog.
+ On Windows, Mac OS X and Symbian^3, this static function will use the
+ native file dialog and not a QFileDialog.
On Windows the dialog will spin a blocking modal event loop that will not
dispatch any QTimers, and if \a parent is not 0 then it will position the
@@ -1827,6 +1862,10 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent,
\a options includes DontResolveSymlinks the file dialog will treat symlinks
as regular directories.
+ On Symbian^3 the parameters \a filter and \a selectedFilter have no
+ meaning. The \a options parameter is only used to define if the native file
+ dialog is used.
+
\warning Do not delete \a parent during the execution of the dialog. If you
want to do this, you should create the dialog yourself using one of the
QFileDialog constructors.
@@ -1842,6 +1881,10 @@ QString QFileDialog::getSaveFileName(QWidget *parent,
{
if (qt_filedialog_save_filename_hook && !(options & DontUseNativeDialog))
return qt_filedialog_save_filename_hook(parent, caption, dir, filter, selectedFilter, options);
+#if defined(Q_WS_S60)
+ if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog))
+ return qtSymbianGetSaveFileName(caption, dir);
+#endif
QFileDialogArgs args;
args.parent = parent;
args.caption = caption;
@@ -1890,9 +1933,9 @@ QString QFileDialog::getSaveFileName(QWidget *parent,
pass. To ensure a native file dialog, \l{QFileDialog::}{ShowDirsOnly} must
be set.
- On Windows and Mac OS X, this static function will use the native file
- dialog and not a QFileDialog. On Windows CE, if the device has no native
- file dialog, a QFileDialog will be used.
+ On Windows, Mac OS X and Symbian^3, this static function will use the
+ native file dialog and not a QFileDialog. On Windows CE, if the device has
+ no native file dialog, a QFileDialog will be used.
On Unix/X11, the normal behavior of the file dialog is to resolve and
follow symlinks. For example, if \c{/usr/tmp} is a symlink to \c{/var/tmp},
@@ -1904,6 +1947,9 @@ QString QFileDialog::getSaveFileName(QWidget *parent,
dispatch any QTimers, and if \a parent is not 0 then it will position the
dialog just below the parent's title bar.
+ On Symbian^3 the \a options parameter is only used to define if the native
+ file dialog is used.
+
\warning Do not delete \a parent during the execution of the dialog. If you
want to do this, you should create the dialog yourself using one of the
QFileDialog constructors.
@@ -1917,6 +1963,10 @@ QString QFileDialog::getExistingDirectory(QWidget *parent,
{
if (qt_filedialog_existing_directory_hook && !(options & DontUseNativeDialog))
return qt_filedialog_existing_directory_hook(parent, caption, dir, options);
+#if defined(Q_WS_S60)
+ if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog))
+ return qtSymbianGetExistingDirectory(caption, dir);
+#endif
QFileDialogArgs args;
args.parent = parent;
args.caption = caption;
diff --git a/src/gui/dialogs/qfiledialog_symbian.cpp b/src/gui/dialogs/qfiledialog_symbian.cpp
new file mode 100644
index 0000000000..1f7030510d
--- /dev/null
+++ b/src/gui/dialogs/qfiledialog_symbian.cpp
@@ -0,0 +1,196 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qfiledialog.h"
+
+#ifndef QT_NO_FILEDIALOG
+
+#include <private/qfiledialog_p.h>
+#if defined(Q_WS_S60) && defined(SYMBIAN_VERSION_SYMBIAN3)
+#include <driveinfo.h>
+#include <AknCommonDialogsDynMem.h>
+#include <CAknMemorySelectionDialogMultiDrive.h>
+#include <MAknFileFilter.h>
+#endif
+#include "private/qcore_symbian_p.h"
+
+QT_BEGIN_NAMESPACE
+
+enum DialogMode { DialogOpen, DialogSave, DialogFolder };
+#if defined(Q_WS_S60) && defined(SYMBIAN_VERSION_SYMBIAN3)
+class CExtensionFilter : public MAknFileFilter
+{
+public:
+ void setFilter(const QString filter)
+ {
+ filterList.clear();
+ if (filter.left(2) == QLatin1String("*.")) {
+ //Filter has only extensions
+ filterList << filter.split(" ");
+ return;
+ } else {
+ //Extensions are in parenthesis and there may be several filters
+ QStringList separatedFilters(filter.split(QLatin1String(";;")));
+ for (int i = 0; i < separatedFilters.size(); i++) {
+ if (separatedFilters.at(i).contains(QLatin1String("(*)"))) {
+ filterList << QLatin1String("(*)");
+ return;
+ }
+ }
+ QRegExp rx("\\(([^\\)]*)\\)");
+ int pos = 0;
+ while ((pos = rx.indexIn(filter, pos)) != -1) {
+ filterList << rx.cap(1).split(QLatin1String(" "));
+ pos += rx.matchedLength();
+ }
+ }
+ }
+
+ TBool Accept(const TDesC &/*aDriveAndPath*/, const TEntry &aEntry) const
+ {
+ if (aEntry.IsDir())
+ return ETrue;
+
+ //If no filter for files, all can be accepted
+ if (filterList.isEmpty())
+ return ETrue;
+
+ if (filterList == QStringList(QLatin1String("(*)")))
+ return ETrue;
+
+ for (int i = 0; i < filterList.size(); ++i) {
+ QString extension = filterList.at(i);
+ //remove '*' from the beginning of the extension
+ if (extension.at(0) == QLatin1Char('*'))
+ extension = extension.mid(1);
+
+ QString fileName = qt_TDesC2QString(aEntry.iName);
+ if (fileName.endsWith(extension))
+ return ETrue;
+ }
+ return EFalse;
+ }
+
+private:
+ QStringList filterList;
+};
+#endif
+
+static QString launchSymbianDialog(const QString dialogCaption, const QString startDirectory,
+ const QString filter, DialogMode dialogMode)
+{
+ QString selection;
+#if defined(Q_WS_S60) && defined(SYMBIAN_VERSION_SYMBIAN3)
+ QT_TRAP_THROWING(
+ TFileName startFolder;
+ if (!startDirectory.isEmpty()) {
+ QString dir = QDir::toNativeSeparators(startDirectory);
+ startFolder = qt_QString2TPtrC(dir);
+ }
+ TInt types = AknCommonDialogsDynMem::EMemoryTypeMMCExternal|
+ AknCommonDialogsDynMem::EMemoryTypeInternalMassStorage|
+ AknCommonDialogsDynMem::EMemoryTypePhone;
+
+ TPtrC titlePtr(qt_QString2TPtrC(dialogCaption));
+ TFileName target;
+ bool select = false;
+ if (dialogMode == DialogOpen) {
+ CExtensionFilter* extensionFilter = new (ELeave) CExtensionFilter;
+ CleanupStack::PushL(extensionFilter);
+ extensionFilter->setFilter(filter);
+ select = AknCommonDialogsDynMem::RunSelectDlgLD(types, target,
+ startFolder, NULL, NULL, titlePtr, extensionFilter);
+ CleanupStack::Pop(extensionFilter);
+ } else if (dialogMode == DialogSave) {
+ select = AknCommonDialogsDynMem::RunSaveDlgLD(types, target,
+ startFolder, NULL, NULL, titlePtr);
+ } else if (dialogMode == DialogFolder) {
+ select = AknCommonDialogsDynMem::RunFolderSelectDlgLD(types, target, startFolder,
+ 0, 0, titlePtr, NULL, NULL);
+ }
+ if (select)
+ selection.append(qt_TDesC2QString(target));
+ );
+#endif
+ return selection;
+}
+
+QString qtSymbianGetOpenFileName(const QString &caption,
+ const QString &dir,
+ const QString &filter)
+{
+ return launchSymbianDialog(caption, dir, filter, DialogOpen);
+}
+
+QStringList qtSymbianGetOpenFileNames(const QString &caption,
+ const QString &dir,
+ const QString &filter)
+{
+ QString fileName;
+ fileName.append(launchSymbianDialog(caption, dir, filter, DialogOpen));
+ QStringList fileList;
+ fileList << fileName;
+
+ return fileList;
+}
+
+QString qtSymbianGetSaveFileName(const QString &caption,
+ const QString &dir)
+{
+ return launchSymbianDialog(caption, dir, QString(), DialogSave);
+}
+
+QString qtSymbianGetExistingDirectory(const QString &caption,
+ const QString &dir)
+{
+ QString folderCaption;
+ if (!caption.isEmpty()) {
+ folderCaption.append(caption);
+ } else {
+ // Title for folder selection dialog is mandatory
+ folderCaption.append(QFileDialog::tr("Find Directory"));
+ }
+ return launchSymbianDialog(folderCaption, dir, QString(), DialogFolder);
+}
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/gui/dialogs/qfilesystemmodel.cpp b/src/gui/dialogs/qfilesystemmodel.cpp
index 8a6190fd57..8a9f8ae652 100644
--- a/src/gui/dialogs/qfilesystemmodel.cpp
+++ b/src/gui/dialogs/qfilesystemmodel.cpp
@@ -80,11 +80,43 @@ QT_BEGIN_NAMESPACE
directories. In the simplest case, it can be used with a suitable display
widget as part of a browser or filter.
- QFileSystemModel will not fetch any files or directories until setRootPath
+ QFileSystemModel can be accessed using the standard interface provided by
+ QAbstractItemModel, but it also provides some convenience functions that are
+ specific to a directory model.
+ The fileInfo(), isDir(), name(), and path() functions provide information
+ about the underlying files and directories related to items in the model.
+ Directories can be created and removed using mkdir(), rmdir().
+
+ \note QFileSystemModel requires an instance of a GUI application.
+
+ \section1 Example Usage
+
+ A directory model that displays the contents of a default directory
+ is usually constructed with a parent object:
+
+ \snippet doc/src/snippets/shareddirmodel/main.cpp 2
+
+ A tree view can be used to display the contents of the model
+
+ \snippet doc/src/snippets/shareddirmodel/main.cpp 4
+
+ and the contents of a particular directory can be displayed by
+ setting the tree view's root index:
+
+ \snippet doc/src/snippets/shareddirmodel/main.cpp 7
+
+ The view's root index can be used to control how much of a
+ hierarchical model is displayed. QDirModel provides a convenience
+ function that returns a suitable model index for a path to a
+ directory within the model.
+
+ \section1 Caching and Performance
+
+ QFileSystemModel will not fetch any files or directories until setRootPath()
is called. This will prevent any unnecessary querying on the file system
until that point such as listing the drives on Windows.
- Unlike the QDirModel, QFileSystemModel uses a separate thread to populate
+ Unlike QDirModel, QFileSystemModel uses a separate thread to populate
itself so it will not cause the main thread to hang as the file system
is being queried. Calls to rowCount() will return 0 until the model
populates a directory.
@@ -92,15 +124,6 @@ QT_BEGIN_NAMESPACE
QFileSystemModel keeps a cache with file information. The cache is
automatically kept up to date using the QFileSystemWatcher.
- QFileSystemModel can be accessed using the standard interface provided by
- QAbstractItemModel, but it also provides some convenience functions that are
- specific to a directory model.
- The fileInfo(), isDir(), name(), and path() functions provide information
- about the underlying files and directories related to items in the model.
- Directories can be created and removed using mkdir(), rmdir().
-
- \note QFileSystemModel requires an instance of a GUI application.
-
\sa {Model Classes}
*/
diff --git a/src/gui/dialogs/qinputdialog.cpp b/src/gui/dialogs/qinputdialog.cpp
index 700b234211..ce27bd3f11 100644
--- a/src/gui/dialogs/qinputdialog.cpp
+++ b/src/gui/dialogs/qinputdialog.cpp
@@ -231,7 +231,10 @@ void QInputDialogPrivate::ensureLayout()
QObject::connect(buttonBox, SIGNAL(rejected()), q, SLOT(reject()));
mainLayout = new QVBoxLayout(q);
+ //we want to let the input dialog grow to available size on Symbian.
+#ifndef Q_OS_SYMBIAN
mainLayout->setSizeConstraint(QLayout::SetMinAndMaxSize);
+#endif
mainLayout->addWidget(label);
mainLayout->addWidget(inputWidget);
mainLayout->addWidget(buttonBox);
@@ -558,6 +561,9 @@ void QInputDialog::setLabelText(const QString &text)
} else {
d->label->setText(text);
}
+#ifdef Q_OS_SYMBIAN
+ d->label->setWordWrap(true);
+#endif
}
QString QInputDialog::labelText() const
diff --git a/src/gui/dialogs/qmessagebox.cpp b/src/gui/dialogs/qmessagebox.cpp
index fe25b0f807..2f8b9e22fa 100644
--- a/src/gui/dialogs/qmessagebox.cpp
+++ b/src/gui/dialogs/qmessagebox.cpp
@@ -776,10 +776,8 @@ QMessageBox::QMessageBox(QWidget *parent)
added at any time using addButton(). The \a parent and \a f
arguments are passed to the QDialog constructor.
- If \a parent is 0, the message box is an \l{Qt::ApplicationModal}
- {application modal} dialog box. If \a parent is a widget, the
- message box is \l{Qt::WindowModal} {window modal} relative to \a
- parent.
+ The message box is an \l{Qt::ApplicationModal} {application modal}
+ dialog box.
On Mac OS X, if \a parent is not 0 and you want your message box
to appear as a Qt::Sheet of that parent, set the message box's
@@ -1549,10 +1547,8 @@ static QMessageBox::StandardButton showNewMessageBox(QWidget *parent,
\key Esc was pressed instead, the \l{Default and Escape Keys}
{escape button} is returned.
- If \a parent is 0, the message box is an \l{Qt::ApplicationModal}
- {application modal} dialog box. If \a parent is a widget, the
- message box is \l{Qt::WindowModal} {window modal} relative to \a
- parent.
+ The message box is an \l{Qt::ApplicationModal} {application modal}
+ dialog box.
\sa question(), warning(), critical()
*/
@@ -1579,10 +1575,8 @@ QMessageBox::StandardButton QMessageBox::information(QWidget *parent, const QStr
\key Esc was pressed instead, the \l{Default and Escape Keys}
{escape button} is returned.
- If \a parent is 0, the message box is an \l{Qt::ApplicationModal}
- {application modal} dialog box. If \a parent is a widget, the
- message box is \l{Qt::WindowModal} {window modal} relative to \a
- parent.
+ The message box is an \l{Qt::ApplicationModal} {application modal}
+ dialog box.
\sa information(), warning(), critical()
*/
@@ -1607,10 +1601,8 @@ QMessageBox::StandardButton QMessageBox::question(QWidget *parent, const QString
\key Esc was pressed instead, the \l{Default and Escape Keys}
{escape button} is returned.
- If \a parent is 0, the message box is an \l{Qt::ApplicationModal}
- {application modal} dialog box. If \a parent is a widget, the
- message box is \l{Qt::WindowModal} {window modal} relative to \a
- parent.
+ The message box is an \l{Qt::ApplicationModal} {application modal}
+ dialog box.
\sa question(), information(), critical()
*/
@@ -1635,10 +1627,8 @@ QMessageBox::StandardButton QMessageBox::warning(QWidget *parent, const QString
\key Esc was pressed instead, the \l{Default and Escape Keys}
{escape button} is returned.
- If \a parent is 0, the message box is an \l{Qt::ApplicationModal}
- {application modal} dialog box. If \a parent is a widget, the
- message box is \l{Qt::WindowModal} {window modal} relative to \a
- parent.
+ The message box is an \l{Qt::ApplicationModal} {application modal}
+ dialog box.
\warning Do not delete \a parent during the execution of the dialog.
If you want to do this, you should create the dialog
@@ -1670,7 +1660,7 @@ QMessageBox::StandardButton QMessageBox::critical(QWidget *parent, const QString
The about box has a single button labelled "OK". On Mac OS X, the
about box is popped up as a modeless window; on other platforms,
- it is currently a window modal.
+ it is currently application modal.
\sa QWidget::windowIcon(), QApplication::activeWindow()
*/
@@ -1723,7 +1713,7 @@ void QMessageBox::about(QWidget *parent, const QString &title, const QString &te
QApplication provides this functionality as a slot.
On Mac OS X, the about box is popped up as a modeless window; on
- other platforms, it is currently window modal.
+ other platforms, it is currently application modal.
\sa QApplication::aboutQt()
*/
@@ -1983,10 +1973,8 @@ void QMessageBoxPrivate::retranslateStrings()
\snippet doc/src/snippets/dialogs/dialogs.cpp 2
- If \a parent is 0, the message box is an \l{Qt::ApplicationModal}
- {application modal} dialog box. If \a parent is a widget, the
- message box is \l{Qt::WindowModal} {window modal} relative to \a
- parent.
+ The message box is an \l{Qt::ApplicationModal} {application modal}
+ dialog box.
The \a parent and \a f arguments are passed to
the QDialog constructor.
@@ -2035,10 +2023,8 @@ QMessageBox::QMessageBox(const QString &title, const QString &text, Icon icon,
Returns the identity (QMessageBox::Ok, or QMessageBox::No, etc.)
of the button that was clicked.
- If \a parent is 0, the message box is an \l{Qt::ApplicationModal}
- {application modal} dialog box. If \a parent is a widget, the
- message box is \l{Qt::WindowModal} {window modal} relative to \a
- parent.
+ The message box is an \l{Qt::ApplicationModal} {application modal}
+ dialog box.
\warning Do not delete \a parent during the execution of the dialog.
If you want to do this, you should create the dialog
@@ -2073,10 +2059,8 @@ int QMessageBox::information(QWidget *parent, const QString &title, const QStrin
supply 0, 1 or 2 to make pressing \key Esc equivalent to clicking
the relevant button.
- If \a parent is 0, the message box is an \l{Qt::ApplicationModal}
- {application modal} dialog box. If \a parent is a widget, the
- message box is \l{Qt::WindowModal} {window modal} relative to \a
- parent.
+ The message box is an \l{Qt::ApplicationModal} {application modal}
+ dialog box.
\warning Do not delete \a parent during the execution of the dialog.
If you want to do this, you should create the dialog
@@ -2125,10 +2109,8 @@ int QMessageBox::information(QWidget *parent, const QString &title, const QStrin
Returns the identity (QMessageBox::Yes, or QMessageBox::No, etc.)
of the button that was clicked.
- If \a parent is 0, the message box is an \l{Qt::ApplicationModal}
- {application modal} dialog box. If \a parent is a widget, the
- message box is \l{Qt::WindowModal} {window modal} relative to \a
- parent.
+ The message box is an \l{Qt::ApplicationModal} {application modal}
+ dialog box.
\warning Do not delete \a parent during the execution of the dialog.
If you want to do this, you should create the dialog
@@ -2163,10 +2145,8 @@ int QMessageBox::question(QWidget *parent, const QString &title, const QString&
supply 0, 1 or 2 to make pressing Escape equivalent to clicking
the relevant button.
- If \a parent is 0, the message box is an \l{Qt::ApplicationModal}
- {application modal} dialog box. If \a parent is a widget, the
- message box is \l{Qt::WindowModal} {window modal} relative to \a
- parent.
+ The message box is an \l{Qt::ApplicationModal} {application modal}
+ dialog box.
\warning Do not delete \a parent during the execution of the dialog.
If you want to do this, you should create the dialog
@@ -2215,10 +2195,8 @@ int QMessageBox::question(QWidget *parent, const QString &title, const QString&
Returns the identity (QMessageBox::Ok or QMessageBox::No or ...)
of the button that was clicked.
- If \a parent is 0, the message box is an \l{Qt::ApplicationModal}
- {application modal} dialog box. If \a parent is a widget, the
- message box is \l{Qt::WindowModal} {window modal} relative to \a
- parent.
+ The message box is an \l{Qt::ApplicationModal} {application modal}
+ dialog box.
\warning Do not delete \a parent during the execution of the dialog.
If you want to do this, you should create the dialog
@@ -2253,10 +2231,8 @@ int QMessageBox::warning(QWidget *parent, const QString &title, const QString& t
supply 0, 1, or 2 to make pressing Escape equivalent to clicking
the relevant button.
- If \a parent is 0, the message box is an \l{Qt::ApplicationModal}
- {application modal} dialog box. If \a parent is a widget, the
- message box is \l{Qt::WindowModal} {window modal} relative to \a
- parent.
+ The message box is an \l{Qt::ApplicationModal} {application modal}
+ dialog box.
\warning Do not delete \a parent during the execution of the dialog.
If you want to do this, you should create the dialog
@@ -2304,10 +2280,8 @@ int QMessageBox::warning(QWidget *parent, const QString &title, const QString& t
Returns the identity (QMessageBox::Ok, or QMessageBox::No, etc.)
of the button that was clicked.
- If \a parent is 0, the message box is an \l{Qt::ApplicationModal}
- {application modal} dialog box. If \a parent is a widget, the
- message box is \l{Qt::WindowModal} {window modal} relative to \a
- parent.
+ The message box is an \l{Qt::ApplicationModal} {application modal}
+ dialog box.
\warning Do not delete \a parent during the execution of the dialog.
If you want to do this, you should create the dialog
@@ -2343,10 +2317,8 @@ int QMessageBox::critical(QWidget *parent, const QString &title, const QString&
supply 0, 1, or 2 to make pressing Escape equivalent to clicking
the relevant button.
- If \a parent is 0, the message box is an \l{Qt::ApplicationModal}
- {application modal} dialog box. If \a parent is a widget, the
- message box is \l{Qt::WindowModal} {window modal} relative to \a
- parent.
+ The message box is an \l{Qt::ApplicationModal} {application modal}
+ dialog box.
\warning Do not delete \a parent during the execution of the dialog.
If you want to do this, you should create the dialog
diff --git a/src/gui/dialogs/qpagesetupdialog.cpp b/src/gui/dialogs/qpagesetupdialog.cpp
index 141a687a59..4f8c25844c 100644
--- a/src/gui/dialogs/qpagesetupdialog.cpp
+++ b/src/gui/dialogs/qpagesetupdialog.cpp
@@ -62,6 +62,9 @@ QT_BEGIN_NAMESPACE
page margins set on a QPrinter won't show in the native Mac OS X
page setup dialog.
+ In Symbian, there is no support for printing. Hence, this dialog should not
+ be used in Symbian.
+
\sa QPrinter, QPrintDialog
*/
diff --git a/src/gui/dialogs/qprintpreviewdialog.cpp b/src/gui/dialogs/qprintpreviewdialog.cpp
index f21343e2dc..d74742a5db 100644
--- a/src/gui/dialogs/qprintpreviewdialog.cpp
+++ b/src/gui/dialogs/qprintpreviewdialog.cpp
@@ -676,6 +676,8 @@ void QPrintPreviewDialogPrivate::_q_zoomFactorChanged()
Call QPrintPreviewDialog::exec() to show the preview dialog.
\endlist
+ In Symbian, there is no support for printing. Hence, this dialog should not
+ be used in Symbian.
\sa QPrinter, QPrintDialog, QPageSetupDialog, QPrintPreviewWidget
*/
diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp
index af3b79a87c..9b41909fd4 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/embedded/qcopchannel_qws.cpp b/src/gui/embedded/qcopchannel_qws.cpp
index 5786866cc0..0d9d9d3cd8 100644
--- a/src/gui/embedded/qcopchannel_qws.cpp
+++ b/src/gui/embedded/qcopchannel_qws.cpp
@@ -502,7 +502,7 @@ void QCopChannel::answer(QWSClient *cl, const QString& ch,
bool known = qcopServerMap && qcopServerMap->contains(c)
&& !((*qcopServerMap)[c]).isEmpty();
// Yes, it's a typo, it's not user-visible, and we choose not to fix it for compatibility
- QLatin1String ans = QLatin1String(known ? "known" : "unkown");
+ QLatin1String ans = QLatin1String(known ? "known" : "unknown");
QWSServerPrivate::sendQCopEvent(cl, QLatin1String(""),
ans, data, true);
return;
diff --git a/src/gui/embedded/qtransportauth_qws.cpp b/src/gui/embedded/qtransportauth_qws.cpp
index 9a5070207c..90e90d1bc4 100644
--- a/src/gui/embedded/qtransportauth_qws.cpp
+++ b/src/gui/embedded/qtransportauth_qws.cpp
@@ -445,7 +445,7 @@ QIODevice *QTransportAuth::passThroughByClient( QWSClient *client ) const
/*!
\internal
Return a QIODevice pointer (to an internal QBuffer) which can be used
- to receive data after authorisation on transport \a d.
+ to receive data after authorization on transport \a d.
The return QIODevice will act as a pass-through.
@@ -468,7 +468,7 @@ QAuthDevice *QTransportAuth::recvBuf( QTransportAuth::Data *data, QIODevice *iod
/*!
Return a QIODevice pointer (to an internal QBuffer) which can be used
- to write data onto, for authorisation on transport \a d.
+ to write data onto, for authorization on transport \a d.
The return QIODevice will act as a pass-through.
diff --git a/src/gui/graphicsview/qgraphicsgridlayout.cpp b/src/gui/graphicsview/qgraphicsgridlayout.cpp
index 3fc7f1071b..20ebab62fa 100644
--- a/src/gui/graphicsview/qgraphicsgridlayout.cpp
+++ b/src/gui/graphicsview/qgraphicsgridlayout.cpp
@@ -64,6 +64,17 @@
removeAt() will remove an item from the layout, without
destroying it.
+ \section1 Size Hints and Size Policies in QGraphicsGridLayout
+
+ QGraphicsGridLayout respects each item's size hints and size policies,
+ and when a cell in the grid has more space than the items can fill, each item
+ is arranged according to the layout's alignment for that item. You can set
+ an alignment for each item by calling setAlignment(), and check the
+ alignment for any item by calling alignment(). You can also set the alignment
+ for an entire row or column by calling setRowAlignment() and setColumnAlignment()
+ respectively. By default, items are aligned to the top left.
+
+
\sa QGraphicsLinearLayout, QGraphicsWidget
*/
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index e63acace43..7ab49cb991 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -3322,8 +3322,7 @@ void QGraphicsItemPrivate::setFocusHelper(Qt::FocusReason focusReason, bool clim
*/
void QGraphicsItem::clearFocus()
{
- if (hasFocus())
- d_ptr->clearFocusHelper(/* giveFocusToParent = */ true);
+ d_ptr->clearFocusHelper(/* giveFocusToParent = */ true);
}
/*!
@@ -3337,8 +3336,14 @@ void QGraphicsItemPrivate::clearFocusHelper(bool giveFocusToParent)
QGraphicsItem *p = parent;
while (p) {
if (p->flags() & QGraphicsItem::ItemIsFocusScope) {
- p->d_ptr->setFocusHelper(Qt::OtherFocusReason, /* climb = */ false,
- /* focusFromHide = */ false);
+ if (p->d_ptr->focusScopeItem == q_ptr) {
+ p->d_ptr->focusScopeItem = 0;
+ if (!q_ptr->hasFocus()) //if it has focus, focusScopeItemChange is called elsewhere
+ focusScopeItemChange(false);
+ }
+ if (q_ptr->hasFocus())
+ p->d_ptr->setFocusHelper(Qt::OtherFocusReason, /* climb = */ false,
+ /* focusFromHide = */ false);
return;
}
p = p->d_ptr->parent;
@@ -3346,10 +3351,10 @@ void QGraphicsItemPrivate::clearFocusHelper(bool giveFocusToParent)
}
}
- // Invisible items with focus must explicitly clear subfocus.
- clearSubFocus(q_ptr);
-
if (q_ptr->hasFocus()) {
+ // Invisible items with focus must explicitly clear subfocus.
+ clearSubFocus(q_ptr);
+
// If this item has the scene's input focus, clear it.
scene->setFocusItem(0);
}
@@ -3706,6 +3711,8 @@ void QGraphicsItem::setPos(const QPointF &pos)
d_ptr->setPosHelper(pos);
if (d_ptr->isWidget)
static_cast<QGraphicsWidget *>(this)->d_func()->setGeometryFromSetPos();
+ if (d_ptr->scenePosDescendants)
+ d_ptr->sendScenePosChange();
return;
}
@@ -4388,8 +4395,10 @@ void QGraphicsItem::setTransform(const QTransform &matrix, bool combine)
return;
// Update and set the new transformation.
- if (!(d_ptr->flags & ItemSendsGeometryChanges)) {
+ if (!(d_ptr->flags & (ItemSendsGeometryChanges | ItemSendsScenePositionChanges))) {
d_ptr->setTransformHelper(newTransform);
+ if (d_ptr->scenePosDescendants)
+ d_ptr->sendScenePosChange();
return;
}
diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h
index 8480c19095..1b7aa975a9 100644
--- a/src/gui/graphicsview/qgraphicsitem_p.h
+++ b/src/gui/graphicsview/qgraphicsitem_p.h
@@ -722,7 +722,7 @@ public:
/*!
Returns true if \a item1 is on top of \a item2.
- The items dont need to be siblings.
+ The items don't need to be siblings.
\internal
*/
@@ -776,7 +776,7 @@ inline bool qt_closestItemFirst(const QGraphicsItem *item1, const QGraphicsItem
/*!
Returns true if \a item2 is on top of \a item1.
- The items dont need to be siblings.
+ The items don't need to be siblings.
\internal
*/
diff --git a/src/gui/graphicsview/qgraphicslayoutitem.cpp b/src/gui/graphicsview/qgraphicslayoutitem.cpp
index ad4b2b5b89..016cfbfcdc 100644
--- a/src/gui/graphicsview/qgraphicslayoutitem.cpp
+++ b/src/gui/graphicsview/qgraphicslayoutitem.cpp
@@ -48,6 +48,7 @@
#include "qgraphicslayoutitem.h"
#include "qgraphicslayoutitem_p.h"
#include "qwidget.h"
+#include "qgraphicswidget.h"
#include <QtDebug>
@@ -136,19 +137,28 @@ void QGraphicsLayoutItemPrivate::init()
QSizeF *QGraphicsLayoutItemPrivate::effectiveSizeHints(const QSizeF &constraint) const
{
Q_Q(const QGraphicsLayoutItem);
- if (!sizeHintCacheDirty && cachedConstraint == constraint)
- return cachedSizeHints;
+ QSizeF *sizeHintCache;
+ const bool hasConstraint = constraint.width() >= 0 || constraint.height() >= 0;
+ if (hasConstraint) {
+ if (!sizeHintWithConstraintCacheDirty && constraint == cachedConstraint)
+ return cachedSizeHintsWithConstraints;
+ sizeHintCache = cachedSizeHintsWithConstraints;
+ } else {
+ if (!sizeHintCacheDirty)
+ return cachedSizeHints;
+ sizeHintCache = cachedSizeHints;
+ }
for (int i = 0; i < Qt::NSizeHints; ++i) {
- cachedSizeHints[i] = constraint;
+ sizeHintCache[i] = constraint;
if (userSizeHints)
- combineSize(cachedSizeHints[i], userSizeHints[i]);
+ combineSize(sizeHintCache[i], userSizeHints[i]);
}
- QSizeF &minS = cachedSizeHints[Qt::MinimumSize];
- QSizeF &prefS = cachedSizeHints[Qt::PreferredSize];
- QSizeF &maxS = cachedSizeHints[Qt::MaximumSize];
- QSizeF &descentS = cachedSizeHints[Qt::MinimumDescent];
+ QSizeF &minS = sizeHintCache[Qt::MinimumSize];
+ QSizeF &prefS = sizeHintCache[Qt::PreferredSize];
+ QSizeF &maxS = sizeHintCache[Qt::MaximumSize];
+ QSizeF &descentS = sizeHintCache[Qt::MinimumDescent];
normalizeHints(minS.rwidth(), prefS.rwidth(), maxS.rwidth(), descentS.rwidth());
normalizeHints(minS.rheight(), prefS.rheight(), maxS.rheight(), descentS.rheight());
@@ -174,9 +184,13 @@ QSizeF *QGraphicsLayoutItemPrivate::effectiveSizeHints(const QSizeF &constraint)
// Not supported yet
// COMBINE_SIZE(descentS, q->sizeHint(Qt::MinimumDescent, constraint));
- cachedConstraint = constraint;
- sizeHintCacheDirty = false;
- return cachedSizeHints;
+ if (hasConstraint) {
+ cachedConstraint = constraint;
+ sizeHintWithConstraintCacheDirty = false;
+ } else {
+ sizeHintCacheDirty = false;
+ }
+ return sizeHintCache;
}
@@ -259,6 +273,52 @@ void QGraphicsLayoutItemPrivate::setSizeComponent(
q->updateGeometry();
}
+
+bool QGraphicsLayoutItemPrivate::hasHeightForWidth() const
+{
+ Q_Q(const QGraphicsLayoutItem);
+ if (isLayout) {
+ const QGraphicsLayout *l = static_cast<const QGraphicsLayout *>(q);
+ for (int i = l->count() - 1; i >= 0; --i) {
+ if (QGraphicsLayoutItemPrivate::get(l->itemAt(i))->hasHeightForWidth())
+ return true;
+ }
+ } else if (QGraphicsItem *item = q->graphicsItem()) {
+ if (item->isWidget()) {
+ QGraphicsWidget *w = static_cast<QGraphicsWidget *>(item);
+ if (w->layout()) {
+ return QGraphicsLayoutItemPrivate::get(w->layout())->hasHeightForWidth();
+ }
+ }
+ }
+ return q->sizePolicy().hasHeightForWidth();
+}
+
+bool QGraphicsLayoutItemPrivate::hasWidthForHeight() const
+{
+ // enable this code when we add QSizePolicy::hasWidthForHeight() (For 4.8)
+#if 1
+ return false;
+#else
+ Q_Q(const QGraphicsLayoutItem);
+ if (isLayout) {
+ const QGraphicsLayout *l = static_cast<const QGraphicsLayout *>(q);
+ for (int i = l->count() - 1; i >= 0; --i) {
+ if (QGraphicsLayoutItemPrivate::get(l->itemAt(i))->hasWidthForHeight())
+ return true;
+ }
+ } else if (QGraphicsItem *item = q->graphicsItem()) {
+ if (item->isWidget()) {
+ QGraphicsWidget *w = static_cast<QGraphicsWidget *>(item);
+ if (w->layout()) {
+ return QGraphicsLayoutItemPrivate::get(w->layout())->hasWidthForHeight();
+ }
+ }
+ }
+ return q->sizePolicy().hasWidthForHeight();
+#endif
+}
+
/*!
\class QGraphicsLayoutItem
\brief The QGraphicsLayoutItem class can be inherited to allow your custom
diff --git a/src/gui/graphicsview/qgraphicslayoutitem_p.h b/src/gui/graphicsview/qgraphicslayoutitem_p.h
index 15cc7a59b2..d72ee9f0d9 100644
--- a/src/gui/graphicsview/qgraphicslayoutitem_p.h
+++ b/src/gui/graphicsview/qgraphicslayoutitem_p.h
@@ -65,6 +65,9 @@ class Q_AUTOTEST_EXPORT QGraphicsLayoutItemPrivate
public:
virtual ~QGraphicsLayoutItemPrivate();
QGraphicsLayoutItemPrivate(QGraphicsLayoutItem *parent, bool isLayout);
+ static QGraphicsLayoutItemPrivate *get(QGraphicsLayoutItem *q) { return q->d_func();}
+ static const QGraphicsLayoutItemPrivate *get(const QGraphicsLayoutItem *q) { return q->d_func();}
+
void init();
QSizeF *effectiveSizeHints(const QSizeF &constraint) const;
QGraphicsItem *parentItem() const;
@@ -73,14 +76,19 @@ public:
enum SizeComponent { Width, Height };
void setSizeComponent(Qt::SizeHint which, SizeComponent component, qreal value);
+ bool hasHeightForWidth() const;
+ bool hasWidthForHeight() const;
+
QSizePolicy sizePolicy;
QGraphicsLayoutItem *parent;
QSizeF *userSizeHints;
mutable QSizeF cachedSizeHints[Qt::NSizeHints];
mutable QSizeF cachedConstraint;
+ mutable QSizeF cachedSizeHintsWithConstraints[Qt::NSizeHints];
mutable quint32 sizeHintCacheDirty : 1;
+ mutable quint32 sizeHintWithConstraintCacheDirty : 1;
quint32 isLayout : 1;
quint32 ownedByLayout : 1;
diff --git a/src/gui/graphicsview/qgraphicslinearlayout.cpp b/src/gui/graphicsview/qgraphicslinearlayout.cpp
index 7e8d19f2aa..244a7284ba 100644
--- a/src/gui/graphicsview/qgraphicslinearlayout.cpp
+++ b/src/gui/graphicsview/qgraphicslinearlayout.cpp
@@ -75,7 +75,7 @@
is arranged according to the layout's alignment for that item. You can set
an alignment for each item by calling setAlignment(), and check the
alignment for any item by calling alignment(). By default, items are
- centered both vertically and horizontally.
+ aligned to the top left.
\section1 Spacing within QGraphicsLinearLayout
@@ -446,7 +446,7 @@ void QGraphicsLinearLayout::setAlignment(QGraphicsLayoutItem *item, Qt::Alignmen
/*!
Returns the alignment for \a item. The default alignment is
- Qt::AlignCenter.
+ Qt::AlignTop | Qt::AlignLeft.
The alignment decides how the item is positioned within its assigned space
in the case where there's more space available in the layout than the
diff --git a/src/gui/graphicsview/qgraphicsproxywidget.cpp b/src/gui/graphicsview/qgraphicsproxywidget.cpp
index 320395ef53..e0eb3bb06d 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 a0ecd4c78d..d9ff655b1a 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/qgraphicstransform.cpp b/src/gui/graphicsview/qgraphicstransform.cpp
index 1f155c6e9d..d495da27cb 100644
--- a/src/gui/graphicsview/qgraphicstransform.cpp
+++ b/src/gui/graphicsview/qgraphicstransform.cpp
@@ -54,7 +54,7 @@
instances to one QGraphicsItem. Each QGraphicsTransform is applied in
order, one at a time, to the QGraphicsItem it's assigned to.
- QGraphicsTransform is particularily useful for animations. Whereas
+ QGraphicsTransform is particularly useful for animations. Whereas
QGraphicsItem::setTransform() lets you assign any transform directly to an
item, there is no direct way to interpolate between two different
transformations (e.g., when transitioning between two states, each for
diff --git a/src/gui/graphicsview/qgraphicswidget.cpp b/src/gui/graphicsview/qgraphicswidget.cpp
index 4a733beac7..e48f9a750f 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/graphicsview/qgridlayoutengine.cpp b/src/gui/graphicsview/qgridlayoutengine.cpp
index ae5bf90faf..f1055ba3c4 100644
--- a/src/gui/graphicsview/qgridlayoutengine.cpp
+++ b/src/gui/graphicsview/qgridlayoutengine.cpp
@@ -166,7 +166,7 @@ void QGridLayoutRowData::reset(int count)
hasIgnoreFlag = false;
}
-void QGridLayoutRowData::distributeMultiCells()
+void QGridLayoutRowData::distributeMultiCells(const QGridLayoutRowInfo &rowInfo)
{
MultiCellMap::const_iterator i = multiCellMap.constBegin();
for (; i != multiCellMap.constEnd(); ++i) {
@@ -185,7 +185,7 @@ void QGridLayoutRowData::distributeMultiCells()
qreal extra = compare(box, totalBox, j);
if (extra > 0.0) {
calculateGeometries(start, end, box.q_sizes(j), dummy.data(), newSizes.data(),
- 0, totalBox);
+ 0, totalBox, rowInfo);
for (int k = 0; k < span; ++k)
extras[k].q_sizes(j) = newSizes[k];
@@ -202,11 +202,12 @@ void QGridLayoutRowData::distributeMultiCells()
void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSize, qreal *positions,
qreal *sizes, qreal *descents,
- const QGridLayoutBox &totalBox)
+ const QGridLayoutBox &totalBox,
+ const QGridLayoutRowInfo &rowInfo)
{
Q_ASSERT(end > start);
- targetSize = qBound(totalBox.q_minimumSize, targetSize, totalBox.q_maximumSize);
+ targetSize = qMax(totalBox.q_minimumSize, targetSize);
int n = end - start;
QVarLengthArray<qreal> newSizes(n);
@@ -246,16 +247,22 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz
}
}
} else {
- stealBox(start, end, PreferredSize, positions, sizes);
+ bool isLargerThanMaximum = (targetSize > totalBox.q_maximumSize);
+ if (isLargerThanMaximum) {
+ stealBox(start, end, MaximumSize, positions, sizes);
+ sumAvailable = targetSize - totalBox.q_maximumSize;
+ } else {
+ stealBox(start, end, PreferredSize, positions, sizes);
+ sumAvailable = targetSize - totalBox.q_preferredSize;
+ }
- sumAvailable = targetSize - totalBox.q_preferredSize;
if (sumAvailable > 0.0) {
qreal sumCurrentAvailable = sumAvailable;
bool somethingHasAMaximumSize = false;
- qreal sumPreferredSizes = 0.0;
+ qreal sumSizes = 0.0;
for (int i = 0; i < n; ++i)
- sumPreferredSizes += sizes[i];
+ sumSizes += sizes[i];
for (int i = 0; i < n; ++i) {
if (ignore.testBit(start + i)) {
@@ -265,7 +272,16 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz
}
const QGridLayoutBox &box = boxes.at(start + i);
- qreal desired = box.q_maximumSize - box.q_preferredSize;
+ qreal boxSize;
+
+ qreal desired;
+ if (isLargerThanMaximum) {
+ boxSize = box.q_maximumSize;
+ desired = rowInfo.boxes.value(start + i).q_maximumSize - boxSize;
+ } else {
+ boxSize = box.q_preferredSize;
+ desired = box.q_maximumSize - boxSize;
+ }
if (desired == 0.0) {
newSizes[i] = sizes[i];
factors[i] = 0.0;
@@ -284,17 +300,17 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz
} else if (stretch <= 0) {
factors[i] = 0.0;
} else {
- qreal ultimatePreferredSize;
- qreal ultimateSumPreferredSizes;
- qreal x = ((stretch * sumPreferredSizes)
- - (sumStretches * box.q_preferredSize))
+ qreal ultimateSize;
+ qreal ultimateSumSizes;
+ qreal x = ((stretch * sumSizes)
+ - (sumStretches * boxSize))
/ (sumStretches - stretch);
if (x >= 0.0) {
- ultimatePreferredSize = box.q_preferredSize + x;
- ultimateSumPreferredSizes = sumPreferredSizes + x;
+ ultimateSize = boxSize + x;
+ ultimateSumSizes = sumSizes + x;
} else {
- ultimatePreferredSize = box.q_preferredSize;
- ultimateSumPreferredSizes = (sumStretches * box.q_preferredSize)
+ ultimateSize = boxSize;
+ ultimateSumSizes = (sumStretches * boxSize)
/ stretch;
}
@@ -303,17 +319,17 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz
(at the expense of the stretch factors, which are not fully respected
during the transition).
*/
- ultimatePreferredSize = ultimatePreferredSize * 3 / 2;
- ultimateSumPreferredSizes = ultimateSumPreferredSizes * 3 / 2;
+ ultimateSize = ultimateSize * 3 / 2;
+ ultimateSumSizes = ultimateSumSizes * 3 / 2;
- qreal beta = ultimateSumPreferredSizes - sumPreferredSizes;
+ qreal beta = ultimateSumSizes - sumSizes;
if (!beta) {
factors[i] = 1;
} else {
qreal alpha = qMin(sumCurrentAvailable, beta);
- qreal ultimateFactor = (stretch * ultimateSumPreferredSizes / sumStretches)
- - (box.q_preferredSize);
- qreal transitionalFactor = sumCurrentAvailable * (ultimatePreferredSize - box.q_preferredSize) / beta;
+ qreal ultimateFactor = (stretch * ultimateSumSizes / sumStretches)
+ - (boxSize);
+ qreal transitionalFactor = sumCurrentAvailable * (ultimateSize - boxSize) / beta;
factors[i] = ((alpha * ultimateFactor)
+ ((beta - alpha) * transitionalFactor)) / beta;
@@ -336,11 +352,16 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz
if (newSizes[i] >= 0.0)
continue;
- const QGridLayoutBox &box = boxes.at(start + i);
+ qreal maxBoxSize;
+ if (isLargerThanMaximum)
+ maxBoxSize = rowInfo.boxes.value(start + i).q_maximumSize;
+ else
+ maxBoxSize = boxes.at(start + i).q_maximumSize;
+
qreal avail = sumCurrentAvailable * factors[i] / sumFactors;
- if (sizes[i] + avail >= box.q_maximumSize) {
- newSizes[i] = box.q_maximumSize;
- sumCurrentAvailable -= box.q_maximumSize - sizes[i];
+ if (sizes[i] + avail >= maxBoxSize) {
+ newSizes[i] = maxBoxSize;
+ sumCurrentAvailable -= maxBoxSize - sizes[i];
sumFactors -= factors[i];
keepGoing = (sumCurrentAvailable > 0.0);
if (!keepGoing)
@@ -545,6 +566,24 @@ QSizePolicy::Policy QGridLayoutItem::sizePolicy(Qt::Orientation orientation) con
: sizePolicy.verticalPolicy();
}
+/*
+ returns true if the size policy returns true for either hasHeightForWidth()
+ or hasWidthForHeight()
+ */
+bool QGridLayoutItem::hasDynamicConstraint() const
+{
+ return QGraphicsLayoutItemPrivate::get(q_layoutItem)->hasHeightForWidth()
+ || QGraphicsLayoutItemPrivate::get(q_layoutItem)->hasWidthForHeight();
+}
+
+Qt::Orientation QGridLayoutItem::dynamicConstraintOrientation() const
+{
+ if (QGraphicsLayoutItemPrivate::get(q_layoutItem)->hasHeightForWidth())
+ return Qt::Vertical;
+ else //if (QGraphicsLayoutItemPrivate::get(q_layoutItem)->hasWidthForHeight())
+ return Qt::Horizontal;
+}
+
QSizePolicy::ControlTypes QGridLayoutItem::controlTypes(LayoutSide /* side */) const
{
return q_layoutItem->sizePolicy().controlType();
@@ -613,7 +652,17 @@ QRectF QGridLayoutItem::geometryWithin(qreal x, qreal y, qreal width, qreal heig
qreal cellWidth = width;
qreal cellHeight = height;
- QSizeF size = effectiveMaxSize().boundedTo(QSizeF(cellWidth, cellHeight));
+
+ QSizeF size = effectiveMaxSize(QSizeF(-1,-1));
+ if (hasDynamicConstraint()) {
+ if (dynamicConstraintOrientation() == Qt::Vertical) {
+ if (size.width() > cellWidth)
+ size = effectiveMaxSize(QSizeF(cellWidth, -1));
+ } else if (size.height() > cellHeight) {
+ size = effectiveMaxSize(QSizeF(-1, cellHeight));
+ }
+ }
+ size = size.boundedTo(QSizeF(cellWidth, cellHeight));
width = size.width();
height = size.height();
@@ -675,13 +724,13 @@ void QGridLayoutItem::insertOrRemoveRows(int row, int delta, Qt::Orientation ori
Note that effectiveSizeHint does not take sizePolicy into consideration,
(since it only evaluates the hints, as the name implies)
*/
-QSizeF QGridLayoutItem::effectiveMaxSize() const
+QSizeF QGridLayoutItem::effectiveMaxSize(const QSizeF &constraint) const
{
- QSizeF size;
+ QSizeF size = constraint;
bool vGrow = (sizePolicy(Qt::Vertical) & QSizePolicy::GrowFlag) == QSizePolicy::GrowFlag;
bool hGrow = (sizePolicy(Qt::Horizontal) & QSizePolicy::GrowFlag) == QSizePolicy::GrowFlag;
if (!vGrow || !hGrow) {
- QSizeF pref = layoutItem()->effectiveSizeHint(Qt::PreferredSize);
+ QSizeF pref = layoutItem()->effectiveSizeHint(Qt::PreferredSize, constraint);
if (!vGrow)
size.setHeight(pref.height());
if (!hGrow)
@@ -689,7 +738,7 @@ QSizeF QGridLayoutItem::effectiveMaxSize() const
}
if (!size.isValid()) {
- QSizeF maxSize = layoutItem()->effectiveSizeHint(Qt::MaximumSize);
+ QSizeF maxSize = layoutItem()->effectiveSizeHint(Qt::MaximumSize, size);
if (size.width() == -1)
size.setWidth(maxSize.width());
if (size.height() == -1)
@@ -1010,6 +1059,7 @@ void QGridLayoutEngine::invalidate()
q_cachedEffectiveLastRows[Ver] = -1;
q_cachedDataForStyleInfo.invalidate();
q_cachedSize = QSizeF();
+ q_cachedConstraintOrientation = UnknownConstraint;
}
static void visualRect(QRectF *geom, Qt::LayoutDirection dir, const QRectF &contentsRect)
@@ -1074,19 +1124,73 @@ QRectF QGridLayoutEngine::cellRect(const QLayoutStyleInfo &styleInfo,
}
QSizeF QGridLayoutEngine::sizeHint(const QLayoutStyleInfo &styleInfo, Qt::SizeHint which,
- const QSizeF & /* constraint */) const
-{
- ensureColumnAndRowData(styleInfo);
+ const QSizeF &constraint) const
+{
+ QGridLayoutBox sizehint_totalBoxes[NOrientations];
+
+ bool sizeHintCalculated = false;
+
+ if (hasDynamicConstraint() && rowCount() > 0 && columnCount() > 0) {
+ if (constraintOrientation() == Qt::Vertical) {
+ //We have items whose height depends on their width
+ if (constraint.width() >= 0) {
+ if (q_cachedDataForStyleInfo != styleInfo)
+ ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, NULL, NULL, Qt::Horizontal);
+ else
+ sizehint_totalBoxes[Hor] = q_totalBoxes[Hor];
+ QVector<qreal> sizehint_xx;
+ QVector<qreal> sizehint_widths;
+
+ sizehint_xx.resize(columnCount());
+ sizehint_widths.resize(columnCount());
+ qreal width = constraint.width();
+ //Calculate column widths and positions, and put results in q_xx.data() and q_widths.data() so that we can use this information as
+ //constraints to find the row heights
+ q_columnData.calculateGeometries(0, columnCount(), width, sizehint_xx.data(), sizehint_widths.data(),
+ 0, sizehint_totalBoxes[Hor], q_infos[Hor]);
+ ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, sizehint_xx.data(), sizehint_widths.data(), Qt::Vertical);
+ sizeHintCalculated = true;
+ }
+ } else {
+ if (constraint.height() >= 0) {
+ //We have items whose width depends on their height
+ ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, NULL, NULL, Qt::Vertical);
+ QVector<qreal> sizehint_yy;
+ QVector<qreal> sizehint_heights;
+
+ sizehint_yy.resize(rowCount());
+ sizehint_heights.resize(rowCount());
+ qreal height = constraint.height();
+ //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() so that we can use this information as
+ //constraints to find the column widths
+ q_rowData.calculateGeometries(0, rowCount(), height, sizehint_yy.data(), sizehint_heights.data(),
+ 0, sizehint_totalBoxes[Ver], q_infos[Ver]);
+ ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, sizehint_yy.data(), sizehint_heights.data(), Qt::Vertical);
+ sizeHintCalculated = true;
+ }
+ }
+ }
+
+ if (!sizeHintCalculated) {
+ //No items with height for width, so it doesn't matter which order we do these in
+ if (q_cachedDataForStyleInfo != styleInfo) {
+ ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, NULL, NULL, Qt::Horizontal);
+ ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, NULL, NULL, Qt::Vertical);
+ } else {
+ sizehint_totalBoxes[Hor] = q_totalBoxes[Hor];
+ sizehint_totalBoxes[Ver] = q_totalBoxes[Ver];
+ }
+ }
switch (which) {
case Qt::MinimumSize:
- return QSizeF(q_totalBoxes[Hor].q_minimumSize, q_totalBoxes[Ver].q_minimumSize);
+ return QSizeF(sizehint_totalBoxes[Hor].q_minimumSize, sizehint_totalBoxes[Ver].q_minimumSize);
case Qt::PreferredSize:
- return QSizeF(q_totalBoxes[Hor].q_preferredSize, q_totalBoxes[Ver].q_preferredSize);
+ return QSizeF(sizehint_totalBoxes[Hor].q_preferredSize, sizehint_totalBoxes[Ver].q_preferredSize);
case Qt::MaximumSize:
- return QSizeF(q_totalBoxes[Hor].q_maximumSize, q_totalBoxes[Ver].q_maximumSize);
+ return QSizeF(sizehint_totalBoxes[Hor].q_maximumSize, sizehint_totalBoxes[Ver].q_maximumSize);
case Qt::MinimumDescent:
- return QSizeF(-1.0, q_totalBoxes[Hor].q_minimumDescent); // ### doesn't work
+ return QSizeF(-1.0, sizehint_totalBoxes[Hor].q_minimumDescent); // ### doesn't work
default:
break;
}
@@ -1262,6 +1366,7 @@ void QGridLayoutEngine::insertOrRemoveRows(int row, int delta, Qt::Orientation o
}
void QGridLayoutEngine::fillRowData(QGridLayoutRowData *rowData, const QLayoutStyleInfo &styleInfo,
+ qreal *colPositions, qreal *colSizes,
Qt::Orientation orientation) const
{
const int ButtonMask = QSizePolicy::ButtonBox | QSizePolicy::PushButton;
@@ -1375,7 +1480,21 @@ void QGridLayoutEngine::fillRowData(QGridLayoutRowData *rowData, const QLayoutSt
box = &multiCell.q_box;
multiCell.q_stretch = itemStretch;
}
- box->combine(item->box(orientation));
+ // Items with constraints need to be passed the constraint
+ if (colSizes && colPositions && item->hasDynamicConstraint() && orientation == item->dynamicConstraintOrientation()) {
+ /* Get the width of the item by summing up the widths of the columns that it spans.
+ * We need to have already calculated the widths of the columns by calling
+ * q_columns->calculateGeometries() before hand and passing the value in the colSizes
+ * and colPositions parameters.
+ * The variable name is still colSizes even when it actually has the row sizes
+ */
+ qreal length = colSizes[item->lastColumn(orientation)];
+ if (item->columnSpan(orientation) != 1)
+ length += colPositions[item->lastColumn(orientation)] - colPositions[item->firstColumn(orientation)];
+ box->combine(item->box(orientation, length));
+ } else {
+ box->combine(item->box(orientation));
+ }
if (effectiveRowSpan == 1) {
QSizePolicy::ControlTypes controls = item->controlTypes(top);
@@ -1512,44 +1631,100 @@ void QGridLayoutEngine::ensureEffectiveFirstAndLastRows() const
}
}
-void QGridLayoutEngine::ensureColumnAndRowData(const QLayoutStyleInfo &styleInfo) const
+void QGridLayoutEngine::ensureColumnAndRowData(QGridLayoutRowData *rowData, QGridLayoutBox *totalBox,
+ const QLayoutStyleInfo &styleInfo,
+ qreal *colPositions, qreal *colSizes,
+ Qt::Orientation orientation) const
{
- if (q_cachedDataForStyleInfo == styleInfo)
- return;
-
- q_columnData.reset(columnCount());
- q_rowData.reset(rowCount());
-
- fillRowData(&q_columnData, styleInfo, Qt::Horizontal);
- fillRowData(&q_rowData, styleInfo, Qt::Vertical);
+ rowData->reset(rowCount(orientation));
+ fillRowData(rowData, styleInfo, colPositions, colSizes, orientation);
+ const QGridLayoutRowInfo &rowInfo = q_infos[orientation == Qt::Vertical];
+ rowData->distributeMultiCells(rowInfo);
+ *totalBox = rowData->totalBox(0, rowCount(orientation));
+ //We have items whose width depends on their height
+}
- q_columnData.distributeMultiCells();
- q_rowData.distributeMultiCells();
+/**
+ returns false if the layout has contradicting constraints (i.e. some items with a horizontal
+ constraint and other items with a vertical constraint)
+ */
+bool QGridLayoutEngine::ensureDynamicConstraint() const
+{
+ if (q_cachedConstraintOrientation == UnknownConstraint) {
+ for (int i = q_items.count() - 1; i >= 0; --i) {
+ QGridLayoutItem *item = q_items.at(i);
+ if (item->hasDynamicConstraint()) {
+ Qt::Orientation itemConstraintOrientation = item->dynamicConstraintOrientation();
+ if (q_cachedConstraintOrientation == UnknownConstraint) {
+ q_cachedConstraintOrientation = itemConstraintOrientation;
+ } else if (q_cachedConstraintOrientation != itemConstraintOrientation) {
+ q_cachedConstraintOrientation = UnfeasibleConstraint;
+ qWarning("QGridLayoutEngine: Unfeasible, cannot mix horizontal and"
+ " vertical constraint in the same layout");
+ return false;
+ }
+ }
+ }
+ if (q_cachedConstraintOrientation == UnknownConstraint)
+ q_cachedConstraintOrientation = NoConstraint;
+ }
+ return true;
+}
- q_totalBoxes[Hor] = q_columnData.totalBox(0, columnCount());
- q_totalBoxes[Ver] = q_rowData.totalBox(0, rowCount());
+bool QGridLayoutEngine::hasDynamicConstraint() const
+{
+ if (!ensureDynamicConstraint())
+ return false;
+ return q_cachedConstraintOrientation != NoConstraint;
+}
- q_cachedDataForStyleInfo = styleInfo;
+/*
+ * return value is only valid if hasConstraint() returns true
+ */
+Qt::Orientation QGridLayoutEngine::constraintOrientation() const
+{
+ (void)ensureDynamicConstraint();
+ return (Qt::Orientation)q_cachedConstraintOrientation;
}
void QGridLayoutEngine::ensureGeometries(const QLayoutStyleInfo &styleInfo,
const QSizeF &size) const
{
- ensureColumnAndRowData(styleInfo);
- if (q_cachedSize == size)
+ if (q_cachedDataForStyleInfo == styleInfo && q_cachedSize == size)
return;
+ q_cachedDataForStyleInfo = styleInfo;
+ q_cachedSize = size;
+
q_xx.resize(columnCount());
- q_yy.resize(rowCount());
q_widths.resize(columnCount());
+ q_yy.resize(rowCount());
q_heights.resize(rowCount());
q_descents.resize(rowCount());
- q_columnData.calculateGeometries(0, columnCount(), size.width(), q_xx.data(), q_widths.data(),
- 0, q_totalBoxes[Hor]);
- q_rowData.calculateGeometries(0, rowCount(), size.height(), q_yy.data(), q_heights.data(),
- q_descents.data(), q_totalBoxes[Ver]);
- q_cachedSize = size;
+ if (constraintOrientation() != Qt::Horizontal) {
+ //We might have items whose width depends on their height
+ ensureColumnAndRowData(&q_columnData, &q_totalBoxes[Hor], styleInfo, NULL, NULL, Qt::Horizontal);
+ //Calculate column widths and positions, and put results in q_xx.data() and q_widths.data() so that we can use this information as
+ //constraints to find the row heights
+ q_columnData.calculateGeometries(0, columnCount(), size.width(), q_xx.data(), q_widths.data(),
+ 0, q_totalBoxes[Hor], q_infos[Hor] );
+ ensureColumnAndRowData(&q_rowData, &q_totalBoxes[Ver], styleInfo, q_xx.data(), q_widths.data(), Qt::Vertical);
+ //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data()
+ q_rowData.calculateGeometries(0, rowCount(), size.height(), q_yy.data(), q_heights.data(),
+ q_descents.data(), q_totalBoxes[Ver], q_infos[Ver]);
+ } else {
+ //We have items whose height depends on their width
+ ensureColumnAndRowData(&q_rowData, &q_totalBoxes[Ver], styleInfo, NULL, NULL, Qt::Vertical);
+ //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() so that we can use this information as
+ //constraints to find the column widths
+ q_rowData.calculateGeometries(0, rowCount(), size.height(), q_yy.data(), q_heights.data(),
+ q_descents.data(), q_totalBoxes[Ver], q_infos[Ver]);
+ ensureColumnAndRowData(&q_columnData, &q_totalBoxes[Hor], styleInfo, q_yy.data(), q_heights.data(), Qt::Horizontal);
+ //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data()
+ q_columnData.calculateGeometries(0, columnCount(), size.width(), q_xx.data(), q_widths.data(),
+ 0, q_totalBoxes[Hor], q_infos[Hor]);
+ }
}
QT_END_NAMESPACE
diff --git a/src/gui/graphicsview/qgridlayoutengine_p.h b/src/gui/graphicsview/qgridlayoutengine_p.h
index 9ac9a8ed88..44efbba998 100644
--- a/src/gui/graphicsview/qgridlayoutengine_p.h
+++ b/src/gui/graphicsview/qgridlayoutengine_p.h
@@ -91,6 +91,14 @@ enum LayoutSide {
Bottom
};
+enum {
+ NoConstraint,
+ HorizontalConstraint, // Width depends on the height
+ VerticalConstraint, // Height depends on the width
+ UnknownConstraint, // need to update cache
+ UnfeasibleConstraint // not feasible, it be has some items with Vertical and others with Horizontal constraints
+};
+
template <typename T>
class QLayoutParameter
{
@@ -216,13 +224,16 @@ public:
typedef QMap<QPair<int, int>, QGridLayoutMultiCellData> MultiCellMap;
+class QGridLayoutRowInfo;
+
class QGridLayoutRowData
{
public:
void reset(int count);
- void distributeMultiCells();
+ void distributeMultiCells(const QGridLayoutRowInfo &rowInfo);
void calculateGeometries(int start, int end, qreal targetSize, qreal *positions, qreal *sizes,
- qreal *descents, const QGridLayoutBox &totalBox);
+ qreal *descents, const QGridLayoutBox &totalBox,
+ const QGridLayoutRowInfo &rowInfo);
QGridLayoutBox totalBox(int start, int end) const;
void stealBox(int start, int end, int which, qreal *positions, qreal *sizes);
@@ -270,6 +281,10 @@ public:
inline void setAlignment(Qt::Alignment alignment) { q_alignment = alignment; }
QSizePolicy::Policy sizePolicy(Qt::Orientation orientation) const;
+
+ bool hasDynamicConstraint() const;
+ Qt::Orientation dynamicConstraintOrientation() const;
+
QSizePolicy::ControlTypes controlTypes(LayoutSide side) const;
QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const;
QGridLayoutBox box(Qt::Orientation orientation, qreal constraint = -1.0) const;
@@ -280,7 +295,7 @@ public:
void setGeometry(const QRectF &rect);
void transpose();
void insertOrRemoveRows(int row, int delta, Qt::Orientation orientation = Qt::Vertical);
- QSizeF effectiveMaxSize() const;
+ QSizeF effectiveMaxSize(const QSizeF &constraint) const;
#ifdef QT_DEBUG
void dump(int indent = 0) const;
@@ -372,6 +387,14 @@ public:
int column, int rowSpan, int columnSpan) const;
QSizeF sizeHint(const QLayoutStyleInfo &styleInfo, Qt::SizeHint which,
const QSizeF &constraint) const;
+
+ // heightForWidth / widthForHeight support
+ QSizeF dynamicallyConstrainedSizeHint(Qt::SizeHint which, const QSizeF &constraint) const;
+ bool ensureDynamicConstraint() const;
+ bool hasDynamicConstraint() const;
+ Qt::Orientation constraintOrientation() const;
+
+
QSizePolicy::ControlTypes controlTypes(LayoutSide side) const;
void transpose();
void setVisualDirection(Qt::LayoutDirection direction);
@@ -390,9 +413,14 @@ private:
void setItemAt(int row, int column, QGridLayoutItem *item);
void insertOrRemoveRows(int row, int delta, Qt::Orientation orientation = Qt::Vertical);
void fillRowData(QGridLayoutRowData *rowData, const QLayoutStyleInfo &styleInfo,
- Qt::Orientation orientation = Qt::Vertical) const;
+ qreal *colPositions, qreal *colSizes,
+ Qt::Orientation orientation = Qt::Vertical) const;
void ensureEffectiveFirstAndLastRows() const;
- void ensureColumnAndRowData(const QLayoutStyleInfo &styleInfo) const;
+ void ensureColumnAndRowData(QGridLayoutRowData *rowData, QGridLayoutBox *totalBox,
+ const QLayoutStyleInfo &styleInfo,
+ qreal *colPositions, qreal *colSizes,
+ Qt::Orientation orientation) const;
+
void ensureGeometries(const QLayoutStyleInfo &styleInfo, const QSizeF &size) const;
// User input
@@ -405,6 +433,7 @@ private:
// Lazily computed from the above user input
mutable int q_cachedEffectiveFirstRows[NOrientations];
mutable int q_cachedEffectiveLastRows[NOrientations];
+ mutable quint8 q_cachedConstraintOrientation : 2;
// Layout item input
mutable QLayoutStyleInfo q_cachedDataForStyleInfo;
diff --git a/src/gui/gui.pro b/src/gui/gui.pro
index 90b5de5971..4d51fa8ce3 100644
--- a/src/gui/gui.pro
+++ b/src/gui/gui.pro
@@ -64,13 +64,12 @@ symbian {
neon:*-g++* {
DEFINES += QT_HAVE_NEON
- QMAKE_CXXFLAGS *= -mfpu=neon
HEADERS += $$NEON_HEADERS
SOURCES += $$NEON_SOURCES
DRAWHELPER_NEON_ASM_FILES = $$NEON_ASM
- neon_compiler.commands = $$QMAKE_CXX -c
+ neon_compiler.commands = $$QMAKE_CXX -c -mfpu=neon
neon_compiler.commands += $(CXXFLAGS) $(INCPATH) ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
neon_compiler.dependency_type = TYPE_C
neon_compiler.output = ${QMAKE_VAR_OBJECTS_DIR}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_OBJ)}
diff --git a/src/gui/image/qimage_ssse3.cpp b/src/gui/image/qimage_ssse3.cpp
index 9aed0112f0..836d7b0ee8 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 64d8ed2d4f..c5d9a7e832 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -1102,6 +1102,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/qpixmap_x11_p.h b/src/gui/image/qpixmap_x11_p.h
index f171281f39..7eab64c8d6 100644
--- a/src/gui/image/qpixmap_x11_p.h
+++ b/src/gui/image/qpixmap_x11_p.h
@@ -115,7 +115,7 @@ private:
friend class QEglContext; // Needs gl_surface
friend class QGLContext; // Needs gl_surface
friend class QX11GLPixmapData; // Needs gl_surface
- friend class QMeeGoGraphicsSystem; // Needs gl_surface and flags
+ friend class QMeeGoLivePixmapData; // Needs gl_surface and flags
friend bool qt_createEGLSurfaceForPixmap(QPixmapData*, bool); // Needs gl_surface
void release();
diff --git a/src/gui/image/qtiffhandler.cpp b/src/gui/image/qtiffhandler.cpp
index de4f680245..16279172ee 100644
--- a/src/gui/image/qtiffhandler.cpp
+++ b/src/gui/image/qtiffhandler.cpp
@@ -608,6 +608,7 @@ QVariant QTiffHandler::option(ImageOption option) const
TIFFGetField(tiff, TIFFTAG_IMAGEWIDTH, &width);
TIFFGetField(tiff, TIFFTAG_IMAGELENGTH, &height);
imageSize = QSize(width, height);
+ TIFFClose(tiff);
}
device()->seek(pos);
if (imageSize.isValid())
diff --git a/src/gui/image/qxbmhandler.cpp b/src/gui/image/qxbmhandler.cpp
index 0dd4e99106..f9c2e0c203 100644
--- a/src/gui/image/qxbmhandler.cpp
+++ b/src/gui/image/qxbmhandler.cpp
@@ -66,27 +66,36 @@ static inline int hex2byte(register char *p)
static bool read_xbm_header(QIODevice *device, int& w, int& h)
{
const int buflen = 300;
+ const int maxlen = 4096;
char buf[buflen + 1];
QRegExp r1(QLatin1String("^#define[ \t]+[a-zA-Z0-9._]+[ \t]+"));
QRegExp r2(QLatin1String("[0-9]+"));
qint64 readBytes = 0;
+ qint64 totalReadBytes = 0;
- // "#define .._width <num>"
- readBytes = device->readLine(buf, buflen);
- if (readBytes <= 0)
- return false;
- buf[readBytes - 1] = '\0';
+ buf[0] = '\0';
// skip initial comment, if any
- while (buf[0] != '#' && (readBytes = device->readLine( buf, buflen )) > 0) {}
+ while (buf[0] != '#') {
+ readBytes = device->readLine(buf, buflen);
+
+ // if readBytes >= buflen, it's very probably not a C file
+ if (readBytes <= 0 || readBytes >= buflen -1)
+ return false;
+
+ // limit xbm headers to the first 4k in the file to prevent
+ // excessive reads on non-xbm files
+ totalReadBytes += readBytes;
+ if (totalReadBytes >= maxlen)
+ return false;
+ }
- if (readBytes <= 0)
- return false;
buf[readBytes - 1] = '\0';
QString sbuf;
sbuf = QString::fromLatin1(buf);
+ // "#define .._width <num>"
if (r1.indexIn(sbuf) == 0 &&
r2.indexIn(sbuf, r1.matchedLength()) == r1.matchedLength())
w = QByteArray(&buf[r1.matchedLength()]).trimmed().toInt();
diff --git a/src/gui/image/qxpmhandler.cpp b/src/gui/image/qxpmhandler.cpp
index b97afd30fb..453100c010 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/inputmethod/qinputcontextfactory.cpp b/src/gui/inputmethod/qinputcontextfactory.cpp
index 865c1b2440..afe5095103 100644
--- a/src/gui/inputmethod/qinputcontextfactory.cpp
+++ b/src/gui/inputmethod/qinputcontextfactory.cpp
@@ -205,7 +205,7 @@ QStringList QInputContextFactory::keys()
This function contains pure Symbian exception handling code for
getting S60 language list.
- Returned object ownership is transfered to caller.
+ Returned object ownership is transferred to caller.
*/
static CAknInputLanguageList* s60LangListL()
{
@@ -224,7 +224,7 @@ static CAknInputLanguageList* s60LangListL()
\internal
This function utility function return S60 language list.
- Returned object ownership is transfered to caller.
+ Returned object ownership is transferred to caller.
*/
static CAknInputLanguageList* s60LangList()
{
diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp
index 4ffd28407e..acc8debdc3 100644
--- a/src/gui/itemviews/qabstractitemview.cpp
+++ b/src/gui/itemviews/qabstractitemview.cpp
@@ -827,7 +827,7 @@ QVariant QAbstractItemView::inputMethodQuery(Qt::InputMethodQuery query) const
deleted. QAbstractItemView does not take ownership of \a delegate.
\note If a delegate has been assigned to both a row and a column, the row
- delegate (i.e., this delegate) will take presedence and manage the
+ delegate (i.e., this delegate) will take precedence and manage the
intersecting cell index.
\warning You should not share the same instance of a delegate between views.
@@ -885,7 +885,7 @@ QAbstractItemDelegate *QAbstractItemView::itemDelegateForRow(int row) const
deleted. QAbstractItemView does not take ownership of \a delegate.
\note If a delegate has been assigned to both a row and a column, the row
- delegate will take presedence and manage the intersecting cell index.
+ delegate will take precedence and manage the intersecting cell index.
\warning You should not share the same instance of a delegate between views.
Doing so can cause incorrect or unintuitive editing behavior since each
@@ -1166,7 +1166,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.
*/
@@ -1192,7 +1192,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.
*/
@@ -1275,7 +1275,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)
@@ -1363,7 +1363,7 @@ bool QAbstractItemView::dragEnabled() const
Note that the model used needs to provide support for drag and drop operations.
- \sa setDragDropMode() {Using drag & drop with item views}
+ \sa setDragDropMode() {Using drag and drop with item views}
*/
/*!
diff --git a/src/gui/itemviews/qdirmodel.cpp b/src/gui/itemviews/qdirmodel.cpp
index 48599bc477..cb6f81e33f 100644
--- a/src/gui/itemviews/qdirmodel.cpp
+++ b/src/gui/itemviews/qdirmodel.cpp
@@ -201,25 +201,6 @@ void QDirModelPrivate::invalidate()
QDirModel keeps a cache with file information. The cache needs to be
updated with refresh().
- A directory model that displays the contents of a default directory
- is usually constructed with a parent object:
-
- \snippet doc/src/snippets/shareddirmodel/main.cpp 2
-
- A tree view can be used to display the contents of the model
-
- \snippet doc/src/snippets/shareddirmodel/main.cpp 4
-
- and the contents of a particular directory can be displayed by
- setting the tree view's root index:
-
- \snippet doc/src/snippets/shareddirmodel/main.cpp 7
-
- The view's root index can be used to control how much of a
- hierarchical model is displayed. QDirModel provides a convenience
- function that returns a suitable model index for a path to a
- directory within the model.
-
QDirModel can be accessed using the standard interface provided by
QAbstractItemModel, but it also provides some convenience functions
that are specific to a directory model. The fileInfo() and isDir()
diff --git a/src/gui/itemviews/qitemselectionmodel.cpp b/src/gui/itemviews/qitemselectionmodel.cpp
index f848321b75..e2a16b12c1 100644
--- a/src/gui/itemviews/qitemselectionmodel.cpp
+++ b/src/gui/itemviews/qitemselectionmodel.cpp
@@ -772,7 +772,7 @@ void QItemSelectionModelPrivate::_q_layoutAboutToBeChanged()
savedPersistentIndexes.clear();
savedPersistentCurrentIndexes.clear();
- // optimisation for when all indexes are selected
+ // optimization for when all indexes are selected
// (only if there is lots of items (1000) because this is not entirely correct)
if (ranges.isEmpty() && currentSelection.count() == 1) {
QItemSelectionRange range = currentSelection.first();
@@ -1059,6 +1059,19 @@ void QItemSelectionModel::select(const QItemSelection &selection, QItemSelection
// store old selection
QItemSelection sel = selection;
+ // If d->ranges is non-empty when the source model is reset the persistent indexes
+ // it contains will be invalid. We can't clear them in a modelReset slot because that might already
+ // be too late if another model observer is connected to the same modelReset slot and is invoked first
+ // it might call select() on this selection model before any such QItemSelectionModelPrivate::_q_modelReset() slot
+ // is invoked, so it would not be cleared yet. We clear it invalid ranges in it here.
+ QItemSelection::iterator it = d->ranges.begin();
+ while (it != d->ranges.end()) {
+ if (!it->isValid())
+ it = d->ranges.erase(it);
+ else
+ ++it;
+ }
+
QItemSelection old = d->ranges;
old.merge(d->currentSelection, d->currentCommand);
diff --git a/src/gui/itemviews/qstandarditemmodel.cpp b/src/gui/itemviews/qstandarditemmodel.cpp
index 767b5a9069..7d20bbb64a 100644
--- a/src/gui/itemviews/qstandarditemmodel.cpp
+++ b/src/gui/itemviews/qstandarditemmodel.cpp
@@ -1130,7 +1130,7 @@ Qt::ItemFlags QStandardItem::flags() const
meaning that the user can interact with the item; if \a enabled is false, the
user cannot interact with the item.
- This flag takes presedence over the other item flags; e.g. if an item is not
+ This flag takes precedence over the other item flags; e.g. if an item is not
enabled, it cannot be selected by the user, even if the Qt::ItemIsSelectable
flag has been set.
diff --git a/src/gui/itemviews/qtableview.cpp b/src/gui/itemviews/qtableview.cpp
index 4492e53fcc..dc45854ef0 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()) {
@@ -1411,7 +1411,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.cpp b/src/gui/kernel/qapplication.cpp
index 3323fbc27e..a4ae46b2ac 100644
--- a/src/gui/kernel/qapplication.cpp
+++ b/src/gui/kernel/qapplication.cpp
@@ -497,7 +497,7 @@ bool QApplicationPrivate::fade_tooltip = false;
bool QApplicationPrivate::animate_toolbox = false;
bool QApplicationPrivate::widgetCount = false;
bool QApplicationPrivate::load_testability = false;
-QString QApplicationPrivate::qmljsDebugArguments;
+QString QApplicationPrivate::qmljs_debug_arguments;
#ifdef QT_KEYPAD_NAVIGATION
# ifdef Q_OS_SYMBIAN
Qt::NavigationMode QApplicationPrivate::navigationMode = Qt::NavigationModeKeypadDirectional;
@@ -570,7 +570,7 @@ void QApplicationPrivate::process_cmdline()
if (arg == "-qdevel" || arg == "-qdebug") {
// obsolete argument
} else if (arg.indexOf("-qmljsdebugger=", 0) != -1) {
- qmljsDebugArguments = QString::fromLocal8Bit(arg.right(arg.length() - 15));
+ qmljs_debug_arguments = QString::fromLocal8Bit(arg.right(arg.length() - 15));
} else if (arg.indexOf("-style=", 0) != -1) {
s = QString::fromLocal8Bit(arg.right(arg.length() - 7).toLower());
} else if (arg == "-style" && i < argc-1) {
@@ -1430,10 +1430,18 @@ QStyle *QApplication::style()
// Compile-time search for default style
//
QString style;
- if (!QApplicationPrivate::styleOverride.isEmpty())
+#ifdef QT_BUILD_INTERNAL
+ QString envStyle = QString::fromLocal8Bit(qgetenv("QT_STYLE_OVERRIDE"));
+#else
+ QString envStyle;
+#endif
+ if (!QApplicationPrivate::styleOverride.isEmpty()) {
style = QApplicationPrivate::styleOverride;
- else
+ } else if (!envStyle.isEmpty()) {
+ style = envStyle;
+ } else {
style = QApplicationPrivate::desktopStyleKey();
+ }
QStyle *&app_style = QApplicationPrivate::app_style;
app_style = QStyleFactory::create(style);
@@ -6086,6 +6094,11 @@ QPixmap QApplicationPrivate::getPixmapCursor(Qt::CursorShape cshape)
return QPixmap();
}
+QString QApplicationPrivate::qmljsDebugArgumentsString()
+{
+ return qmljs_debug_arguments;
+}
+
QT_END_NAMESPACE
#include "moc_qapplication.cpp"
diff --git a/src/gui/kernel/qapplication_p.h b/src/gui/kernel/qapplication_p.h
index 9c5095d390..a0e14528a7 100644
--- a/src/gui/kernel/qapplication_p.h
+++ b/src/gui/kernel/qapplication_p.h
@@ -446,7 +446,8 @@ public:
static bool animate_toolbox;
static bool widgetCount; // Coupled with -widgetcount switch
static bool load_testability; // Coupled with -testability switch
- static QString qmljsDebugArguments; // a string containing arguments for js/qml debugging.
+ static QString qmljs_debug_arguments; // a string containing arguments for js/qml debugging.
+ static QString qmljsDebugArgumentsString(); // access string from other libraries
#ifdef Q_WS_MAC
static bool native_modal_dialog_active;
diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 5ff2fd4a80..85965633ce 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));
@@ -2055,6 +2055,17 @@ int QApplicationPrivate::symbianProcessWsEvent(const QSymbianEvent *symbianEvent
}
#endif
break;
+#ifdef Q_SYMBIAN_SUPPORTS_SURFACES
+ case EEventUser:
+ {
+ // GOOM is looking for candidates to kill so indicate that we are
+ // capable of cleaning up by handling this event
+ TInt32 *data = reinterpret_cast<TInt32 *>(event->EventData());
+ if (data[0] == EApaSystemEventShutdown && data[1] == KGoomMemoryLowEvent)
+ return 1;
+ }
+ break;
+#endif
default:
break;
}
diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp
index 78028eb1f4..10c4ed6f1b 100644
--- a/src/gui/kernel/qapplication_win.cpp
+++ b/src/gui/kernel/qapplication_win.cpp
@@ -3269,7 +3269,7 @@ bool QETWidget::translateMouseEvent(const MSG &msg)
if (type == QEvent::MouseButtonPress
&& QApplication::activePopupWidget() != activePopupWidget
&& replayPopupMouseEvent) {
- // the popup dissappeared. Replay the event
+ // the popup disappeared. Replay the event
QWidget* w = QApplication::widgetAt(gpos.x, gpos.y);
if (w && !QApplicationPrivate::isBlockedByModal(w)) {
Q_ASSERT(w->testAttribute(Qt::WA_WState_Created));
@@ -3506,7 +3506,7 @@ static void tabletInit(const quint64 uniqueId, const UINT csr_type, HCTX hTab)
}
#endif // QT_NO_TABLETEVENT
-// Update the "dynamic" informations of a cursor device (pen, airbrush, etc).
+// Update the "dynamic" information of a cursor device (pen, airbrush, etc).
// The dynamic information is the information of QTabletDeviceData that can change
// in time (eraser or pen if a device is turned around).
#ifndef QT_NO_TABLETEVENT
diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp
index d8fb74cae9..7c68170f57 100644
--- a/src/gui/kernel/qapplication_x11.cpp
+++ b/src/gui/kernel/qapplication_x11.cpp
@@ -2334,6 +2334,30 @@ void qt_init(QApplicationPrivate *priv, int,
X11->desktopEnvironment = DE_4DWM;
break;
}
+
+ if (XGetWindowProperty(X11->display, QX11Info::appRootWindow(),
+ ATOM(_NET_SUPPORTING_WM_CHECK),
+ 0, 1024, False, XA_WINDOW, &type,
+ &format, &length, &after, &data) == Success) {
+ if (type == XA_WINDOW && format == 32) {
+ Window windowManagerWindow = *((Window*) data);
+ XFree(data);
+ data = 0;
+
+ if (windowManagerWindow != XNone) {
+ Atom utf8atom = ATOM(UTF8_STRING);
+ if (XGetWindowProperty(QX11Info::display(), windowManagerWindow, ATOM(_NET_WM_NAME),
+ 0, 1024, False, utf8atom, &type,
+ &format, &length, &after, &data) == Success) {
+ if (type == utf8atom && format == 8) {
+ if (qstrcmp((const char *)data, "MCompositor") == 0)
+ X11->desktopEnvironment = DE_MEEGO_COMPOSITOR;
+ }
+ }
+ }
+ }
+ }
+
} while(0);
if (data)
@@ -3742,7 +3766,7 @@ int QApplication::x11ProcessEvent(XEvent* event)
// toplevel reparented...
QWidget *newparent = QWidget::find(event->xreparent.parent);
if (! newparent || (newparent->windowType() == Qt::Desktop)) {
- // we dont' know about the new parent (or we've been
+ // we don't know about the new parent (or we've been
// reparented to root), perhaps a window manager
// has been (re)started? reset the focus model to unknown
X11->focus_model = QX11Data::FM_Unknown;
diff --git a/src/gui/kernel/qclipboard_mac.cpp b/src/gui/kernel/qclipboard_mac.cpp
index 49a6cc81d7..482a3a3be4 100644
--- a/src/gui/kernel/qclipboard_mac.cpp
+++ b/src/gui/kernel/qclipboard_mac.cpp
@@ -623,7 +623,7 @@ QMacPasteboard::sync() const
#ifdef DEBUG_PASTEBOARD
if(fromGlobal)
- qDebug("Pasteboard: Syncronize!");
+ qDebug("Pasteboard: Synchronize!");
#endif
return fromGlobal;
}
diff --git a/src/gui/kernel/qclipboard_s60.cpp b/src/gui/kernel/qclipboard_s60.cpp
index f07e06652f..73280b264e 100644
--- a/src/gui/kernel/qclipboard_s60.cpp
+++ b/src/gui/kernel/qclipboard_s60.cpp
@@ -50,16 +50,18 @@
#include "qwidget.h"
#include "qevent.h"
#include "private/qcore_symbian_p.h"
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include "txtclipboard.h"
+#endif
+#include "txtetext.h"
#include <QtDebug>
// Symbian's clipboard
#include <baclipb.h>
QT_BEGIN_NAMESPACE
-//### Mime Type mapping to UIDs
-
const TUid KQtCbDataStream = {0x2001B2DD};
-
+const TInt KPlainTextBegin = 0;
class QClipboardData
{
@@ -141,7 +143,6 @@ void writeToStreamLX(const QMimeData* aData, RWriteStream& aStream)
{
HBufC* stringData = TPtrC(reinterpret_cast<const TUint16*>((*iter).utf16())).AllocLC();
QByteArray ba = aData->data((*iter));
- qDebug() << "copy to clipboard mime: " << *iter << " data: " << ba;
// mime type
aStream << TCardinality(stringData->Size());
aStream << *(stringData);
@@ -152,6 +153,43 @@ void writeToStreamLX(const QMimeData* aData, RWriteStream& aStream)
}
}
+void writeToSymbianStoreLX(const QMimeData* aData, CClipboard* clipboard)
+{
+ // This function both leaves and throws exceptions. There must be no destructor
+ // dependencies between cleanup styles, and no cleanup stack dependencies on stacked objects.
+ if (aData->hasText()) {
+ CPlainText* text = CPlainText::NewL();
+ CleanupStack::PushL(text);
+
+ TPtrC textPtr(qt_QString2TPtrC(aData->text()));
+ text->InsertL(KPlainTextBegin, textPtr);
+ text->CopyToStoreL(clipboard->Store(), clipboard->StreamDictionary(),
+ KPlainTextBegin, textPtr.Length());
+ CleanupStack::PopAndDestroy(text);
+ }
+}
+
+void readSymbianStoreLX(QMimeData* aData, CClipboard* clipboard)
+{
+ // This function both leaves and throws exceptions. There must be no destructor
+ // dependencies between cleanup styles, and no cleanup stack dependencies on stacked objects.
+ CPlainText* text = CPlainText::NewL();
+ CleanupStack::PushL(text);
+ TInt dataLength = text->PasteFromStoreL(clipboard->Store(), clipboard->StreamDictionary(),
+ KPlainTextBegin);
+ if (dataLength == 0) {
+ User::Leave(KErrNotFound);
+ }
+ HBufC* hBuf = HBufC::NewL(dataLength);
+ TPtr buf = hBuf->Des();
+ text->Extract(buf, KPlainTextBegin, dataLength);
+
+ QString string = qt_TDesC2QString(buf);
+ CleanupStack::PopAndDestroy(text);
+
+ aData->setText(string);
+}
+
void readFromStreamLX(QMimeData* aData,RReadStream& aStream)
{
// This function both leaves and throws exceptions. There must be no destructor
@@ -174,7 +212,6 @@ void readFromStreamLX(QMimeData* aData,RReadStream& aStream)
ba.reserve(dataSize);
aStream.ReadL(reinterpret_cast<uchar*>(ba.data_ptr()->data),dataSize);
ba.data_ptr()->size = dataSize;
- qDebug() << "paste from clipboard mime: " << mimeType << " data: " << ba;
aData->setData(mimeType,ba);
}
}
@@ -192,23 +229,42 @@ const QMimeData* QClipboard::mimeData(Mode mode) const
{
if (mode != Clipboard) return 0;
QClipboardData *d = clipboardData();
+ bool dataExists(false);
if (d)
{
TRAPD(err,{
RFs fs = qt_s60GetRFs();
CClipboard* cb = CClipboard::NewForReadingLC(fs);
Q_ASSERT(cb);
+ //stream for qt
RStoreReadStream stream;
TStreamId stid = (cb->StreamDictionary()).At(KQtCbDataStream);
- stream.OpenLC(cb->Store(),stid);
- QT_TRYCATCH_LEAVING(readFromStreamLX(d->source(),stream));
- CleanupStack::PopAndDestroy(2,cb);
- return d->source();
+ if (stid != 0) {
+ stream.OpenLC(cb->Store(),stid);
+ QT_TRYCATCH_LEAVING(readFromStreamLX(d->source(),stream));
+ CleanupStack::PopAndDestroy(&stream);
+ dataExists = true;
+ }
+ else {
+ //symbian clipboard
+ RStoreReadStream symbianStream;
+ TStreamId symbianStId = (cb->StreamDictionary()).At(KClipboardUidTypePlainText);
+ if (symbianStId != 0) {
+ symbianStream.OpenLC(cb->Store(), symbianStId);
+ QT_TRYCATCH_LEAVING(readSymbianStoreLX(d->source(), cb));
+ CleanupStack::PopAndDestroy(&symbianStream);
+ dataExists = true;
+ }
+ }
+ CleanupStack::PopAndDestroy(cb);
});
if (err != KErrNone){
qDebug()<< "clipboard is empty/err: " << err;
}
+ if (dataExists) {
+ return d->source();
+ }
}
return 0;
}
@@ -223,6 +279,7 @@ void QClipboard::setMimeData(QMimeData* src, Mode mode)
TRAPD(err,{
RFs fs = qt_s60GetRFs();
CClipboard* cb = CClipboard::NewForWritingLC(fs);
+ //stream for qt
RStoreWriteStream stream;
TStreamId stid = stream.CreateLC(cb->Store());
QT_TRYCATCH_LEAVING(writeToStreamLX(src,stream));
@@ -230,7 +287,14 @@ void QClipboard::setMimeData(QMimeData* src, Mode mode)
stream.CommitL();
(cb->StreamDictionary()).AssignL(KQtCbDataStream,stid);
cb->CommitL();
- CleanupStack::PopAndDestroy(2,cb);
+
+ //stream for symbian
+ RStoreWriteStream symbianStream;
+ TStreamId symbianStId = symbianStream.CreateLC(cb->Store());
+ QT_TRYCATCH_LEAVING(writeToSymbianStoreLX(src, cb));
+ (cb->StreamDictionary()).AssignL(KClipboardUidTypePlainText, symbianStId);
+ cb->CommitL();
+ CleanupStack::PopAndDestroy(3,cb);
});
if (err != KErrNone){
qDebug()<< "clipboard write err :" << err;
diff --git a/src/gui/kernel/qclipboard_win.cpp b/src/gui/kernel/qclipboard_win.cpp
index 63ca9e59cf..c2e29fdb25 100644
--- a/src/gui/kernel/qclipboard_win.cpp
+++ b/src/gui/kernel/qclipboard_win.cpp
@@ -141,7 +141,7 @@ public:
clipBoardViewer = new QWidget();
clipBoardViewer->createWinId();
clipBoardViewer->setObjectName(QLatin1String("internal clipboard owner"));
- // We dont need this internal widget to appear in QApplication::topLevelWidgets()
+ // We don't need this internal widget to appear in QApplication::topLevelWidgets()
if (QWidgetPrivate::allWidgets)
QWidgetPrivate::allWidgets->remove(clipBoardViewer);
}
diff --git a/src/gui/kernel/qclipboard_x11.cpp b/src/gui/kernel/qclipboard_x11.cpp
index 55548efd27..62c861d916 100644
--- a/src/gui/kernel/qclipboard_x11.cpp
+++ b/src/gui/kernel/qclipboard_x11.cpp
@@ -132,7 +132,7 @@ void setupOwner()
requestor = new QWidget(0);
requestor->createWinId();
requestor->setObjectName(QLatin1String("internal clipboard requestor"));
- // We dont need this internal widgets to appear in QApplication::topLevelWidgets()
+ // We don't need this internal widgets to appear in QApplication::topLevelWidgets()
if (QWidgetPrivate::allWidgets) {
QWidgetPrivate::allWidgets->remove(owner);
QWidgetPrivate::allWidgets->remove(requestor);
@@ -769,7 +769,7 @@ QByteArray QX11Data::clipboardReadIncrementalProperty(Window win, Atom property,
delete requestor;
requestor = new QWidget(0);
requestor->setObjectName(QLatin1String("internal clipboard requestor"));
- // We dont need this internal widget to appear in QApplication::topLevelWidgets()
+ // We don't need this internal widget to appear in QApplication::topLevelWidgets()
if (QWidgetPrivate::allWidgets)
QWidgetPrivate::allWidgets->remove(requestor);
diff --git a/src/gui/kernel/qcocoamenuloader_mac.mm b/src/gui/kernel/qcocoamenuloader_mac.mm
index 8d38f4511d..4bf6ed9832 100644
--- a/src/gui/kernel/qcocoamenuloader_mac.mm
+++ b/src/gui/kernel/qcocoamenuloader_mac.mm
@@ -89,7 +89,7 @@ QT_USE_NAMESPACE
- (void)ensureAppMenuInMenu:(NSMenu *)menu
{
// The application menu is the menu in the menu bar that contains the
- // 'Quit' item. When changing menu bar (e.g when swithing between
+ // 'Quit' item. When changing menu bar (e.g when switching between
// windows with different menu bars), we never recreate this menu, but
// instead pull it out the current menu bar and place into the new one:
NSMenu *mainMenu = [NSApp mainMenu];
diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm
index a552ce7f6f..f759fe0cc0 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -939,10 +939,6 @@ static int qCocoaViewCount = 0;
}
}
#endif //QT_NO_WHEELEVENT
-
- if (!wheelOK) {
- return [super scrollWheel:theEvent];
- }
}
- (void)tabletProximity:(NSEvent *)tabletEvent
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp
index eade02e7a3..7fdb92680d 100644
--- a/src/gui/kernel/qevent.cpp
+++ b/src/gui/kernel/qevent.cpp
@@ -1970,7 +1970,7 @@ void QInputMethodEvent::setCommitString(const QString &commitString, int replace
is usually given by a wheel on 4D mouse. If the device does not support a
Z-axis, pass zero here.
- The \a tangentialPressure paramater contins the tangential pressure of an air
+ The \a tangentialPressure parameter contins the tangential pressure of an air
brush. If the device does not support tangential pressure, pass 0 here.
\a rotation contains the device's rotation in degrees. 4D mice support
diff --git a/src/gui/kernel/qeventdispatcher_s60.cpp b/src/gui/kernel/qeventdispatcher_s60.cpp
index bc787b81fb..77ebd0de42 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 d2f327c4fc..c14fef0643 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/qgesture.cpp b/src/gui/kernel/qgesture.cpp
index 5725a228a0..e3339c4d83 100644
--- a/src/gui/kernel/qgesture.cpp
+++ b/src/gui/kernel/qgesture.cpp
@@ -260,6 +260,27 @@ QGesture::GestureCancelPolicy QGesture::gestureCancelPolicy() const
/*!
\property QPanGesture::acceleration
+ \brief the acceleration in the motion of the touch point for this gesture
+*/
+
+/*!
+ \property QPanGesture::horizontalVelocity
+ \brief the horizontal component of the motion of the touch point for this
+ gesture
+ \since 4.7.1
+ \internal
+
+ \sa verticalVelocity, acceleration
+*/
+
+/*!
+ \property QPanGesture::verticalVelocity
+ \brief the vertical component of the motion of the touch point for this
+ gesture
+ \since 4.7.1
+ \internal
+
+ \sa horizontalVelocity, acceleration
*/
/*!
@@ -633,6 +654,12 @@ void QPinchGesture::setRotationAngle(qreal value)
*/
/*!
+ \property QSwipeGesture::velocity
+ \since 4.7.1
+ \internal
+*/
+
+/*!
\internal
*/
QSwipeGesture::QSwipeGesture(QObject *parent)
diff --git a/src/gui/kernel/qgesturemanager.cpp b/src/gui/kernel/qgesturemanager.cpp
index 6dd8127690..46450b197f 100644
--- a/src/gui/kernel/qgesturemanager.cpp
+++ b/src/gui/kernel/qgesturemanager.cpp
@@ -171,9 +171,13 @@ 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);
+ m_gesturesToDelete.insert(g);
}
- qDeleteAll(gestures);
iter = m_objectGestures.erase(iter);
} else {
++iter;
@@ -185,7 +189,7 @@ void QGestureManager::cleanupCachedGestures(QObject *target, Qt::GestureType typ
QGesture *QGestureManager::getState(QObject *object, QGestureRecognizer *recognizer, Qt::GestureType type)
{
// if the widget is being deleted we should be careful not to
- // create a new state, as it will create QWeakPointer which doesnt work
+ // create a new state, as it will create QWeakPointer which doesn't work
// from the destructor.
if (object->isWidgetType()) {
if (static_cast<QWidget *>(object)->d_func()->data.in_destructor)
@@ -381,6 +385,11 @@ bool QGestureManager::filterEventThroughContexts(const QMultiMap<QObject *,
recycle(gesture);
m_gestureTargets.remove(gesture);
}
+
+ //Clean up the Gestures
+ qDeleteAll(m_gesturesToDelete);
+ m_gesturesToDelete.clear();
+
return ret;
}
@@ -443,7 +452,8 @@ void QGestureManager::cancelGesturesForChildren(QGesture *original)
void QGestureManager::cleanupGesturesForRemovedRecognizer(QGesture *gesture)
{
QGestureRecognizer *recognizer = m_deletedRecognizers.value(gesture);
- Q_ASSERT(recognizer);
+ if(!recognizer) //The Gesture is removed while in the even loop, so the recognizers for this gestures was removed
+ return;
m_deletedRecognizers.remove(gesture);
if (m_deletedRecognizers.keys(recognizer).isEmpty()) {
// no more active gestures, cleanup!
diff --git a/src/gui/kernel/qgesturemanager_p.h b/src/gui/kernel/qgesturemanager_p.h
index 0d84b67434..92310f5f0b 100644
--- a/src/gui/kernel/qgesturemanager_p.h
+++ b/src/gui/kernel/qgesturemanager_p.h
@@ -101,7 +101,7 @@ private:
NotGesture,
MaybeGesture // this means timers are up and waiting for some
// more events, and input events are handled by
- // gesture recognizer explicitely
+ // gesture recognizer explicitly
} state;
struct ObjectGesture
@@ -130,6 +130,7 @@ private:
QHash<QGestureRecognizer *, QSet<QGesture *> > m_obsoleteGestures;
QHash<QGesture *, QGestureRecognizer *> m_deletedRecognizers;
+ QSet<QGesture *> m_gesturesToDelete;
void cleanupGesturesForRemovedRecognizer(QGesture *gesture);
QGesture *getState(QObject *widget, QGestureRecognizer *recognizer,
diff --git a/src/gui/kernel/qguiplatformplugin.cpp b/src/gui/kernel/qguiplatformplugin.cpp
index 2dd251bcd7..c80c6d36e2 100644
--- a/src/gui/kernel/qguiplatformplugin.cpp
+++ b/src/gui/kernel/qguiplatformplugin.cpp
@@ -187,7 +187,7 @@ QString QGuiPlatformPlugin::styleName()
#endif
}
-/* return an aditional default palette (only work on X11) */
+/* return an additional default palette (only work on X11) */
QPalette QGuiPlatformPlugin::palette()
{
#ifdef Q_WS_X11
diff --git a/src/gui/kernel/qkeymapper_mac.cpp b/src/gui/kernel/qkeymapper_mac.cpp
index 3dc6afc88a..b8f08bfcd4 100644
--- a/src/gui/kernel/qkeymapper_mac.cpp
+++ b/src/gui/kernel/qkeymapper_mac.cpp
@@ -749,7 +749,7 @@ bool QKeyMapperPrivate::translateKeyEvent(QWidget *widget, EventHandlerCallRef e
}
return false;
}
- // Once we process the key down , we dont need to send the saved event again from
+ // Once we process the key down , we don't need to send the saved event again from
// kEventTextInputUnicodeForKeyEvent, so clear it.
if (currentContext && ekind == kEventRawKeyDown) {
QMacInputContext *context = qobject_cast<QMacInputContext*>(currentContext);
@@ -765,7 +765,7 @@ bool QKeyMapperPrivate::translateKeyEvent(QWidget *widget, EventHandlerCallRef e
&handled_event) == false)
return handled_event;
QString text(ourChar);
- /* This is actually wrong - but unfortunatly it is the best that can be
+ /* This is actually wrong - but unfortunately it is the best that can be
done for now because of the Control/Meta mapping problems */
if (modifiers & (Qt::ControlModifier | Qt::MetaModifier)
&& !qApp->testAttribute(Qt::AA_MacDontSwapCtrlAndMeta)) {
diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
index 50b2354156..bf3eddde23 100644
--- a/src/gui/kernel/qkeysequence.cpp
+++ b/src/gui/kernel/qkeysequence.cpp
@@ -1105,7 +1105,7 @@ QKeySequence QKeySequence::mnemonic(const QString &text)
#else
found = true;
} else {
- qWarning("QKeySequence::mnemonic: \"%s\" contains multiple occurences of '&'", qPrintable(text));
+ qWarning("QKeySequence::mnemonic: \"%s\" contains multiple occurrences of '&'", qPrintable(text));
#endif
}
}
diff --git a/src/gui/kernel/qmotifdnd_x11.cpp b/src/gui/kernel/qmotifdnd_x11.cpp
index 333445501d..3b79129468 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/qsoftkeymanager_s60.cpp b/src/gui/kernel/qsoftkeymanager_s60.cpp
index fee1580082..c81d75f6af 100644
--- a/src/gui/kernel/qsoftkeymanager_s60.cpp
+++ b/src/gui/kernel/qsoftkeymanager_s60.cpp
@@ -265,7 +265,7 @@ bool QSoftKeyManagerPrivateS60::setSoftkeyImage(CEikButtonGroupContainer *cba,
CFbsBitmap* nMask = softkeyAlpha.toSymbianCFbsBitmap();
CEikImage* myimage = new (ELeave) CEikImage;
- myimage->SetPicture( nBitmap, nMask ); // nBitmap and nMask ownership transfered
+ myimage->SetPicture( nBitmap, nMask ); // nBitmap and nMask ownership transferred
EikSoftkeyImage::SetImage(cba, *myimage, left); // Takes myimage ownership
cbaHasImage[position] = true;
diff --git a/src/gui/kernel/qsound_s60.cpp b/src/gui/kernel/qsound_s60.cpp
index df2830bc4e..accfce2dd0 100644
--- a/src/gui/kernel/qsound_s60.cpp
+++ b/src/gui/kernel/qsound_s60.cpp
@@ -150,7 +150,7 @@ void QAuServerS60::playCompleted(QAuBucketS60 *bucket, int error)
} else {
// We don't have a way to inform about errors -> just decrement loops
// in order that QSound::isFinished will return true;
- while (decLoop(sound)) {}
+ while (decLoop(sound) > 0) {}
if (staticPlayingSounds.removeAll(sound))
delete sound;
}
diff --git a/src/gui/kernel/qstandardgestures.cpp b/src/gui/kernel/qstandardgestures.cpp
index 893ba2b282..48b7ac1c35 100644
--- a/src/gui/kernel/qstandardgestures.cpp
+++ b/src/gui/kernel/qstandardgestures.cpp
@@ -194,29 +194,28 @@ QGestureRecognizer::Result QPinchGestureRecognizer::recognize(QGesture *state,
d->hotSpot = p1.screenPos();
d->isHotSpotSet = true;
+ QPointF centerPoint = (p1.screenPos() + p2.screenPos()) / 2.0;
if (d->isNewSequence) {
d->startPosition[0] = p1.screenPos();
d->startPosition[1] = p2.screenPos();
+ d->lastCenterPoint = centerPoint;
+ } else {
+ d->lastCenterPoint = d->centerPoint;
}
- QLineF line(p1.screenPos(), p2.screenPos());
- QLineF lastLine(p1.lastScreenPos(), p2.lastScreenPos());
- QLineF tmp(line);
- tmp.setLength(line.length() / 2.);
- QPointF centerPoint = tmp.p2();
-
- d->lastCenterPoint = d->centerPoint;
d->centerPoint = centerPoint;
- d->changeFlags |= QPinchGesture::CenterPointChanged;
- const qreal scaleFactor = line.length() / lastLine.length();
+ d->changeFlags |= QPinchGesture::CenterPointChanged;
if (d->isNewSequence) {
- d->lastScaleFactor = scaleFactor;
+ d->scaleFactor = 1.0;
+ d->lastScaleFactor = 1.0;
} else {
d->lastScaleFactor = d->scaleFactor;
+ QLineF line(p1.screenPos(), p2.screenPos());
+ QLineF lastLine(p1.lastScreenPos(), p2.lastScreenPos());
+ d->scaleFactor = line.length() / lastLine.length();
}
- d->scaleFactor = scaleFactor;
- d->totalScaleFactor = d->totalScaleFactor * scaleFactor;
+ d->totalScaleFactor = d->totalScaleFactor * d->scaleFactor;
d->changeFlags |= QPinchGesture::ScaleFactorChanged;
qreal angle = QLineF(p1.screenPos(), p2.screenPos()).angle();
@@ -227,7 +226,7 @@ QGestureRecognizer::Result QPinchGestureRecognizer::recognize(QGesture *state,
startAngle -= 360;
const qreal rotationAngle = startAngle - angle;
if (d->isNewSequence)
- d->lastRotationAngle = rotationAngle;
+ d->lastRotationAngle = 0.0;
else
d->lastRotationAngle = d->rotationAngle;
d->rotationAngle = rotationAngle;
diff --git a/src/gui/kernel/qt_x11_p.h b/src/gui/kernel/qt_x11_p.h
index d62d9c3d48..56c8094819 100644
--- a/src/gui/kernel/qt_x11_p.h
+++ b/src/gui/kernel/qt_x11_p.h
@@ -338,6 +338,7 @@ enum DesktopEnvironment {
DE_KDE,
DE_GNOME,
DE_CDE,
+ DE_MEEGO_COMPOSITOR,
DE_4DWM
};
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index f7c795e34a..c5f64e5d52 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -68,6 +68,7 @@
# include "qt_cocoa_helpers_mac_p.h"
# include "qmainwindow.h"
# include "qtoolbar.h"
+# include <private/qmainwindowlayout_p.h>
#endif
#if defined(Q_WS_QWS)
# include "qwsdisplay_qws.h"
@@ -235,6 +236,17 @@ void QWidgetBackingStoreTracker::unregisterWidget(QWidget *w)
}
}
+/*!
+ \internal
+ Recursively remove widget and all of its descendents.
+ */
+void QWidgetBackingStoreTracker::unregisterWidgetSubtree(QWidget *widget)
+{
+ unregisterWidget(widget);
+ foreach (QObject *child, widget->children())
+ if (QWidget *childWidget = qobject_cast<QWidget *>(child))
+ unregisterWidgetSubtree(childWidget);
+}
QWidgetPrivate::QWidgetPrivate(int version)
: QObjectPrivate(version)
@@ -325,15 +337,27 @@ QWidgetPrivate::~QWidgetPrivate()
#endif //QT_NO_GRAPHICSEFFECT
}
+class QDummyWindowSurface : public QWindowSurface
+{
+public:
+ QDummyWindowSurface(QWidget *window) : QWindowSurface(window) {}
+ QPaintDevice *paintDevice() { return window(); }
+ void flush(QWidget *, const QRegion &, const QPoint &) {}
+};
+
QWindowSurface *QWidgetPrivate::createDefaultWindowSurface()
{
Q_Q(QWidget);
QWindowSurface *surface;
- if (QApplicationPrivate::graphicsSystem())
- surface = QApplicationPrivate::graphicsSystem()->createWindowSurface(q);
- else
- surface = createDefaultWindowSurface_sys();
+ if (q->property("_q_DummyWindowSurface").toBool()) {
+ surface = new QDummyWindowSurface(q);
+ } else {
+ if (QApplicationPrivate::graphicsSystem())
+ surface = QApplicationPrivate::graphicsSystem()->createWindowSurface(q);
+ else
+ surface = createDefaultWindowSurface_sys();
+ }
return surface;
}
@@ -1649,13 +1673,8 @@ void QWidgetPrivate::setWinId(WId id) // set widget identifier
}
if(oldWinId != id) {
- // Do not emit an event when the old winId is destroyed. This only
- // happens (a) during widget destruction, and (b) immediately prior
- // to creation of a new winId, for example as a result of re-parenting.
- if(id != 0) {
- QEvent e(QEvent::WinIdChange);
- QCoreApplication::sendEvent(q, &e);
- }
+ QEvent e(QEvent::WinIdChange);
+ QCoreApplication::sendEvent(q, &e);
}
}
@@ -3002,6 +3021,15 @@ bool QWidget::isFullScreen() const
*/
void QWidget::showFullScreen()
{
+#ifdef Q_WS_MAC
+ // If the unified toolbar is enabled, we have to disable it before going fullscreen.
+ QMainWindow *mainWindow = qobject_cast<QMainWindow*>(this);
+ if (mainWindow && mainWindow->unifiedTitleAndToolBarOnMac()) {
+ mainWindow->setUnifiedTitleAndToolBarOnMac(false);
+ QMainWindowLayout *mainLayout = qobject_cast<QMainWindowLayout*>(mainWindow->layout());
+ mainLayout->activateUnifiedToolbarAfterFullScreen = true;
+ }
+#endif // Q_WS_MAC
ensurePolished();
#ifdef QT3_SUPPORT
if (parent())
@@ -3034,6 +3062,18 @@ void QWidget::showMaximized()
setWindowState((windowState() & ~(Qt::WindowMinimized | Qt::WindowFullScreen))
| Qt::WindowMaximized);
+#ifdef Q_WS_MAC
+ // If the unified toolbar was enabled before going fullscreen, we have to enable it back.
+ QMainWindow *mainWindow = qobject_cast<QMainWindow*>(this);
+ if (mainWindow)
+ {
+ QMainWindowLayout *mainLayout = qobject_cast<QMainWindowLayout*>(mainWindow->layout());
+ if (mainLayout->activateUnifiedToolbarAfterFullScreen) {
+ mainWindow->setUnifiedTitleAndToolBarOnMac(true);
+ mainLayout->activateUnifiedToolbarAfterFullScreen = false;
+ }
+ }
+#endif // Q_WS_MAC
show();
}
@@ -3055,6 +3095,18 @@ void QWidget::showNormal()
setWindowState(windowState() & ~(Qt::WindowMinimized
| Qt::WindowMaximized
| Qt::WindowFullScreen));
+#ifdef Q_WS_MAC
+ // If the unified toolbar was enabled before going fullscreen, we have to enable it back.
+ QMainWindow *mainWindow = qobject_cast<QMainWindow*>(this);
+ if (mainWindow)
+ {
+ QMainWindowLayout *mainLayout = qobject_cast<QMainWindowLayout*>(mainWindow->layout());
+ if (mainLayout->activateUnifiedToolbarAfterFullScreen) {
+ mainWindow->setUnifiedTitleAndToolBarOnMac(true);
+ mainLayout->activateUnifiedToolbarAfterFullScreen = false;
+ }
+ }
+#endif // Q_WS_MAC
show();
}
@@ -8779,7 +8831,7 @@ void QWidget::mousePressEvent(QMouseEvent *event)
QWidget* w;
while ((w = QApplication::activePopupWidget()) && w != this){
w->close();
- if (QApplication::activePopupWidget() == w) // widget does not want to dissappear
+ if (QApplication::activePopupWidget() == w) // widget does not want to disappear
w->hide(); // hide at least
}
if (!rect().contains(event->pos())){
@@ -9248,7 +9300,7 @@ void QWidget::setInputMethodHints(Qt::InputMethodHints hints)
#ifndef QT_NO_IM
Q_D(QWidget);
d->imHints = hints;
- // Optimisation to update input context only it has already been created.
+ // Optimization to update input context only it has already been created.
if (d->ic || qApp->d_func()->inputContext) {
QInputContext *ic = inputContext();
if (ic)
@@ -9997,7 +10049,16 @@ void QWidget::setParent(QWidget *parent, Qt::WindowFlags f)
if (newParent && isAncestorOf(focusWidget()))
focusWidget()->clearFocus();
+ QTLWExtra *oldTopExtra = window()->d_func()->maybeTopData();
+ QWidgetBackingStoreTracker *oldBsTracker = oldTopExtra ? &oldTopExtra->backingStore : 0;
+
d->setParent_sys(parent, f);
+
+ QTLWExtra *topExtra = window()->d_func()->maybeTopData();
+ QWidgetBackingStoreTracker *bsTracker = topExtra ? &topExtra->backingStore : 0;
+ if (oldBsTracker && oldBsTracker != bsTracker)
+ oldBsTracker->unregisterWidgetSubtree(this);
+
if (desktopWidget)
parent = 0;
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm
index 1e2aa9f848..997419b5e9 100644
--- a/src/gui/kernel/qwidget_mac.mm
+++ b/src/gui/kernel/qwidget_mac.mm
@@ -2794,19 +2794,38 @@ void QWidgetPrivate::transferChildren()
#ifdef QT_MAC_USE_COCOA
void QWidgetPrivate::setSubWindowStacking(bool set)
{
+ // This will set/remove a visual relationship between parent and child on screen.
+ // The reason for doing this is to ensure that a child always stacks infront of
+ // its parent. Unfortunatly is turns out that [NSWindow addChildWindow] has
+ // several unwanted side-effects, one of them being the moving of a child when
+ // moving the parent, which we choose to accept. A way tougher side-effect is
+ // that Cocoa will hide the parent if you hide the child. And in the case of
+ // a tool window, since it will normally hide when you deactivate the
+ // application, Cocoa will hide the parent upon deactivate as well. The result often
+ // being no more visible windows on screen. So, to make a long story short, we only
+ // allow parent-child relationships between windows that both are either a plain window
+ // or a dialog.
+
Q_Q(QWidget);
- if (!q->isWindow() || !q->testAttribute(Qt::WA_WState_Created))
+ if (!q->isWindow())
+ return;
+ NSWindow *qwin = [qt_mac_nativeview_for(q) window];
+ if (!qwin)
+ return;
+ Qt::WindowType qtype = q->windowType();
+ if (set && !(qtype == Qt::Window || qtype == Qt::Dialog))
+ return;
+ if (set && ![qwin isVisible])
return;
if (QWidget *parent = q->parentWidget()) {
- if (parent->testAttribute(Qt::WA_WState_Created)) {
+ if (NSWindow *pwin = [qt_mac_nativeview_for(parent) window]) {
if (set) {
- if (parent->isVisible()) {
- NSWindow *childwin = qt_mac_window_for(q);
- [qt_mac_window_for(parent) addChildWindow:childwin ordered:NSWindowAbove];
- }
+ Qt::WindowType ptype = parent->window()->windowType();
+ if ([pwin isVisible] && (ptype == Qt::Window || ptype == Qt::Dialog) && ![qwin parentWindow])
+ [pwin addChildWindow:qwin ordered:NSWindowAbove];
} else {
- [qt_mac_window_for(parent) removeChildWindow:qt_mac_window_for(q)];
+ [pwin removeChildWindow:qwin];
}
}
}
@@ -2814,12 +2833,15 @@ void QWidgetPrivate::setSubWindowStacking(bool set)
QList<QWidget *> widgets = q->findChildren<QWidget *>();
for (int i=0; i<widgets.size(); ++i) {
QWidget *child = widgets.at(i);
- if (child->isWindow() && child->testAttribute(Qt::WA_WState_Created) && child->isVisibleTo(q)) {
- if (set) {
- NSWindow *childwin = qt_mac_window_for(child);
- [qt_mac_window_for(q) addChildWindow:childwin ordered:NSWindowAbove];
- } else {
- [qt_mac_window_for(q) removeChildWindow:qt_mac_window_for(child)];
+ if (child && child->isWindow()) {
+ if (NSWindow *cwin = [qt_mac_nativeview_for(child) window]) {
+ if (set) {
+ Qt::WindowType ctype = child->window()->windowType();
+ if ([cwin isVisible] && (ctype == Qt::Window || ctype == Qt::Dialog) && ![cwin parentWindow])
+ [qwin addChildWindow:cwin ordered:NSWindowAbove];
+ } else {
+ [qwin removeChildWindow:qt_mac_window_for(child)];
+ }
}
}
}
@@ -3442,7 +3464,6 @@ void QWidgetPrivate::show_sys()
#else
// sync the opacity value back (in case of a fade).
[window setAlphaValue:q->windowOpacity()];
- setSubWindowStacking(true);
QWidget *top = 0;
if (QApplicationPrivate::tryModalHelper(q, &top)) {
@@ -3461,6 +3482,7 @@ void QWidgetPrivate::show_sys()
[modalWin orderFront:window];
}
}
+ setSubWindowStacking(true);
#endif
if (q->windowType() == Qt::Popup) {
if (q->focusWidget())
diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h
index 6c89659d65..6a27469e34 100644
--- a/src/gui/kernel/qwidget_p.h
+++ b/src/gui/kernel/qwidget_p.h
@@ -122,6 +122,7 @@ public:
void registerWidget(QWidget *w);
void unregisterWidget(QWidget *w);
+ void unregisterWidgetSubtree(QWidget *w);
inline QWidgetBackingStore* data()
{
@@ -225,6 +226,7 @@ struct QTLWExtra {
#endif
#elif defined(Q_OS_SYMBIAN)
uint inExpose : 1; // Prevents drawing recursion
+ uint nativeWindowTransparencyEnabled : 1; // Tracks native window transparency
#endif
};
diff --git a/src/gui/kernel/qwidget_qws.cpp b/src/gui/kernel/qwidget_qws.cpp
index 31451362f1..c6cbbd067f 100644
--- a/src/gui/kernel/qwidget_qws.cpp
+++ b/src/gui/kernel/qwidget_qws.cpp
@@ -1017,6 +1017,30 @@ int QWidget::metric(PaintDeviceMetric m) const
return static_cast<QWidget *>(d->parent)->metric(m);
const QScreen *screen = d->getScreen();
return qRound(screen->height() / double(screen->physicalHeight() / 25.4));
+ } else if (m == PdmNumColors) {
+ QScreen *screen = d->getScreen();
+ int ret = screen->colorCount();
+ if (!ret) {
+ const int depth = qwsDisplay()->depth();
+ switch (depth) {
+ case 1:
+ ret = 2;
+ break;
+ case 8:
+ ret = 256;
+ break;
+ case 16:
+ ret = 65536;
+ break;
+ case 24:
+ ret = 16777216;
+ break;
+ case 32:
+ ret = 2147483647;
+ break;
+ }
+ }
+ return ret;
} else {
val = QPaintDevice::metric(m);// XXX
}
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp
index 9a451cee01..609307c275 100644
--- a/src/gui/kernel/qwidget_s60.cpp
+++ b/src/gui/kernel/qwidget_s60.cpp
@@ -57,7 +57,7 @@
#include <eikbtgpc.h>
#endif
-// This is necessary in order to be able to perform delayed invokation on slots
+// This is necessary in order to be able to perform delayed invocation on slots
// which take arguments of type WId. One example is
// QWidgetPrivate::_q_delayedDestroy, which is used to delay destruction of
// CCoeControl objects until after the CONE event handler has finished running.
@@ -544,7 +544,7 @@ void QWidgetPrivate::show_sys()
id->MakeVisible(true);
- if(q->isWindow())
+ if(q->isWindow()&&!q->testAttribute(Qt::WA_ShowWithoutActivating))
id->setFocusSafely(true);
}
@@ -577,7 +577,7 @@ void QWidgetPrivate::hide_sys()
QSymbianControl *id = static_cast<QSymbianControl *>(q->internalWinId());
if (id) {
- //Incorrect optimisation - for popup windows, Qt's focus is moved before
+ //Incorrect optimization - for popup windows, Qt's focus is moved before
//hide_sys is called, resulting in the popup window keeping its elevated
//position in the CONE control stack.
//This can result in keyboard focus being in an invisible widget in some
@@ -709,7 +709,8 @@ void QWidgetPrivate::setParent_sys(QWidget *parent, Qt::WindowFlags f)
// old_winid may not have received a 'not visible' visibility
// changed event before being destroyed; make sure that it is
// removed from the backing store's list of visible windows.
- S60->controlVisibilityChanged(old_winid, false);
+ if (old_winid)
+ S60->controlVisibilityChanged(old_winid, false);
setWinId(0);
@@ -766,17 +767,24 @@ void QWidgetPrivate::s60UpdateIsOpaque()
if (!q->testAttribute(Qt::WA_WState_Created) || !q->testAttribute(Qt::WA_TranslucentBackground))
return;
+ createTLExtra();
+
RWindow *const window = static_cast<RWindow *>(q->effectiveWinId()->DrawableWindow());
#ifdef Q_SYMBIAN_SEMITRANSPARENT_BG_SURFACE
window->SetSurfaceTransparency(!isOpaque);
+ extra->topextra->nativeWindowTransparencyEnabled = !isOpaque;
#else
if (!isOpaque) {
const TDisplayMode displayMode = static_cast<TDisplayMode>(window->SetRequiredDisplayMode(EColor16MA));
- if (window->SetTransparencyAlphaChannel() == KErrNone)
+ if (window->SetTransparencyAlphaChannel() == KErrNone) {
window->SetBackgroundColor(TRgb(255, 255, 255, 0));
- } else
+ extra->topextra->nativeWindowTransparencyEnabled = 1;
+ }
+ } else if (extra->topextra->nativeWindowTransparencyEnabled) {
window->SetTransparentRegion(TRegionFix<1>());
+ extra->topextra->nativeWindowTransparencyEnabled = 0;
+ }
#endif
}
@@ -935,6 +943,7 @@ void QWidgetPrivate::registerDropSite(bool /* on */)
void QWidgetPrivate::createTLSysExtra()
{
extra->topextra->inExpose = 0;
+ extra->topextra->nativeWindowTransparencyEnabled = 0;
}
void QWidgetPrivate::deleteTLSysExtra()
diff --git a/src/gui/kernel/qx11embed_x11.cpp b/src/gui/kernel/qx11embed_x11.cpp
index 9f1b1f8f3c..e6e3bfb9f3 100644
--- a/src/gui/kernel/qx11embed_x11.cpp
+++ b/src/gui/kernel/qx11embed_x11.cpp
@@ -1136,7 +1136,7 @@ void QX11EmbedContainer::paintEvent(QPaintEvent *)
/*! \internal
- Returns wether or not the windows' embedded flag is set.
+ Returns whether or not the windows' embedded flag is set.
*/
bool QX11EmbedContainerPrivate::isEmbedded() const
{
diff --git a/src/gui/painting/painting.pri b/src/gui/painting/painting.pri
index 793d380f8e..bd37d9f56e 100644
--- a/src/gui/painting/painting.pri
+++ b/src/gui/painting/painting.pri
@@ -234,13 +234,14 @@ embedded {
symbian {
- HEADERS += painting/qwindowsurface_s60_p.h
+ HEADERS += painting/qwindowsurface_s60_p.h \
+ painting/qdrawhelper_arm_simd_p.h
SOURCES += painting/qwindowsurface_s60.cpp
armccIfdefBlock = \
"$${LITERAL_HASH}if defined(ARMV6)" \
+ "MACRO QT_HAVE_ARM_SIMD" \
"SOURCEPATH painting" \
- "SOURCE qblendfunctions_armv6_rvct.s" \
- "SOURCE qdrawhelper_armv6_rvct.s" \
+ "SOURCE qdrawhelper_arm_simd.cpp" \
"$${LITERAL_HASH}endif"
MMP_RULES += armccIfdefBlock
diff --git a/src/gui/painting/qbackingstore.cpp b/src/gui/painting/qbackingstore.cpp
index ac9b99438e..8a1c154ab1 100644
--- a/src/gui/painting/qbackingstore.cpp
+++ b/src/gui/painting/qbackingstore.cpp
@@ -446,7 +446,7 @@ QRegion QWidgetBackingStore::dirtyRegion(QWidget *widget) const
/*!
Returns the static content inside the \a parent if non-zero; otherwise the static content
- for the entire backing store is returned. The content will be clipped to \a withingClipRect
+ for the entire backing store is returned. The content will be clipped to \a withinClipRect
if non-empty.
*/
QRegion QWidgetBackingStore::staticContents(QWidget *parent, const QRect &withinClipRect) const
diff --git a/src/gui/painting/qblendfunctions_armv6_rvct.s b/src/gui/painting/qblendfunctions_armv6_rvct.s
deleted file mode 100644
index 1e3faa98a3..0000000000
--- a/src/gui/painting/qblendfunctions_armv6_rvct.s
+++ /dev/null
@@ -1,222 +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 QtGui module of the Qt Toolkit.
-;**
-;** $QT_BEGIN_LICENSE:LGPL$
-;** No Commercial Usage
-;** This file contains pre-release code and may not be distributed.
-;** You may use this file in accordance with the terms and conditions
-;** contained in the Technology Preview License Agreement accompanying
-;** this package.
-;**
-;** GNU Lesser General Public License Usage
-;** Alternatively, this file may be used under the terms of the GNU Lesser
-;** General Public License version 2.1 as published by the Free Software
-;** Foundation and appearing in the file LICENSE.LGPL included in the
-;** packaging of this file. Please review the following information to
-;** ensure the GNU Lesser General Public License version 2.1 requirements
-;** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;**
-;** In addition, as a special exception, Nokia gives you certain additional
-;** rights. These rights are described in the Nokia Qt LGPL Exception
-;** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;**
-;** If you have questions regarding the use of this file, please contact
-;** Nokia at qt-info@nokia.com.
-;**
-;**
-;**
-;**
-;**
-;**
-;**
-;**
-;** $QT_END_LICENSE$
-;**
-;****************************************************************************
-
-;
-; W A R N I N G
-; -------------
-;
-; This file is not part of the Qt API. It exists purely as an
-; implementation detail. This header file may change from version to
-; version without notice, or even be removed.
-;
-; We mean it.
-;
-
-
- ARM
- PRESERVE8
-
- INCLUDE qdrawhelper_armv6_rvct.inc
-
-
-;-----------------------------------------------------------------------------
-; qt_blend_rgb32_on_rgb32_arm
-;
-; @brief
-;
-; @param dest Destination pixels (r0)
-; @param dbpl Destination bytes per line (r1)
-; @param src Source pixels (r2)
-; @param sbpl Source bytes per line (r3)
-; @param w Width (s0 -> r4)
-; @param h Height (s1 -> r5)
-; @param const_alpha Constant alpha (s2 -> r6)
-;
-;---------------------------------------------------------------------------
-qt_blend_rgb32_on_rgb32_armv6 Function
- stmfd sp!, {r4-r12, r14}
-
- ; read arguments off the stack
- add r8, sp, #10 * 4
- ldmia r8, {r9-r11}
-
- ; Reorganize registers
-
- mov r4, r10
- mov r5, r1
- mov r6, r3
-
- mov r1, r2
- mov r2, r9
- mov r3, r11
-
- ; Now we have registers
- ; @param dest Destination pixels (r0)
- ; @param src Source pixels (r1)
- ; @param w Width (r2)
- ; @param const_alpha Constant alpha (r3)
- ; @param h Height (r4)
- ; @param dbpl Destination bytes per line (r5)
- ; @param sbpl Source bytes per line (r6)
-
- cmp r3, #256 ; test if we have fully opaque constant alpha value
- bne rgb32_blend_const_alpha ; branch if not
-
-rgb32_blend_loop
-
- subs r4, r4, #1
- bmi rgb32_blend_exit ; while(h--)
-
-rgb321 PixCpySafe r0, r1, r2
-
- add r0, r0, r5 ; dest = dest + dbpl
- add r1, r1, r6 ; src = src + sbpl
-
- b rgb32_blend_loop
-
-
-rgb32_blend_const_alpha
-
- ;ldr r14, =ComponentHalf ; load 0x800080 to r14
- mov r14, #0x800000
- add r14, r14, #0x80
-
- sub r3, r3, #1 ; const_alpha -= 1;
-
-rgb32_blend_loop_const_alpha
-
- subs r4, r4, #1
- bmi rgb32_blend_exit ; while(h--)
-
-rgb322 BlendRowSafe PixelSourceOverConstAlpha
-
- add r0, r0, r5 ; dest = dest + dbpl
- add r1, r1, r6 ; src = src + sbpl
-
- b rgb32_blend_loop_const_alpha
-
-rgb32_blend_exit
-
- ldmfd sp!, {r4-r12, pc} ; pop and return
-
-
-
-;-----------------------------------------------------------------------------
-; qt_blend_argb32_on_argb32_arm
-;
-; @brief
-;
-; @param dest Destination pixels (r0)
-; @param dbpl Destination bytes per line (r1)
-; @param src Source pixels (r2)
-; @param sbpl Source bytes per line (r3)
-; @param w Width (s0 -> r4)
-; @param h Height (s1 -> r5)
-; @param const_alpha Constant alpha (s2 -> r6)
-;
-;---------------------------------------------------------------------------
-qt_blend_argb32_on_argb32_armv6 Function
- stmfd sp!, {r4-r12, r14}
-
- ; read arguments off the stack
- add r8, sp, #10 * 4
- ldmia r8, {r9-r11}
-
- ; Reorganize registers
-
- mov r4, r10
- mov r5, r1
- mov r6, r3
-
- mov r1, r2
- mov r2, r9
- mov r3, r11
-
- ; Now we have registers
- ; @param dest Destination pixels (r0)
- ; @param src Source pixels (r1)
- ; @param w Width (r2)
- ; @param const_alpha Constant alpha (r3)
- ; @param h Height (r4)
- ; @param dbpl Destination bytes per line (r5)
- ; @param sbpl Source bytes per line (r6)
-
- ;ldr r14, =ComponentHalf ; load 0x800080 to r14
- mov r14, #0x800000
- add r14, r14, #0x80
-
- cmp r3, #256 ; test if we have fully opaque constant alpha value
- bne argb32_blend_const_alpha ; branch if not
-
-argb32_blend_loop
-
- subs r4, r4, #1
- bmi argb32_blend_exit ; while(h--)
-
-argb321 BlendRowSafe PixelSourceOver
-
- add r0, r0, r5 ; dest = dest + dbpl
- add r1, r1, r6 ; src = src + sbpl
-
- b argb32_blend_loop
-
-argb32_blend_const_alpha
-
- sub r3, r3, #1 ; const_alpha -= 1;
-
-argb32_blend_loop_const_alpha
-
- subs r4, r4, #1
- bmi argb32_blend_exit ; while(h--)
-
-argb322 BlendRowSafe PixelSourceOverConstAlpha
-
- add r0, r0, r5 ; dest = dest + dbpl
- add r1, r1, r6 ; src = src + sbpl
-
- b argb32_blend_loop_const_alpha
-
-argb32_blend_exit
-
- ldmfd sp!, {r4-r12, pc} ; pop and return
-
-
- END ; File end
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index 5f190ba1ce..a4ab2783ae 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -43,7 +43,7 @@
#include <private/qpaintengine_raster_p.h>
#include <private/qpainter_p.h>
#include <private/qdrawhelper_x86_p.h>
-#include <private/qdrawhelper_armv6_p.h>
+#include <private/qdrawhelper_arm_simd_p.h>
#include <private/qdrawhelper_neon_p.h>
#include <private/qmath_p.h>
#include <qmath.h>
@@ -7678,96 +7678,6 @@ static void qt_memfill16_setup(quint16 *dest, quint16 value, int count);
qt_memfill32_func qt_memfill32 = qt_memfill32_setup;
qt_memfill16_func qt_memfill16 = qt_memfill16_setup;
-#if defined(Q_CC_RVCT) && defined(QT_HAVE_ARMV6)
-// Move these to qdrawhelper_arm.c when all
-// functions are implemented using arm assembly.
-static CompositionFunctionSolid qt_functionForModeSolid_ARMv6[numCompositionFunctions] = {
- comp_func_solid_SourceOver,
- comp_func_solid_DestinationOver,
- comp_func_solid_Clear,
- comp_func_solid_Source,
- comp_func_solid_Destination,
- comp_func_solid_SourceIn,
- comp_func_solid_DestinationIn,
- comp_func_solid_SourceOut,
- comp_func_solid_DestinationOut,
- comp_func_solid_SourceAtop,
- comp_func_solid_DestinationAtop,
- comp_func_solid_XOR,
- comp_func_solid_Plus,
- comp_func_solid_Multiply,
- comp_func_solid_Screen,
- comp_func_solid_Overlay,
- comp_func_solid_Darken,
- comp_func_solid_Lighten,
- comp_func_solid_ColorDodge,
- comp_func_solid_ColorBurn,
- comp_func_solid_HardLight,
- comp_func_solid_SoftLight,
- comp_func_solid_Difference,
- comp_func_solid_Exclusion,
- rasterop_solid_SourceOrDestination,
- rasterop_solid_SourceAndDestination,
- rasterop_solid_SourceXorDestination,
- rasterop_solid_NotSourceAndNotDestination,
- rasterop_solid_NotSourceOrNotDestination,
- rasterop_solid_NotSourceXorDestination,
- rasterop_solid_NotSource,
- rasterop_solid_NotSourceAndDestination,
- rasterop_solid_SourceAndNotDestination
-};
-
-static CompositionFunction qt_functionForMode_ARMv6[numCompositionFunctions] = {
- comp_func_SourceOver_armv6,
- comp_func_DestinationOver,
- comp_func_Clear,
- comp_func_Source_armv6,
- comp_func_Destination,
- comp_func_SourceIn,
- comp_func_DestinationIn,
- comp_func_SourceOut,
- comp_func_DestinationOut,
- comp_func_SourceAtop,
- comp_func_DestinationAtop,
- comp_func_XOR,
- comp_func_Plus,
- comp_func_Multiply,
- comp_func_Screen,
- comp_func_Overlay,
- comp_func_Darken,
- comp_func_Lighten,
- comp_func_ColorDodge,
- comp_func_ColorBurn,
- comp_func_HardLight,
- comp_func_SoftLight,
- comp_func_Difference,
- comp_func_Exclusion,
- rasterop_SourceOrDestination,
- rasterop_SourceAndDestination,
- rasterop_SourceXorDestination,
- rasterop_NotSourceAndNotDestination,
- rasterop_NotSourceOrNotDestination,
- rasterop_NotSourceXorDestination,
- rasterop_NotSource,
- rasterop_NotSourceAndDestination,
- rasterop_SourceAndNotDestination
-};
-
-static void qt_blend_color_argb_armv6(int count, const QSpan *spans, void *userData)
-{
- QSpanData *data = reinterpret_cast<QSpanData *>(userData);
-
- CompositionFunctionSolid func = qt_functionForModeSolid_ARMv6[data->rasterBuffer->compositionMode];
- while (count--) {
- uint *target = ((uint *)data->rasterBuffer->scanLine(spans->y)) + spans->x;
- func(target, spans->len, data->solid.color, spans->coverage);
- ++spans;
- }
-}
-
-#endif // Q_CC_RVCT && QT_HAVE_ARMV6
-
-
void qInitDrawhelperAsm()
{
@@ -7938,46 +7848,39 @@ void qInitDrawhelperAsm()
}
#endif // IWMMXT
-#if defined(Q_CC_RVCT) && defined(QT_HAVE_ARMV6)
- functionForModeAsm = qt_functionForMode_ARMv6;
- functionForModeSolidAsm = qt_functionForModeSolid_ARMv6;
+#if defined(QT_HAVE_ARM_SIMD)
+ qBlendFunctions[QImage::Format_RGB32][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_arm_simd;
+ qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_arm_simd;
+ qBlendFunctions[QImage::Format_RGB32][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_arm_simd;
+ qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_arm_simd;
+#elif defined(QT_HAVE_NEON)
+ if (features & NEON) {
+ qBlendFunctions[QImage::Format_RGB32][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_neon;
+ qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_neon;
+ qBlendFunctions[QImage::Format_RGB32][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_neon;
+ qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_neon;
+ qBlendFunctions[QImage::Format_RGB16][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_rgb16_neon;
+ qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB16] = qt_blend_rgb16_on_argb32_neon;
+ qBlendFunctions[QImage::Format_RGB16][QImage::Format_RGB16] = qt_blend_rgb16_on_rgb16_neon;
+
+ qScaleFunctions[QImage::Format_RGB16][QImage::Format_ARGB32_Premultiplied] = qt_scale_image_argb32_on_rgb16_neon;
+ qScaleFunctions[QImage::Format_RGB16][QImage::Format_RGB16] = qt_scale_image_rgb16_on_rgb16_neon;
- qt_memfill32 = qt_memfill32_armv6;
+ qTransformFunctions[QImage::Format_RGB16][QImage::Format_ARGB32_Premultiplied] = qt_transform_image_argb32_on_rgb16_neon;
+ qTransformFunctions[QImage::Format_RGB16][QImage::Format_RGB16] = qt_transform_image_rgb16_on_rgb16_neon;
- qDrawHelper[QImage::Format_ARGB32_Premultiplied].blendColor = qt_blend_color_argb_armv6;
+ qDrawHelper[QImage::Format_RGB16].alphamapBlit = qt_alphamapblit_quint16_neon;
- qBlendFunctions[QImage::Format_RGB32][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_armv6;
- qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_armv6;
- qBlendFunctions[QImage::Format_RGB32][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_armv6;
- qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_armv6;
-#elif defined(QT_HAVE_NEON)
- if (features & NEON) {
- qBlendFunctions[QImage::Format_RGB32][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_neon;
- qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB32] = qt_blend_rgb32_on_rgb32_neon;
- qBlendFunctions[QImage::Format_RGB32][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_neon;
- qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_argb32_neon;
- qBlendFunctions[QImage::Format_RGB16][QImage::Format_ARGB32_Premultiplied] = qt_blend_argb32_on_rgb16_neon;
- qBlendFunctions[QImage::Format_ARGB32_Premultiplied][QImage::Format_RGB16] = qt_blend_rgb16_on_argb32_neon;
- qBlendFunctions[QImage::Format_RGB16][QImage::Format_RGB16] = qt_blend_rgb16_on_rgb16_neon;
-
- qScaleFunctions[QImage::Format_RGB16][QImage::Format_ARGB32_Premultiplied] = qt_scale_image_argb32_on_rgb16_neon;
- qScaleFunctions[QImage::Format_RGB16][QImage::Format_RGB16] = qt_scale_image_rgb16_on_rgb16_neon;
-
- qTransformFunctions[QImage::Format_RGB16][QImage::Format_ARGB32_Premultiplied] = qt_transform_image_argb32_on_rgb16_neon;
- qTransformFunctions[QImage::Format_RGB16][QImage::Format_RGB16] = qt_transform_image_rgb16_on_rgb16_neon;
-
- qDrawHelper[QImage::Format_RGB16].alphamapBlit = qt_alphamapblit_quint16_neon;
-
- functionForMode_C[QPainter::CompositionMode_SourceOver] = qt_blend_argb32_on_argb32_scanline_neon;
- functionForModeSolid_C[QPainter::CompositionMode_SourceOver] = comp_func_solid_SourceOver_neon;
- functionForMode_C[QPainter::CompositionMode_Plus] = comp_func_Plus_neon;
- destFetchProc[QImage::Format_RGB16] = qt_destFetchRGB16_neon;
- destStoreProc[QImage::Format_RGB16] = qt_destStoreRGB16_neon;
-
- qMemRotateFunctions[QImage::Format_RGB16][0] = qt_memrotate90_16_neon;
- qMemRotateFunctions[QImage::Format_RGB16][2] = qt_memrotate270_16_neon;
- qt_memfill32 = qt_memfill32_neon;
- }
+ functionForMode_C[QPainter::CompositionMode_SourceOver] = qt_blend_argb32_on_argb32_scanline_neon;
+ functionForModeSolid_C[QPainter::CompositionMode_SourceOver] = comp_func_solid_SourceOver_neon;
+ functionForMode_C[QPainter::CompositionMode_Plus] = comp_func_Plus_neon;
+ destFetchProc[QImage::Format_RGB16] = qt_destFetchRGB16_neon;
+ destStoreProc[QImage::Format_RGB16] = qt_destStoreRGB16_neon;
+
+ qMemRotateFunctions[QImage::Format_RGB16][0] = qt_memrotate90_16_neon;
+ qMemRotateFunctions[QImage::Format_RGB16][2] = qt_memrotate270_16_neon;
+ qt_memfill32 = qt_memfill32_neon;
+ }
#endif
if (functionForModeSolidAsm) {
diff --git a/src/gui/painting/qdrawhelper_arm_simd.cpp b/src/gui/painting/qdrawhelper_arm_simd.cpp
new file mode 100644
index 0000000000..2a5f5e4302
--- /dev/null
+++ b/src/gui/painting/qdrawhelper_arm_simd.cpp
@@ -0,0 +1,332 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qdrawhelper_arm_simd_p.h"
+
+#include <private/qpaintengine_raster_p.h>
+#include <private/qblendfunctions_p.h>
+
+#ifdef QT_HAVE_ARM_SIMD
+
+#if defined(Q_OS_SYMBIAN)
+#if !defined(__SWITCH_TO_ARM)
+#ifdef __MARM_THUMB__
+#ifndef __ARMCC__
+#define __SWITCH_TO_ARM asm("push {r0} ");\
+ asm("add r0, pc, #4 ");\
+ asm("bx r0 ");\
+ asm("nop ");\
+ asm(".align 2 ");\
+ asm(".code 32 ");\
+ asm("ldr r0, [sp], #4 ")
+#define __END_ARM asm(".code 16 ")
+#else
+#define __SWITCH_TO_ARM asm(".code 32 ");
+#define __END_ARM
+#endif // __ARMCC__
+#else
+#define __SWITCH_TO_ARM
+#define __END_ARM
+#endif //__MARM_THUMB__
+#endif
+#endif
+
+#if defined(Q_OS_SYMBIAN) && defined(Q_CC_RVCT)
+__asm void qt_blend_argb32_on_argb32_arm_simd(uchar *destPixels, int dbpl,
+ const uchar *srcPixels, int sbpl,
+ int w, int h,
+ int const_alpha)
+{
+#ifndef __ARMCC__
+ __SWITCH_TO_ARM;
+#else
+ CODE32
+#endif // __ARMCC__
+
+ stmfd sp!, {r4-r12, r14}
+
+ // read arguments off the stack
+ add r8, sp, #10 * 4
+ ldmia r8, {r4-r6}
+
+ // adjust dbpl and sbpl
+ mov r14, #4
+ mul r14, r4, r14
+ sub r1, r1, r14
+ sub r3, r3, r14
+
+ // load 0xFF00FF00 to r12
+ mov r12, #0xFF000000
+ add r12, r12, #0xFF00
+
+ // load 0x800080 to r14
+ mov r14, #0x800000
+ add r14, r14, #0x80
+
+ /*
+ Registers:
+ r0 dst
+ r1 dbpl
+ r2 src
+ r3 sbpl
+ r4 w
+ r5 h
+ r6 const_alpha
+ r12 0xFF0000
+ r14 0x800080
+ */
+
+ cmp r6, #256 //test if we have fully opaque constant alpha value
+ bne argb32constalpha // branch if not
+
+argb32_next_row
+
+ mov r7, r4
+
+argb32_next_pixel
+
+ ldr r8, [r2], #4 // load src pixel
+
+ // Negate r8 and extract src alpha
+ mvn r11, r8 // bitwise not
+ uxtb r11, r11, ror #24
+
+ cmp r11, #0 // test for full src opacity (negated)
+ beq argb32_no_blend
+
+ cmp r11, #255 // test for full src transparency (negated)
+ addeq r0, #4
+ beq argb32_nop
+
+ ldr r9, [r0] // load dst pixel
+
+ // blend
+ uxtb16 r10, r9
+ uxtb16 r6, r9, ror #8
+ mla r10, r11, r10, r14
+ mla r9, r6, r11, r14
+ uxtab16 r10, r10, r10, ror #8
+ uxtab16 r9, r9, r9, ror #8
+ and r9, r9, r12
+ uxtab16 r10, r9, r10, ror #8
+
+ uqadd8 r8, r10, r8
+
+argb32_no_blend
+
+ str r8, [r0], #4
+
+argb32_nop
+
+ subs r7, r7, #1
+ bgt argb32_next_pixel
+
+ add r0, r0, r1 // dest = dest + dbpl
+ add r2, r2, r3 // src = src + sbpl
+
+ subs r5, r5, #1
+ bgt argb32_next_row
+
+ b argb32_blend_exit
+
+argb32constalpha
+
+ cmp r6, #0
+ beq argb32_blend_exit
+
+ ; const_alpha = (const_alpha * 255) >> 8;
+ mov r11, #255
+ mul r6, r6, r11
+ mov r11, r6, lsr #8
+
+argb32constalpha_next_row
+
+ mov r7, r4
+
+argb32constalpha_next_pixel
+
+ ldr r9, [r2], #4 // load src pixel
+
+ // blend
+ uxtb16 r10, r9
+ uxtb16 r6, r9, ror #8
+ mla r10, r11, r10, r14
+ mla r9, r6, r11, r14
+ uxtab16 r10, r10, r10, ror #8
+ uxtab16 r9, r9, r9, ror #8
+ and r9, r9, r12
+ uxtab16 r8, r9, r10, ror #8
+
+ ldr r9, [r0] // load dst pixel
+
+ // blend
+ uxtb16 r10, r9
+ uxtb16 r6, r9, ror #8
+
+ // Negate r11 and extract src alpha
+ mvn r9, r11 // bitwise not
+ uxtb r9, r9, ror #24
+
+ mla r10, r9, r10, r14
+ mla r9, r6, r9, r14
+ uxtab16 r10, r10, r10, ror #8
+ uxtab16 r9, r9, r9, ror #8
+ and r9, r9, r12
+ uxtab16 r10, r9, r10, ror #8
+
+ uqadd8 r8, r10, r8
+
+ str r8, [r0], #4
+
+ subs r7, r7, #1
+ bgt argb32constalpha_next_pixel
+
+ add r0, r0, r1 // dest = dest + dbpl
+ add r2, r2, r3 // src = src + sbpl
+
+ subs r5, r5, #1
+ bgt argb32constalpha_next_row
+
+argb32_blend_exit
+
+ // Restore registers
+ ldmfd sp!, {r4-r12, lr}
+ bx lr
+
+ __END_ARM
+}
+
+void qt_blend_rgb32_on_rgb32_arm_simd(uchar *destPixels, int dbpl,
+ const uchar *srcPixels, int sbpl,
+ int w, int h,
+ int const_alpha)
+{
+ if (const_alpha != 256) {
+ qt_blend_argb32_on_argb32_arm_simd(destPixels, dbpl, srcPixels, sbpl, w, h, const_alpha);
+ return;
+ }
+
+ const uint *src = (const uint *) srcPixels;
+ uint *dst = (uint *) destPixels;
+ if (w <= 64) {
+ for (int y=0; y<h; ++y) {
+ qt_memconvert(dst, src, w);
+ dst = (quint32 *)(((uchar *) dst) + dbpl);
+ src = (const quint32 *)(((const uchar *) src) + sbpl);
+ }
+ } else {
+ int len = w * 4;
+ for (int y=0; y<h; ++y) {
+ memcpy(dst, src, len);
+ dst = (quint32 *)(((uchar *) dst) + dbpl);
+ src = (const quint32 *)(((const uchar *) src) + sbpl);
+ }
+ }
+}
+
+#else // defined(Q_OS_SYMBIAN) && defined(Q_CC_RVCT)
+
+// TODO: add GNU assembler instructions and support for other platforms.
+// Default to C code for now
+
+void qt_blend_argb32_on_argb32_arm_simd(uchar *destPixels, int dbpl,
+ const uchar *srcPixels, int sbpl,
+ int w, int h,
+ int const_alpha)
+{
+ const uint *src = (const uint *) srcPixels;
+ uint *dst = (uint *) destPixels;
+ if (const_alpha == 256) {
+ for (int y=0; y<h; ++y) {
+ for (int x=0; x<w; ++x) {
+ uint s = src[x];
+ if (s >= 0xff000000)
+ dst[x] = s;
+ else if (s != 0)
+ dst[x] = s + BYTE_MUL(dst[x], qAlpha(~s));
+ }
+ dst = (quint32 *)(((uchar *) dst) + dbpl);
+ src = (const quint32 *)(((const uchar *) src) + sbpl);
+ }
+ } else if (const_alpha != 0) {
+ const_alpha = (const_alpha * 255) >> 8;
+ for (int y=0; y<h; ++y) {
+ for (int x=0; x<w; ++x) {
+ uint s = BYTE_MUL(src[x], const_alpha);
+ dst[x] = s + BYTE_MUL(dst[x], qAlpha(~s));
+ }
+ dst = (quint32 *)(((uchar *) dst) + dbpl);
+ src = (const quint32 *)(((const uchar *) src) + sbpl);
+ }
+ }
+}
+
+void qt_blend_rgb32_on_rgb32_arm_simd(uchar *destPixels, int dbpl,
+ const uchar *srcPixels, int sbpl,
+ int w, int h,
+ int const_alpha)
+{
+ if (const_alpha != 256) {
+ qt_blend_argb32_on_argb32_arm_simd(destPixels, dbpl, srcPixels, sbpl, w, h, const_alpha);
+ return;
+ }
+
+ const uint *src = (const uint *) srcPixels;
+ uint *dst = (uint *) destPixels;
+ if (w <= 64) {
+ for (int y=0; y<h; ++y) {
+ qt_memconvert(dst, src, w);
+ dst = (quint32 *)(((uchar *) dst) + dbpl);
+ src = (const quint32 *)(((const uchar *) src) + sbpl);
+ }
+ } else {
+ int len = w * 4;
+ for (int y=0; y<h; ++y) {
+ memcpy(dst, src, len);
+ dst = (quint32 *)(((uchar *) dst) + dbpl);
+ src = (const quint32 *)(((const uchar *) src) + sbpl);
+ }
+ }
+}
+
+#endif
+
+#endif // QT_HAVE_ARMV_SIMD
diff --git a/src/gui/painting/qdrawhelper_armv6_p.h b/src/gui/painting/qdrawhelper_arm_simd_p.h
index e58f8bbdc1..6c96a841a6 100644
--- a/src/gui/painting/qdrawhelper_armv6_p.h
+++ b/src/gui/painting/qdrawhelper_arm_simd_p.h
@@ -39,8 +39,8 @@
**
****************************************************************************/
-#ifndef QDRAWHELPER_ARMV6_P_H
-#define QDRAWHELPER_ARMV6_P_H
+#ifndef QDRAWHELPER_ARM_SIMD_P_H
+#define QDRAWHELPER_ARM_SIMD_P_H
//
// W A R N I N G
@@ -57,25 +57,20 @@
QT_BEGIN_NAMESPACE
-#if defined(Q_CC_RVCT) && defined(QT_HAVE_ARMV6)
+#if defined(QT_HAVE_ARM_SIMD)
-extern "C" void qt_blend_rgb32_on_rgb32_armv6(uchar *destPixels, int dbpl,
+void qt_blend_argb32_on_argb32_arm_simd(uchar *destPixels, int dbpl,
const uchar *srcPixels, int sbpl,
int w, int h,
int const_alpha);
-extern "C" void qt_blend_argb32_on_argb32_armv6(uchar *destPixels, int dbpl,
+void qt_blend_rgb32_on_rgb32_arm_simd(uchar *destPixels, int dbpl,
const uchar *srcPixels, int sbpl,
int w, int h,
int const_alpha);
-extern "C" void qt_memfill32_armv6(quint32 *dest, quint32 value, int count);
-
-extern "C" void comp_func_Source_armv6(uint *dest, const uint *src, int length, uint const_alpha);
-extern "C" void comp_func_SourceOver_armv6(uint *dest, const uint *src, int length, uint const_alpha);
-
-#endif // QT_HAVE_ARMV6
+#endif // QT_HAVE_ARM_SIMD
QT_END_NAMESPACE
-#endif // QDRAWHELPER_ARMV6_P_H
+#endif // QDRAWHELPER_ARM_SIMD_P_H
diff --git a/src/gui/painting/qdrawhelper_armv6_rvct.inc b/src/gui/painting/qdrawhelper_armv6_rvct.inc
deleted file mode 100644
index 8c6d803d17..0000000000
--- a/src/gui/painting/qdrawhelper_armv6_rvct.inc
+++ /dev/null
@@ -1,496 +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 QtGui module of the Qt Toolkit.
-;**
-;** $QT_BEGIN_LICENSE:LGPL$
-;** No Commercial Usage
-;** This file contains pre-release code and may not be distributed.
-;** You may use this file in accordance with the terms and conditions
-;** contained in the Technology Preview License Agreement accompanying
-;** this package.
-;**
-;** GNU Lesser General Public License Usage
-;** Alternatively, this file may be used under the terms of the GNU Lesser
-;** General Public License version 2.1 as published by the Free Software
-;** Foundation and appearing in the file LICENSE.LGPL included in the
-;** packaging of this file. Please review the following information to
-;** ensure the GNU Lesser General Public License version 2.1 requirements
-;** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;**
-;** In addition, as a special exception, Nokia gives you certain additional
-;** rights. These rights are described in the Nokia Qt LGPL Exception
-;** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;**
-;** If you have questions regarding the use of this file, please contact
-;** Nokia at qt-info@nokia.com.
-;**
-;**
-;**
-;**
-;**
-;**
-;**
-;**
-;** $QT_END_LICENSE$
-;**
-;****************************************************************************
-
-;
-; W A R N I N G
-; -------------
-;
-; This file is not part of the Qt API. It exists purely as an
-; implementation detail. This header file may change from version to
-; version without notice, or even be removed.
-;
-; We mean it.
-;
-
-;-----------------------------------------------------------------------------
-; Globals.
-; Earch marcro expects that caller has loaded 0x800080 to r14.
-;-----------------------------------------------------------------------------
-
-ComponentHalf EQU 0x800080
-
-;-----------------------------------------------------------------------------
-; ARM assembly implementations of accelerated graphics operations.
-;
-; Conventions:
-;
-; - r0 = Target buffer pointer
-; - r1 = Source buffer pointer
-; - r2 = Length of the buffer to blend
-; - r3 = Constant alpha for source buffer
-;
-;-----------------------------------------------------------------------------
-
-; A macro for transparently defining ARM functions
- MACRO
-$func Function
- AREA Function_$func, CODE
- GLOBAL $func
- ALIGN 4
- CODE32
-$func
- MEND
-
-
-;-----------------------------------------------------------------------------
-; Armv6 boosted implementation of BYTE_MUL(...) function found in qdrawhelper_p.h.
-;
-; @param dst Destination register where to store the result
-; @param x Value to multiply
-; @param a Multiplicator byte
-; @param r14 Component half 0x800080
-;
-; @note Trashes x, r8
-;-----------------------------------------------------------------------------
- MACRO
- ByteMul $dst, $x, $a
-
- ; static inline uint BYTE_MUL(uint x, uint a)
-
- ; uint r8 = (x & 0xff00ff) * a + 0x800080
- uxtb16 r8, $x ; r8 = r8 & 0x00FF00FF
- mla r8, r8, $a, r14
-
- ; x = ((r >> 8) & 0xff00ff) * a + 0x800080
- uxtb16 $x, $x, ror #8
- mla $x, $x, $a, r14
-
-
- ; r8 = (r8 + ((r8 >> 8) & 0xff00ff) ) >> 8
- ; r8 &= 0xff00ff
- uxtab16 r8, r8, r8, ror #8
- uxtb16 r8, r8, ror #8
-
- ; x = x + ((x >>8) & 0xff00ff)
- uxtab16 $x, $x, $x, ror #8
-
- ; x &= 0xff00ff00
- ; x |= r8
- uxtb16 $x, $x, ror #8
- orr $dst, r8, $x, lsl #8
-
- MEND
-
-;-----------------------------------------------------------------------------
-; Armv6 boosted implementation of INTERPOLATE_PIXEL_255(...) function found in
-; qdrawhelper_p.h.
-;
-; @param dst Destination register where to store the result
-; @param x First value to multiply
-; @param a Multiplicator byte for first value
-; @param y Second value to multiply
-; @param b Multiplicator byte for second value
-; @param r14 Component half 0x800080
-;
-;
-; @note Trashes x, r8, r14
-;-----------------------------------------------------------------------------
- MACRO
- InterpolatePixel255 $dst, $x, $a, $y, $b
-
- ; static inline uint INTERPOLATE_PIXEL_255(uint x, uint a, uint y, uint b)
-
- ; First calculate the parts where we need 0x800080
-
- ; uint r8 = (((x & 0xff00ff) * a) + 0x800080)
- uxtb16 r8, $x ; r8 = r8 & 0x00FF00FF
- mla r8, r8, $a, r14
-
- ; x = ((((x >> 8) & 0xff00ff) * a) + 0x800080)
- uxtb16 $x, $x, ror #8
- mla $x, $x, $a, r14
-
- ; Now we are trashing r14 to free it for other purposes
-
- ; uint r14 = (y & 0xff00ff) * b
- uxtb16 r14, $y ; r14 = y & 0x00FF00FF
- mul r14, r14, $b
-
- ; r8 = r8 + r14
- add r8, r8, r14
-
- ; r8 = (r8 + ((r8 >> 8) & 0xff00ff) ) >> 8
- ; r8 &= 0xff00ff
- uxtab16 r8, r8, r8, ror #8
- uxtb16 r8, r8, ror #8
-
- ; r14 = ((y >> 8) & 0xff00ff) * b
- uxtb16 r14, $y, ror #8 ; r14 = ((y >> 8) & 0xFF00FF)
- mul r14, r14, $b
-
- ; x = x + r14
- add $x, $x, r14
-
- ; x = x + ((x >>8) & 0xff00ff)
- uxtab16 $x, $x, $x, ror #8
-
- ; x &= 0xff00ff00
- ; x |= r8
- uxtb16 $x, $x, ror #8
- orr $dst, r8, $x, lsl #8
-
- MEND
-
-;-----------------------------------------------------------------------------
-;
-;-----------------------------------------------------------------------------
- MACRO
-$label Blend4Pixels $BlendPixel
-
- ; Blend first 4 pixels
-
- ldmia r1!, {r4-r7}
- ldm r0, {r9-r12}
-
-b4p1_$label $BlendPixel r9, r4, r3
-b4p2_$label $BlendPixel r10, r5, r3
-b4p3_$label $BlendPixel r11, r6, r3
-b4p4_$label $BlendPixel r12, r7, r3
-
- stmia r0!, {r9-r12}
-
- MEND
-
-;-----------------------------------------------------------------------------
-;
-;-----------------------------------------------------------------------------
- MACRO
-$label Blend8Pixels $BlendPixel
-
-b8p1_$label Blend4Pixels $BlendPixel
-b8p2_$label Blend4Pixels $BlendPixel
-
- MEND
-
-;-----------------------------------------------------------------------------
-;
-;-----------------------------------------------------------------------------
- MACRO
-$label Blend16Pixels $BlendPixel
-
-b16p1_$label Blend8Pixels $BlendPixel
-b16p2_$label Blend8Pixels $BlendPixel
-
- MEND
-
-;-----------------------------------------------------------------------------
-;
-;-----------------------------------------------------------------------------
- MACRO
-$label Blend32Pixels $BlendPixel
-
-b32p1_$label Blend16Pixels $BlendPixel
-b32p2_$label Blend16Pixels $BlendPixel
-
- MEND
-
-;-----------------------------------------------------------------------------
-; A macro for source over compositing one row of pixels and saving the results
-; to destination buffer.
-;
-; @param dest Destination buffer (r0)
-; @param src Source buffer (r1)
-; @param length Length (r2)
-; @param const_alpha Constant alpha (r3)
-; @param r14 Component Half (0x800080) (r14)
-;
-; @note Advances r0, r1
-; @note Trashes r2, r4-r12
-;-----------------------------------------------------------------------------
- MACRO
-$label BlendRow $BlendPixel
-
- pld [r1]
-
-bloop_$label
- ; Blend 32 pixels per loop iteration
- subs r2, r2, #32
- bmi b_remaining_$label
-
-brp1_$label Blend32Pixels $BlendPixel
-
- b bloop_$label
-
-b_remaining_$label
-
- ; Remaining 31 pixels
-
- addmi r2, r2, #32
-
- ; Blend 16 pixels
- tst r2, #16
- beq b_remaining8_$label
-
-brp2_$label Blend16Pixels $BlendPixel
-
-b_remaining8_$label
-
- ; Blend 8 pixels
- tst r2, #8
- beq b_remaining4_$label
-
-brp3_$label Blend8Pixels $BlendPixel
-
-b_remaining4_$label
-
- ; Blend 4 pixels
- tst r2, #4
- beq b_remaining3_$label
-
-brp4_$label Blend4Pixels $BlendPixel
-
-b_remaining3_$label
-
- ; Remaining 3 pixels
-
- tst r2, #2
- beq b_last_$label
-
- ldmia r1!, {r4-r5}
- ldm r0, {r9-r10}
-
-brp5_$label $BlendPixel r9, r4, r3
-brp6_$label $BlendPixel r10, r5, r3
-
- stmia r0!, {r9-r10}
-
-b_last_$label
-
- tst r2, #1
- beq bexit_$label
-
- ldr r4, [r1]
- ldr r9, [r0]
-
-bpl_$label $BlendPixel r9, r4, r3
-
- str r9, [r0]
-
-bexit_$label
-
- MEND
-
-;-----------------------------------------------------------------------------
-; A macro for source over compositing one row of pixels and saving the results
-; to destination buffer. Restores all registers.
-;
-; @param dest Destination buffer (r0)
-; @param src Source buffer (r1)
-; @param length Length (r2)
-; @param const_alpha Constant alpha (r3)
-; @param r14 Component Half (0x800080) (r14)
-;
-; @note Advances r0, r1
-; @note Trashes r2, r4-r12
-;-----------------------------------------------------------------------------
- MACRO
-$label BlendRowSafe $BlendPixel
-
- stmfd sp!, {r0-r6} ; Preserves registers only up to r6
-
-brs_$label BlendRow $BlendPixel
-
- ldmfd sp!, {r0-r6}
-
- MEND
-
-
-;-----------------------------------------------------------------------------
-; Pix Copy.
-; NOTE! Cache line size of ARM1136JF-S and ARM1136J-S is 32 bytes (8 pixels).
-;
-; @param dst Destination pixels (r0)
-; @param src Source pixels (r1)
-; @param len Length (r2)
-;
-; @note Trashes r3-r10
-;-----------------------------------------------------------------------------
- MACRO
-$label PixCpy $dst, $src, $len
-
- pld [$src]
-
-pcpy_loop_$label
- ; Copy 8 pixels per loop iteration
- pld [$src, #96]
- subs $len, $len, #8
- ldmgeia $src!, {r3-r10}
- stmgeia $dst!, {r3-r10}
- bgt pcpy_loop_$label
-
-pcpy_remaining_$label
-
- ; Copy up to 7 remaining pixels
-
- ; Copy 4 pixels
- tst $len, #4
- ldmneia $src!, {r3-r6}
- stmneia $dst!, {r3-r6}
-
- tst $len, #2
- ldmneia $src!, {r3-r4}
- stmneia $dst!, {r3-r4}
-
- tst $len, #1
- ldrne r3, [$src]
- strne r3, [$dst]
-
- MEND
-
-;-----------------------------------------------------------------------------
-; General Pix Copy. Maximum 8 pixels at time. Restores all registers.
-;
-; @param dst Destination pixels (r0)
-; @param src Source pixels (r1)
-; @param len Length (r2)
-;
-; @note Trashes r3-r10
-;-----------------------------------------------------------------------------
- MACRO
-$label PixCpySafe $dst, $src, $len
-
- stmfd sp!, {r0-r6} ; Preserves registers only up to r6
-
-pcs_$label PixCpy $dst, $src, $len
-
- ldmfd sp!, {r0-r6} ; pop
-
- MEND
-
-
-;-----------------------------------------------------------------------------
-; A macro for source over compositing one pixel and saving the result to
-; dst register.
-;
-; @param dst Destination register, must contain destination pixel upon entry
-; @param src Source register, must contain source pixel upon entry
-; @param const_alpha Constant source alpha
-; @param r14 Component half 0x800080
-;
-; @note Trashes const_alpha, r8
-;-----------------------------------------------------------------------------
- MACRO
-$label PixelSourceOver $dst, $src, $const_alpha
-
- ; Negate src and extract alpha
- mvn $const_alpha, $src ; bitwise not
- uxtb $const_alpha, $const_alpha, ror #24 ; r3 = ((r3 & 0xFF000000) >> 24);
-
- ;cmp $const_alpha, #255 ; test for full transparency ( negated )
- ;beq exit_$label
- cmp $const_alpha, #0 ; test for full opacity ( negated )
- moveq $dst, $src
- beq exit_$label
-
- ByteMul $dst, $dst, $const_alpha
- add $dst, $src, $dst
-
-exit_$label
- MEND
-
-;-----------------------------------------------------------------------------
-; A macro for source over compositing one pixel and saving the result to
-; dst register.
-;
-; @param dst Destination register, must contain destination pixel upon entry
-; @param src Source register, must contain source pixel upon entry
-; @param const_alpha Constant source alpha
-; @param r14 Component half 0x800080
-;
-; @note Trashes src, const_alpha, r8
-;-----------------------------------------------------------------------------
- MACRO
-$label PixelSourceOverConstAlpha $dst, $src, $const_alpha
-
- ; store alpha because we are going to trash it
- stmfd sp!, {$const_alpha}
-
- ByteMul $src, $src, $const_alpha
-
- ; Negate src and extract alpha
- mvn $const_alpha, $src ; bitwise not
- uxtb $const_alpha, $const_alpha, ror #24 ; r3 = ((r3 & 0xFF000000) >> 24);
-
- ByteMul $dst, $dst, $const_alpha
-
- add $dst, $src, $dst
-
- ; recover alpha
- ldmfd sp!, {$const_alpha}
-
- MEND
-
-;-----------------------------------------------------------------------------
-; A macro for source over compositing one pixel and saving the result to
-; a register.
-;
-; @param dst Destination register, must contain destination pixel upon entry
-; @param src Source register, must contain source pixel upon entry
-; @param const_alpha Constant source alpha
-; @param r14 Component half 0x800080
-;
-; @note Trashes src, r8
-;-----------------------------------------------------------------------------
- MACRO
-$label PixelSourceConstAlpha $dst, $src, $const_alpha
-
- ; store r2 and r14 because we are going to trash them
- stmfd sp!, {r2, r14}
-
- rsb r2, $const_alpha, #255
- InterpolatePixel255 $dst, $src, $const_alpha, $dst, r2
-
- ; recover r2 and r14
- ldmfd sp!, {r2, r14}
-
- MEND
-
- END ; File end
diff --git a/src/gui/painting/qdrawhelper_armv6_rvct.s b/src/gui/painting/qdrawhelper_armv6_rvct.s
deleted file mode 100644
index 180980a0ca..0000000000
--- a/src/gui/painting/qdrawhelper_armv6_rvct.s
+++ /dev/null
@@ -1,177 +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 QtGui module of the Qt Toolkit.
-;**
-;** $QT_BEGIN_LICENSE:LGPL$
-;** No Commercial Usage
-;** This file contains pre-release code and may not be distributed.
-;** You may use this file in accordance with the terms and conditions
-;** contained in the Technology Preview License Agreement accompanying
-;** this package.
-;**
-;** GNU Lesser General Public License Usage
-;** Alternatively, this file may be used under the terms of the GNU Lesser
-;** General Public License version 2.1 as published by the Free Software
-;** Foundation and appearing in the file LICENSE.LGPL included in the
-;** packaging of this file. Please review the following information to
-;** ensure the GNU Lesser General Public License version 2.1 requirements
-;** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-;**
-;** In addition, as a special exception, Nokia gives you certain additional
-;** rights. These rights are described in the Nokia Qt LGPL Exception
-;** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-;**
-;** If you have questions regarding the use of this file, please contact
-;** Nokia at qt-info@nokia.com.
-;**
-;**
-;**
-;**
-;**
-;**
-;**
-;**
-;** $QT_END_LICENSE$
-;**
-;****************************************************************************
-
-;
-; W A R N I N G
-; -------------
-;
-; This file is not part of the Qt API. It exists purely as an
-; implementation detail. This header file may change from version to
-; version without notice, or even be removed.
-;
-; We mean it.
-;
-
- ARM
- PRESERVE8
-
- INCLUDE qdrawhelper_armv6_rvct.inc
-
-;-----------------------------------------------------------------------------
-; qt_memfill32_armv6
-;
-; @brief Not yet in use!
-;
-; @param dest Destination buffer (r0)
-; @param value Value (r1)
-; @param count Count (r2)
-;
-;---------------------------------------------------------------------------
-qt_memfill32_armv6 Function
- stmfd sp!, {r4-r12, r14}
-
- mov r3, r1
- mov r4, r1
- mov r5, r1
- mov r6, r1
- mov r7, r1
- mov r8, r1
- mov r9, r1
-
-mfill_loop
- ; Fill 32 pixels per loop iteration
- subs r2, r2, #32
- stmgeia r0!, {r1, r3, r4, r5, r6, r7, r8, r9}
- stmgeia r0!, {r1, r3, r4, r5, r6, r7, r8, r9}
- stmgeia r0!, {r1, r3, r4, r5, r6, r7, r8, r9}
- stmgeia r0!, {r1, r3, r4, r5, r6, r7, r8, r9}
- bgt mfill_loop
-
-mfill_remaining
-
- ; Fill up to 31 remaining pixels
-
- ; Fill 16 pixels
- tst r2, #16
- stmneia r0!, {r1, r3, r4, r5, r6, r7, r8, r9}
- stmneia r0!, {r1, r3, r4, r5, r6, r7, r8, r9}
-
- ; Fill 8 pixels
- tst r2, #8
- stmneia r0!, {r1, r3, r4, r5, r6, r7, r8, r9}
-
- ; Fill 4 pixels
- tst r2, #4
- stmneia r0!, {r1, r3, r4, r5}
-
- ; Fill 2 pixels
- tst r2, #2
- stmneia r0!, {r1, r3}
-
- ; Fill last one
- tst r2, #1
- strne r1, [r0]
-
- ldmfd sp!, {r4-r12, pc} ; pop and return
-
-;-----------------------------------------------------------------------------
-; comp_func_Source_arm
-;
-; @brief
-;
-; @param dest Destination buffer (r0)
-; @param src Source buffer (r1)
-; @param length Length (r2)
-; @param const_alpha Constant alpha (r3)
-;
-;---------------------------------------------------------------------------
-comp_func_Source_armv6 Function
- stmfd sp!, {r4-r12, r14}
-
- cmp r3, #255 ; if(r3 == 255)
- bne src2 ; branch if not
-
-src1 PixCpy r0, r1, r2
-
- ldmfd sp!, {r4-r12, pc} ; pop and return
-
-src2
- ;ldr r14, =ComponentHalf ; load 0x800080 to r14
- mov r14, #0x800000
- add r14, r14, #0x80
-
-src22 BlendRow PixelSourceConstAlpha
-
- ldmfd sp!, {r4-r12, pc} ; pop and return
-
-;-----------------------------------------------------------------------------
-; comp_func_SourceOver_arm
-;
-; @brief
-;
-; @param dest Destination buffer (r0)
-; @param src Source buffer (r1)
-; @param length Length (r2)
-; @param const_alpha Constant alpha (r3)
-;
-;---------------------------------------------------------------------------
-comp_func_SourceOver_armv6 Function
- stmfd sp!, {r4-r12, r14}
-
- ;ldr r14, =ComponentHalf ; load 0x800080 to r14
- mov r14, #0x800000
- add r14, r14, #0x80
-
- cmp r3, #255 ; if(r3 == 255)
- bne srcovr2 ; branch if not
-
-srcovr1 BlendRow PixelSourceOver
-
- ldmfd sp!, {r4-r12, pc} ; pop and return
-
-srcovr2
-
-srcovr22 BlendRow PixelSourceOverConstAlpha
-
- ldmfd sp!, {r4-r12, pc} ; pop and return
-
-
- END ; File end
diff --git a/src/gui/painting/qgraphicssystem_qws.cpp b/src/gui/painting/qgraphicssystem_qws.cpp
index f5dab4b255..03a0d11ce9 100644
--- a/src/gui/painting/qgraphicssystem_qws.cpp
+++ b/src/gui/painting/qgraphicssystem_qws.cpp
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
QPixmapData *QWSGraphicsSystem::createPixmapData(QPixmapData::PixelType type) const
{
if (screen->pixmapDataFactory())
- return screen->pixmapDataFactory()->create(type); //### For 4.4 compatability
+ return screen->pixmapDataFactory()->create(type); //### For 4.4 compatibility
else
return new QRasterPixmapData(type);
}
diff --git a/src/gui/painting/qimagescale.cpp b/src/gui/painting/qimagescale.cpp
index 8580775770..738330824b 100644
--- a/src/gui/painting/qimagescale.cpp
+++ b/src/gui/painting/qimagescale.cpp
@@ -304,7 +304,7 @@ QImageScaleInfo* QImageScale::qimageCalcScaleInfo(const QImage &img,
return(isi);
}
-/* FIXME: NEED to optimise ScaleAARGBA - currently its "ok" but needs work*/
+/* FIXME: NEED to optimize ScaleAARGBA - currently its "ok" but needs work*/
/* scale by area sampling */
static void qt_qimageScaleAARGBA(QImageScaleInfo *isi, unsigned int *dest,
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index c92d291fca..89202ac816 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -40,6 +40,7 @@
****************************************************************************/
#include <QtCore/qglobal.h>
+#include <QtCore/qmutex.h>
#define QT_FT_BEGIN_HEADER
#define QT_FT_END_HEADER
@@ -874,9 +875,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 +902,7 @@ void QRasterPaintEngine::opacityChanged()
s->fillFlags |= DirtyOpacity;
s->strokeFlags |= DirtyOpacity;
s->pixmapFlags |= DirtyOpacity;
+ s->dirty |= DirtyOpacity;
s->intOpacity = (int) (s->opacity * 256);
}
@@ -1102,7 +1105,7 @@ void QRasterPaintEnginePrivate::updateMatrixData(QSpanData *spanData, const QBru
Q_Q(QRasterPaintEngine);
bool bilinear = q->state()->flags.bilinear;
- if (b.d->transform.type() > QTransform::TxNone) { // FALCON: optimise
+ if (b.d->transform.type() > QTransform::TxNone) { // FALCON: optimize
spanData->setupMatrix(b.transform() * m, bilinear);
} else {
if (m.type() <= QTransform::TxTranslate) {
@@ -3300,7 +3303,7 @@ void QRasterPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
ensureState();
drawCachedGlyphs(textItem->numGlyphs, textItem->glyphs, textItem->glyphPositions,
- textItem->fontEngine);
+ textItem->fontEngine());
}
/*!
@@ -4946,6 +4949,7 @@ public:
for (int i = 0; i < stops.size() && i <= 2; i++)
hash_val += stops[i].second.rgba();
+ QMutexLocker lock(&mutex);
QGradientColorTableHash::const_iterator it = cache.constFind(hash_val);
if (it == cache.constEnd())
@@ -4979,6 +4983,7 @@ protected:
}
QGradientColorTableHash cache;
+ QMutex mutex;
};
void QGradientCache::generateGradientColorTable(const QGradient& gradient, uint *colorTable, int size, int opacity) const
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 9afb62fb94..3601c8e535 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -5746,7 +5746,7 @@ void QPainterPrivate::drawGlyphs(const quint32 *glyphArray, const QPointF *posit
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.data();
@@ -5938,7 +5938,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/qpdf.cpp b/src/gui/painting/qpdf.cpp
index ba5d164c9d..bd68d2a251 100644
--- a/src/gui/painting/qpdf.cpp
+++ b/src/gui/painting/qpdf.cpp
@@ -1390,7 +1390,7 @@ int QPdfBaseEngine::metric(QPaintDevice::PaintDeviceMetric metricType) const
void QPdfBaseEngine::setProperty(PrintEnginePropertyKey key, const QVariant &value)
{
Q_D(QPdfBaseEngine);
- switch (key) {
+ switch (int(key)) {
case PPK_CollateCopies:
d->collate = value.toBool();
break;
@@ -1480,7 +1480,7 @@ QVariant QPdfBaseEngine::property(PrintEnginePropertyKey key) const
Q_D(const QPdfBaseEngine);
QVariant ret;
- switch (key) {
+ switch (int(key)) {
case PPK_CollateCopies:
ret = d->collate;
break;
diff --git a/src/gui/painting/qregion.h b/src/gui/painting/qregion.h
index bc4da285bb..acb20c1e8d 100644
--- a/src/gui/painting/qregion.h
+++ b/src/gui/painting/qregion.h
@@ -201,7 +201,7 @@ private:
Region rgn;
void *xrectangles;
#elif defined(Q_WS_MAC) && !defined(QT_MAC_USE_COCOA)
- mutable RgnHandle unused; // Here for binary compatability reasons. ### Qt 5 remove.
+ mutable RgnHandle unused; // Here for binary compatibility reasons. ### Qt 5 remove.
#endif
#if defined(Q_WS_QWS) || defined(Q_WS_X11) || defined(Q_WS_MAC) || defined(Q_WS_WIN) || defined(Q_OS_SYMBIAN)
QRegionPrivate *qt_rgn;
diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp
index b609f7b3ec..eab9cf6034 100644
--- a/src/gui/painting/qtextureglyphcache.cpp
+++ b/src/gui/painting/qtextureglyphcache.cpp
@@ -65,7 +65,7 @@ static inline int qt_next_power_of_two(int v)
return v;
}
-void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const glyph_t *glyphs,
+bool QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const glyph_t *glyphs,
const QFixedPoint *)
{
#ifdef CACHE_DEBUG
@@ -119,7 +119,7 @@ void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const
rowHeight = qMax(rowHeight, glyph_height);
}
if (listItemCoordinates.isEmpty())
- return;
+ return true;
rowHeight += margin * 2 + paddingDoubled;
if (isNull())
@@ -143,13 +143,20 @@ void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const
// no room on the current line, start new glyph strip
m_cx = 0;
m_cy += m_currentRowHeight + paddingDoubled;
- m_currentRowHeight = 0; // New row
+ m_currentRowHeight = c.h + margin * 2; // New row
}
}
if (m_cy + c.h > m_h) {
int new_height = m_h*2;
while (new_height < m_cy + c.h)
new_height *= 2;
+
+ if (maxTextureHeight() > 0 && new_height > maxTextureHeight()) {
+ // We can't make a new texture of the required size, so
+ // bail out
+ return false;
+ }
+
// if no room in the current texture - realloc a larger texture
resizeTextureData(m_w, new_height);
m_h = new_height;
@@ -165,7 +172,7 @@ void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const
++iter;
}
-
+ return true;
}
QImage QTextureGlyphCache::textureMapForGlyph(glyph_t g) const
@@ -259,11 +266,14 @@ void QImageTextureGlyphCache::fillTexture(const Coord &c, glyph_t g)
}
#endif
- if (m_type == QFontEngineGlyphCache::Raster_RGBMask) {
- QPainter p(&m_image);
+ if (m_type == QFontEngineGlyphCache::Raster_RGBMask) {
+ QImage ref(m_image.bits() + (c.x * 4 + c.y * m_image.bytesPerLine()),
+ qMax(mask.width(), c.w), qMax(mask.height(), c.h), m_image.bytesPerLine(),
+ m_image.format());
+ QPainter p(&ref);
p.setCompositionMode(QPainter::CompositionMode_Source);
- p.fillRect(c.x, c.y, c.w, c.h, QColor(0,0,0,0)); // TODO optimize this
- p.drawImage(c.x, c.y, mask);
+ p.fillRect(0, 0, c.w, c.h, QColor(0,0,0,0)); // TODO optimize this
+ p.drawImage(0, 0, mask);
p.end();
} else if (m_type == QFontEngineGlyphCache::Raster_Mono) {
if (mask.depth() > 1) {
diff --git a/src/gui/painting/qtextureglyphcache_p.h b/src/gui/painting/qtextureglyphcache_p.h
index e6d2b22190..94cb555540 100644
--- a/src/gui/painting/qtextureglyphcache_p.h
+++ b/src/gui/painting/qtextureglyphcache_p.h
@@ -96,7 +96,7 @@ public:
int baseLineY;
};
- void populate(QFontEngine *fontEngine, int numGlyphs, const glyph_t *glyphs,
+ bool populate(QFontEngine *fontEngine, int numGlyphs, const glyph_t *glyphs,
const QFixedPoint *positions);
virtual void createTextureData(int width, int height) = 0;
@@ -118,7 +118,7 @@ public:
QImage textureMapForGlyph(glyph_t g) const;
virtual int maxTextureWidth() const { return QT_DEFAULT_TEXTURE_GLYPH_CACHE_WIDTH; }
- virtual int maxTextureHeight() const { return 32768; }
+ virtual int maxTextureHeight() const { return -1; }
protected:
QFontEngine *m_current_fontengine;
diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index 1e32bd8a8c..2f095299cd 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));
@@ -837,11 +830,8 @@ void QS60StylePrivate::setThemePaletteHash(QPalette *palette) const
s60Color(QS60StyleEnums::CL_QsnTextColors, 24, 0));
QApplication::setPalette(widgetPalette, "QLineEdit");
QApplication::setPalette(widgetPalette, "QTextEdit");
- widgetPalette = *palette;
-
- widgetPalette.setColor(QPalette::HighlightedText,
- s60Color(QS60StyleEnums::CL_QsnTextColors, 24, 0));
QApplication::setPalette(widgetPalette, "QComboBox");
+ QApplication::setPalette(widgetPalette, "QSpinBox");
widgetPalette = *palette;
widgetPalette.setColor(QPalette::WindowText, s60Color(QS60StyleEnums::CL_QsnTextColors, 7, 0));
@@ -1448,10 +1438,11 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option,
const QRect iconRect = subElementRect(SE_ItemViewItemDecoration, &voptAdj, widget);
QRect textRect = subElementRect(SE_ItemViewItemText, &voptAdj, widget);
const QAbstractItemView *itemView = qobject_cast<const QAbstractItemView *>(widget);
- const bool singleSelection =
- (itemView->selectionMode() == QAbstractItemView::SingleSelection ||
- itemView->selectionMode() == QAbstractItemView::NoSelection);
- const bool selectItems = (itemView->selectionBehavior() == QAbstractItemView::SelectItems);
+
+ const bool singleSelection = itemView &&
+ ((itemView->selectionMode() == QAbstractItemView::SingleSelection ||
+ itemView->selectionMode() == QAbstractItemView::NoSelection));
+ const bool selectItems = itemView && (itemView->selectionBehavior() == QAbstractItemView::SelectItems);
// draw themed background for itemview unless background brush has been defined.
if (vopt->backgroundBrush == Qt::NoBrush) {
@@ -2524,9 +2515,9 @@ int QS60Style::pixelMetric(PixelMetric metric, const QStyleOption *option, const
metricValue = QS60StylePrivate::pixelMetric(PM_LayoutLeftMargin);
}
- if (widget && (metric == PM_LayoutTopMargin))
+ if (widget && (metric == PM_LayoutTopMargin || metric == PM_LayoutLeftMargin || metric == PM_LayoutRightMargin))
if (widget->windowType() == Qt::Dialog)
- //double the top layout margin for dialogs, it is very close to real value
+ //double the layout margins (except bottom) for dialogs, it is very close to real value
//without having to define custom pixel metric
metricValue *= 2;
@@ -2546,6 +2537,56 @@ QSize QS60Style::sizeFromContents(ContentsType ct, const QStyleOption *opt,
if (const QStyleOptionToolButton *toolBtn = qstyleoption_cast<const QStyleOptionToolButton *>(opt))
if (toolBtn->subControls & SC_ToolButtonMenu)
sz += QSize(pixelMetric(PM_MenuButtonIndicator), 0);
+
+ //Make toolbuttons in toolbar stretch the whole screen area
+ if (widget && qobject_cast<const QToolBar *>(widget->parentWidget())) {
+ const QToolBar *tb = qobject_cast<const QToolBar *>(widget->parentWidget());
+ const bool parentCanGrowHorizontally = !(tb->sizePolicy().horizontalPolicy() == QSizePolicy::Fixed ||
+ tb->sizePolicy().horizontalPolicy() == QSizePolicy::Maximum) && tb->orientation() == Qt::Horizontal;
+
+ if (parentCanGrowHorizontally) {
+ int visibleButtons = 0;
+ //Make the auto-stretch to happen only for horizontal orientation
+ if (tb && tb->orientation() == Qt::Horizontal) {
+ QList<QAction*> actionList = tb->actions();
+ for (int i = 0; i < actionList.count(); i++) {
+ if (actionList.at(i)->isVisible())
+ visibleButtons++;
+ }
+ }
+
+ if (widget->parentWidget() && visibleButtons > 0) {
+ QWidget *w = const_cast<QWidget *>(widget);
+ int toolBarMaxWidth = 0;
+ int totalMargin = 0;
+ while (w) {
+ //honor fixed width parents
+ if (w->maximumWidth() == w->minimumWidth())
+ toolBarMaxWidth = qMax(toolBarMaxWidth, w->maximumWidth());
+ if (w->layout() && w->windowType() == Qt::Widget) {
+ totalMargin += w->layout()->contentsMargins().left() +
+ w->layout()->contentsMargins().right();
+ }
+ w = w->parentWidget();
+ }
+ totalMargin += 2 * pixelMetric(QStyle::PM_ToolBarFrameWidth);
+
+ if (toolBarMaxWidth == 0)
+ toolBarMaxWidth =
+ QApplication::desktop()->availableGeometry(widget->parentWidget()).width();
+ //Reduce the margins, toolbar frame, item spacing and internal margin from available area
+ toolBarMaxWidth -= totalMargin;
+
+ //ensure that buttons are side-by-side and not on top of each other
+ const int toolButtonWidth = (toolBarMaxWidth / visibleButtons)
+ - pixelMetric(QStyle::PM_ToolBarItemSpacing)
+ - pixelMetric(QStyle::PM_ToolBarItemMargin)
+ //toolbar frame needs to be reduced again, since QToolBarLayout adds it for each toolbar action
+ - 2 * pixelMetric(QStyle::PM_ToolBarFrameWidth) - 1;
+ sz.setWidth(qMax(toolButtonWidth, sz.width()));
+ }
+ }
+ }
break;
case CT_PushButton:
sz = QCommonStyle::sizeFromContents( ct, opt, csz, widget);
@@ -2620,6 +2661,8 @@ QSize QS60Style::sizeFromContents(ContentsType ct, const QStyleOption *opt,
sz = QCommonStyle::sizeFromContents( ct, opt, csz, widget);
break;
}
+ if (!sz.isValid())
+ sz = QCommonStyle::sizeFromContents(ct, opt, csz, widget);
return sz;
}
@@ -3425,8 +3468,11 @@ bool QS60Style::eventFilter(QObject *object, QEvent *event)
qobject_cast<QCheckBox *>(w))
d->m_pressedWidget = w;
- if ( d->m_pressedWidget)
+ if (d->m_pressedWidget)
d->m_pressedWidget->update();
+#ifdef Q_WS_S60
+ d->touchFeedback(event, w);
+#endif
}
break;
}
diff --git a/tools/qdoc3/sgmlgenerator.cpp b/src/gui/styles/qs60style_feedbackinterface_p.h
index 1858028971..81fcdc357c 100644
--- a/tools/qdoc3/sgmlgenerator.cpp
+++ b/src/gui/styles/qs60style_feedbackinterface_p.h
@@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the tools applications of the Qt Toolkit.
+** This file is part of the QtGui module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -39,25 +39,12 @@
**
****************************************************************************/
-/*
- sgmlgenerator.cpp
-*/
+#include <QObject>
-#include "sgmlgenerator.h"
-
-QT_BEGIN_NAMESPACE
-
-SgmlGenerator::SgmlGenerator()
-{
-}
-
-SgmlGenerator::~SgmlGenerator()
-{
-}
-
-QString SgmlGenerator::format()
+class TactileFeedbackInterface : public QObject
{
- return "SGML";
-}
+ public:
+ virtual void touchFeedback(QEvent *event, const QWidget *widget) = 0;
+};
-QT_END_NAMESPACE
+Q_DECLARE_INTERFACE(TactileFeedbackInterface, "com.trolltech.Qt.TactileFeedbackInterface/1.0")
diff --git a/src/gui/styles/qs60style_p.h b/src/gui/styles/qs60style_p.h
index b3f416018b..db4285deac 100644
--- a/src/gui/styles/qs60style_p.h
+++ b/src/gui/styles/qs60style_p.h
@@ -387,6 +387,7 @@ private: //data members
class QFocusFrame;
class QProgressBar;
class QS60StyleAnimation;
+class TactileFeedbackInterface;
// Private class
#ifdef Q_OS_SYMBIAN
@@ -522,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;
@@ -541,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 {
@@ -572,6 +576,8 @@ public:
void stopAnimation(QS60StyleEnums::SkinParts animation);
static QS60StyleAnimation* animationDefinition(QS60StyleEnums::SkinParts part);
static void removeAnimations();
+ //No support for tactile feedback in emulated style
+ void touchFeedback(QEvent *event, const QWidget *widget);
#endif
@@ -626,6 +632,7 @@ private:
#ifdef Q_WS_S60
//list of progress bars having animation running
QList<QProgressBar *> m_bars;
+ TactileFeedbackInterface *m_feedbackPlugin;
#endif
};
diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp
index 5dda42e74a..92f53ff105 100644
--- a/src/gui/styles/qs60style_s60.cpp
+++ b/src/gui/styles/qs60style_s60.cpp
@@ -48,6 +48,11 @@
#include "private/qpixmap_s60_p.h"
#include "private/qcore_symbian_p.h"
#include "qapplication.h"
+#include "qsettings.h"
+
+#include "qpluginloader.h"
+#include "qlibraryinfo.h"
+#include "private/qs60style_feedbackinterface_p.h"
#include <w32std.h>
#include <AknsConstants.h>
@@ -65,6 +70,8 @@
#include <gulicon.h>
#include <AknBitmapAnimation.h>
+#include <centralrepository.h>
+
#if !defined(QT_NO_STYLE_S60) || defined(QT_PLUGIN)
QT_BEGIN_NAMESPACE
@@ -77,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,
@@ -685,6 +694,75 @@ 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(QString());
+ 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) {
+ 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(QString()); //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();
@@ -1143,13 +1221,25 @@ void QS60StylePrivate::setActiveLayout()
Q_GLOBAL_STATIC(QList<QS60StyleAnimation *>, m_animations)
-QS60StylePrivate::QS60StylePrivate()
+QS60StylePrivate::QS60StylePrivate() : m_feedbackPlugin(0)
{
//Animation defaults need to be created when style is instantiated
QS60StyleAnimation* progressBarAnimation = new QS60StyleAnimation(QS60StyleEnums::SP_QgnGrafBarWaitAnim, 7, 100);
m_animations()->append(progressBarAnimation);
// No need to set active layout, if dynamic metrics API is available
setActiveLayout();
+
+ //Tactile feedback plugin is only available for touch devices.
+ if (isTouchSupported()) {
+ QString pluginsPath = QLibraryInfo::location(QLibraryInfo::PluginsPath);
+ pluginsPath += QLatin1String("/feedback/qtactilefeedback.dll");
+
+ // Create plugin loader
+ QPluginLoader pluginLoader(pluginsPath);
+ // Load plugin and store pointer to the plugin implementation
+ if (pluginLoader.load())
+ m_feedbackPlugin = qobject_cast<TactileFeedbackInterface*>(pluginLoader.instance());
+ }
}
void QS60StylePrivate::removeAnimations()
@@ -1439,6 +1529,12 @@ void QS60StylePrivate::stopAnimation(QS60StyleEnums::SkinParts animationPart)
}
}
+void QS60StylePrivate::touchFeedback(QEvent *event, const QWidget *widget)
+{
+ if (m_feedbackPlugin)
+ m_feedbackPlugin->touchFeedback(event, widget);
+}
+
QVariant QS60StyleModeSpecifics::themeDefinition(
QS60StyleEnums::ThemeDefinitions definition, QS60StyleEnums::SkinParts part)
{
diff --git a/src/gui/styles/qstyle.cpp b/src/gui/styles/qstyle.cpp
index 0a75492b8c..be8f794da6 100644
--- a/src/gui/styles/qstyle.cpp
+++ b/src/gui/styles/qstyle.cpp
@@ -367,10 +367,10 @@ QStyle::~QStyle()
Note that the default implementation does nothing. Reasonable
actions in this function might be to call the
QWidget::setBackgroundMode() function for the widget. Do not use
- the function to set, for example, the geometry; reimplementing
- this function do provide a back-door through which the appearance
- of a widget can be changed, but with Qt 4.0's style engine there
- is rarely necessary to implement this function; reimplement the
+ the function to set, for example, the geometry. Reimplementing
+ this function provides a back-door through which the appearance
+ of a widget can be changed, but with Qt's style engine it is
+ rarely necessary to implement this function; reimplement
drawItemPixmap(), drawItemText(), drawPrimitive(), etc. instead.
The QWidget::inherits() function may provide enough information to
@@ -2456,6 +2456,8 @@ QDebug operator<<(QDebug debug, QStyle::State state)
qSort(states);
debug << states.join(QLatin1String(" | "));
debug << ')';
+#else
+ Q_UNUSED(state);
#endif
return debug;
}
diff --git a/src/gui/styles/qstyleoption.cpp b/src/gui/styles/qstyleoption.cpp
index 4780edfbc0..05ca793327 100644
--- a/src/gui/styles/qstyleoption.cpp
+++ b/src/gui/styles/qstyleoption.cpp
@@ -5483,6 +5483,8 @@ QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType)
case QStyleOption::SO_GraphicsItem:
debug << "SO_GraphicsItem"; break;
}
+#else
+ Q_UNUSED(optionType);
#endif
return debug;
}
@@ -5496,6 +5498,8 @@ QDebug operator<<(QDebug debug, const QStyleOption &option)
debug << ',' << option.state;
debug << ',' << option.rect;
debug << ')';
+#else
+ Q_UNUSED(option);
#endif
return debug;
}
diff --git a/src/gui/styles/qwindowsxpstyle.cpp b/src/gui/styles/qwindowsxpstyle.cpp
index a5e9c19d9e..da29440e48 100644
--- a/src/gui/styles/qwindowsxpstyle.cpp
+++ b/src/gui/styles/qwindowsxpstyle.cpp
@@ -302,7 +302,7 @@ HWND QWindowsXPStylePrivate::winId(const QWidget *widget)
limboWidget = new QWidget(0);
limboWidget->createWinId();
limboWidget->setObjectName(QLatin1String("xp_limbo_widget"));
- // We dont need this internal widget to appear in QApplication::topLevelWidgets()
+ // We don't need this internal widget to appear in QApplication::topLevelWidgets()
if (QWidgetPrivate::allWidgets)
QWidgetPrivate::allWidgets->remove(limboWidget);
}
diff --git a/src/gui/text/qfontdatabase_x11.cpp b/src/gui/text/qfontdatabase_x11.cpp
index a7aa2ce282..ecc4690e67 100644
--- a/src/gui/text/qfontdatabase_x11.cpp
+++ b/src/gui/text/qfontdatabase_x11.cpp
@@ -1891,6 +1891,18 @@ QFontEngine *QFontDatabase::loadXlfd(int screen, int script, const QFontDef &req
return fe;
}
+#if (defined(QT_ARCH_ARM) || defined(QT_ARCH_ARMV6)) && defined(Q_CC_GNU) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 3)
+#define NEEDS_GCC_BUG_WORKAROUND
+#endif
+
+#ifdef NEEDS_GCC_BUG_WORKAROUND
+static inline void gccBugWorkaround(const QFontDef &req)
+{
+ char buffer[8];
+ snprintf(buffer, 8, "%f", req.pixelSize);
+}
+#endif
+
/*! \internal
Loads a QFontEngine for the specified \a script that matches the
QFontDef \e request member variable.
@@ -1902,9 +1914,15 @@ void QFontDatabase::load(const QFontPrivate *d, int script)
// normalize the request to get better caching
QFontDef req = d->request;
if (req.pixelSize <= 0)
- req.pixelSize = floor(qt_pixelSize(req.pointSize, d->dpi) * 100 + 0.5) / 100;
+ req.pixelSize = qFloor(qt_pixelSize(req.pointSize, d->dpi) * 100.0 + 0.5) * 0.01;
if (req.pixelSize < 1)
req.pixelSize = 1;
+
+#ifdef NEEDS_GCC_BUG_WORKAROUND
+ // req.pixelSize ends up with a bogus value unless this workaround is called
+ gccBugWorkaround(req);
+#endif
+
if (req.weight == 0)
req.weight = QFont::Normal;
if (req.stretch == 0)
@@ -1940,7 +1958,6 @@ void QFontDatabase::load(const QFontPrivate *d, int script)
#ifndef QT_NO_FONTCONFIG
} else if (X11->has_fontconfig) {
fe = loadFc(d, script, req);
-
if (fe != 0 && fe->fontDef.pixelSize != req.pixelSize && mainThread && qt_is_gui_used) {
QFontEngine *xlfdFontEngine = loadXlfd(d->screen, script, req);
if (xlfdFontEngine->fontDef.family == fe->fontDef.family) {
@@ -1989,7 +2006,7 @@ static void registerFont(QFontDatabasePrivate::ApplicationFont *fnt)
FcFontSet *set = FcConfigGetFonts(config, FcSetApplication);
if (!set) {
- FcConfigAppFontAddFile(config, (const FcChar8 *)":/non-existant");
+ FcConfigAppFontAddFile(config, (const FcChar8 *)":/non-existent");
set = FcConfigGetFonts(config, FcSetApplication); // try again
if (!set)
return;
diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h
index 571cf981a2..fc26eef08b 100644
--- a/src/gui/text/qfontengine_p.h
+++ b/src/gui/text/qfontengine_p.h
@@ -158,7 +158,7 @@ public:
virtual QFixed emSquareSize() const { return ascent(); }
- /* returns 0 as glyph index for non existant glyphs */
+ /* returns 0 as glyph index for non existent glyphs */
virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const = 0;
/**
diff --git a/src/gui/text/qfontengine_win.cpp b/src/gui/text/qfontengine_win.cpp
index 7609ee560a..5f257524be 100644
--- a/src/gui/text/qfontengine_win.cpp
+++ b/src/gui/text/qfontengine_win.cpp
@@ -1209,7 +1209,7 @@ QImage QFontEngineWin::alphaMapForGlyph(glyph_t glyph, const QTransform &xform)
QImage indexed(mask->width(), mask->height(), QImage::Format_Indexed8);
- // ### This part is kinda pointless, but we'll crash later if we dont because some
+ // ### This part is kinda pointless, but we'll crash later if we don't because some
// code paths expects there to be colortables for index8-bit...
QVector<QRgb> colors(256);
for (int i=0; i<256; ++i)
diff --git a/src/gui/text/qfontengine_x11.cpp b/src/gui/text/qfontengine_x11.cpp
index b7e4be2c9a..c06be3b862 100644
--- a/src/gui/text/qfontengine_x11.cpp
+++ b/src/gui/text/qfontengine_x11.cpp
@@ -429,7 +429,7 @@ void QFontEngineXLFD::recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFl
{
int i = glyphs->numGlyphs;
XCharStruct *xcs;
- // inlined for better perfomance
+ // inlined for better performance
if (!_fs->per_char) {
xcs = &_fs->min_bounds;
while (i != 0) {
diff --git a/src/gui/text/qfontsubset.cpp b/src/gui/text/qfontsubset.cpp
index e49f5b4554..22833584b9 100644
--- a/src/gui/text/qfontsubset.cpp
+++ b/src/gui/text/qfontsubset.cpp
@@ -697,7 +697,7 @@ static QTtfTable generateHead(const qttf_head_table &head)
// Bits 5-10: These should be set according to Apple's specification . However, they are not implemented in OpenType.
// Bit 11: Font data is 'lossless,' as a result of having been compressed and decompressed with the Agfa MicroType Express engine.
// Bit 12: Font converted (produce compatible metrics)
-// Bit 13: Font optimised for ClearType
+// Bit 13: Font optimized for ClearType
// Bit 14: Reserved, set to 0
// Bit 15: Reserved, set to 0
<< quint16(0)
@@ -1008,7 +1008,7 @@ static void convertPath(const QPainterPath &path, QList<TTF_POINT> *points, QLis
np.x = (i1_x + i2_x) >> 1;
np.y = (i1_y + i2_y) >> 1;
if (try_reduce) {
- // see if we can optimise out the last onCurve point
+ // see if we can optimize out the last onCurve point
int mx = (points->at(points->size() - 2).x + base[2].x) >> 1;
int my = (points->at(points->size() - 2).y + base[2].y) >> 1;
if (qAbs(mx - base[3].x) <= split_limit && qAbs(my = base[3].y) <= split_limit)
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index 95060067f7..edf248a6ec 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 cb60626b8a..87ef0d5aad 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/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp
index 213db7ed9f..0bdd20d347 100644
--- a/src/gui/text/qtextdocument_p.cpp
+++ b/src/gui/text/qtextdocument_p.cpp
@@ -320,7 +320,7 @@ void QTextDocumentPrivate::setLayout(QAbstractTextDocumentLayout *layout)
void QTextDocumentPrivate::insert_string(int pos, uint strPos, uint length, int format, QTextUndoCommand::Operation op)
{
- // ##### optimise when only appending to the fragment!
+ // ##### optimize when only appending to the fragment!
Q_ASSERT(noBlockInString(text.mid(strPos, length)));
split(pos);
@@ -1446,7 +1446,7 @@ void QTextDocumentPrivate::clearFrame(QTextFrame *f)
void QTextDocumentPrivate::scan_frames(int pos, int charsRemoved, int charsAdded)
{
- // ###### optimise
+ // ###### optimize
Q_UNUSED(pos);
Q_UNUSED(charsRemoved);
Q_UNUSED(charsAdded);
diff --git a/src/gui/text/qtextformat.cpp b/src/gui/text/qtextformat.cpp
index 46db25397b..fdbb680e5b 100644
--- a/src/gui/text/qtextformat.cpp
+++ b/src/gui/text/qtextformat.cpp
@@ -265,10 +265,18 @@ private:
friend QDataStream &operator>>(QDataStream &, QTextFormat &);
};
-// this is only safe if sizeof(int) == sizeof(float)
+// this is only safe because sizeof(int) == sizeof(float)
static inline uint hash(float d)
{
+#ifdef Q_CC_GNU
+ // this is a GCC extension and isn't guaranteed to work in other compilers
+ // the reinterpret_cast below generates a strict-aliasing warning with GCC
+ union { float f; uint u; } cvt;
+ cvt.f = d;
+ return cvt.u;
+#else
return reinterpret_cast<uint&>(d);
+#endif
}
static inline uint hash(const QColor &color)
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index f432b7e629..f1278b9966 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -1615,7 +1615,7 @@ void QTextLine::setLineWidth(qreal width)
if (line.length
&& line.textWidth <= line.width
&& line.from + line.length == eng->layoutData->string.length())
- // no need to do anything if the line is already layouted and the last one. This optimisation helps
+ // no need to do anything if the line is already layouted and the last one. This optimization helps
// when using things in a single line layout.
return;
line.length = 0;
diff --git a/src/gui/util/qcompleter.cpp b/src/gui/util/qcompleter.cpp
index e71821215b..bcd601b72e 100644
--- a/src/gui/util/qcompleter.cpp
+++ b/src/gui/util/qcompleter.cpp
@@ -782,7 +782,8 @@ QMatchData QUnsortedModelEngine::filter(const QString& part, const QModelIndex&
///////////////////////////////////////////////////////////////////////////////
QCompleterPrivate::QCompleterPrivate()
: widget(0), proxy(0), popup(0), cs(Qt::CaseSensitive), role(Qt::EditRole), column(0),
- maxVisibleItems(7), sorting(QCompleter::UnsortedModel), wrap(true), eatFocusOut(true)
+ maxVisibleItems(7), sorting(QCompleter::UnsortedModel), wrap(true), eatFocusOut(true),
+ hiddenBecauseNoMatch(false)
{
}
@@ -921,12 +922,14 @@ void QCompleterPrivate::showPopup(const QRect& rect)
void QCompleterPrivate::_q_fileSystemModelDirectoryLoaded(const QString &path)
{
Q_Q(QCompleter);
-#ifndef QT_NO_LINEEDIT
- QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget);
- //the path given by QFileSystemModel does not end with /
- if (lineEdit && !lineEdit->text().isEmpty() && !q->completionPrefix().isEmpty() && q->completionPrefix() != path + QLatin1Char('/'))
+ // Slot called when QFileSystemModel has finished loading.
+ // If we hide the popup because there was no match because the model was not loaded yet,
+ // we re-start the completion when we get the results
+ if (hiddenBecauseNoMatch
+ && prefix.startsWith(path) && prefix != (path + '/')
+ && widget) {
q->complete();
-#endif
+ }
}
/*!
@@ -1200,6 +1203,7 @@ bool QCompleter::eventFilter(QObject *o, QEvent *e)
Q_D(QCompleter);
if (d->eatFocusOut && o == d->widget && e->type() == QEvent::FocusOut) {
+ d->hiddenBecauseNoMatch = false;
if (d->popup && d->popup->isVisible())
return true;
}
@@ -1378,6 +1382,7 @@ void QCompleter::complete(const QRect& rect)
{
Q_D(QCompleter);
QModelIndex idx = d->proxy->currentIndex(false);
+ d->hiddenBecauseNoMatch = false;
if (d->mode == QCompleter::InlineCompletion) {
if (idx.isValid())
d->_q_complete(idx, true);
@@ -1389,6 +1394,7 @@ void QCompleter::complete(const QRect& rect)
|| (d->mode == QCompleter::UnfilteredPopupCompletion && d->proxy->rowCount() == 0)) {
if (d->popup)
d->popup->hide(); // no suggestion, hide
+ d->hiddenBecauseNoMatch = true;
return;
}
diff --git a/src/gui/util/qcompleter_p.h b/src/gui/util/qcompleter_p.h
index 8f00793856..19b76e51b9 100644
--- a/src/gui/util/qcompleter_p.h
+++ b/src/gui/util/qcompleter_p.h
@@ -93,6 +93,7 @@ public:
bool eatFocusOut;
QRect popupRect;
+ bool hiddenBecauseNoMatch;
void showPopup(const QRect&);
void _q_complete(QModelIndex, bool = false);
diff --git a/src/gui/util/qdesktopservices_s60.cpp b/src/gui/util/qdesktopservices_s60.cpp
index cd023cb360..56c2b983cc 100644
--- a/src/gui/util/qdesktopservices_s60.cpp
+++ b/src/gui/util/qdesktopservices_s60.cpp
@@ -45,32 +45,29 @@
#include <qurl.h>
#include <private/qcore_symbian_p.h>
-#include <txtrich.h> // CRichText
#include <f32file.h> // TDriveUnit etc
+#include <pathinfo.h> // PathInfo
+
+#ifndef USE_SCHEMEHANDLER
+#ifdef Q_WS_S60
+// This flag changes the implementation to use S60 CDcoumentHandler
+// instead of apparc when opening the files
+#define USE_DOCUMENTHANDLER
+#endif
+
+#include <txtrich.h> // CRichText
#include <eikenv.h> // CEikonEnv
#include <apgcli.h> // RApaLsSession
#include <apgtask.h> // TApaTaskList, TApaTask
#include <rsendas.h> // RSendAs
#include <rsendasmessage.h> // RSendAsMessage
-#ifdef Q_WS_S60
-// This flag changes the implementation to use S60 CDcoumentHandler
-// instead of apparch when opening the files
-#define USE_DOCUMENTHANDLER
+#ifdef USE_DOCUMENTHANDLER
+#include <DocumentHandler.h> // CDocumentHandler
+#include <AknServerApp.h>
#endif
-
-// copied from miutset.h, so we don't get a dependency into the app layer
-const TUid KUidMsgTypeSMTP = {0x10001028}; // 268439592
-
-#ifdef Q_OS_SYMBIAN
-# include <pathinfo.h> // PathInfo
-# ifdef USE_DOCUMENTHANDLER
-# include <DocumentHandler.h> // CDocumentHandler
-# include <AknServerApp.h>
-# endif
-#else
-# warning CDocumentHandler requires support for S60
-# undef USE_DOCUMENTHANDLER // Fallback to RApaLsSession based implementation
+#else // USE_SCHEMEHANDLER
+#include <schemehandler.h>
#endif
QT_BEGIN_NAMESPACE
@@ -79,6 +76,10 @@ _LIT(KCacheSubDir, "Cache\\");
_LIT(KSysBin, "\\Sys\\Bin\\");
_LIT(KBrowserPrefix, "4 " );
_LIT(KFontsDir, "z:\\resource\\Fonts\\");
+
+#ifndef USE_SCHEMEHANDLER
+// copied from miutset.h, so we don't get a dependency into the app layer
+const TUid KUidMsgTypeSMTP = {0x10001028}; // 268439592
const TUid KUidBrowser = { 0x10008D39 };
template<class R>
@@ -137,7 +138,6 @@ private:
Q_GLOBAL_STATIC(QS60DocumentHandler, qt_s60_documenthandler);
#endif
-
static void handleMailtoSchemeLX(const QUrl &url)
{
// this function has many intermingled leaves and throws. Qt and Symbian objects do not have
@@ -155,12 +155,10 @@ static void handleMailtoSchemeLX(const QUrl &url)
QStringList ccs = cc.split(QLatin1String(","), QString::SkipEmptyParts);
QStringList bccs = bcc.split(QLatin1String(","), QString::SkipEmptyParts);
-
RSendAs sendAs;
User::LeaveIfError(sendAs.Connect());
QAutoClose<RSendAs> sendAsCleanup(sendAs);
-
CSendAsAccounts* accounts = CSendAsAccounts::NewL();
CleanupStack::PushL(accounts);
sendAs.AvailableAccountsL(KUidMsgTypeSMTP, *accounts);
@@ -249,47 +247,6 @@ static bool handleOtherSchemes(const QUrl &url)
return err ? false : true;
}
-static TDriveUnit exeDrive()
-{
- RProcess me;
- TFileName processFileName = me.FileName();
- TDriveUnit drive(processFileName);
- return drive;
-}
-
-static TDriveUnit writableExeDrive()
-{
- TDriveUnit drive = exeDrive();
- if(drive.operator TInt() == EDriveZ)
- return TDriveUnit(EDriveC);
- return drive;
-}
-
-static TPtrC writableDataRoot()
-{
- TDriveUnit drive = exeDrive();
-#ifdef Q_OS_SYMBIAN
- switch(drive.operator TInt()){
- case EDriveC:
- return PathInfo::PhoneMemoryRootPath();
- break;
- case EDriveE:
- return PathInfo::MemoryCardRootPath();
- break;
- case EDriveZ:
- // It is not possible to write on ROM drive ->
- // return phone mem root path instead
- return PathInfo::PhoneMemoryRootPath();
- break;
- default:
- return PathInfo::PhoneMemoryRootPath();
- break;
- }
-#else
-#warning No fallback implementation of writableDataRoot()
- return 0;
-#endif
-}
static void openDocumentL(const TDesC& aUrl)
{
@@ -314,13 +271,44 @@ static void openDocumentL(const TDesC& aUrl)
#endif
}
-#ifdef USE_SCHEMEHANDLER
+static bool launchWebBrowser(const QUrl &url)
+{
+ if (!url.isValid())
+ return false;
+
+ if (url.scheme() == QLatin1String("mailto")) {
+ return handleMailtoScheme(url);
+ }
+ return handleOtherSchemes( url );
+}
+
+static bool openDocument(const QUrl &file)
+{
+ if (!file.isValid())
+ return false;
+
+ QString filePath = file.toLocalFile();
+ filePath = QDir::toNativeSeparators(filePath);
+ TPtrC filePathPtr(qt_QString2TPtrC(filePath));
+ TRAPD(err, openDocumentL(filePathPtr));
+ return err ? false : true;
+}
+
+#else //USE_SCHEMEHANDLER
// The schemehandler component only exist in private SDK. This implementation
// exist here just for convenience in case that we need to use it later on
// The schemehandle based implementation is not yet tested.
// The biggest advantage of schemehandler is that it can handle
// wide range of schemes and is extensible by plugins
+static void handleUrlL(const TDesC& aUrl)
+{
+ CSchemeHandler* schemeHandler = CSchemeHandler::NewL(aUrl);
+ CleanupStack::PushL(schemeHandler);
+ schemeHandler->HandleUrlStandaloneL(); // Process the Url in standalone mode
+ CleanupStack::PopAndDestroy();
+}
+
static bool handleUrl(const QUrl &url)
{
if (!url.isValid())
@@ -332,13 +320,6 @@ static bool handleUrl(const QUrl &url)
return err ? false : true;
}
-static void handleUrlL(const TDesC& aUrl)
-{
- CSchemeHandler* schemeHandler = CSchemeHandler::NewL(aUrl);
- CleanupStack::PushL(schemeHandler);
- schemeHandler->HandleUrlStandaloneL(); // Process the Url in standalone mode
- CleanupStack::PopAndDestroy();
-}
static bool launchWebBrowser(const QUrl &url)
{
return handleUrl(url);
@@ -346,31 +327,48 @@ static bool launchWebBrowser(const QUrl &url)
static bool openDocument(const QUrl &file)
{
- return handleUrl(url);
+ return handleUrl(file);
}
-#endif
-static bool launchWebBrowser(const QUrl &url)
-{
- if (!url.isValid())
- return false;
+#endif //USE_SCHEMEHANDLER
- if (url.scheme() == QLatin1String("mailto")) {
- return handleMailtoScheme(url);
- }
- return handleOtherSchemes( url );
+// Common functions to all implementations
+
+static TDriveUnit exeDrive()
+{
+ RProcess me;
+ TFileName processFileName = me.FileName();
+ TDriveUnit drive(processFileName);
+ return drive;
}
-static bool openDocument(const QUrl &file)
+static TDriveUnit writableExeDrive()
{
- if (!file.isValid())
- return false;
+ TDriveUnit drive = exeDrive();
+ if (drive.operator TInt() == EDriveZ)
+ return TDriveUnit(EDriveC);
+ return drive;
+}
- QString filePath = file.toLocalFile();
- filePath = QDir::toNativeSeparators(filePath);
- TPtrC filePathPtr(qt_QString2TPtrC(filePath));
- TRAPD(err, openDocumentL(filePathPtr));
- return err ? false : true;
+static TPtrC writableDataRoot()
+{
+ TDriveUnit drive = exeDrive();
+ switch (drive.operator TInt()){
+ case EDriveC:
+ return PathInfo::PhoneMemoryRootPath();
+ break;
+ case EDriveE:
+ return PathInfo::MemoryCardRootPath();
+ break;
+ case EDriveZ:
+ // It is not possible to write on ROM drive ->
+ // return phone mem root path instead
+ return PathInfo::PhoneMemoryRootPath();
+ break;
+ default:
+ return PathInfo::PhoneMemoryRootPath();
+ break;
+ }
}
QString QDesktopServices::storageLocation(StandardLocation type)
@@ -395,21 +393,15 @@ QString QDesktopServices::storageLocation(StandardLocation type)
break;
case MusicLocation:
path.Append(writableDataRoot());
-#ifdef Q_OS_SYMBIAN
path.Append(PathInfo::SoundsPath());
-#endif
break;
case MoviesLocation:
path.Append(writableDataRoot());
-#ifdef Q_OS_SYMBIAN
path.Append(PathInfo::VideosPath());
-#endif
break;
case PicturesLocation:
path.Append(writableDataRoot());
-#ifdef Q_OS_SYMBIAN
path.Append(PathInfo::ImagesPath());
-#endif
break;
case TempLocation:
return QDir::tempPath();
diff --git a/src/gui/util/qundostack.cpp b/src/gui/util/qundostack.cpp
index 919ac3cc67..04cfca9c0d 100644
--- a/src/gui/util/qundostack.cpp
+++ b/src/gui/util/qundostack.cpp
@@ -441,7 +441,7 @@ bool QUndoStackPrivate::checkUndoLimit()
/*!
Constructs an empty undo stack with the parent \a parent. The
- stack will initally be in the clean state. If \a parent is a
+ stack will initially be in the clean state. If \a parent is a
QUndoGroup object, the stack is automatically added to the group.
\sa push()
diff --git a/src/gui/util/util.pri b/src/gui/util/util.pri
index bea520e3b4..d1c4ff812c 100644
--- a/src/gui/util/util.pri
+++ b/src/gui/util/util.pri
@@ -43,12 +43,17 @@ embedded {
}
symbian {
- LIBS += -lsendas2 -letext -lapmime -lplatformenv
- contains(QT_CONFIG, s60) {
- contains(CONFIG, is_using_gnupoc) {
- LIBS += -lcommonui
- } else {
- LIBS += -lCommonUI
+ LIBS += -letext -lplatformenv
+ contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) {
+ LIBS += -lsendas2 -lapmime
+ contains(QT_CONFIG, s60) {
+ contains(CONFIG, is_using_gnupoc) {
+ LIBS += -lcommonui
+ } else {
+ LIBS += -lCommonUI
+ }
}
+ } else {
+ DEFINES += USE_SCHEMEHANDLER
}
-}
+} \ No newline at end of file
diff --git a/src/gui/widgets/qabstractslider.cpp b/src/gui/widgets/qabstractslider.cpp
index f38bae76ca..a8b39f4648 100644
--- a/src/gui/widgets/qabstractslider.cpp
+++ b/src/gui/widgets/qabstractslider.cpp
@@ -722,7 +722,7 @@ bool QAbstractSliderPrivate::scrollByDelta(Qt::Orientation orientation, Qt::Keyb
#else
// Native UI-elements on Mac can scroll hundreds of lines at a time as
// a result of acceleration. So keep the same behaviour in Qt, and
- // dont restrict stepsToScroll to certain maximum (pageStep):
+ // don't restrict stepsToScroll to certain maximum (pageStep):
stepsToScroll = int(offset_accumulated);
#endif
offset_accumulated -= int(offset_accumulated);
diff --git a/src/gui/widgets/qcombobox.cpp b/src/gui/widgets/qcombobox.cpp
index 96d2acdd06..7859bdce8d 100644
--- a/src/gui/widgets/qcombobox.cpp
+++ b/src/gui/widgets/qcombobox.cpp
@@ -2476,7 +2476,7 @@ void QComboBox::showPopup()
listRect.setWidth(listRect.height());
//by default popup is centered on screen in landscape
listRect.moveCenter(screen.center());
- if (staConTopRect.IsEmpty()) {
+ if (staConTopRect.IsEmpty() && AknLayoutUtils::CbaLocation() != AknLayoutUtils::EAknCbaLocationBottom) {
// landscape without stacon, menu should be at the right
(opt.direction == Qt::LeftToRight) ? listRect.setRight(screen.right()) :
listRect.setLeft(screen.left());
diff --git a/src/gui/widgets/qdatetimeedit.cpp b/src/gui/widgets/qdatetimeedit.cpp
index bd6c57703d..80437472b3 100644
--- a/src/gui/widgets/qdatetimeedit.cpp
+++ b/src/gui/widgets/qdatetimeedit.cpp
@@ -832,11 +832,11 @@ QString QDateTimeEdit::sectionText(Section section) const
This format is the same as the one used described in QDateTime::toString()
and QDateTime::fromString()
- Example format strings(assuming that the date is 2nd of July 1969):
+ Example format strings (assuming that the date is 2nd of July 1969):
\table
\header \i Format \i Result
- \row \i dd.MM.yyyy \i 02.07.1969
+ \row \i dd.MM.yyyy \i 02.07.1969
\row \i MMM d yy \i Jul 2 69
\row \i MMMM d yy \i July 2 69
\endtable
diff --git a/src/gui/widgets/qmainwindow.cpp b/src/gui/widgets/qmainwindow.cpp
index 1183be6301..2731182f49 100644
--- a/src/gui/widgets/qmainwindow.cpp
+++ b/src/gui/widgets/qmainwindow.cpp
@@ -78,6 +78,7 @@ public:
: layout(0), explicitIconSize(false), toolButtonStyle(Qt::ToolButtonIconOnly)
#ifdef Q_WS_MAC
, useHIToolBar(false)
+ , activateUnifiedToolbarAfterFullScreen(false)
#endif
#if !defined(QT_NO_DOCKWIDGET) && !defined(QT_NO_CURSOR)
, hasOldCursor(false) , cursorAdjusted(false)
@@ -89,6 +90,7 @@ public:
Qt::ToolButtonStyle toolButtonStyle;
#ifdef Q_WS_MAC
bool useHIToolBar;
+ bool activateUnifiedToolbarAfterFullScreen;
#endif
void init();
QList<int> hoverSeparator;
@@ -502,7 +504,7 @@ void QMainWindow::setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle)
*/
QMenuBar *QMainWindow::menuBar() const
{
- QMenuBar *menuBar = qobject_cast<QMenuBar *>(d_func()->layout->menuBar());
+ QMenuBar *menuBar = qobject_cast<QMenuBar *>(layout()->menuBar());
if (!menuBar) {
QMainWindow *self = const_cast<QMainWindow *>(this);
menuBar = new QMenuBar(self);
@@ -1501,8 +1503,6 @@ bool QMainWindow::event(QEvent *event)
\i Before Qt 4.5, if you called showFullScreen() on the main window, the QToolbar would
disappear since it is considered to be part of the title bar. Qt 4.5 and up will now work around this by pulling
the toolbars out and back into the regular toolbar and vice versa when you swap out.
- However, a good practice would be that turning off the unified toolbar before you call
- showFullScreen() and restoring it after you call showNormal().
\endlist
Setting this back to false will remove these restrictions.
diff --git a/src/gui/widgets/qmainwindowlayout_p.h b/src/gui/widgets/qmainwindowlayout_p.h
index e1b981c1cd..3e1a95d1cf 100644
--- a/src/gui/widgets/qmainwindowlayout_p.h
+++ b/src/gui/widgets/qmainwindowlayout_p.h
@@ -335,6 +335,7 @@ public:
void cleanUpMacToolbarItems();
void fixSizeInUnifiedToolbar(QToolBar *tb) const;
bool useHIToolBar;
+ bool activateUnifiedToolbarAfterFullScreen;
void syncUnifiedToolbarVisibility();
bool blockVisiblityCheck;
#endif
diff --git a/src/gui/widgets/qtextedit.cpp b/src/gui/widgets/qtextedit.cpp
index 45417307fc..6b3f4447e7 100644
--- a/src/gui/widgets/qtextedit.cpp
+++ b/src/gui/widgets/qtextedit.cpp
@@ -773,7 +773,7 @@ Qt::Alignment QTextEdit::alignment() const
is the document's parent object. The parent object of the provided document
remains the owner of the object.
- If the current document is a child of the text editor, then it is deleted.
+ The editor does not delete the current document, even if it is a child of the editor.
\sa document()
*/
diff --git a/src/gui/widgets/qvalidator.cpp b/src/gui/widgets/qvalidator.cpp
index b75db45032..130d091bb9 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/imports/folderlistmodel/folderlistmodel.pro b/src/imports/folderlistmodel/folderlistmodel.pro
index b2e536093e..8964ab058b 100644
--- a/src/imports/folderlistmodel/folderlistmodel.pro
+++ b/src/imports/folderlistmodel/folderlistmodel.pro
@@ -15,7 +15,6 @@ qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
symbian:{
TARGET.UID3 = 0x20021320
- include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
isEmpty(DESTDIR):importFiles.sources = qmlfolderlistmodelplugin$${QT_LIBINFIX}.dll qmldir
else:importFiles.sources = $$DESTDIR/qmlfolderlistmodelplugin$${QT_LIBINFIX}.dll qmldir
diff --git a/src/imports/gestures/gestures.pro b/src/imports/gestures/gestures.pro
index 18ffcb9345..a4c914df0c 100644
--- a/src/imports/gestures/gestures.pro
+++ b/src/imports/gestures/gestures.pro
@@ -15,7 +15,6 @@ qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
symbian:{
TARGET.UID3 = 0x2002131F
- include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
isEmpty(DESTDIR):importFiles.sources = qmlgesturesplugin$${QT_LIBINFIX}.dll qmldir
else:importFiles.sources = $$DESTDIR/qmlgesturesplugin$${QT_LIBINFIX}.dll qmldir
diff --git a/src/imports/particles/particles.pro b/src/imports/particles/particles.pro
index a3eb0d1c2a..bb9da015b9 100644
--- a/src/imports/particles/particles.pro
+++ b/src/imports/particles/particles.pro
@@ -19,7 +19,6 @@ qmldir.path += $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
symbian:{
TARGET.UID3 = 0x2002131E
- include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
isEmpty(DESTDIR):importFiles.sources = qmlparticlesplugin$${QT_LIBINFIX}.dll qmldir
else:importFiles.sources = $$DESTDIR/qmlparticlesplugin$${QT_LIBINFIX}.dll qmldir
diff --git a/src/multimedia/audio/audio.pri b/src/multimedia/audio/audio.pri
index ae28a26669..7b2f9ad726 100644
--- a/src/multimedia/audio/audio.pri
+++ b/src/multimedia/audio/audio.pri
@@ -42,8 +42,8 @@ mac {
wince*:LIBS += -lcoredll
} else:symbian {
- INCLUDEPATH += /epoc32/include/mmf/common
- INCLUDEPATH += /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/qaudiodeviceinfo_alsa_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
index 25622a49e3..3617d24333 100644
--- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
+++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp
@@ -63,7 +63,9 @@ QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray dev, QAudio::Mode
device = QLatin1String(dev);
this->mode = mode;
+#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
checkSurround();
+#endif
}
QAudioDeviceInfoInternal::~QAudioDeviceInfoInternal()
@@ -394,9 +396,11 @@ void QAudioDeviceInfoInternal::updateLists()
}
channelz.append(1);
channelz.append(2);
+#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
if (surround40) channelz.append(4);
if (surround51) channelz.append(6);
if (surround71) channelz.append(8);
+#endif
sizez.append(8);
sizez.append(16);
sizez.append(32);
@@ -494,6 +498,7 @@ QByteArray QAudioDeviceInfoInternal::defaultOutputDevice()
return devices.first();
}
+#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
void QAudioDeviceInfoInternal::checkSurround()
{
QList<QByteArray> devices;
@@ -534,5 +539,6 @@ void QAudioDeviceInfoInternal::checkSurround()
}
snd_device_name_free_hint(hints);
}
+#endif
QT_END_NAMESPACE
diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h
index 8525980e05..5f7e5e8317 100644
--- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h
+++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h
@@ -98,10 +98,12 @@ private:
bool open();
void close();
+#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14)
void checkSurround();
bool surround40;
bool surround51;
bool surround71;
+#endif
QString device;
QAudio::Mode mode;
diff --git a/src/multimedia/audio/qaudioengine.cpp b/src/multimedia/audio/qaudioengine.cpp
index 7f1f5d32c2..c379afffaa 100644
--- a/src/multimedia/audio/qaudioengine.cpp
+++ b/src/multimedia/audio/qaudioengine.cpp
@@ -133,7 +133,7 @@ QT_BEGIN_NAMESPACE
Uses the \a device as the QIODevice to transfer data. If \a device is null then the class
creates an internal QIODevice. Returns a pointer to the QIODevice being used to handle
the data transfer. This QIODevice can be used to write() audio data directly. Passing a
- QIODevice allows the data to be transfered without any extra code.
+ QIODevice allows the data to be transferred without any extra code.
*/
/*!
@@ -247,7 +247,7 @@ QT_BEGIN_NAMESPACE
Uses the \a device as the QIODevice to transfer data. If \a device is null
then the class creates an internal QIODevice. Returns a pointer to the
QIODevice being used to handle the data transfer. This QIODevice can be used to
- read() audio data directly. Passing a QIODevice allows the data to be transfered
+ read() audio data directly. Passing a QIODevice allows the data to be transferred
without any extra code.
*/
diff --git a/src/multimedia/audio/qaudioinput.cpp b/src/multimedia/audio/qaudioinput.cpp
index 3676f64758..6660c3f9f6 100644
--- a/src/multimedia/audio/qaudioinput.cpp
+++ b/src/multimedia/audio/qaudioinput.cpp
@@ -201,7 +201,7 @@ QAudioInput::~QAudioInput()
/*!
Uses the \a device as the QIODevice to transfer data.
- Passing a QIODevice allows the data to be transfered without any extra code.
+ Passing a QIODevice allows the data to be transferred without any extra code.
All that is required is to open the QIODevice.
If able to successfully get audio data from the systems audio device the
diff --git a/src/multimedia/audio/qaudioinput_alsa_p.cpp b/src/multimedia/audio/qaudioinput_alsa_p.cpp
index ddafa3d9a0..5265915d6a 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 1cde15969a..0ec2492a11 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.cpp b/src/multimedia/audio/qaudiooutput.cpp
index cf3b79cb08..b71d48c0fb 100644
--- a/src/multimedia/audio/qaudiooutput.cpp
+++ b/src/multimedia/audio/qaudiooutput.cpp
@@ -199,7 +199,7 @@ QAudioFormat QAudioOutput::format() const
/*!
Uses the \a device as the QIODevice to transfer data.
- Passing a QIODevice allows the data to be transfered without any extra code.
+ Passing a QIODevice allows the data to be transferred without any extra code.
All that is required is to open the QIODevice.
If able to successfully output audio data to the systems audio device the
diff --git a/src/multimedia/audio/qaudiooutput_win32_p.cpp b/src/multimedia/audio/qaudiooutput_win32_p.cpp
index 1f304e32cd..1b054e5f03 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/qhttp.cpp b/src/network/access/qhttp.cpp
index 13375f8ca1..9c2f79ac34 100644
--- a/src/network/access/qhttp.cpp
+++ b/src/network/access/qhttp.cpp
@@ -2442,7 +2442,7 @@ void QHttpPrivate::_q_slotSendRequest()
if (proxy.hostName().isEmpty()) {
proxy.setType(QNetworkProxy::NoProxy);
} else if (sslInUse) {
- // Disallow use of cacheing proxy with HTTPS; instead fall back to
+ // Disallow use of caching proxy with HTTPS; instead fall back to
// transparent HTTP CONNECT proxying.
transparentProxyInUse = true;
} else {
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index ccdbb20f79..0531595698 100644
--- a/src/network/access/qhttpnetworkconnection.cpp
+++ b/src/network/access/qhttpnetworkconnection.cpp
@@ -39,6 +39,7 @@
**
****************************************************************************/
+#include <private/qabstractsocket_p.h>
#include "qhttpnetworkconnection_p.h"
#include "qhttpnetworkconnectionchannel_p.h"
#include "private/qnoncontiguousbytedevice_p.h"
@@ -56,6 +57,7 @@
#ifndef QT_NO_HTTP
#ifndef QT_NO_OPENSSL
+# include <private/qsslsocket_p.h>
# include <QtNetwork/qsslkey.h>
# include <QtNetwork/qsslcipher.h>
# include <QtNetwork/qsslconfiguration.h>
@@ -79,9 +81,9 @@ const int QHttpNetworkConnectionPrivate::defaultRePipelineLength = 2;
QHttpNetworkConnectionPrivate::QHttpNetworkConnectionPrivate(const QString &hostName, quint16 port, bool encrypt)
-: hostName(hostName), port(port), encrypt(encrypt),
- channelCount(defaultChannelCount),
- pendingAuthSignal(false), pendingProxyAuthSignal(false)
+: state(RunningState),
+ hostName(hostName), port(port), encrypt(encrypt),
+ channelCount(defaultChannelCount)
#ifndef QT_NO_NETWORKPROXY
, networkProxy(QNetworkProxy::NoProxy)
#endif
@@ -90,9 +92,9 @@ QHttpNetworkConnectionPrivate::QHttpNetworkConnectionPrivate(const QString &host
}
QHttpNetworkConnectionPrivate::QHttpNetworkConnectionPrivate(quint16 channelCount, const QString &hostName, quint16 port, bool encrypt)
-: hostName(hostName), port(port), encrypt(encrypt),
- channelCount(channelCount),
- pendingAuthSignal(false), pendingProxyAuthSignal(false)
+: state(RunningState),
+ hostName(hostName), port(port), encrypt(encrypt),
+ channelCount(channelCount)
#ifndef QT_NO_NETWORKPROXY
, networkProxy(QNetworkProxy::NoProxy)
#endif
@@ -121,6 +123,42 @@ void QHttpNetworkConnectionPrivate::init()
}
}
+void QHttpNetworkConnectionPrivate::pauseConnection()
+{
+ state = PausedState;
+
+ // Disable all socket notifiers
+ for (int i = 0; i < channelCount; i++) {
+#ifndef QT_NO_OPENSSL
+ if (encrypt)
+ QSslSocketPrivate::pauseSocketNotifiers(static_cast<QSslSocket*>(channels[i].socket));
+ else
+#endif
+ QAbstractSocketPrivate::pauseSocketNotifiers(channels[i].socket);
+ }
+}
+
+void QHttpNetworkConnectionPrivate::resumeConnection()
+{
+ state = RunningState;
+ // Enable all socket notifiers
+ for (int i = 0; i < channelCount; i++) {
+#ifndef QT_NO_OPENSSL
+ if (encrypt)
+ QSslSocketPrivate::resumeSocketNotifiers(static_cast<QSslSocket*>(channels[i].socket));
+ else
+#endif
+ QAbstractSocketPrivate::resumeSocketNotifiers(channels[i].socket);
+
+ // Resume pending upload if needed
+ if (channels[i].state == QHttpNetworkConnectionChannel::WritingState)
+ QMetaObject::invokeMethod(&channels[i], "_q_uploadDataReadyRead", Qt::QueuedConnection);
+ }
+
+ // queue _q_startNextRequest
+ QMetaObject::invokeMethod(this->q_func(), "_q_startNextRequest", Qt::QueuedConnection);
+}
+
int QHttpNetworkConnectionPrivate::indexOf(QAbstractSocket *socket) const
{
for (int i = 0; i < channelCount; ++i)
@@ -257,6 +295,13 @@ void QHttpNetworkConnectionPrivate::copyCredentials(int fromChannel, QAuthentica
{
Q_ASSERT(auth);
+ // NTLM is a multi phase authentication. Copying credentials between authenticators would mess things up.
+ if (!isProxy && channels[fromChannel].authMethod == QAuthenticatorPrivate::Ntlm)
+ return;
+ if (isProxy && channels[fromChannel].proxyAuthMethod == QAuthenticatorPrivate::Ntlm)
+ return;
+
+
// select another channel
QAuthenticator* otherAuth = 0;
for (int i = 0; i < channelCount; ++i) {
@@ -282,8 +327,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();
@@ -296,10 +339,10 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
QAuthenticator* auth = 0;
if (isProxy) {
auth = &channels[i].proxyAuthenticator;
- channels[i].proxyAuthMehtod = authMethod;
+ channels[i].proxyAuthMethod = authMethod;
} else {
auth = &channels[i].authenticator;
- channels[i].authMehtod = authMethod;
+ channels[i].authMethod = authMethod;
}
//proceed with the authentication.
if (auth->isNull())
@@ -308,46 +351,33 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
priv->parseHttpResponse(fields, isProxy);
if (priv->phase == QAuthenticatorPrivate::Done) {
- if ((isProxy && pendingProxyAuthSignal) ||(!isProxy && pendingAuthSignal)) {
- // drop the request
- reply->d_func()->eraseData();
- channels[i].close();
- channels[i].lastStatus = 0;
- channels[i].state = QHttpNetworkConnectionChannel::Wait4AuthState;
- return false;
- }
- // cannot use this socket until the slot returns
- channels[i].state = QHttpNetworkConnectionChannel::WaitingState;
- socket->blockSignals(true);
+ pauseConnection();
if (!isProxy) {
- pendingAuthSignal = true;
- emit q->authenticationRequired(reply->request(), auth, q);
- pendingAuthSignal = false;
+ emit reply->authenticationRequired(reply->request(), auth);
#ifndef QT_NO_NETWORKPROXY
} else {
- pendingProxyAuthSignal = true;
- emit q->proxyAuthenticationRequired(networkProxy, auth, q);
- pendingProxyAuthSignal = false;
+ emit reply->proxyAuthenticationRequired(networkProxy, auth);
#endif
}
- socket->blockSignals(false);
- // socket free to use
- channels[i].state = QHttpNetworkConnectionChannel::IdleState;
+ resumeConnection();
+
if (priv->phase != QAuthenticatorPrivate::Done) {
// send any pending requests
copyCredentials(i, auth, isProxy);
- QMetaObject::invokeMethod(q, "_q_restartAuthPendingRequests", Qt::QueuedConnection);
}
- } else if (priv->phase == QAuthenticatorPrivate::Start) {
- // If the url's authenticator has a 'user' set we will end up here (phase is only set to 'Done' by
- // parseHttpResponse above if 'user' is empty). So if credentials were supplied with the request,
- // such as in the case of an XMLHttpRequest, this is our only opportunity to cache them.
- emit q->cacheCredentials(reply->request(), auth, q);
}
- // - Changing values in QAuthenticator will reset the 'phase'.
+ // - Changing values in QAuthenticator will reset the 'phase'. Therefore if it is still "Done"
+ // then nothing was filled in by the user or the cache
// - If withCredentials has been set to false (e.g. by QtWebKit for a cross-origin XMLHttpRequest) then
// we need to bail out if authentication is required.
if (priv->phase == QAuthenticatorPrivate::Done || !reply->request().withCredentials()) {
+ // Reset authenticator so the next request on that channel does not get messed up
+ auth = 0;
+ if (isProxy)
+ channels[i].proxyAuthenticator = QAuthenticator();
+ else
+ channels[i].authenticator = QAuthenticator();
+
// authentication is cancelled, send the current contents to the user.
emit channels[i].reply->headerChanged();
emit channels[i].reply->readyRead();
@@ -356,15 +386,9 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
? QNetworkReply::ProxyAuthenticationRequiredError
: QNetworkReply::AuthenticationRequiredError;
reply->d_func()->errorString = errorDetail(errorCode, socket);
- emit q->error(errorCode, reply->d_func()->errorString);
- emit channels[i].reply->finished();
+ emit reply->finishedWithError(errorCode, reply->d_func()->errorString);
// ### at this point the reply could be deleted
socket->close();
- // remove pending request on the other channels
- for (int j = 0; j < channelCount; ++j) {
- if (j != i && channels[j].state == QHttpNetworkConnectionChannel::Wait4AuthState)
- channels[j].state = QHttpNetworkConnectionChannel::IdleState;
- }
return true;
}
//resend the request
@@ -380,8 +404,9 @@ void QHttpNetworkConnectionPrivate::createAuthorization(QAbstractSocket *socket,
int i = indexOf(socket);
- if (channels[i].authMehtod != QAuthenticatorPrivate::None) {
- if (!(channels[i].authMehtod == QAuthenticatorPrivate::Ntlm && channels[i].lastStatus != 401)) {
+ // Send "Authorization" header, but not if it's NTLM and the socket is already authenticated.
+ if (channels[i].authMethod != QAuthenticatorPrivate::None) {
+ if (!(channels[i].authMethod == QAuthenticatorPrivate::Ntlm && channels[i].lastStatus != 401)) {
QAuthenticatorPrivate *priv = QAuthenticatorPrivate::getPrivate(channels[i].authenticator);
if (priv && priv->method != QAuthenticatorPrivate::None) {
QByteArray response = priv->calculateResponse(request.d->methodName(), request.d->uri(false));
@@ -389,8 +414,10 @@ void QHttpNetworkConnectionPrivate::createAuthorization(QAbstractSocket *socket,
}
}
}
- if (channels[i].proxyAuthMehtod != QAuthenticatorPrivate::None) {
- if (!(channels[i].proxyAuthMehtod == QAuthenticatorPrivate::Ntlm && channels[i].lastStatus != 407)) {
+
+ // Send "Proxy-Authorization" header, but not if it's NTLM and the socket is already authenticated.
+ if (channels[i].proxyAuthMethod != QAuthenticatorPrivate::None) {
+ if (!(channels[i].proxyAuthMethod == QAuthenticatorPrivate::Ntlm && channels[i].lastStatus != 407)) {
QAuthenticatorPrivate *priv = QAuthenticatorPrivate::getPrivate(channels[i].proxyAuthenticator);
if (priv && priv->method != QAuthenticatorPrivate::None) {
QByteArray response = priv->calculateResponse(request.d->methodName(), request.d->uri(false));
@@ -723,6 +750,10 @@ void QHttpNetworkConnectionPrivate::removeReply(QHttpNetworkReply *reply)
// although it is called _q_startNextRequest, it will actually start multiple requests when possible
void QHttpNetworkConnectionPrivate::_q_startNextRequest()
{
+ // If the QHttpNetworkConnection is currently paused then bail out immediately
+ if (state == PausedState)
+ return;
+
//resend the necessary ones.
for (int i = 0; i < channelCount; ++i) {
if (channels[i].resendCurrent) {
@@ -773,17 +804,6 @@ void QHttpNetworkConnectionPrivate::_q_startNextRequest()
fillPipeline(channels[i].socket);
}
-void QHttpNetworkConnectionPrivate::_q_restartAuthPendingRequests()
-{
- // send the request using the idle socket
- for (int i = 0 ; i < channelCount; ++i) {
- if (channels[i].state == QHttpNetworkConnectionChannel::Wait4AuthState) {
- channels[i].state = QHttpNetworkConnectionChannel::IdleState;
- if (channels[i].reply)
- channels[i].sendRequest();
- }
- }
-}
void QHttpNetworkConnectionPrivate::readMoreLater(QHttpNetworkReply *reply)
{
@@ -832,31 +852,15 @@ QHttpNetworkReply* QHttpNetworkConnection::sendRequest(const QHttpNetworkRequest
return d->queueRequest(request);
}
-void QHttpNetworkConnection::enableEncryption()
-{
- Q_D(QHttpNetworkConnection);
- d->encrypt = true;
-}
-
-bool QHttpNetworkConnection::isEncrypted() const
+bool QHttpNetworkConnection::isSsl() const
{
Q_D(const QHttpNetworkConnection);
return d->encrypt;
}
-void QHttpNetworkConnection::setProxyAuthentication(QAuthenticator *authenticator)
+QHttpNetworkConnectionChannel *QHttpNetworkConnection::channels() const
{
- Q_D(QHttpNetworkConnection);
- for (int i = 0; i < d->channelCount; ++i)
- d->channels[i].proxyAuthenticator = *authenticator;
-}
-
-void QHttpNetworkConnection::setAuthentication(const QString &domain, QAuthenticator *authenticator)
-{
- Q_UNUSED(domain); // ### domain ?
- Q_D(QHttpNetworkConnection);
- for (int i = 0; i < d->channelCount; ++i)
- d->channels[i].authenticator = *authenticator;
+ return d_func()->channels;
}
#ifndef QT_NO_NETWORKPROXY
@@ -951,8 +955,11 @@ void QHttpNetworkConnection::ignoreSslErrors(const QList<QSslError> &errors, int
// e.g. it is for SOCKS proxies which require authentication.
void QHttpNetworkConnectionPrivate::emitProxyAuthenticationRequired(const QHttpNetworkConnectionChannel *chan, const QNetworkProxy &proxy, QAuthenticator* auth)
{
- Q_Q(QHttpNetworkConnection);
- emit q->proxyAuthenticationRequired(proxy, auth, q);
+ // Also pause the connection because socket notifiers may fire while an user
+ // dialog is displaying
+ pauseConnection();
+ emit chan->reply->proxyAuthenticationRequired(proxy, auth);
+ resumeConnection();
int i = indexOf(chan->socket);
copyCredentials(i, auth, true);
}
diff --git a/src/network/access/qhttpnetworkconnection_p.h b/src/network/access/qhttpnetworkconnection_p.h
index 51666d613a..9f23cbfe02 100644
--- a/src/network/access/qhttpnetworkconnection_p.h
+++ b/src/network/access/qhttpnetworkconnection_p.h
@@ -108,43 +108,24 @@ public:
QNetworkProxy transparentProxy() const;
#endif
- //enable encryption
- void enableEncryption();
- bool isEncrypted() const;
+ bool isSsl() const;
- //authentication parameters
- void setProxyAuthentication(QAuthenticator *authenticator);
- void setAuthentication(const QString &domain, QAuthenticator *authenticator);
+ QHttpNetworkConnectionChannel *channels() const;
#ifndef QT_NO_OPENSSL
void setSslConfiguration(const QSslConfiguration &config);
void ignoreSslErrors(int channel = -1);
void ignoreSslErrors(const QList<QSslError> &errors, int channel = -1);
-
-Q_SIGNALS:
- void sslErrors(const QList<QSslError> &errors);
-#endif
-
-Q_SIGNALS:
-#ifndef QT_NO_NETWORKPROXY
- //cannot be used with queued connection.
- void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator,
- const QHttpNetworkConnection *connection = 0);
#endif
- void authenticationRequired(const QHttpNetworkRequest &request, QAuthenticator *authenticator,
- const QHttpNetworkConnection *connection = 0);
- void cacheCredentials(const QHttpNetworkRequest &request, QAuthenticator *authenticator,
- const QHttpNetworkConnection *connection = 0);
- void error(QNetworkReply::NetworkError errorCode, const QString &detail = QString());
private:
Q_DECLARE_PRIVATE(QHttpNetworkConnection)
Q_DISABLE_COPY(QHttpNetworkConnection)
friend class QHttpNetworkReply;
+ friend class QHttpNetworkReplyPrivate;
friend class QHttpNetworkConnectionChannel;
Q_PRIVATE_SLOT(d_func(), void _q_startNextRequest())
- Q_PRIVATE_SLOT(d_func(), void _q_restartAuthPendingRequests())
};
@@ -160,11 +141,20 @@ public:
static const int defaultPipelineLength;
static const int defaultRePipelineLength;
+ enum ConnectionState {
+ RunningState = 0,
+ PausedState = 1,
+ };
+
QHttpNetworkConnectionPrivate(const QString &hostName, quint16 port, bool encrypt);
QHttpNetworkConnectionPrivate(quint16 channelCount, const QString &hostName, quint16 port, bool encrypt);
~QHttpNetworkConnectionPrivate();
void init();
+ void pauseConnection();
+ void resumeConnection();
+ ConnectionState state;
+
enum { ChunkSize = 4096 };
int indexOf(QAbstractSocket *socket) const;
@@ -184,7 +174,6 @@ public:
// private slots
void _q_startNextRequest(); // send the next request from the queue
- void _q_restartAuthPendingRequests(); // send the currently blocked request
void createAuthorization(QAbstractSocket *socket, QHttpNetworkRequest &request);
@@ -203,9 +192,6 @@ public:
const int channelCount;
QHttpNetworkConnectionChannel *channels; // parallel connections to the server
- bool pendingAuthSignal; // there is an incomplete authentication signal
- bool pendingProxyAuthSignal; // there is an incomplete proxy authentication signal
-
qint64 uncompressedBytesAvailable(const QHttpNetworkReply &reply) const;
qint64 uncompressedBytesAvailableNextBlock(const QHttpNetworkReply &reply) const;
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index 6437f6fb8f..c8caad48f1 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -68,8 +68,8 @@ QHttpNetworkConnectionChannel::QHttpNetworkConnectionChannel()
, lastStatus(0)
, pendingEncrypt(false)
, reconnectAttempts(2)
- , authMehtod(QAuthenticatorPrivate::None)
- , proxyAuthMehtod(QAuthenticatorPrivate::None)
+ , authMethod(QAuthenticatorPrivate::None)
+ , proxyAuthMethod(QAuthenticatorPrivate::None)
#ifndef QT_NO_OPENSSL
, ignoreAllSslErrors(false)
#endif
@@ -105,12 +105,22 @@ void QHttpNetworkConnectionChannel::init()
QObject::connect(socket, SIGNAL(readyRead()),
this, SLOT(_q_readyRead()),
Qt::DirectConnection);
+
+ // The disconnected() and error() signals may already come
+ // while calling connectToHost().
+ // In case of a cached hostname or an IP this
+ // will then emit a signal to the user of QNetworkReply
+ // but cannot be caught because the user did not have a chance yet
+ // to connect to QNetworkReply's signals.
+ qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
QObject::connect(socket, SIGNAL(disconnected()),
this, SLOT(_q_disconnected()),
- Qt::DirectConnection);
+ Qt::QueuedConnection);
QObject::connect(socket, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(_q_error(QAbstractSocket::SocketError)),
- Qt::DirectConnection);
+ Qt::QueuedConnection);
+
+
#ifndef QT_NO_NETWORKPROXY
QObject::connect(socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
this, SLOT(_q_proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
@@ -170,7 +180,6 @@ bool QHttpNetworkConnectionChannel::sendRequest()
reply->d_func()->autoDecompress = request.d->autoDecompress;
reply->d_func()->pipeliningUsed = false;
- pendingEncrypt = false;
// if the url contains authentication parameters, use the new ones
// both channels will use the new authentication parameters
if (!request.url().userInfo().isEmpty() && request.withCredentials()) {
@@ -180,6 +189,7 @@ bool QHttpNetworkConnectionChannel::sendRequest()
|| (!url.password().isEmpty() && url.password() != auth.password())) {
auth.setUser(url.userName());
auth.setPassword(url.password());
+ emit reply->cacheCredentials(request, &auth);
connection->d_func()->copyCredentials(connection->d_func()->indexOf(socket), &auth, false);
}
// clear the userinfo, since we use the same request for resending
@@ -299,7 +309,6 @@ bool QHttpNetworkConnectionChannel::sendRequest()
break;
}
case QHttpNetworkConnectionChannel::ReadingState:
- case QHttpNetworkConnectionChannel::Wait4AuthState:
// ignore _q_bytesWritten in these states
// fall through
default:
@@ -402,7 +411,9 @@ void QHttpNetworkConnectionChannel::_q_receiveReply()
}
case QHttpNetworkReplyPrivate::ReadingDataState: {
QHttpNetworkReplyPrivate *replyPrivate = reply->d_func();
- if (replyPrivate->downstreamLimited && !replyPrivate->responseData.isEmpty() && replyPrivate->shouldEmitSignals()) {
+ if (socket->state() == QAbstractSocket::ConnectedState &&
+ replyPrivate->downstreamLimited && !replyPrivate->responseData.isEmpty() && replyPrivate->shouldEmitSignals()) {
+ // (only do the following when still connected, not when we have already been disconnected and there is still data)
// We already have some HTTP body data. We don't read more from the socket until
// this is fetched by QHttpNetworkAccessHttpBackend. If we would read more,
// we could not limit our read buffer usage.
@@ -411,7 +422,6 @@ void QHttpNetworkConnectionChannel::_q_receiveReply()
// to the read buffer maximum size, but we don't care since they should be small.
return;
}
-
if (!replyPrivate->isChunked() && !replyPrivate->autoDecompress
&& replyPrivate->bodyLength > 0) {
// bulk files like images should fulfill these properties and
@@ -787,8 +797,7 @@ void QHttpNetworkConnectionChannel::handleStatus()
? QNetworkReply::ProxyAuthenticationRequiredError
: QNetworkReply::AuthenticationRequiredError;
reply->d_func()->errorString = connection->d_func()->errorDetail(errorCode, socket);
- emit connection->error(errorCode, reply->d_func()->errorString);
- emit reply->finished();
+ emit reply->finishedWithError(errorCode, reply->d_func()->errorString);
}
break;
default:
@@ -935,7 +944,6 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
{
if (!socket)
return;
- bool send2Reply = false;
QNetworkReply::NetworkError errorCode = QNetworkReply::UnknownNetworkError;
switch (socketError) {
@@ -953,7 +961,6 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
closeAndResendCurrentRequest();
return;
} else {
- send2Reply = true;
errorCode = QNetworkReply::RemoteHostClosedError;
}
} else {
@@ -966,7 +973,6 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
closeAndResendCurrentRequest();
return;
}
- send2Reply = true;
errorCode = QNetworkReply::TimeoutError;
break;
case QAbstractSocket::ProxyAuthenticationRequiredError:
@@ -982,18 +988,14 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
}
QPointer<QHttpNetworkConnection> that = connection;
QString errorString = connection->d_func()->errorDetail(errorCode, socket, socket->errorString());
- if (send2Reply) {
- if (reply) {
- reply->d_func()->errorString = errorString;
- // this error matters only to this reply
- emit reply->finishedWithError(errorCode, errorString);
- }
- // send the next request
- QMetaObject::invokeMethod(that, "_q_startNextRequest", Qt::QueuedConnection);
- } else {
- // the failure affects all requests.
- emit connection->error(errorCode, errorString);
+
+ if (reply) {
+ reply->d_func()->errorString = errorString;
+ emit reply->finishedWithError(errorCode, errorString);
}
+ // send the next request
+ QMetaObject::invokeMethod(that, "_q_startNextRequest", Qt::QueuedConnection);
+
if (that) //signal emission triggered event loop
close();
}
@@ -1016,6 +1018,7 @@ void QHttpNetworkConnectionChannel::_q_encrypted()
if (!socket)
return; // ### error
state = QHttpNetworkConnectionChannel::IdleState;
+ pendingEncrypt = false;
sendRequest();
}
@@ -1024,7 +1027,11 @@ void QHttpNetworkConnectionChannel::_q_sslErrors(const QList<QSslError> &errors)
if (!socket)
return;
//QNetworkReply::NetworkError errorCode = QNetworkReply::ProtocolFailure;
- emit connection->sslErrors(errors);
+ // Also pause the connection because socket notifiers may fire while an user
+ // dialog is displaying
+ connection->d_func()->pauseConnection();
+ emit reply->sslErrors(errors);
+ connection->d_func()->resumeConnection();
}
void QHttpNetworkConnectionChannel::_q_encryptedBytesWritten(qint64 bytes)
diff --git a/src/network/access/qhttpnetworkconnectionchannel_p.h b/src/network/access/qhttpnetworkconnectionchannel_p.h
index 41a896dc86..fd18042d24 100644
--- a/src/network/access/qhttpnetworkconnectionchannel_p.h
+++ b/src/network/access/qhttpnetworkconnectionchannel_p.h
@@ -95,8 +95,7 @@ public:
WritingState = 2, // writing the data
WaitingState = 4, // waiting for reply
ReadingState = 8, // reading the reply
- Wait4AuthState = 0x10, // blocked for send till the current authentication slot is done
- BusyState = (ConnectingState|WritingState|WaitingState|ReadingState|Wait4AuthState)
+ BusyState = (ConnectingState|WritingState|WaitingState|ReadingState)
};
QAbstractSocket *socket;
ChannelState state;
@@ -108,8 +107,8 @@ public:
int lastStatus; // last status received on this channel
bool pendingEncrypt; // for https (send after encrypted)
int reconnectAttempts; // maximum 2 reconnection attempts
- QAuthenticatorPrivate::Method authMehtod;
- QAuthenticatorPrivate::Method proxyAuthMehtod;
+ QAuthenticatorPrivate::Method authMethod;
+ QAuthenticatorPrivate::Method proxyAuthMethod;
QAuthenticator authenticator;
QAuthenticator proxyAuthenticator;
#ifndef QT_NO_OPENSSL
@@ -159,6 +158,8 @@ public:
bool isSocketWaiting() const;
bool isSocketReading() const;
+ friend class QNetworkAccessHttpBackend;
+
protected slots:
void _q_receiveReply();
void _q_bytesWritten(qint64 bytes); // proceed sending
diff --git a/src/network/access/qhttpnetworkheader.cpp b/src/network/access/qhttpnetworkheader.cpp
index 669f9cf340..3eb2f3bc7c 100644
--- a/src/network/access/qhttpnetworkheader.cpp
+++ b/src/network/access/qhttpnetworkheader.cpp
@@ -60,7 +60,17 @@ QHttpNetworkHeaderPrivate::QHttpNetworkHeaderPrivate(const QHttpNetworkHeaderPri
qint64 QHttpNetworkHeaderPrivate::contentLength() const
{
bool ok = false;
- QByteArray value = headerField("content-length");
+ // We are not using the headerField() method here because servers might send us multiple content-length
+ // headers which is crap (see QTBUG-15311). Therefore just take the first content-length header field.
+ QByteArray value;
+ QList<QPair<QByteArray, QByteArray> >::ConstIterator it = fields.constBegin(),
+ end = fields.constEnd();
+ for ( ; it != end; ++it)
+ if (qstricmp("content-length", it->first) == 0) {
+ value = it->second;
+ break;
+ }
+
qint64 length = value.toULongLong(&ok);
if (ok)
return length;
diff --git a/src/network/access/qhttpnetworkreply.cpp b/src/network/access/qhttpnetworkreply.cpp
index 108ba8a369..21bc427d3e 100644
--- a/src/network/access/qhttpnetworkreply.cpp
+++ b/src/network/access/qhttpnetworkreply.cpp
@@ -188,6 +188,12 @@ QByteArray QHttpNetworkReply::readAny()
return d->responseData.read();
}
+QByteArray QHttpNetworkReply::readAll()
+{
+ Q_D(QHttpNetworkReply);
+ return d->responseData.readAll();
+}
+
void QHttpNetworkReply::setDownstreamLimited(bool dsl)
{
Q_D(QHttpNetworkReply);
@@ -205,6 +211,11 @@ bool QHttpNetworkReply::isPipeliningUsed() const
return d_func()->pipeliningUsed;
}
+QHttpNetworkConnection* QHttpNetworkReply::connection()
+{
+ return d_func()->connection;
+}
+
QHttpNetworkReplyPrivate::QHttpNetworkReplyPrivate(const QUrl &newUrl)
: QHttpNetworkHeaderPrivate(newUrl), state(NothingDoneState), statusCode(100),
diff --git a/src/network/access/qhttpnetworkreply_p.h b/src/network/access/qhttpnetworkreply_p.h
index 4011c78f7f..9cf805cb15 100644
--- a/src/network/access/qhttpnetworkreply_p.h
+++ b/src/network/access/qhttpnetworkreply_p.h
@@ -126,12 +126,15 @@ public:
qint64 bytesAvailable() const;
qint64 bytesAvailableNextBlock() const;
QByteArray readAny();
+ QByteArray readAll();
void setDownstreamLimited(bool t);
bool isFinished() const;
bool isPipeliningUsed() const;
+ QHttpNetworkConnection* connection();
+
#ifndef QT_NO_OPENSSL
QSslConfiguration sslConfiguration() const;
void setSslConfiguration(const QSslConfiguration &config);
@@ -149,7 +152,11 @@ Q_SIGNALS:
void headerChanged();
void dataReadProgress(int done, int total);
void dataSendProgress(qint64 done, qint64 total);
-
+ void cacheCredentials(const QHttpNetworkRequest &request, QAuthenticator *authenticator);
+#ifndef QT_NO_NETWORKPROXY
+ void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator);
+#endif
+ void authenticationRequired(const QHttpNetworkRequest &request, QAuthenticator *authenticator);
private:
Q_DECLARE_PRIVATE(QHttpNetworkReply)
friend class QHttpNetworkConnection;
diff --git a/src/network/access/qnetworkaccessbackend.cpp b/src/network/access/qnetworkaccessbackend.cpp
index 60f7dc6369..12b640036b 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(),
@@ -154,6 +142,7 @@ void QNetworkAccessBackend::emitReplyUploadProgress(qint64 bytesSent, qint64 byt
QNetworkAccessBackend::QNetworkAccessBackend()
: manager(0)
, reply(0)
+ , synchronous(false)
{
}
@@ -329,7 +318,7 @@ void QNetworkAccessBackend::authenticationRequired(QAuthenticator *authenticator
void QNetworkAccessBackend::cacheCredentials(QAuthenticator *authenticator)
{
- manager->addCredentials(this->reply->url, authenticator);
+ manager->cacheCredentials(this->reply->url, authenticator);
}
void QNetworkAccessBackend::metaDataChanged()
diff --git a/src/network/access/qnetworkaccessbackend_p.h b/src/network/access/qnetworkaccessbackend_p.h
index 4fe6de6669..c9ec37e0bf 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();
@@ -158,6 +157,9 @@ public:
QVariant attribute(QNetworkRequest::Attribute code) const;
void setAttribute(QNetworkRequest::Attribute code, const QVariant &value);
+ bool isSynchronous() { return synchronous; }
+ void setSynchronous(bool sync) { synchronous = sync; }
+
// return true if the QNonContiguousByteDevice of the upload
// data needs to support reset(). Currently needed for HTTP.
// This will possibly enable buffering of the upload data.
@@ -167,6 +169,8 @@ public:
virtual bool canResume() const { return false; }
virtual void setResumeOffset(quint64 offset) { Q_UNUSED(offset); }
+ virtual bool processRequestSynchronously() { return false; }
+
protected:
// Create the device used for reading the upload data
QNonContiguousByteDevice* createUploadByteDevice();
@@ -201,6 +205,7 @@ private:
friend class QNetworkReplyImplPrivate;
QNetworkAccessManagerPrivate *manager;
QNetworkReplyImplPrivate *reply;
+ bool synchronous;
};
class QNetworkAccessBackendFactory
diff --git a/src/network/access/qnetworkaccesscachebackend.cpp b/src/network/access/qnetworkaccesscachebackend.cpp
index 73491a9436..e78694e449 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 df001ab612..32581d56f1 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/qnetworkaccessdatabackend.cpp b/src/network/access/qnetworkaccessdatabackend.cpp
index efb6e3ef26..74aebdbef7 100644
--- a/src/network/access/qnetworkaccessdatabackend.cpp
+++ b/src/network/access/qnetworkaccessdatabackend.cpp
@@ -122,4 +122,10 @@ bool QNetworkAccessDataBackend::waitForUpstreamBytesWritten(int)
return false;
}
+bool QNetworkAccessDataBackend::processRequestSynchronously()
+{
+ start();
+ return true;
+}
+
QT_END_NAMESPACE
diff --git a/src/network/access/qnetworkaccessdatabackend_p.h b/src/network/access/qnetworkaccessdatabackend_p.h
index a7c63d54a2..0e5a494eff 100644
--- a/src/network/access/qnetworkaccessdatabackend_p.h
+++ b/src/network/access/qnetworkaccessdatabackend_p.h
@@ -68,6 +68,8 @@ public:
virtual void closeUpstreamChannel();
virtual bool waitForDownstreamReadyRead(int msecs);
virtual bool waitForUpstreamBytesWritten(int msecs);
+
+ virtual bool processRequestSynchronously();
};
class QNetworkAccessDataBackendFactory: public QNetworkAccessBackendFactory
diff --git a/src/network/access/qnetworkaccessdebugpipebackend.cpp b/src/network/access/qnetworkaccessdebugpipebackend.cpp
index cd077e7056..5f99f84d31 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 58a4fd0ac6..918a813936 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 4560153dee..65f19ca6f5 100644
--- a/src/network/access/qnetworkaccessfilebackend.cpp
+++ b/src/network/access/qnetworkaccessfilebackend.cpp
@@ -203,12 +203,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 6df8710605..d1dbe8d9c2 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 1a5901129f..d1a18d3ee3 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 737fa72988..8a2bfc3a56 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 f617244b17..9df5d7be7e 100644
--- a/src/network/access/qnetworkaccesshttpbackend.cpp
+++ b/src/network/access/qnetworkaccesshttpbackend.cpp
@@ -50,6 +50,7 @@
#include "qnetworkrequest_p.h"
#include "qnetworkcookie_p.h"
#include "QtCore/qdatetime.h"
+#include "QtCore/qelapsedtimer.h"
#include "QtNetwork/qsslconfiguration.h"
#ifndef QT_NO_HTTP
@@ -318,7 +319,10 @@ void QNetworkAccessHttpBackend::disconnectFromHttp()
// Get the object cache that stores our QHttpNetworkConnection objects
QNetworkAccessCache *cache = QNetworkAccessManagerPrivate::getObjectCache(this);
- cache->releaseEntry(cacheKey);
+
+ // synchronous calls are not put into the cache, so for them the key is empty
+ if (!cacheKey.isEmpty())
+ cache->releaseEntry(cacheKey);
}
// This is abut disconnecting signals, not about disconnecting TCP connections
@@ -338,24 +342,6 @@ void QNetworkAccessHttpBackend::finished()
QNetworkAccessBackend::finished();
}
-void QNetworkAccessHttpBackend::setupConnection()
-{
-#ifndef QT_NO_NETWORKPROXY
- connect(http, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
- SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
-#endif
- connect(http, SIGNAL(authenticationRequired(QHttpNetworkRequest,QAuthenticator*)),
- SLOT(httpAuthenticationRequired(QHttpNetworkRequest,QAuthenticator*)));
- connect(http, SIGNAL(cacheCredentials(QHttpNetworkRequest,QAuthenticator*)),
- SLOT(httpCacheCredentials(QHttpNetworkRequest,QAuthenticator*)));
- connect(http, SIGNAL(error(QNetworkReply::NetworkError,QString)),
- SLOT(httpError(QNetworkReply::NetworkError,QString)));
-#ifndef QT_NO_OPENSSL
- connect(http, SIGNAL(sslErrors(QList<QSslError>)),
- SLOT(sslErrors(QList<QSslError>)));
-#endif
-}
-
/*
For a given httpRequest
1) If AlwaysNetwork, return
@@ -593,6 +579,8 @@ void QNetworkAccessHttpBackend::postRequest()
if (pendingIgnoreAllSslErrors)
httpReply->ignoreSslErrors();
httpReply->ignoreSslErrors(pendingIgnoreSslErrorsList);
+ connect(httpReply, SIGNAL(sslErrors(QList<QSslError>)),
+ SLOT(sslErrors(QList<QSslError>)));
#endif
connect(httpReply, SIGNAL(readyRead()), SLOT(replyReadyRead()));
@@ -600,6 +588,14 @@ void QNetworkAccessHttpBackend::postRequest()
connect(httpReply, SIGNAL(finishedWithError(QNetworkReply::NetworkError,QString)),
SLOT(httpError(QNetworkReply::NetworkError,QString)));
connect(httpReply, SIGNAL(headerChanged()), SLOT(replyHeaderChanged()));
+ connect(httpReply, SIGNAL(cacheCredentials(QHttpNetworkRequest,QAuthenticator*)),
+ SLOT(httpCacheCredentials(QHttpNetworkRequest,QAuthenticator*)));
+#ifndef QT_NO_NETWORKPROXY
+ connect(httpReply, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+#endif
+ connect(httpReply, SIGNAL(authenticationRequired(const QHttpNetworkRequest,QAuthenticator*)),
+ SLOT(httpAuthenticationRequired(const QHttpNetworkRequest,QAuthenticator*)));
}
void QNetworkAccessHttpBackend::invalidateCache()
@@ -647,35 +643,49 @@ void QNetworkAccessHttpBackend::open()
if (transparentProxy.type() == QNetworkProxy::DefaultProxy &&
cacheProxy.type() == QNetworkProxy::DefaultProxy) {
// unsuitable proxies
- QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
- Q_ARG(QNetworkReply::NetworkError, QNetworkReply::ProxyNotFoundError),
- Q_ARG(QString, tr("No suitable proxy found")));
- QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
- return;
+ if (isSynchronous()) {
+ error(QNetworkReply::ProxyNotFoundError, tr("No suitable proxy found"));
+ finished();
+ } else {
+ QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection,
+ Q_ARG(QNetworkReply::NetworkError, QNetworkReply::ProxyNotFoundError),
+ Q_ARG(QString, tr("No suitable proxy found")));
+ QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection);
+ }
+ return;
}
#endif
- // check if we have an open connection to this host
- cacheKey = makeCacheKey(this, theProxy);
- QNetworkAccessCache *cache = QNetworkAccessManagerPrivate::getObjectCache(this);
- // the http object is actually a QHttpNetworkConnection
- http = static_cast<QNetworkAccessCachedHttpConnection *>(cache->requestEntryNow(cacheKey));
- if (http == 0) {
- // no entry in cache; create an object
- // the http object is actually a QHttpNetworkConnection
- http = new QNetworkAccessCachedHttpConnection(url.host(), url.port(), encrypt);
-
+ if (isSynchronous()) {
+ // for synchronous requests, we just create a new connection
+ http = new QHttpNetworkConnection(1, url.host(), url.port(), encrypt, this);
#ifndef QT_NO_NETWORKPROXY
http->setTransparentProxy(transparentProxy);
http->setCacheProxy(cacheProxy);
#endif
+ postRequest();
+ processRequestSynchronously();
+ } else {
+ // check if we have an open connection to this host
+ cacheKey = makeCacheKey(this, theProxy);
+ QNetworkAccessCache *cache = QNetworkAccessManagerPrivate::getObjectCache(this);
+ // the http object is actually a QHttpNetworkConnection
+ http = static_cast<QNetworkAccessCachedHttpConnection *>(cache->requestEntryNow(cacheKey));
+ if (http == 0) {
+ // no entry in cache; create an object
+ // the http object is actually a QHttpNetworkConnection
+ http = new QNetworkAccessCachedHttpConnection(url.host(), url.port(), encrypt);
- // cache the QHttpNetworkConnection corresponding to this cache key
- cache->addEntry(cacheKey, http);
- }
+#ifndef QT_NO_NETWORKPROXY
+ http->setTransparentProxy(transparentProxy);
+ http->setCacheProxy(cacheProxy);
+#endif
- setupConnection();
- postRequest();
+ // cache the QHttpNetworkConnection corresponding to this cache key
+ cache->addEntry(cacheKey, static_cast<QNetworkAccessCachedHttpConnection *>(http.data()));
+ }
+ postRequest();
+ }
}
void QNetworkAccessHttpBackend::closeDownstreamChannel()
@@ -683,26 +693,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();
@@ -880,29 +870,6 @@ void QNetworkAccessHttpBackend::httpError(QNetworkReply::NetworkError errorCode,
#if defined(QNETWORKACCESSHTTPBACKEND_DEBUG)
qDebug() << "http error!" << errorCode << errorString;
#endif
-#if 0
- static const QNetworkReply::NetworkError conversionTable[] = {
- QNetworkReply::ConnectionRefusedError,
- QNetworkReply::RemoteHostClosedError,
- QNetworkReply::HostNotFoundError,
- QNetworkReply::UnknownNetworkError, // SocketAccessError
- QNetworkReply::UnknownNetworkError, // SocketResourceError
- QNetworkReply::TimeoutError, // SocketTimeoutError
- QNetworkReply::UnknownNetworkError, // DatagramTooLargeError
- QNetworkReply::UnknownNetworkError, // NetworkError
- QNetworkReply::UnknownNetworkError, // AddressInUseError
- QNetworkReply::UnknownNetworkError, // SocketAddressNotAvailableError
- QNetworkReply::UnknownNetworkError, // UnsupportedSocketOperationError
- QNetworkReply::UnknownNetworkError, // UnfinishedSocketOperationError
- QNetworkReply::ProxyAuthenticationRequiredError
- };
- QNetworkReply::NetworkError code;
- if (int(errorCode) >= 0 &&
- uint(errorCode) < (sizeof conversionTable / sizeof conversionTable[0]))
- code = conversionTable[errorCode];
- else
- code = QNetworkReply::UnknownNetworkError;
-#endif
error(errorCode, errorString);
finished();
}
@@ -1177,6 +1144,87 @@ void QNetworkAccessHttpBackend::setResumeOffset(quint64 offset)
resumeOffset = offset;
}
+bool QNetworkAccessHttpBackend::processRequestSynchronously()
+{
+ QHttpNetworkConnectionChannel *channel = &http->channels()[0];
+
+ // Disconnect all socket signals. They will only confuse us when using waitFor*
+ QObject::disconnect(channel->socket, 0, 0, 0);
+
+ qint64 timeout = 20*1000; // 20 sec
+ QElapsedTimer timeoutTimer;
+
+ bool waitResult = channel->socket->waitForConnected(timeout);
+ timeoutTimer.start();
+
+ if (!waitResult || channel->socket->state() != QAbstractSocket::ConnectedState) {
+ error(QNetworkReply::UnknownNetworkError, QLatin1String("could not connect"));
+ return false;
+ }
+ channel->_q_connected(); // this will send the request (via sendRequest())
+
+#ifndef QT_NO_OPENSSL
+ if (http->isSsl()) {
+ qint64 remainingTimeEncrypted = timeout - timeoutTimer.elapsed();
+ if (!static_cast<QSslSocket *>(channel->socket)->waitForEncrypted(remainingTimeEncrypted)) {
+ error(QNetworkReply::SslHandshakeFailedError,
+ QLatin1String("could not encrypt or timeout while encrypting"));
+ return false;
+ }
+ channel->_q_encrypted();
+ }
+#endif
+
+ // if we get a 401 or 407, we might need to send the request twice, see below
+ bool authenticating = false;
+
+ do {
+ channel->sendRequest();
+
+ qint64 remainingTimeBytesWritten;
+ while(channel->socket->bytesToWrite() > 0 ||
+ channel->state == QHttpNetworkConnectionChannel::WritingState) {
+ remainingTimeBytesWritten = timeout - timeoutTimer.elapsed();
+ channel->sendRequest(); // triggers channel->socket->write()
+ if (!channel->socket->waitForBytesWritten(remainingTimeBytesWritten)) {
+ error(QNetworkReply::TimeoutError,
+ QLatin1String("could not write bytes to socket or timeout while writing"));
+ return false;
+ }
+ }
+
+ qint64 remainingTimeBytesRead = timeout - timeoutTimer.elapsed();
+ // Loop for at most remainingTime until either the socket disconnects
+ // or the reply is finished
+ do {
+ waitResult = channel->socket->waitForReadyRead(remainingTimeBytesRead);
+ remainingTimeBytesRead = timeout - timeoutTimer.elapsed();
+ if (!waitResult || remainingTimeBytesRead <= 0
+ || channel->socket->state() != QAbstractSocket::ConnectedState) {
+ error(QNetworkReply::TimeoutError,
+ QLatin1String("could not read from socket or timeout while reading"));
+ return false;
+ }
+
+ if (channel->socket->bytesAvailable())
+ channel->_q_readyRead();
+
+ if (!httpReply)
+ return false; // we got a 401 or 407 and cannot handle it (it might happen that
+ // disconnectFromHttp() was called, in that case the reply is zero)
+ // ### I am quite sure this does not work for NTLM
+ // ### how about uploading to an auth / proxyAuth site?
+
+ authenticating = (httpReply->statusCode() == 401 || httpReply->statusCode() == 407);
+
+ if (httpReply->isFinished())
+ break;
+ } while (remainingTimeBytesRead > 0);
+ } while (authenticating);
+
+ return true;
+}
+
QT_END_NAMESPACE
#endif // QT_NO_HTTP
diff --git a/src/network/access/qnetworkaccesshttpbackend_p.h b/src/network/access/qnetworkaccesshttpbackend_p.h
index c4c88ae305..cc2f9ac556 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);
@@ -100,6 +99,8 @@ public:
bool canResume() const;
void setResumeOffset(quint64 offset);
+ virtual bool processRequestSynchronously();
+
private slots:
void replyReadyRead();
void replyFinished();
@@ -112,7 +113,7 @@ private slots:
private:
QHttpNetworkReply *httpReply;
- QPointer<QNetworkAccessCachedHttpConnection> http;
+ QPointer<QHttpNetworkConnection> http;
QByteArray cacheKey;
QNetworkAccessBackendUploadIODevice *uploadDevice;
@@ -125,7 +126,6 @@ private:
quint64 resumeOffset;
void disconnectFromHttp();
- void setupConnection();
void validateCache(QHttpNetworkRequest &httpRequest, bool &loadedFromCache);
void invalidateCache();
void postRequest();
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp
index a637474057..4bc036e742 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -54,6 +54,7 @@
#include "qnetworkaccessfilebackend_p.h"
#include "qnetworkaccessdatabackend_p.h"
#include "qnetworkaccessdebugpipebackend_p.h"
+#include "qnetworkaccesscachebackend_p.h"
#include "qfilenetworkreply_p.h"
#include "QtCore/qbuffer.h"
@@ -944,6 +945,22 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
{
Q_D(QNetworkAccessManager);
+ // 4.7 only hotfix fast path for data:// URLs
+ // In 4.8 this is solved with QNetworkReplyDataImpl and will work there
+ // This hotfix is done for not needing a QNetworkSession for data://
+ if ((op == QNetworkAccessManager::GetOperation || op == QNetworkAccessManager::HeadOperation)
+ && (req.url().scheme() == QLatin1String("data"))) {
+ QNetworkReplyImpl *reply = new QNetworkReplyImpl(this);
+ QNetworkReplyImplPrivate *priv = reply->d_func();
+ priv->manager = this;
+ priv->backend = new QNetworkAccessDataBackend();
+ priv->backend->manager = this->d_func();
+ priv->backend->setParent(reply);
+ priv->backend->reply = priv;
+ priv->setup(op, req, outgoingData);
+ return reply;
+ }
+
// fast path for GET on file:// URLs
// Also if the scheme is empty we consider it a file.
// The QNetworkAccessFileBackend will right now only be used for PUT
@@ -954,6 +971,26 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
return new QFileNetworkReply(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://.
@@ -1009,16 +1046,8 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
priv->manager = this;
// second step: fetch cached credentials
- if (static_cast<QNetworkRequest::LoadControl>
- (request.attribute(QNetworkRequest::AuthenticationReuseAttribute,
- QNetworkRequest::Automatic).toInt()) == QNetworkRequest::Automatic) {
- QNetworkAuthenticationCredential *cred = d->fetchCachedCredentials(url);
- if (cred) {
- url.setUserName(cred->user);
- url.setPassword(cred->password);
- priv->urlForLastAuthentication = url;
- }
- }
+ // This is not done for the time being, we should use signal emissions to request
+ // the credentials from cache.
// third step: find a backend
priv->backend = d->findBackend(op, request);
@@ -1031,12 +1060,14 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
priv->backend->setParent(reply);
priv->backend->reply = priv;
}
- // fourth step: setup the reply
- priv->setup(op, request, outgoingData);
#ifndef QT_NO_OPENSSL
reply->setSslConfiguration(request.sslConfiguration());
#endif
+
+ // fourth step: setup the reply
+ priv->setup(op, request, outgoingData);
+
return reply;
}
@@ -1100,7 +1131,9 @@ void QNetworkAccessManagerPrivate::authenticationRequired(QNetworkAccessBackend
// don't try the cache for the same URL twice in a row
// being called twice for the same URL means the authentication failed
- if (url != backend->reply->urlForLastAuthentication) {
+ // also called when last URL is empty, e.g. on first call
+ if (backend->reply->urlForLastAuthentication.isEmpty()
+ || url != backend->reply->urlForLastAuthentication) {
QNetworkAuthenticationCredential *cred = fetchCachedCredentials(url, authenticator);
if (cred) {
authenticator->setUser(cred->user);
@@ -1110,9 +1143,14 @@ void QNetworkAccessManagerPrivate::authenticationRequired(QNetworkAccessBackend
}
}
+ // if we emit a signal here in synchronous mode, the user might spin
+ // an event loop, which might recurse and lead to problems
+ if (backend->isSynchronous())
+ return;
+
backend->reply->urlForLastAuthentication = url;
emit q->authenticationRequired(backend->reply->q_func(), authenticator);
- addCredentials(url, authenticator);
+ cacheCredentials(url, authenticator);
}
#ifndef QT_NO_NETWORKPROXY
@@ -1129,7 +1167,7 @@ void QNetworkAccessManagerPrivate::proxyAuthenticationRequired(QNetworkAccessBac
// possible solution: some tracking inside the authenticator
// or a new function proxyAuthenticationSucceeded(true|false)
if (proxy != backend->reply->lastProxyAuthentication) {
- QNetworkAuthenticationCredential *cred = fetchCachedCredentials(proxy);
+ QNetworkAuthenticationCredential *cred = fetchCachedProxyCredentials(proxy);
if (cred) {
authenticator->setUser(cred->user);
authenticator->setPassword(cred->password);
@@ -1137,12 +1175,17 @@ void QNetworkAccessManagerPrivate::proxyAuthenticationRequired(QNetworkAccessBac
}
}
+ // if we emit a signal here in synchronous mode, the user might spin
+ // an event loop, which might recurse and lead to problems
+ if (backend->isSynchronous())
+ return;
+
backend->reply->lastProxyAuthentication = proxy;
emit q->proxyAuthenticationRequired(proxy, authenticator);
- addCredentials(proxy, authenticator);
+ cacheProxyCredentials(proxy, authenticator);
}
-void QNetworkAccessManagerPrivate::addCredentials(const QNetworkProxy &p,
+void QNetworkAccessManagerPrivate::cacheProxyCredentials(const QNetworkProxy &p,
const QAuthenticator *authenticator)
{
Q_ASSERT(authenticator);
@@ -1179,7 +1222,7 @@ void QNetworkAccessManagerPrivate::addCredentials(const QNetworkProxy &p,
}
QNetworkAuthenticationCredential *
-QNetworkAccessManagerPrivate::fetchCachedCredentials(const QNetworkProxy &p,
+QNetworkAccessManagerPrivate::fetchCachedProxyCredentials(const QNetworkProxy &p,
const QAuthenticator *authenticator)
{
QNetworkProxy proxy = p;
@@ -1231,7 +1274,7 @@ QList<QNetworkProxy> QNetworkAccessManagerPrivate::queryProxy(const QNetworkProx
}
#endif
-void QNetworkAccessManagerPrivate::addCredentials(const QUrl &url,
+void QNetworkAccessManagerPrivate::cacheCredentials(const QUrl &url,
const QAuthenticator *authenticator)
{
Q_ASSERT(authenticator);
diff --git a/src/network/access/qnetworkaccessmanager_p.h b/src/network/access/qnetworkaccessmanager_p.h
index 695842caf9..2c6ee10d05 100644
--- a/src/network/access/qnetworkaccessmanager_p.h
+++ b/src/network/access/qnetworkaccessmanager_p.h
@@ -91,15 +91,15 @@ public:
void createCookieJar() const;
void authenticationRequired(QNetworkAccessBackend *backend, QAuthenticator *authenticator);
- void addCredentials(const QUrl &url, const QAuthenticator *auth);
+ void cacheCredentials(const QUrl &url, const QAuthenticator *auth);
QNetworkAuthenticationCredential *fetchCachedCredentials(const QUrl &url,
const QAuthenticator *auth = 0);
#ifndef QT_NO_NETWORKPROXY
void proxyAuthenticationRequired(QNetworkAccessBackend *backend, const QNetworkProxy &proxy,
QAuthenticator *authenticator);
- void addCredentials(const QNetworkProxy &proxy, const QAuthenticator *auth);
- QNetworkAuthenticationCredential *fetchCachedCredentials(const QNetworkProxy &proxy,
+ void cacheProxyCredentials(const QNetworkProxy &proxy, const QAuthenticator *auth);
+ QNetworkAuthenticationCredential *fetchCachedProxyCredentials(const QNetworkProxy &proxy,
const QAuthenticator *auth = 0);
QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query);
#endif
diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp
index 5850494805..cf6e674598 100644
--- a/src/network/access/qnetworkreplyimpl.cpp
+++ b/src/network/access/qnetworkreplyimpl.cpp
@@ -85,7 +85,7 @@ void QNetworkReplyImplPrivate::_q_startOperation()
}
#ifndef QT_NO_BEARERMANAGEMENT
- if (!backend->start()) {
+ if (!backend->start()) { // ### we should call that method even if bearer is not used
// backend failed to start because the session state is not Connected.
// QNetworkAccessManager will call reply->backend->start() again for us when the session
// state changes.
@@ -109,11 +109,15 @@ void QNetworkReplyImplPrivate::_q_startOperation()
}
#endif
- if (state != Finished) {
- if (operation == QNetworkAccessManager::GetOperation)
- pendingNotifications.append(NotifyDownstreamReadyWrite);
+ if (backend->isSynchronous()) {
+ state = Finished;
+ } else {
+ if (state != Finished) {
+ if (operation == QNetworkAccessManager::GetOperation)
+ pendingNotifications.append(NotifyDownstreamReadyWrite);
- handleNotifications();
+ handleNotifications();
+ }
}
}
@@ -287,7 +291,25 @@ void QNetworkReplyImplPrivate::setup(QNetworkAccessManager::Operation op, const
url = request.url();
operation = op;
- if (outgoingData && backend) {
+ q->QIODevice::open(QIODevice::ReadOnly);
+ // Internal code that does a HTTP reply for the synchronous Ajax
+ // in QtWebKit.
+ QVariant synchronousHttpAttribute = req.attribute(
+ static_cast<QNetworkRequest::Attribute>(QNetworkRequest::DownloadBufferAttribute + 1));
+ if (synchronousHttpAttribute.toBool()) {
+ backend->setSynchronous(true);
+ if (outgoingData && outgoingData->isSequential()) {
+ outgoingDataBuffer = new QRingBuffer();
+ QByteArray data;
+ do {
+ data = outgoingData->readAll();
+ if (data.isEmpty())
+ break;
+ outgoingDataBuffer->append(data);
+ } while (1);
+ }
+ }
+ if (outgoingData && backend && !backend->isSynchronous()) {
// there is data to be uploaded, e.g. HTTP POST.
if (!backend->needsResetableUploadData() || !outgoingData->isSequential()) {
@@ -298,7 +320,7 @@ void QNetworkReplyImplPrivate::setup(QNetworkAccessManager::Operation op, const
} else {
bool bufferingDisallowed =
req.attribute(QNetworkRequest::DoNotBufferUploadDataAttribute,
- false).toBool();
+ false).toBool();
if (bufferingDisallowed) {
// if a valid content-length header for the request was supplied, we can disable buffering
@@ -323,17 +345,18 @@ void QNetworkReplyImplPrivate::setup(QNetworkAccessManager::Operation op, const
// for HTTP, we want to send out the request as fast as possible to the network, without
// invoking methods in a QueuedConnection
#ifndef QT_NO_HTTP
- if (qobject_cast<QNetworkAccessHttpBackend *>(backend)) {
+ if (qobject_cast<QNetworkAccessHttpBackend *>(backend) || (backend && backend->isSynchronous())) {
_q_startOperation();
} else {
QMetaObject::invokeMethod(q, "_q_startOperation", Qt::QueuedConnection);
}
#else
- QMetaObject::invokeMethod(q, "_q_startOperation", Qt::QueuedConnection);
+ if (backend->isSynchronous())
+ _q_startOperation();
+ else
+ QMetaObject::invokeMethod(q, "_q_startOperation", Qt::QueuedConnection);
#endif // QT_NO_HTTP
- }
-
- q->QIODevice::open(QIODevice::ReadOnly);
+ }
}
void QNetworkReplyImplPrivate::backendNotify(InternalNotifications notification)
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp
index d3084cfdda..162392d8a6 100644
--- a/src/network/access/qnetworkrequest.cpp
+++ b/src/network/access/qnetworkrequest.cpp
@@ -194,16 +194,12 @@ QT_BEGIN_NAMESPACE
\value CookieLoadControlAttribute
Requests only, type: QVariant::Int (default: QNetworkRequest::Automatic)
Indicates whether to send 'Cookie' headers in the request.
-
This attribute is set to false by QtWebKit when creating a cross-origin
XMLHttpRequest where withCredentials has not been set explicitly to true by the
Javascript that created the request.
-
See \l{http://www.w3.org/TR/XMLHttpRequest2/#credentials-flag}{here} for more information.
-
(This value was introduced in 4.7.)
-
\value CookieSaveControlAttribute
Requests only, type: QVariant::Int (default: QNetworkRequest::Automatic)
Indicates whether to save 'Cookie' headers received from the server in reply
@@ -211,9 +207,7 @@ QT_BEGIN_NAMESPACE
This attribute is set to false by QtWebKit when creating a cross-origin
XMLHttpRequest where withCredentials has not been set explicitly to true by the
Javascript that created the request.
-
See \l{http://www.w3.org/TR/XMLHttpRequest2/#credentials-flag} {here} for more information.
-
(This value was introduced in 4.7.)
\value AuthenticationReuseAttribute
@@ -225,16 +219,12 @@ QT_BEGIN_NAMESPACE
This attribute is set to QNetworkRequest::Manual by QtWebKit when creating a cross-origin
XMLHttpRequest where withCredentials has not been set explicitly to true by the
Javascript that created the request.
-
See \l{http://www.w3.org/TR/XMLHttpRequest2/#credentials-flag} {here} for more information.
-
(This value was introduced in 4.7.)
\omitvalue MaximumDownloadBufferSizeAttribute
- (This value was introduced in 4.7.)
\omitvalue DownloadBufferAttribute
- (This value was introduced in 4.7.)
\value User
Special type. Additional information can be passed in
@@ -909,10 +899,16 @@ void QNetworkHeadersPrivate::parseAndSetHeader(const QByteArray &key, const QByt
// is it a known header?
QNetworkRequest::KnownHeaders parsedKey = parseHeaderName(key);
if (parsedKey != QNetworkRequest::KnownHeaders(-1)) {
- if (value.isNull())
+ if (value.isNull()) {
cookedHeaders.remove(parsedKey);
- else
+ } else if (parsedKey == QNetworkRequest::ContentLengthHeader
+ && cookedHeaders.contains(QNetworkRequest::ContentLengthHeader)) {
+ // Only set the cooked header "Content-Length" once.
+ // See bug QTBUG-15311
+ } else {
cookedHeaders.insert(parsedKey, parseHeaderValue(parsedKey, value));
+ }
+
}
}
diff --git a/src/network/access/qnetworkrequest.h b/src/network/access/qnetworkrequest.h
index cdadf0f69c..9bcc900ffa 100644
--- a/src/network/access/qnetworkrequest.h
+++ b/src/network/access/qnetworkrequest.h
@@ -85,6 +85,9 @@ public:
MaximumDownloadBufferSizeAttribute, // internal
DownloadBufferAttribute, // internal
+ // (DownloadBufferAttribute + 1) is reserved internal for QSynchronousHttpNetworkReply
+ // add the enum in 4.8
+
User = 1000,
UserMax = 32767
};
diff --git a/src/network/bearer/qnetworkconfigmanager.cpp b/src/network/bearer/qnetworkconfigmanager.cpp
index 23d7800de9..4c149a2c1e 100644
--- a/src/network/bearer/qnetworkconfigmanager.cpp
+++ b/src/network/bearer/qnetworkconfigmanager.cpp
@@ -229,8 +229,8 @@ QNetworkConfigurationManager::QNetworkConfigurationManager( QObject* parent )
QNetworkConfigurationManager::~QNetworkConfigurationManager()
{
QNetworkConfigurationManagerPrivate *priv = connManager();
-
- priv->disablePolling();
+ if (priv)
+ priv->disablePolling();
}
@@ -245,7 +245,11 @@ QNetworkConfigurationManager::~QNetworkConfigurationManager()
*/
QNetworkConfiguration QNetworkConfigurationManager::defaultConfiguration() const
{
- return connManager()->defaultConfiguration();
+ QNetworkConfigurationManagerPrivate *priv = connManager();
+ if (priv)
+ return priv->defaultConfiguration();
+
+ return QNetworkConfiguration();
}
/*!
@@ -275,7 +279,11 @@ QNetworkConfiguration QNetworkConfigurationManager::defaultConfiguration() const
*/
QList<QNetworkConfiguration> QNetworkConfigurationManager::allConfigurations(QNetworkConfiguration::StateFlags filter) const
{
- return connManager()->allConfigurations(filter);
+ QNetworkConfigurationManagerPrivate *priv = connManager();
+ if (priv)
+ return priv->allConfigurations(filter);
+
+ return QList<QNetworkConfiguration>();
}
/*!
@@ -286,7 +294,11 @@ QList<QNetworkConfiguration> QNetworkConfigurationManager::allConfigurations(QNe
*/
QNetworkConfiguration QNetworkConfigurationManager::configurationFromIdentifier(const QString &identifier) const
{
- return connManager()->configurationFromIdentifier(identifier);
+ QNetworkConfigurationManagerPrivate *priv = connManager();
+ if (priv)
+ return priv->configurationFromIdentifier(identifier);
+
+ return QNetworkConfiguration();
}
/*!
@@ -301,7 +313,11 @@ QNetworkConfiguration QNetworkConfigurationManager::configurationFromIdentifier(
*/
bool QNetworkConfigurationManager::isOnline() const
{
- return connManager()->isOnline();
+ QNetworkConfigurationManagerPrivate *priv = connManager();
+ if (priv)
+ return priv->isOnline();
+
+ return false;
}
/*!
@@ -309,7 +325,11 @@ bool QNetworkConfigurationManager::isOnline() const
*/
QNetworkConfigurationManager::Capabilities QNetworkConfigurationManager::capabilities() const
{
- return connManager()->capabilities();
+ QNetworkConfigurationManagerPrivate *priv = connManager();
+ if (priv)
+ return priv->capabilities();
+
+ return QNetworkConfigurationManager::Capabilities(0);
}
/*!
@@ -328,7 +348,9 @@ QNetworkConfigurationManager::Capabilities QNetworkConfigurationManager::capabil
*/
void QNetworkConfigurationManager::updateConfigurations()
{
- connManager()->performAsyncConfigurationUpdate();
+ QNetworkConfigurationManagerPrivate *priv = connManager();
+ if (priv)
+ priv->performAsyncConfigurationUpdate();
}
#include "moc_qnetworkconfigmanager.cpp"
diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp
index f97d833bd5..73f6b94ef1 100644
--- a/src/network/kernel/qauthenticator.cpp
+++ b/src/network/kernel/qauthenticator.cpp
@@ -164,9 +164,13 @@ QAuthenticator &QAuthenticator::operator=(const QAuthenticator &other)
{
if (d == other.d)
return *this;
- detach();
- d->user = other.d->user;
- d->password = other.d->password;
+
+ if (d && !d->ref.deref())
+ delete d;
+
+ d = other.d;
+ if (d)
+ d->ref.ref();
return *this;
}
@@ -232,19 +236,21 @@ void QAuthenticator::setUser(const QString &user)
//domain name is present
d->realm.clear();
d->userDomain = user.left(separatorPosn);
- d->user = user.mid(separatorPosn + 1);
+ d->extractedUser = user.mid(separatorPosn + 1);
+ d->user = user;
} else if((separatorPosn = user.indexOf(QLatin1String("@"))) != -1) {
//domain name is present
d->realm.clear();
d->userDomain = user.left(separatorPosn);
- d->user = user.left(separatorPosn);
+ d->extractedUser = user.left(separatorPosn);
+ d->user = user;
} else {
+ d->extractedUser = user;
d->user = user;
d->realm.clear();
d->userDomain.clear();
}
break;
- // For other auth mechanisms, domain name will be part of username
default:
d->user = user;
break;
@@ -1196,7 +1202,7 @@ static QByteArray qCreatev2Hash(const QAuthenticatorPrivate *ctx,
Q_ASSERT(hashKey.size() == 16);
// Assuming the user and domain is always unicode in challenge
QByteArray message =
- qStringAsUcs2Le(ctx->user.toUpper()) +
+ qStringAsUcs2Le(ctx->extractedUser.toUpper()) +
qStringAsUcs2Le(phase3->domainStr);
phase3->v2Hash = qEncodeHmacMd5(hashKey, message);
@@ -1401,8 +1407,8 @@ static QByteArray qNtlmPhase3(QAuthenticatorPrivate *ctx, const QByteArray& phas
pb.domainStr = ctx->userDomain;
}
- offset = qEncodeNtlmString(pb.user, offset, ctx->user, unicode);
- pb.userStr = ctx->user;
+ offset = qEncodeNtlmString(pb.user, offset, ctx->extractedUser, unicode);
+ pb.userStr = ctx->extractedUser;
offset = qEncodeNtlmString(pb.workstation, offset, ctx->workstation, unicode);
pb.workstationStr = ctx->workstation;
diff --git a/src/network/kernel/qauthenticator_p.h b/src/network/kernel/qauthenticator_p.h
index 4e09360d2a..9f2e607c06 100644
--- a/src/network/kernel/qauthenticator_p.h
+++ b/src/network/kernel/qauthenticator_p.h
@@ -71,6 +71,7 @@ public:
QAtomicInt ref;
QString user;
+ QString extractedUser;
QString password;
QVariantHash options;
Method method;
diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp
index bc5a025915..84f9517d3c 100644
--- a/src/network/kernel/qnetworkproxy.cpp
+++ b/src/network/kernel/qnetworkproxy.cpp
@@ -426,7 +426,8 @@ template<> void QSharedDataPointer<QNetworkProxyPrivate>::detach()
QNetworkProxy::QNetworkProxy()
: d(0)
{
- globalNetworkProxy()->init();
+ if (QGlobalNetworkProxy *globalProxy = globalNetworkProxy())
+ globalProxy->init();
}
/*!
@@ -441,7 +442,8 @@ QNetworkProxy::QNetworkProxy(ProxyType type, const QString &hostName, quint16 po
const QString &user, const QString &password)
: d(new QNetworkProxyPrivate(type, hostName, port, user, password))
{
- globalNetworkProxy()->init();
+ if (QGlobalNetworkProxy *globalProxy = globalNetworkProxy())
+ globalProxy->init();
}
/*!
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 505db71e69..f03d102ed4 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -1212,6 +1212,36 @@ void QAbstractSocketPrivate::fetchConnectionParameters()
#endif
}
+
+void QAbstractSocketPrivate::pauseSocketNotifiers(QAbstractSocket *socket)
+{
+ QAbstractSocketEngine *socketEngine = socket->d_func()->socketEngine;
+ if (!socketEngine)
+ return;
+ socket->d_func()->prePauseReadSocketNotifierState = socketEngine->isReadNotificationEnabled();
+ socket->d_func()->prePauseWriteSocketNotifierState = socketEngine->isWriteNotificationEnabled();
+ socket->d_func()->prePauseExceptionSocketNotifierState = socketEngine->isExceptionNotificationEnabled();
+ socketEngine->setReadNotificationEnabled(false);
+ socketEngine->setWriteNotificationEnabled(false);
+ socketEngine->setExceptionNotificationEnabled(false);
+}
+
+void QAbstractSocketPrivate::resumeSocketNotifiers(QAbstractSocket *socket)
+{
+ QAbstractSocketEngine *socketEngine = socket->d_func()->socketEngine;
+ if (!socketEngine)
+ return;
+ socketEngine->setReadNotificationEnabled(socket->d_func()->prePauseReadSocketNotifierState);
+ socketEngine->setWriteNotificationEnabled(socket->d_func()->prePauseWriteSocketNotifierState);
+ socketEngine->setExceptionNotificationEnabled(socket->d_func()->prePauseExceptionSocketNotifierState);
+}
+
+QAbstractSocketEngine* QAbstractSocketPrivate::getSocketEngine(QAbstractSocket *socket)
+{
+ return socket->d_func()->socketEngine;
+}
+
+
/*! \internal
Constructs a new abstract socket of type \a socketType. The \a
diff --git a/src/network/socket/qabstractsocket_p.h b/src/network/socket/qabstractsocket_p.h
index b51c30161b..7fba0fe1d3 100644
--- a/src/network/socket/qabstractsocket_p.h
+++ b/src/network/socket/qabstractsocket_p.h
@@ -158,6 +158,13 @@ public:
QAbstractSocket::SocketState state;
QAbstractSocket::SocketError socketError;
+
+ bool prePauseReadSocketNotifierState;
+ bool prePauseWriteSocketNotifierState;
+ bool prePauseExceptionSocketNotifierState;
+ static void pauseSocketNotifiers(QAbstractSocket*);
+ static void resumeSocketNotifiers(QAbstractSocket*);
+ static QAbstractSocketEngine* getSocketEngine(QAbstractSocket*);
};
QT_END_NAMESPACE
diff --git a/src/network/socket/qlocalserver_unix.cpp b/src/network/socket/qlocalserver_unix.cpp
index 560f5f6f87..c218d89ea4 100644
--- a/src/network/socket/qlocalserver_unix.cpp
+++ b/src/network/socket/qlocalserver_unix.cpp
@@ -119,7 +119,7 @@ bool QLocalServerPrivate::listen(const QString &requestedServerName)
// subsequent call to accept will not block in any case
//
// This change can be removed once more generic fix to select thread
- // syncronization problem is implemented.
+ // synchronization problem is implemented.
int flags = fcntl(listenSocket, F_GETFL, 0);
if (-1 == flags
|| -1 == (fcntl(listenSocket, F_SETFL, flags | O_NONBLOCK))) {
diff --git a/src/network/socket/qlocalsocket_win.cpp b/src/network/socket/qlocalsocket_win.cpp
index 1e0bced805..5b42578177 100644
--- a/src/network/socket/qlocalsocket_win.cpp
+++ b/src/network/socket/qlocalsocket_win.cpp
@@ -322,9 +322,9 @@ bool QLocalSocketPrivate::completeAsyncRead()
// buffer. We will read the remaining data in the next call.
break;
case ERROR_PIPE_NOT_CONNECTED:
- setErrorString(QLatin1String("QLocalSocketPrivate::completeAsyncRead"));
- // fall through
+ return false;
default:
+ setErrorString(QLatin1String("QLocalSocketPrivate::completeAsyncRead"));
return false;
}
}
diff --git a/src/network/socket/qnativesocketengine_win.cpp b/src/network/socket/qnativesocketengine_win.cpp
index 477ef45b12..c1a4cfc1d0 100644
--- a/src/network/socket/qnativesocketengine_win.cpp
+++ b/src/network/socket/qnativesocketengine_win.cpp
@@ -733,7 +733,7 @@ int QNativeSocketEnginePrivate::nativeAccept()
{
int acceptedDescriptor = WSAAccept(socketDescriptor, 0,0,0,0);
if (acceptedDescriptor != -1 && QAbstractEventDispatcher::instance()) {
- // Becuase of WSAAsyncSelect() WSAAccept returns a non blocking socket
+ // Because of WSAAsyncSelect() WSAAccept returns a non blocking socket
// with the same attributes as the listening socket including the current
// WSAAsyncSelect(). To be able to change the socket to blocking mode the
// WSAAsyncSelect() call must be cancled.
diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
index a3ea555c65..275c7be718 100644
--- a/src/network/ssl/qsslcertificate.cpp
+++ b/src/network/ssl/qsslcertificate.cpp
@@ -716,7 +716,7 @@ QSslCertificate QSslCertificatePrivate::QSslCertificate_from_X509(X509 *x509)
static bool matchLineFeed(const QByteArray &pem, int *offset)
{
- char ch;
+ char ch = 0;
// ignore extra whitespace at the end of the line
while (*offset < pem.size() && (ch = pem.at(*offset)) == ' ')
diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp
index c9f421fc3c..a7527208c2 100644
--- a/src/network/ssl/qsslsocket.cpp
+++ b/src/network/ssl/qsslsocket.cpp
@@ -2035,6 +2035,20 @@ void QSslSocketPrivate::createPlainSocket(QIODevice::OpenMode openMode)
q->setReadBufferSize(readBufferMaxSize);
}
+void QSslSocketPrivate::pauseSocketNotifiers(QSslSocket *socket)
+{
+ if (!socket->d_func()->plainSocket)
+ return;
+ QAbstractSocketPrivate::pauseSocketNotifiers(socket->d_func()->plainSocket);
+}
+
+void QSslSocketPrivate::resumeSocketNotifiers(QSslSocket *socket)
+{
+ if (!socket->d_func()->plainSocket)
+ return;
+ QAbstractSocketPrivate::resumeSocketNotifiers(socket->d_func()->plainSocket);
+}
+
/*!
\internal
*/
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
index cd224df8a8..99b5a95e5d 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>
@@ -80,9 +81,6 @@ QT_BEGIN_NAMESPACE
bool QSslSocketPrivate::s_libraryLoaded = false;
bool QSslSocketPrivate::s_loadedCiphersAndCerts = false;
-// Useful defines
-#define SSL_ERRORSTR() QString::fromLocal8Bit(q_ERR_error_string(q_ERR_get_error(), NULL))
-
/* \internal
From OpenSSL's thread(3) manual page:
@@ -272,7 +270,7 @@ init_context:
}
// ### Bad error code
- q->setErrorString(QSslSocket::tr("Error creating SSL context (%1)").arg(SSL_ERRORSTR()));
+ q->setErrorString(QSslSocket::tr("Error creating SSL context (%1)").arg(getErrorsFromOpenSsl()));
q->setSocketError(QAbstractSocket::UnknownSocketError);
emit q->error(QAbstractSocket::UnknownSocketError);
return false;
@@ -297,7 +295,7 @@ init_context:
if (!q_SSL_CTX_set_cipher_list(ctx, cipherString.data())) {
// ### Bad error code
- q->setErrorString(QSslSocket::tr("Invalid or empty cipher list (%1)").arg(SSL_ERRORSTR()));
+ q->setErrorString(QSslSocket::tr("Invalid or empty cipher list (%1)").arg(getErrorsFromOpenSsl()));
q->setSocketError(QAbstractSocket::UnknownSocketError);
emit q->error(QAbstractSocket::UnknownSocketError);
return false;
@@ -325,14 +323,14 @@ init_context:
if (!configuration.localCertificate.isNull()) {
// Require a private key as well.
if (configuration.privateKey.isNull()) {
- q->setErrorString(QSslSocket::tr("Cannot provide a certificate with no key, %1").arg(SSL_ERRORSTR()));
+ q->setErrorString(QSslSocket::tr("Cannot provide a certificate with no key, %1").arg(getErrorsFromOpenSsl()));
emit q->error(QAbstractSocket::UnknownSocketError);
return false;
}
// Load certificate
if (!q_SSL_CTX_use_certificate(ctx, (X509 *)configuration.localCertificate.handle())) {
- q->setErrorString(QSslSocket::tr("Error loading local certificate, %1").arg(SSL_ERRORSTR()));
+ q->setErrorString(QSslSocket::tr("Error loading local certificate, %1").arg(getErrorsFromOpenSsl()));
emit q->error(QAbstractSocket::UnknownSocketError);
return false;
}
@@ -347,14 +345,14 @@ init_context:
else
q_EVP_PKEY_set1_DSA(pkey, (DSA *)configuration.privateKey.handle());
if (!q_SSL_CTX_use_PrivateKey(ctx, pkey)) {
- q->setErrorString(QSslSocket::tr("Error loading private key, %1").arg(SSL_ERRORSTR()));
+ q->setErrorString(QSslSocket::tr("Error loading private key, %1").arg(getErrorsFromOpenSsl()));
emit q->error(QAbstractSocket::UnknownSocketError);
return false;
}
// Check if the certificate matches the private key.
if (!q_SSL_CTX_check_private_key(ctx)) {
- q->setErrorString(QSslSocket::tr("Private key does not certify public key, %1").arg(SSL_ERRORSTR()));
+ q->setErrorString(QSslSocket::tr("Private key does not certify public key, %1").arg(getErrorsFromOpenSsl()));
emit q->error(QAbstractSocket::UnknownSocketError);
return false;
}
@@ -374,7 +372,7 @@ init_context:
// Create and initialize SSL session
if (!(ssl = q_SSL_new(ctx))) {
// ### Bad error code
- q->setErrorString(QSslSocket::tr("Error creating SSL session, %1").arg(SSL_ERRORSTR()));
+ q->setErrorString(QSslSocket::tr("Error creating SSL session, %1").arg(getErrorsFromOpenSsl()));
q->setSocketError(QAbstractSocket::UnknownSocketError);
emit q->error(QAbstractSocket::UnknownSocketError);
return false;
@@ -389,7 +387,7 @@ init_context:
writeBio = q_BIO_new(q_BIO_s_mem());
if (!readBio || !writeBio) {
// ### Bad error code
- q->setErrorString(QSslSocket::tr("Error creating SSL session: %1").arg(SSL_ERRORSTR()));
+ q->setErrorString(QSslSocket::tr("Error creating SSL session: %1").arg(getErrorsFromOpenSsl()));
q->setSocketError(QAbstractSocket::UnknownSocketError);
emit q->error(QAbstractSocket::UnknownSocketError);
return false;
@@ -574,7 +572,7 @@ void QSslSocketPrivate::resetDefaultCiphers()
#if defined(Q_OS_SYMBIAN)
CSymbianCertificateRetriever::CSymbianCertificateRetriever() : CActive(CActive::EPriorityStandard),
- iSequenceError(KErrNone)
+ iCertificatePtr(0,0,0), iSequenceError(KErrNone)
{
}
@@ -618,6 +616,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 +640,7 @@ void CSymbianCertificateRetriever::doThreadEntryL()
TInt CSymbianCertificateRetriever::ThreadEntryPoint(TAny* aParams)
{
+ User::SetCritical(User::EProcessCritical);
CTrapCleanup* cleanupStack = CTrapCleanup::New();
CSymbianCertificateRetriever* self = (CSymbianCertificateRetriever*) aParams;
@@ -647,18 +651,36 @@ TInt CSymbianCertificateRetriever::ThreadEntryPoint(TAny* aParams)
if (err)
return err;
else
- return self->iSequenceError; // return any error that occured during the retrieval
+ return self->iSequenceError; // return any error that occurred during the retrieval
}
void CSymbianCertificateRetriever::ConstructL()
{
- User::LeaveIfError(iThread.Create(_L("CertWorkerThread"),
- CSymbianCertificateRetriever::ThreadEntryPoint, 16384, NULL, this));
+ TInt err;
+ int i=0;
+ QString name(QLatin1String("CertWorkerThread-%1"));
+ //recently closed thread names remain in use for a while until all handles have been closed
+ //including users of RUndertaker
+ do {
+ err = iThread.Create(qt_QString2TPtrC(name.arg(i++)),
+ CSymbianCertificateRetriever::ThreadEntryPoint, 16384, NULL, this);
+ } while (err == KErrAlreadyExists);
+ User::LeaveIfError(err);
}
void CSymbianCertificateRetriever::DoCancel()
{
- // 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 +693,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 retrieve a certificate, error " << iStatus.Int();
+ GetCertificateL();
break;
}
}
@@ -710,6 +746,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;
@@ -800,6 +840,7 @@ QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates()
systemCerts.append(QSslCertificate::fromPath(it.next()));
}
systemCerts.append(QSslCertificate::fromPath(QLatin1String("/etc/pki/tls/certs/ca-bundle.crt"), QSsl::Pem)); // Fedora, Mandriva
+ systemCerts.append(QSslCertificate::fromPath(QLatin1String("/usr/local/share/certs/ca-root-nss.crt"), QSsl::Pem)); // FreeBSD's ca_root_nss
#elif defined(Q_OS_SYMBIAN)
QList<QByteArray> certs;
@@ -808,10 +849,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;
}
@@ -868,7 +917,7 @@ void QSslSocketBackendPrivate::transmit()
int writtenBytes = q_SSL_write(ssl, writeBuffer.readPointer(), nextDataBlockSize);
if (writtenBytes <= 0) {
// ### Better error handling.
- q->setErrorString(QSslSocket::tr("Unable to write data: %1").arg(SSL_ERRORSTR()));
+ q->setErrorString(QSslSocket::tr("Unable to write data: %1").arg(getErrorsFromOpenSsl()));
q->setSocketError(QAbstractSocket::UnknownSocketError);
emit q->error(QAbstractSocket::UnknownSocketError);
return;
@@ -931,7 +980,7 @@ void QSslSocketBackendPrivate::transmit()
plainSocket->read(data.data(), writtenToBio);
} else {
// ### Better error handling.
- q->setErrorString(QSslSocket::tr("Unable to decrypt data: %1").arg(SSL_ERRORSTR()));
+ q->setErrorString(QSslSocket::tr("Unable to decrypt data: %1").arg(getErrorsFromOpenSsl()));
q->setSocketError(QAbstractSocket::UnknownSocketError);
emit q->error(QAbstractSocket::UnknownSocketError);
return;
@@ -1009,7 +1058,7 @@ void QSslSocketBackendPrivate::transmit()
case SSL_ERROR_SSL: // error in the SSL library
// we do not know exactly what the error is, nor whether we can recover from it,
// so just return to prevent an endless loop in the outer "while" statement
- q->setErrorString(QSslSocket::tr("Error while reading: %1").arg(SSL_ERRORSTR()));
+ q->setErrorString(QSslSocket::tr("Error while reading: %1").arg(getErrorsFromOpenSsl()));
q->setSocketError(QAbstractSocket::UnknownSocketError);
emit q->error(QAbstractSocket::UnknownSocketError);
return;
@@ -1019,7 +1068,7 @@ void QSslSocketBackendPrivate::transmit()
// SSL_ERROR_WANT_X509_LOOKUP: can only happen with a
// SSL_CTX_set_client_cert_cb(), which we do not call.
// So this default case should never be triggered.
- q->setErrorString(QSslSocket::tr("Error while reading: %1").arg(SSL_ERRORSTR()));
+ q->setErrorString(QSslSocket::tr("Error while reading: %1").arg(getErrorsFromOpenSsl()));
q->setSocketError(QAbstractSocket::UnknownSocketError);
emit q->error(QAbstractSocket::UnknownSocketError);
break;
@@ -1114,8 +1163,7 @@ bool QSslSocketBackendPrivate::startHandshake()
// The handshake is not yet complete.
break;
default:
- // ### Handle errors better
- q->setErrorString(QSslSocket::tr("Error during SSL handshake: %1").arg(SSL_ERRORSTR()));
+ q->setErrorString(QSslSocket::tr("Error during SSL handshake: %1").arg(getErrorsFromOpenSsl()));
q->setSocketError(QAbstractSocket::SslHandshakeFailedError);
#ifdef QSSLSOCKET_DEBUG
qDebug() << "QSslSocketBackendPrivate::startHandshake: error!" << q->errorString();
@@ -1291,6 +1339,19 @@ QList<QSslCertificate> QSslSocketBackendPrivate::STACKOFX509_to_QSslCertificates
return certificates;
}
+QString QSslSocketBackendPrivate::getErrorsFromOpenSsl()
+{
+ QString errorString;
+ unsigned long errNum;
+ while((errNum = q_ERR_get_error())) {
+ if (! errorString.isEmpty())
+ errorString.append(QLatin1String(", "));
+ const char *error = q_ERR_error_string(errNum, NULL);
+ errorString.append(QString::fromAscii(error)); // error is ascii according to man ERR_error_string
+ }
+ return errorString;
+}
+
bool QSslSocketBackendPrivate::isMatchingHostname(const QString &cn, const QString &hostname)
{
int wildcard = cn.indexOf(QLatin1Char('*'));
diff --git a/src/network/ssl/qsslsocket_openssl_p.h b/src/network/ssl/qsslsocket_openssl_p.h
index dec98ae5f9..878c654a24 100644
--- a/src/network/ssl/qsslsocket_openssl_p.h
+++ b/src/network/ssl/qsslsocket_openssl_p.h
@@ -117,6 +117,7 @@ public:
static QSslCipher QSslCipher_from_SSL_CIPHER(SSL_CIPHER *cipher);
static QList<QSslCertificate> STACKOFX509_to_QSslCertificates(STACK_OF(X509) *x509);
Q_AUTOTEST_EXPORT static bool isMatchingHostname(const QString &cn, const QString &hostname);
+ static QString getErrorsFromOpenSsl();
};
#if defined(Q_OS_SYMBIAN)
@@ -165,6 +166,7 @@ private:
CCertAttributeFilter* iCertFilter;
TInt iCurrentCertIndex;
QByteArray iCertificateData;
+ TPtr8 iCertificatePtr;
QList<QByteArray>* iCertificates;
TInt iSequenceError;
};
diff --git a/src/network/ssl/qsslsocket_p.h b/src/network/ssl/qsslsocket_p.h
index 72b3ef73a0..94f5f3936b 100644
--- a/src/network/ssl/qsslsocket_p.h
+++ b/src/network/ssl/qsslsocket_p.h
@@ -142,6 +142,8 @@ public:
// The socket itself, including private slots.
QTcpSocket *plainSocket;
void createPlainSocket(QIODevice::OpenMode openMode);
+ static void pauseSocketNotifiers(QSslSocket*);
+ static void resumeSocketNotifiers(QSslSocket*);
void _q_connectedSlot();
void _q_hostFoundSlot();
void _q_disconnectedSlot();
diff --git a/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp b/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp
index 559a6fd62d..167a7d26bd 100644
--- a/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp
+++ b/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp
@@ -63,8 +63,9 @@ QGLRect QGL2PEXVertexArray::boundingRect() const
void QGL2PEXVertexArray::addClosingLine(int index)
{
- if (QPointF(vertexArray.at(index)) != QPointF(vertexArray.last()))
- vertexArray.add(vertexArray.at(index));
+ QPointF point(vertexArray.at(index));
+ if (point != QPointF(vertexArray.last()))
+ vertexArray.add(point);
}
void QGL2PEXVertexArray::addCentroid(const QVectorPath &path, int subPathIndex)
diff --git a/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h b/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h
index 46029b9aea..b8c1018f59 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 06b96ae60c..536b44a7a6 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.
@@ -457,7 +457,7 @@ public:
AttributeOpacity
};
- // There are optimisations we can do, depending on the brush transform:
+ // There are optimizations we can do, depending on the brush transform:
// 1) May not have to apply perspective-correction
// 2) Can use lower precision for matrix
void optimiseForBrushTransform(QTransform::TransformationType transformType);
diff --git a/src/opengl/gl2paintengineex/qglengineshadersource_p.h b/src/opengl/gl2paintengineex/qglengineshadersource_p.h
index a7ece0f162..0d30f9a844 100644
--- a/src/opengl/gl2paintengineex/qglengineshadersource_p.h
+++ b/src/opengl/gl2paintengineex/qglengineshadersource_p.h
@@ -340,12 +340,7 @@ static const char* const qglslImageSrcFragmentShader = "\n\
uniform lowp sampler2D imageTexture; \n\
lowp vec4 srcPixel() \n\
{ \n"
-#ifdef QT_OPENGL_ES_2
- // work-around for driver bug
- "return 1.0 * texture2D(imageTexture, textureCoords); \n"
-#else
"return texture2D(imageTexture, textureCoords); \n"
-#endif
"}\n";
static const char* const qglslCustomSrcFragmentShader = "\n\
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index a98d7cce02..3ddc15afe7 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -102,7 +102,7 @@ extern Q_GUI_EXPORT bool qt_cleartype_enabled;
extern bool qt_applefontsmoothing_enabled;
#endif
-extern QImage qt_imageForBrush(int brushStyle, bool invert);
+Q_DECL_IMPORT extern QImage qt_imageForBrush(int brushStyle, bool invert);
////////////////////////////////// Private Methods //////////////////////////////////////////
@@ -825,7 +825,7 @@ void QGL2PaintEngineExPrivate::fill(const QVectorPath& path)
glBindBuffer(GL_ARRAY_BUFFER, cache->vbo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, cache->ibo);
- if (glSupportsElementIndexUint)
+ if (QGLExtensions::glExtensions() & QGLExtensions::ElementIndexUint)
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(quint32) * polys.indices.size(), polys.indices.data(), GL_STATIC_DRAW);
else
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(quint16) * polys.indices.size(), polys.indices.data(), GL_STATIC_DRAW);
@@ -836,7 +836,7 @@ void QGL2PaintEngineExPrivate::fill(const QVectorPath& path)
glBufferData(GL_ARRAY_BUFFER, sizeof(float) * vertices.size(), vertices.data(), GL_STATIC_DRAW);
#else
cache->vertices = (float *) qMalloc(sizeof(float) * polys.vertices.size());
- if (glSupportsElementIndexUint) {
+ if (QGLExtensions::glExtensions() & QGLExtensions::ElementIndexUint) {
cache->indices = (quint32 *) qMalloc(sizeof(quint32) * polys.indices.size());
memcpy(cache->indices, polys.indices.data(), sizeof(quint32) * polys.indices.size());
} else {
@@ -853,7 +853,7 @@ void QGL2PaintEngineExPrivate::fill(const QVectorPath& path)
glBindBuffer(GL_ARRAY_BUFFER, cache->vbo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, cache->ibo);
setVertexAttributePointer(QT_VERTEX_COORDS_ATTR, 0);
- if (glSupportsElementIndexUint)
+ if (QGLExtensions::glExtensions() & QGLExtensions::ElementIndexUint)
glDrawElements(cache->primitiveType, cache->indexCount, GL_UNSIGNED_INT, 0);
else
glDrawElements(cache->primitiveType, cache->indexCount, GL_UNSIGNED_SHORT, 0);
@@ -861,7 +861,7 @@ void QGL2PaintEngineExPrivate::fill(const QVectorPath& path)
glBindBuffer(GL_ARRAY_BUFFER, 0);
#else
setVertexAttributePointer(QT_VERTEX_COORDS_ATTR, cache->vertices);
- if (glSupportsElementIndexUint)
+ if (QGLExtensions::glExtensions() & QGLExtensions::ElementIndexUint)
glDrawElements(cache->primitiveType, cache->indexCount, GL_UNSIGNED_INT, (qint32 *)cache->indices);
else
glDrawElements(cache->primitiveType, cache->indexCount, GL_UNSIGNED_SHORT, (qint16 *)cache->indices);
@@ -1212,6 +1212,9 @@ void QGL2PaintEngineExPrivate::stroke(const QVectorPath &path, const QPen &pen)
stroker.process(dashStroke, pen, clip);
}
+ if (!stroker.vertexCount())
+ return;
+
if (opaque) {
prepareForDraw(opaque);
setVertexAttributePointer(QT_VERTEX_COORDS_ATTR, stroker.vertices());
@@ -1350,8 +1353,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
@@ -1430,7 +1433,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();
@@ -1475,18 +1478,20 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
QOpenGL2PaintEngineState *s = q->state();
QGLTextureGlyphCache *cache =
- (QGLTextureGlyphCache *) staticTextItem->fontEngine->glyphCache(ctx, glyphType, QTransform());
+ (QGLTextureGlyphCache *) staticTextItem->fontEngine()->glyphCache(ctx, glyphType, QTransform());
if (!cache || cache->cacheType() != glyphType) {
cache = new QGLTextureGlyphCache(ctx, glyphType, QTransform());
- staticTextItem->fontEngine->setGlyphCache(ctx, cache);
+ staticTextItem->fontEngine()->setGlyphCache(ctx, cache);
+ } else if (cache->context() == 0) { // Old context has been destroyed, new context has same ptr value
+ cache->setContext(ctx);
}
bool recreateVertexArrays = false;
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.
@@ -1494,8 +1499,13 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
// cache so this text is performed before we test if the cache size has changed.
if (recreateVertexArrays) {
cache->setPaintEnginePrivate(this);
- cache->populate(staticTextItem->fontEngine, staticTextItem->numGlyphs, staticTextItem->glyphs,
- staticTextItem->glyphPositions);
+ if (!cache->populate(staticTextItem->fontEngine(), staticTextItem->numGlyphs,
+ staticTextItem->glyphs, staticTextItem->glyphPositions)) {
+ // No space in cache. We need to clear the cache and try again
+ cache->clear();
+ cache->populate(staticTextItem->fontEngine(), staticTextItem->numGlyphs,
+ staticTextItem->glyphs, staticTextItem->glyphPositions);
+ }
}
if (cache->width() == 0 || cache->height() == 0)
@@ -1515,14 +1525,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
diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
index 919c542605..705ad096ef 100644
--- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
+++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
@@ -54,11 +54,18 @@ extern Q_GUI_EXPORT bool qt_cleartype_enabled;
QGLTextureGlyphCache::QGLTextureGlyphCache(QGLContext *context, QFontEngineGlyphCache::Type type, const QTransform &matrix)
: QImageTextureGlyphCache(type, matrix)
- , ctx(context)
+ , ctx(0)
, m_width(0)
, m_height(0)
, m_filterMode(Nearest)
{
+ setContext(context);
+}
+
+void QGLTextureGlyphCache::setContext(QGLContext *context)
+{
+ ctx = context;
+
// broken FBO readback is a bug in the SGX 1.3 and 1.4 drivers for the N900 where
// copying between FBO's is broken if the texture is either GL_ALPHA or POT. The
// workaround is to use a system-memory copy of the glyph cache for this device.
@@ -71,7 +78,7 @@ QGLTextureGlyphCache::QGLTextureGlyphCache(QGLContext *context, QFontEngineGlyph
SLOT(contextDestroyed(const QGLContext*)));
}
-QGLTextureGlyphCache::~QGLTextureGlyphCache()
+void QGLTextureGlyphCache::clear()
{
if (ctx) {
QGLShareContextScope scope(ctx);
@@ -81,7 +88,24 @@ QGLTextureGlyphCache::~QGLTextureGlyphCache()
if (m_width || m_height)
glDeleteTextures(1, &m_texture);
+
+ m_fbo = 0;
+ m_texture = 0;
+ m_width = 0;
+ m_height = 0;
+ m_w = 0;
+ m_h = 0;
+ m_cx = 0;
+ m_cy = 0;
+ m_currentRowHeight = 0;
+ coords.clear();
}
+
+}
+
+QGLTextureGlyphCache::~QGLTextureGlyphCache()
+{
+ clear();
}
void QGLTextureGlyphCache::createTextureData(int width, int height)
diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
index e22146dc5a..aaef3508cf 100644
--- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
+++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
@@ -90,6 +90,9 @@ public:
FilterMode filterMode() const { return m_filterMode; }
void setFilterMode(FilterMode m) { m_filterMode = m; }
+ void setContext(QGLContext *context);
+ QGLContext *context() const { return ctx; }
+
public Q_SLOTS:
void contextDestroyed(const QGLContext *context) {
if (context == ctx) {
@@ -98,10 +101,20 @@ public Q_SLOTS:
// the context may not be current, so we cannot directly
// destroy the fbo and texture here, but since the context
// is about to be destroyed, the GL server will do the
- // clean up for us anyway
+ // clean up for us anyway. We reset everything, so that the
+ // glyph cache object can be reused later by setting a new
+ // context on it.
m_fbo = 0;
m_texture = 0;
ctx = 0;
+ m_width = 0;
+ m_height = 0;
+ m_w = 0;
+ m_h = 0;
+ m_cx = 0;
+ m_cy = 0;
+ m_currentRowHeight = 0;
+ coords.clear();
} else {
// since the context holding the texture is shared, and
// about to be destroyed, we have to transfer ownership
@@ -111,6 +124,8 @@ public Q_SLOTS:
}
}
+ void clear();
+
private:
QGLContext *ctx;
diff --git a/src/opengl/gl2paintengineex/qtriangulator.cpp b/src/opengl/gl2paintengineex/qtriangulator.cpp
index b839b00ec9..75d5ce2412 100644
--- a/src/opengl/gl2paintengineex/qtriangulator.cpp
+++ b/src/opengl/gl2paintengineex/qtriangulator.cpp
@@ -58,7 +58,6 @@
#include <math.h>
#include <private/qgl_p.h>
-#include <private/qglextensions_p.h>
QT_BEGIN_NAMESPACE
@@ -340,7 +339,7 @@ static inline qint64 qPointDistanceFromLine(const QPodPoint &p, const QPodPoint
static inline bool qPointIsLeftOfLine(const QPodPoint &p, const QPodPoint &v1, const QPodPoint &v2)
{
- return qPointDistanceFromLine(p, v1, v2) < 0;
+ return QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(p, v1, v2) < 0;
}
// Return:
@@ -1742,7 +1741,7 @@ bool QTriangulator<T>::ComplexToSimple::calculateIntersection(int left, int righ
Intersection intersection;
intersection.leftEdge = left;
intersection.rightEdge = right;
- intersection.intersectionPoint = qIntersectionPoint(u1, u2, v1, v2);
+ intersection.intersectionPoint = QT_PREPEND_NAMESPACE(qIntersectionPoint)(u1, u2, v1, v2);
if (!intersection.intersectionPoint.isValid())
return false;
@@ -1768,10 +1767,10 @@ bool QTriangulator<T>::ComplexToSimple::edgeIsLeftOfEdge(int leftEdgeIndex, int
return true;
if (upper.x > qMax(l.x, u.x))
return false;
- qint64 d = qPointDistanceFromLine(upper, l, u);
+ qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(upper, l, u);
// d < 0: left, d > 0: right, d == 0: on top
if (d == 0)
- d = qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.lower()), l, u);
+ d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(m_parent->m_vertices.at(leftEdge.lower()), l, u);
return d < 0;
}
@@ -1815,7 +1814,7 @@ QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> QTriangulator<T>::ComplexToSim
while (current) {
const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower());
const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper());
- qint64 d = qPointDistanceFromLine(point, v1, v2);
+ qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2);
if (d == 0) {
result.first = result.second = current;
break;
@@ -1829,7 +1828,7 @@ QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> QTriangulator<T>::ComplexToSim
while (current) {
const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower());
const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper());
- qint64 d = qPointDistanceFromLine(point, v1, v2);
+ qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2);
Q_ASSERT(d >= 0);
if (d == 0) {
result.first = current;
@@ -1843,7 +1842,7 @@ QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> QTriangulator<T>::ComplexToSim
while (current) {
const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower());
const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper());
- qint64 d = qPointDistanceFromLine(point, v1, v2);
+ qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2);
Q_ASSERT(d <= 0);
if (d == 0) {
result.second = current;
@@ -1865,7 +1864,7 @@ QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> QTriangulator<T>::ComplexToSim
while (current) {
const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower());
const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper());
- qint64 d = qPointDistanceFromLine(point, v1, v2);
+ qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2);
if (d == 0)
break;
if (d < 0) {
@@ -1886,7 +1885,7 @@ QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> QTriangulator<T>::ComplexToSim
while (current) {
const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower());
const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper());
- qint64 d = qPointDistanceFromLine(point, v1, v2);
+ qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2);
Q_ASSERT(d >= 0);
if (d == 0) {
current = current->left;
@@ -1900,7 +1899,7 @@ QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> QTriangulator<T>::ComplexToSim
while (current) {
const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower());
const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper());
- qint64 d = qPointDistanceFromLine(point, v1, v2);
+ qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2);
Q_ASSERT(d <= 0);
if (d == 0) {
current = current->right;
@@ -1963,7 +1962,7 @@ void QTriangulator<T>::ComplexToSimple::reorderEdgeListRange(QRBTree<int>::Node
template <typename T>
void QTriangulator<T>::ComplexToSimple::sortEdgeList(const QPodPoint eventPoint)
{
- QIntersectionPoint eventPoint2 = qIntersectionPoint(eventPoint);
+ QIntersectionPoint eventPoint2 = QT_PREPEND_NAMESPACE(qIntersectionPoint)(eventPoint);
while (!m_topIntersection.isEmpty() && m_topIntersection.top().intersectionPoint < eventPoint2) {
Intersection intersection = m_topIntersection.pop();
@@ -2057,7 +2056,7 @@ void QTriangulator<T>::ComplexToSimple::calculateIntersections()
QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> range = bounds(event.point);
QRBTree<int>::Node *leftNode = range.first ? m_edgeList.previous(range.first) : 0;
int vertex = (event.type == Event::Upper ? m_edges.at(event.edge).upper() : m_edges.at(event.edge).lower());
- QIntersectionPoint eventPoint = qIntersectionPoint(event.point);
+ QIntersectionPoint eventPoint = QT_PREPEND_NAMESPACE(qIntersectionPoint)(event.point);
if (range.first != 0) {
splitEdgeListRange(range.first, range.second, vertex, eventPoint);
@@ -2214,7 +2213,7 @@ void QTriangulator<T>::ComplexToSimple::removeUnwantedEdgesAndConnect()
while (current != b.second) {
Q_ASSERT(current);
Q_ASSERT(m_edges.at(current->data).node == current);
- Q_ASSERT(qIntersectionPoint(event.point).isOnLine(m_parent->m_vertices.at(m_edges.at(current->data).from), m_parent->m_vertices.at(m_edges.at(current->data).to)));
+ Q_ASSERT(QT_PREPEND_NAMESPACE(qIntersectionPoint)(event.point).isOnLine(m_parent->m_vertices.at(m_edges.at(current->data).from), m_parent->m_vertices.at(m_edges.at(current->data).to)));
Q_ASSERT(m_parent->m_vertices.at(m_edges.at(current->data).from) == event.point || m_parent->m_vertices.at(m_edges.at(current->data).to) == event.point);
insertEdgeIntoVectorIfWanted(orderedEdges, current->data);
current = m_edgeList.next(current);
@@ -2613,10 +2612,10 @@ bool QTriangulator<T>::SimpleToMonotone::edgeIsLeftOfEdge(int leftEdgeIndex, int
const Edge &rightEdge = m_edges.at(rightEdgeIndex);
const QPodPoint &u = m_parent->m_vertices.at(rightEdge.upper());
const QPodPoint &l = m_parent->m_vertices.at(rightEdge.lower());
- qint64 d = qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.upper()), l, u);
+ qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(m_parent->m_vertices.at(leftEdge.upper()), l, u);
// d < 0: left, d > 0: right, d == 0: on top
if (d == 0)
- d = qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.lower()), l, u);
+ d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(m_parent->m_vertices.at(leftEdge.lower()), l, u);
return d < 0;
}
@@ -2646,7 +2645,7 @@ QRBTree<int>::Node *QTriangulator<T>::SimpleToMonotone::searchEdgeLeftOfPoint(in
while (current) {
const QPodPoint &p1 = m_parent->m_vertices.at(m_edges.at(current->data).lower());
const QPodPoint &p2 = m_parent->m_vertices.at(m_edges.at(current->data).upper());
- qint64 d = qPointDistanceFromLine(m_parent->m_vertices.at(pointIndex), p1, p2);
+ qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(m_parent->m_vertices.at(pointIndex), p1, p2);
if (d <= 0) {
current = current->left;
} else {
@@ -2669,7 +2668,7 @@ void QTriangulator<T>::SimpleToMonotone::classifyVertex(int i)
const QPodPoint &p1 = m_parent->m_vertices.at(e1.from);
const QPodPoint &p2 = m_parent->m_vertices.at(e2.from);
const QPodPoint &p3 = m_parent->m_vertices.at(e2.to);
- qint64 d = qPointDistanceFromLine(p1, p2, p3);
+ qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(p1, p2, p3);
Q_ASSERT(d != 0 || (!startOrSplit && !endOrMerge));
e2.type = RegularVertex;
@@ -3014,10 +3013,8 @@ void QTriangulator<T>::MonotoneToTriangles::decompose()
QTriangleSet qTriangulate(const qreal *polygon,
int count, uint hint, const QTransform &matrix)
{
- QGLContext *ctx = 0; // Not really used but needs to be introduced for glSupportsElementIndexUint
-
QTriangleSet triangleSet;
- if (glSupportsElementIndexUint) {
+ if (QGLExtensions::glExtensions() & QGLExtensions::ElementIndexUint) {
QTriangulator<quint32> triangulator;
triangulator.initialize(polygon, count, hint, matrix);
QVertexSet<quint32> vertexSet = triangulator.triangulate();
@@ -3037,10 +3034,8 @@ QTriangleSet qTriangulate(const qreal *polygon,
QTriangleSet qTriangulate(const QVectorPath &path,
const QTransform &matrix, qreal lod)
{
- QGLContext *ctx = 0; // Not really used but needs to be introduced for glSupportsElementIndexUint
-
QTriangleSet triangleSet;
- if (glSupportsElementIndexUint) {
+ if (QGLExtensions::glExtensions() & QGLExtensions::ElementIndexUint) {
QTriangulator<quint32> triangulator;
triangulator.initialize(path, matrix, lod);
QVertexSet<quint32> vertexSet = triangulator.triangulate();
@@ -3059,10 +3054,8 @@ QTriangleSet qTriangulate(const QVectorPath &path,
QTriangleSet qTriangulate(const QPainterPath &path,
const QTransform &matrix, qreal lod)
{
- QGLContext *ctx = 0; // Not really used but needs to be introduced for glSupportsElementIndexUint
-
QTriangleSet triangleSet;
- if (glSupportsElementIndexUint) {
+ if (QGLExtensions::glExtensions() & QGLExtensions::ElementIndexUint) {
QTriangulator<quint32> triangulator;
triangulator.initialize(path, matrix, lod);
QVertexSet<quint32> vertexSet = triangulator.triangulate();
@@ -3081,10 +3074,8 @@ QTriangleSet qTriangulate(const QPainterPath &path,
QPolylineSet qPolyline(const QVectorPath &path,
const QTransform &matrix, qreal lod)
{
- QGLContext *ctx = 0; // Not really used but needs to be introduced for glSupportsElementIndexUint
-
QPolylineSet polyLineSet;
- if (glSupportsElementIndexUint) {
+ if (QGLExtensions::glExtensions() & QGLExtensions::ElementIndexUint) {
QTriangulator<quint32> triangulator;
triangulator.initialize(path, matrix, lod);
QVertexSet<quint32> vertexSet = triangulator.polyline();
@@ -3103,10 +3094,8 @@ QPolylineSet qPolyline(const QVectorPath &path,
QPolylineSet qPolyline(const QPainterPath &path,
const QTransform &matrix, qreal lod)
{
- QGLContext *ctx = 0; // Not really used but needs to be introduced for glSupportsElementIndexUint
-
QPolylineSet polyLineSet;
- if (glSupportsElementIndexUint) {
+ if (QGLExtensions::glExtensions() & QGLExtensions::ElementIndexUint) {
QTriangulator<quint32> triangulator;
triangulator.initialize(path, matrix, lod);
QVertexSet<quint32> vertexSet = triangulator.polyline();
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 7f25887d0a..18f120366c 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -127,7 +127,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;
}
@@ -1637,12 +1642,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)
@@ -2079,7 +2095,9 @@ void QGLContextPrivate::cleanup()
void QGLContextPrivate::setVertexAttribArrayEnabled(int arrayIndex, bool enabled)
{
Q_ASSERT(arrayIndex < QT_GL_VERTEX_ARRAY_TRACKED_COUNT);
+#ifdef glEnableVertexAttribArray
Q_ASSERT(glEnableVertexAttribArray);
+#endif
if (vertexAttributeArraysEnabledState[arrayIndex] && !enabled)
glDisableVertexAttribArray(arrayIndex);
@@ -2092,7 +2110,9 @@ void QGLContextPrivate::setVertexAttribArrayEnabled(int arrayIndex, bool enabled
void QGLContextPrivate::syncGlState()
{
+#ifdef glEnableVertexAttribArray
Q_ASSERT(glEnableVertexAttribArray);
+#endif
for (int i = 0; i < QT_GL_VERTEX_ARRAY_TRACKED_COUNT; ++i) {
if (vertexAttributeArraysEnabledState[i])
glEnableVertexAttribArray(i);
@@ -2104,7 +2124,7 @@ void QGLContextPrivate::syncGlState()
#undef ctx
#ifdef QT_NO_EGL
-void QGLContextPrivate::swapRegion(const QRegion *)
+void QGLContextPrivate::swapRegion(const QRegion &)
{
Q_Q(QGLContext);
q->swapBuffers();
@@ -5292,6 +5312,12 @@ QGLExtensions::Extensions QGLExtensions::currentContextExtensions()
#if defined(QT_OPENGL_ES)
if (extensions.match("GL_OES_packed_depth_stencil"))
glExtensions |= PackedDepthStencil;
+ if (extensions.match("GL_OES_element_index_uint"))
+ glExtensions |= ElementIndexUint;
+ if (extensions.match("GL_OES_depth24"))
+ glExtensions |= Depth24;
+#else
+ glExtensions |= ElementIndexUint;
#endif
if (extensions.match("GL_ARB_framebuffer_object")) {
// ARB_framebuffer_object also includes EXT_framebuffer_blit.
diff --git a/src/opengl/qgl.h b/src/opengl/qgl.h
index f85cad56cc..9ae619dd39 100644
--- a/src/opengl/qgl.h
+++ b/src/opengl/qgl.h
@@ -428,6 +428,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 c79c4cdbf3..8902099cf2 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;
@@ -276,12 +276,12 @@ EGLSurface QGLContextPrivate::eglSurfaceForDevice() const
return eglSurface;
}
-void QGLContextPrivate::swapRegion(const QRegion *region)
+void QGLContextPrivate::swapRegion(const QRegion &region)
{
if (!valid || !eglContext)
return;
- eglContext->swapBuffersRegion2NOK(eglSurfaceForDevice(), region);
+ eglContext->swapBuffersRegion2NOK(eglSurfaceForDevice(), &region);
}
void QGLWidget::setMouseTracking(bool enable)
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index 387c8f780b..b46d428ab2 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -284,7 +284,9 @@ public:
DDSTextureCompression = 0x00008000,
ETC1TextureCompression = 0x00010000,
PVRTCTextureCompression = 0x00020000,
- FragmentShader = 0x00040000
+ FragmentShader = 0x00040000,
+ ElementIndexUint = 0x00080000,
+ Depth24 = 0x00100000
};
Q_DECLARE_FLAGS(Extensions, Extension)
@@ -315,6 +317,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:
@@ -324,7 +327,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);
@@ -341,7 +344,7 @@ public:
void setVertexAttribArrayEnabled(int arrayIndex, bool enabled = true);
void syncGlState(); // Makes sure the GL context's state is what we think it is
- void swapRegion(const QRegion *region);
+ void swapRegion(const QRegion &region);
#if defined(Q_WS_WIN)
void updateFormatVersion();
@@ -415,6 +418,7 @@ public:
GLuint current_fbo;
GLuint default_fbo;
QPaintEngine *active_engine;
+ QGLTextureDestroyer *texture_destroyer;
bool vertexAttributeArraysEnabledState[QT_GL_VERTEX_ARRAY_TRACKED_COUNT];
@@ -432,20 +436,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
@@ -488,6 +478,57 @@ 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);
+ if (oldContext)
+ 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,
@@ -504,16 +545,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 9d28de0b02..75dd1b6697 100644
--- a/src/opengl/qgl_x11egl.cpp
+++ b/src/opengl/qgl_x11egl.cpp
@@ -97,7 +97,6 @@ QGLTemporaryContext::QGLTemporaryContext(bool, QWidget *)
XVisualInfo visualInfo;
XVisualInfo *vi;
int numVisuals;
- EGLint id = 0;
visualInfo.visualid = QEgl::getCompatibleVisualId(config);
vi = XGetVisualInfo(X11->display, VisualIDMask, &visualInfo, &numVisuals);
@@ -346,7 +345,7 @@ void QGLWidgetPrivate::recreateEglSurface()
// old surface before re-creating a new one. Note: This should not be the case as the
// surface should be deleted before the old window id.
if (glcx->d_func()->eglSurface != EGL_NO_SURFACE && (currentId != eglSurfaceWindowId)) {
- qWarning("EGL surface for deleted window %x was not destroyed", eglSurfaceWindowId);
+ qWarning("EGL surface for deleted window %x was not destroyed", uint(eglSurfaceWindowId));
glcx->d_func()->destroyEglSurfaceForDevice();
}
@@ -377,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/qglextensions_p.h b/src/opengl/qglextensions_p.h
index e81e8497a2..a35ad8782d 100644
--- a/src/opengl/qglextensions_p.h
+++ b/src/opengl/qglextensions_p.h
@@ -346,17 +346,6 @@ struct QGLExtensionFuncs
qt_glEGLImageTargetTexture2DOES = 0;
qt_glEGLImageTargetRenderbufferStorageOES = 0;
#endif
-
- // OES_element_index_uint
-#if !defined(QT_OPENGL_ES)
- qt_glSupportsElementIndexUint = true;
-#else
- QString extensions = reinterpret_cast<const char *>(glGetString(GL_EXTENSIONS));
- if (extensions.contains("GL_OES_element_index_uint"))
- qt_glSupportsElementIndexUint = true;
- else
- qt_glSupportsElementIndexUint = false;
-#endif
}
@@ -483,8 +472,6 @@ struct QGLExtensionFuncs
_glEGLImageTargetTexture2DOES qt_glEGLImageTargetTexture2DOES;
_glEGLImageTargetRenderbufferStorageOES qt_glEGLImageTargetRenderbufferStorageOES;
#endif
-
- bool qt_glSupportsElementIndexUint;
};
@@ -576,6 +563,14 @@ struct QGLExtensionFuncs
#define GL_TEXTURE1 0x84C1
#endif
+#ifndef GL_DEPTH_COMPONENT16
+#define GL_DEPTH_COMPONENT16 0x81A5
+#endif
+
+#ifndef GL_DEPTH_COMPONENT24_OES
+#define GL_DEPTH_COMPONENT24_OES 0x81A6
+#endif
+
#ifndef GL_EXT_framebuffer_object
#define GL_INVALID_FRAMEBUFFER_OPERATION_EXT 0x0506
#define GL_MAX_RENDERBUFFER_SIZE_EXT 0x84E8
@@ -883,8 +878,6 @@ struct QGLExtensionFuncs
#define glEGLImageTargetRenderbufferStorageOES QGLContextPrivate::extensionFuncs(ctx).qt_glEGLImageTargetRenderbufferStorageOES
#endif
-#define glSupportsElementIndexUint QGLContextPrivate::extensionFuncs(ctx).qt_glSupportsElementIndexUint
-
extern bool qt_resolve_framebufferobject_extensions(QGLContext *ctx);
bool qt_resolve_buffer_extensions(QGLContext *ctx);
diff --git a/src/opengl/qglframebufferobject.cpp b/src/opengl/qglframebufferobject.cpp
index 6c9b2886d8..3ccefbf238 100644
--- a/src/opengl/qglframebufferobject.cpp
+++ b/src/opengl/qglframebufferobject.cpp
@@ -508,17 +508,26 @@ void QGLFramebufferObjectPrivate::init(QGLFramebufferObject *q, const QSize &sz,
Q_ASSERT(glIsRenderbuffer(depth_buffer));
if (samples != 0 && glRenderbufferStorageMultisampleEXT) {
#ifdef QT_OPENGL_ES
-#define GL_DEPTH_COMPONENT16 0x81A5
- glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER_EXT, samples,
- GL_DEPTH_COMPONENT16, size.width(), size.height());
+ if (QGLExtensions::glExtensions() & QGLExtensions::Depth24) {
+ glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER_EXT, samples,
+ GL_DEPTH_COMPONENT24_OES, size.width(), size.height());
+ } else {
+ glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER_EXT, samples,
+ GL_DEPTH_COMPONENT16, size.width(), size.height());
+ }
#else
glRenderbufferStorageMultisampleEXT(GL_RENDERBUFFER_EXT, samples,
GL_DEPTH_COMPONENT, size.width(), size.height());
#endif
} else {
#ifdef QT_OPENGL_ES
-#define GL_DEPTH_COMPONENT16 0x81A5
- glRenderbufferStorage(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT16, size.width(), size.height());
+ if (QGLExtensions::glExtensions() & QGLExtensions::Depth24) {
+ glRenderbufferStorage(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24_OES,
+ size.width(), size.height());
+ } else {
+ glRenderbufferStorage(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT16,
+ size.width(), size.height());
+ }
#else
glRenderbufferStorage(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, size.width(), size.height());
#endif
@@ -1162,8 +1171,8 @@ void QGLFramebufferObject::drawTexture(const QPointF &point, QMacCompatGLuint te
}
#endif
-extern int qt_defaultDpiX();
-extern int qt_defaultDpiY();
+Q_DECL_IMPORT extern int qt_defaultDpiX();
+Q_DECL_IMPORT extern int qt_defaultDpiY();
/*! \reimp */
int QGLFramebufferObject::metric(PaintDeviceMetric metric) const
diff --git a/src/opengl/qglpixelbuffer.cpp b/src/opengl/qglpixelbuffer.cpp
index 994947be4f..3992f34adb 100644
--- a/src/opengl/qglpixelbuffer.cpp
+++ b/src/opengl/qglpixelbuffer.cpp
@@ -416,8 +416,8 @@ QPaintEngine *QGLPixelBuffer::paintEngine() const
#endif
}
-extern int qt_defaultDpiX();
-extern int qt_defaultDpiY();
+Q_DECL_IMPORT extern int qt_defaultDpiX();
+Q_DECL_IMPORT extern int qt_defaultDpiY();
/*! \reimp */
int QGLPixelBuffer::metric(PaintDeviceMetric metric) const
diff --git a/src/opengl/qglpixelbuffer_egl.cpp b/src/opengl/qglpixelbuffer_egl.cpp
index 0b94f5a2d9..2d9f6f1111 100644
--- a/src/opengl/qglpixelbuffer_egl.cpp
+++ b/src/opengl/qglpixelbuffer_egl.cpp
@@ -74,7 +74,6 @@ bool QGLPixelBufferPrivate::init(const QSize &size, const QGLFormat &f, QGLWidge
// Use the same configuration as the widget we are sharing with.
ctx->setConfig(shareContext->config());
#if QGL_RENDER_TEXTURE
- EGLint value = EGL_FALSE;
if (ctx->configAttrib(EGL_BIND_TO_TEXTURE_RGBA) == EGL_TRUE)
textureFormat = EGL_TEXTURE_RGBA;
else if (ctx->configAttrib(EGL_BIND_TO_TEXTURE_RGB) == EGL_TRUE)
diff --git a/src/opengl/qglpixmapfilter.cpp b/src/opengl/qglpixmapfilter.cpp
index bfa5ef180b..74018cd2a1 100644
--- a/src/opengl/qglpixmapfilter.cpp
+++ b/src/opengl/qglpixmapfilter.cpp
@@ -63,8 +63,8 @@
QT_BEGIN_NAMESPACE
// qpixmapfilter.cpp
-void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed = 0);
-QImage qt_halfScaled(const QImage &source);
+Q_DECL_IMPORT void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed = 0);
+Q_DECL_IMPORT QImage qt_halfScaled(const QImage &source);
void QGLPixmapFilterBase::bindTexture(const QPixmap &src) const
{
@@ -436,7 +436,7 @@ static inline uint nextMultiple(uint x, uint multiplier)
return x + multiplier - mod;
}
-void qt_memrotate90_gl(const quint32 *src, int srcWidth, int srcHeight, int srcStride,
+Q_DECL_IMPORT void qt_memrotate90_gl(const quint32 *src, int srcWidth, int srcHeight, int srcStride,
quint32 *dest, int dstStride);
bool QGLPixmapBlurFilter::processGL(QPainter *painter, const QPointF &pos, const QPixmap &src, const QRectF &) const
diff --git a/src/opengl/qpaintengine_opengl.cpp b/src/opengl/qpaintengine_opengl.cpp
index 2f17aa6679..a04d93093e 100644
--- a/src/opengl/qpaintengine_opengl.cpp
+++ b/src/opengl/qpaintengine_opengl.cpp
@@ -79,7 +79,7 @@
QT_BEGIN_NAMESPACE
-extern QImage qt_imageForBrush(int brushStyle, bool invert); //in qbrush.cpp
+Q_DECL_IMPORT extern QImage qt_imageForBrush(int brushStyle, bool invert); //in qbrush.cpp
#ifdef QT_MAC_USE_COCOA
extern void *qt_current_nsopengl_context(); // qgl_mac.mm
#endif
@@ -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_gl.cpp b/src/opengl/qpixmapdata_gl.cpp
index 89000bb3f7..cd7f0c27d0 100644
--- a/src/opengl/qpixmapdata_gl.cpp
+++ b/src/opengl/qpixmapdata_gl.cpp
@@ -739,8 +739,8 @@ QGLTexture* QGLPixmapData::texture() const
return &m_texture;
}
-extern int qt_defaultDpiX();
-extern int qt_defaultDpiY();
+Q_DECL_IMPORT extern int qt_defaultDpiX();
+Q_DECL_IMPORT extern int qt_defaultDpiY();
int QGLPixmapData::metric(QPaintDevice::PaintDeviceMetric metric) const
{
diff --git a/src/opengl/qpixmapdata_gl_p.h b/src/opengl/qpixmapdata_gl_p.h
index f000993dfc..c0b223f5cf 100644
--- a/src/opengl/qpixmapdata_gl_p.h
+++ b/src/opengl/qpixmapdata_gl_p.h
@@ -169,6 +169,7 @@ private:
friend class QGLPixmapGLPaintDevice;
friend class QMeeGoPixmapData;
+ friend class QMeeGoLivePixmapData;
};
QT_END_NAMESPACE
diff --git a/src/opengl/qpixmapdata_x11gl_egl.cpp b/src/opengl/qpixmapdata_x11gl_egl.cpp
index 2c11a0b441..5cbc836791 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/opengl/qwindowsurface_gl.cpp b/src/opengl/qwindowsurface_gl.cpp
index 8157b2acb9..bbb98d0991 100644
--- a/src/opengl/qwindowsurface_gl.cpp
+++ b/src/opengl/qwindowsurface_gl.cpp
@@ -194,7 +194,7 @@ public:
widget = new QGLWidget(QGLFormat(QGL::SingleBuffer | QGL::NoDepthBuffer | QGL::NoStencilBuffer));
widget->resize(1, 1);
- // We dont need this internal widget to appear in QApplication::topLevelWidgets()
+ // We don't need this internal widget to appear in QApplication::topLevelWidgets()
if (QWidgetPrivate::allWidgets)
QWidgetPrivate::allWidgets->remove(widget);
initializing = false;
@@ -275,6 +275,8 @@ struct QGLWindowSurfacePrivate
QRegion paintedRegion;
QSize size;
+ QSize textureSize;
+
QList<QImage> buffers;
QGLWindowSurfaceGLPaintDevice glDevice;
QGLWindowSurface* q_ptr;
@@ -316,6 +318,7 @@ QGLWindowSurface::QGLWindowSurface(QWidget *window)
d_ptr->pb = 0;
d_ptr->fbo = 0;
d_ptr->ctx = 0;
+ d_ptr->tex_id = 0;
#if defined (QT_OPENGL_ES_2)
d_ptr->tried_fbo = true;
d_ptr->tried_pb = true;
@@ -433,7 +436,7 @@ static void drawTexture(const QRectF &rect, GLuint tex_id, const QSize &texSize,
void QGLWindowSurface::beginPaint(const QRegion &)
{
- if (! context())
+ if (!context())
return;
int clearFlags = 0;
@@ -457,13 +460,42 @@ void QGLWindowSurface::endPaint(const QRegion &rgn)
d_ptr->buffers.clear();
}
-void QGLWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoint &offset)
+static void blitTexture(QGLContext *ctx, GLuint texture, const QSize &viewport, const QSize &texSize, const QRect &targetRect, const QRect &sourceRect)
{
- if (context() && widget != window()) {
- qWarning("No native child widget support in GL window surface without FBOs or pixel buffers");
- return;
- }
+ glDisable(GL_DEPTH_TEST);
+ glDisable(GL_SCISSOR_TEST);
+ glDisable(GL_BLEND);
+
+ glViewport(0, 0, viewport.width(), viewport.height());
+
+ QGLShaderProgram *blitProgram =
+ QGLEngineSharedShaders::shadersForContext(ctx)->blitProgram();
+ blitProgram->bind();
+ blitProgram->setUniformValue("imageTexture", 0 /*QT_IMAGE_TEXTURE_UNIT*/);
+
+ // The shader manager's blit program does not multiply the
+ // vertices by the pmv matrix, so we need to do the effect
+ // of the orthographic projection here ourselves.
+ QRectF r;
+ qreal w = viewport.width();
+ qreal h = viewport.height();
+ r.setLeft((targetRect.left() / w) * 2.0f - 1.0f);
+ if (targetRect.right() == (viewport.width() - 1))
+ r.setRight(1.0f);
+ else
+ r.setRight((targetRect.right() / w) * 2.0f - 1.0f);
+ r.setBottom((targetRect.top() / h) * 2.0f - 1.0f);
+ if (targetRect.bottom() == (viewport.height() - 1))
+ r.setTop(1.0f);
+ else
+ r.setTop((targetRect.bottom() / w) * 2.0f - 1.0f);
+
+ drawTexture(r, texture, texSize, sourceRect);
+}
+
+void QGLWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoint &offset)
+{
//### Find out why d_ptr->geometry_updated isn't always false.
// flush() should not be called when d_ptr->geometry_updated is true. It assumes that either
// d_ptr->fbo or d_ptr->pb is allocated and has the correct size.
@@ -534,12 +566,29 @@ void QGLWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoint &
}
}
#endif
- if (hasPartialUpdateSupport() &&
- d_ptr->paintedRegion.boundingRect().width() * d_ptr->paintedRegion.boundingRect().height() <
- geometry().width() * geometry().height() * 0.2) {
- context()->d_func()->swapRegion(&d_ptr->paintedRegion);
- } else
- context()->swapBuffers();
+ bool doingPartialUpdate = hasPartialUpdateSupport() && br.width() * br.height() < parent->geometry().width() * parent->geometry().height() * 0.2;
+ QGLContext *ctx = reinterpret_cast<QGLContext *>(parent->d_func()->extraData()->glContext);
+ if (widget != window()) {
+ if (initializeOffscreenTexture(window()->size()))
+ qWarning() << "QGLWindowSurface: Flushing to native child widget, may lead to significant performance loss";
+ glBindTexture(target, d_ptr->tex_id);
+
+ const uint bottom = window()->height() - (br.y() + br.height());
+ glCopyTexSubImage2D(target, 0, br.x(), bottom, br.x(), bottom, br.width(), br.height());
+
+ glBindTexture(target, 0);
+
+ ctx->makeCurrent();
+ if (doingPartialUpdate)
+ blitTexture(ctx, d_ptr->tex_id, parent->size(), window()->size(), rect, br);
+ else
+ blitTexture(ctx, d_ptr->tex_id, parent->size(), window()->size(), parent->rect(), parent->rect().translated(offset + wOffset));
+ }
+
+ if (doingPartialUpdate)
+ ctx->d_func()->swapRegion(br);
+ else
+ ctx->swapBuffers();
d_ptr->paintedRegion = QRegion();
} else {
@@ -665,38 +714,10 @@ void QGLWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoint &
else if (d_ptr->fbo) {
Q_UNUSED(target);
- GLuint texture = d_ptr->fbo->texture();
-
- glDisable(GL_DEPTH_TEST);
-
if (d_ptr->fbo->isBound())
d_ptr->fbo->release();
- glViewport(0, 0, size.width(), size.height());
-
- QGLShaderProgram *blitProgram =
- QGLEngineSharedShaders::shadersForContext(ctx)->blitProgram();
- blitProgram->bind();
- blitProgram->setUniformValue("imageTexture", 0 /*QT_IMAGE_TEXTURE_UNIT*/);
-
- // The shader manager's blit program does not multiply the
- // vertices by the pmv matrix, so we need to do the effect
- // of the orthographic projection here ourselves.
- QRectF r;
- qreal w = size.width() ? size.width() : 1.0f;
- qreal h = size.height() ? size.height() : 1.0f;
- r.setLeft((rect.left() / w) * 2.0f - 1.0f);
- if (rect.right() == (size.width() - 1))
- r.setRight(1.0f);
- else
- r.setRight((rect.right() / w) * 2.0f - 1.0f);
- r.setBottom((rect.top() / h) * 2.0f - 1.0f);
- if (rect.bottom() == (size.height() - 1))
- r.setTop(1.0f);
- else
- r.setTop((rect.bottom() / w) * 2.0f - 1.0f);
-
- drawTexture(r, texture, window()->size(), br);
+ blitTexture(ctx, d_ptr->fbo->texture(), size, window()->size(), rect, br);
}
#endif
@@ -719,7 +740,6 @@ void QGLWindowSurface::updateGeometry() {
return;
d_ptr->geometry_updated = false;
-
QRect rect = geometry();
hijackWindow(window());
QGLContext *ctx = reinterpret_cast<QGLContext *>(window()->d_func()->extraData()->glContext);
@@ -740,11 +760,8 @@ void QGLWindowSurface::updateGeometry() {
if (d_ptr->ctx) {
#ifndef QT_OPENGL_ES_2
- if (d_ptr->destructive_swap_buffers) {
- glBindTexture(target, d_ptr->tex_id);
- glTexImage2D(target, 0, GL_RGBA, rect.width(), rect.height(), 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
- glBindTexture(target, 0);
- }
+ if (d_ptr->destructive_swap_buffers)
+ initializeOffscreenTexture(rect.size());
#endif
return;
}
@@ -824,15 +841,8 @@ void QGLWindowSurface::updateGeometry() {
ctx->makeCurrent();
#ifndef QT_OPENGL_ES_2
- if (d_ptr->destructive_swap_buffers) {
- glGenTextures(1, &d_ptr->tex_id);
- glBindTexture(target, d_ptr->tex_id);
- glTexImage2D(target, 0, GL_RGBA, rect.width(), rect.height(), 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
-
- glTexParameterf(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameterf(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glBindTexture(target, 0);
- }
+ if (d_ptr->destructive_swap_buffers)
+ initializeOffscreenTexture(rect.size());
#endif
qDebug() << "QGLWindowSurface: Using plain widget as window surface" << this;;
@@ -840,6 +850,23 @@ void QGLWindowSurface::updateGeometry() {
d_ptr->ctx->d_ptr->internal_context = true;
}
+bool QGLWindowSurface::initializeOffscreenTexture(const QSize &size)
+{
+ if (size == d_ptr->textureSize)
+ return false;
+
+ glGenTextures(1, &d_ptr->tex_id);
+ glBindTexture(GL_TEXTURE_2D, d_ptr->tex_id);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, size.width(), size.height(), 0, GL_RGB, GL_UNSIGNED_BYTE, 0);
+
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+ glBindTexture(GL_TEXTURE_2D, 0);
+
+ d_ptr->textureSize = size;
+ return true;
+}
+
bool QGLWindowSurface::scroll(const QRegion &area, int dx, int dy)
{
// this code randomly fails currently for unknown reasons
diff --git a/src/opengl/qwindowsurface_gl_p.h b/src/opengl/qwindowsurface_gl_p.h
index ffc2e86731..6906f351a5 100644
--- a/src/opengl/qwindowsurface_gl_p.h
+++ b/src/opengl/qwindowsurface_gl_p.h
@@ -107,6 +107,7 @@ private slots:
private:
void hijackWindow(QWidget *widget);
+ bool initializeOffscreenTexture(const QSize &size);
QGLWindowSurfacePrivate *d_ptr;
};
diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp
index ce9d11a307..b8e8badccb 100644
--- a/src/openvg/qpaintengine_vg.cpp
+++ b/src/openvg/qpaintengine_vg.cpp
@@ -55,6 +55,8 @@
#include <QtGui/private/qfontengine_p.h>
#include <QtGui/private/qpainterpath_p.h>
#include <QtGui/private/qstatictext_p.h>
+#include <QtGui/QApplication>
+#include <QtGui/QDesktopWidget>
#include <QtCore/qmath.h>
#include <QDebug>
#include <QSet>
@@ -1500,7 +1502,10 @@ void QVGPaintEnginePrivate::fill(VGPath path, const QBrush& brush, VGint rule)
return;
ensureBrush(brush);
setFillRule(rule);
+ QPen savedPen = currentPen;
+ currentPen = Qt::NoPen;
ensurePathTransform();
+ currentPen = savedPen;
vgDrawPath(path, VG_FILL_PATH);
}
@@ -3060,6 +3065,21 @@ void qt_vg_drawVGImageStencil
vgDrawImage(vgImg);
}
+bool QVGPaintEngine::canVgWritePixels(const QImage &image) const
+{
+ Q_D(const QVGPaintEngine);
+ // vgWritePixels ignores masking, blending and xforms so we can only use it if
+ // ALL of the following conditions are true:
+ // - It is a simple translate, or a scale of -1 on the y-axis (inverted)
+ // - The opacity is totally opaque
+ // - The composition mode is "source" OR "source over" provided the image is opaque
+ return ( d->imageTransform.type() <= QTransform::TxScale
+ && d->imageTransform.m11() == 1.0 && qAbs(d->imageTransform.m22()) == 1.0)
+ && d->opacity == 1.0f
+ && (d->blendMode == VG_BLEND_SRC || (d->blendMode == VG_BLEND_SRC_OVER &&
+ !image.hasAlphaChannel()));
+}
+
void QVGPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)
{
QPixmapData *pd = pm.pixmapData();
@@ -3074,9 +3094,18 @@ void QVGPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF
drawVGImage(d, r, vgpd->toVGImage(), vgpd->size(), sr);
else
drawVGImage(d, r, vgpd->toVGImage(d->opacity), vgpd->size(), sr);
- } else {
- drawImage(r, *(pd->buffer()), sr, Qt::AutoColor);
+
+ if(!vgpd->failedToAlloc)
+ return;
+
+ // try to reallocate next time if reasonable small pixmap
+ QSize screenSize = QApplication::desktop()->screenGeometry().size();
+ if (pm.size().width() <= screenSize.width()
+ && pm.size().height() <= screenSize.height())
+ vgpd->failedToAlloc = false;
}
+
+ drawImage(r, *(pd->buffer()), sr, Qt::AutoColor);
}
void QVGPaintEngine::drawPixmap(const QPointF &pos, const QPixmap &pm)
@@ -3093,9 +3122,18 @@ void QVGPaintEngine::drawPixmap(const QPointF &pos, const QPixmap &pm)
drawVGImage(d, pos, vgpd->toVGImage());
else
drawVGImage(d, pos, vgpd->toVGImage(d->opacity));
- } else {
- drawImage(pos, *(pd->buffer()));
+
+ if (!vgpd->failedToAlloc)
+ return;
+
+ // try to reallocate next time if reasonable small pixmap
+ QSize screenSize = QApplication::desktop()->screenGeometry().size();
+ if (pm.size().width() <= screenSize.width()
+ && pm.size().height() <= screenSize.height())
+ vgpd->failedToAlloc = false;
}
+
+ drawImage(pos, *(pd->buffer()));
}
void QVGPaintEngine::drawImage
@@ -3116,9 +3154,31 @@ void QVGPaintEngine::drawImage
QRectF(QPointF(0, 0), sr.size()));
}
} else {
- // Monochrome images need to use the vgChildImage() path.
- vgImg = toVGImage(image, flags);
- drawVGImage(d, r, vgImg, image.size(), sr);
+ if (canVgWritePixels(image) && (r.size() == sr.size()) && !flags) {
+ // Optimization for straight blits, no blending
+ int x = sr.x();
+ int y = sr.y();
+ int bpp = image.depth() >> 3; // bytes
+ int offset = 0;
+ int bpl = image.bytesPerLine();
+ if (d->imageTransform.m22() < 0) {
+ // inverted
+ offset = ((y + sr.height()) * bpl) - ((image.width() - x) * bpp);
+ bpl = -bpl;
+ } else {
+ offset = (y * bpl) + (x * bpp);
+ }
+ const uchar *bits = image.constBits() + offset;
+
+ QPointF mapped = d->imageTransform.map(r.topLeft());
+ vgWritePixels(bits, bpl, qt_vg_image_to_vg_format(image.format()),
+ mapped.x(), mapped.y() - sr.height(), r.width(), r.height());
+ return;
+ } else {
+ // Monochrome images need to use the vgChildImage() path.
+ vgImg = toVGImage(image, flags);
+ drawVGImage(d, r, vgImg, image.size(), sr);
+ }
}
vgDestroyImage(vgImg);
}
@@ -3127,10 +3187,21 @@ void QVGPaintEngine::drawImage(const QPointF &pos, const QImage &image)
{
Q_D(QVGPaintEngine);
VGImage vgImg;
- if (d->simpleTransform || d->opacity == 1.0f)
+ if (canVgWritePixels(image)) {
+ // Optimization for straight blits, no blending
+ bool inverted = (d->imageTransform.m22() < 0);
+ const uchar *bits = inverted ? image.constBits() + image.byteCount() : image.constBits();
+ int bpl = inverted ? -image.bytesPerLine() : image.bytesPerLine();
+
+ QPointF mapped = d->imageTransform.map(pos);
+ vgWritePixels(bits, bpl, qt_vg_image_to_vg_format(image.format()),
+ mapped.x(), mapped.y() - image.height(), image.width(), image.height());
+ return;
+ } else if (d->simpleTransform || d->opacity == 1.0f) {
vgImg = toVGImage(image);
- else
+ } else {
vgImg = toVGImageWithOpacity(image, d->opacity);
+ }
drawVGImage(d, pos, vgImg);
vgDestroyImage(vgImg);
}
@@ -3407,7 +3478,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);
}
@@ -3475,8 +3546,8 @@ void QVGPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
// Set the glyph drawing origin.
VGfloat origin[2];
- origin[0] = positions[0].x.toReal();
- origin[1] = positions[0].y.toReal();
+ origin[0] = positions[0].x.round().toReal();
+ origin[1] = positions[0].y.round().toReal();
vgSetfv(VG_GLYPH_ORIGIN, 2, origin);
// Fast anti-aliasing for paths, better for images.
@@ -3610,6 +3681,7 @@ void QVGPaintEngine::restoreState(QPaintEngine::DirtyFlags dirty)
d->maskIsSet = false;
d->scissorMask = false;
d->maskRect = QRect();
+ d->scissorDirty = true;
clipEnabledChanged();
}
diff --git a/src/openvg/qpaintengine_vg_p.h b/src/openvg/qpaintengine_vg_p.h
index 75cf053d6c..dc981376cb 100644
--- a/src/openvg/qpaintengine_vg_p.h
+++ b/src/openvg/qpaintengine_vg_p.h
@@ -170,6 +170,7 @@ private:
bool isDefaultClipRegion(const QRegion& region);
bool isDefaultClipRect(const QRect& rect);
bool clearRect(const QRectF &rect, const QColor &color);
+ bool canVgWritePixels(const QImage &image) const;
};
QT_END_NAMESPACE
diff --git a/src/openvg/qpixmapdata_vg.cpp b/src/openvg/qpixmapdata_vg.cpp
index e8ec3338d2..c3c7def54b 100644
--- a/src/openvg/qpixmapdata_vg.cpp
+++ b/src/openvg/qpixmapdata_vg.cpp
@@ -65,6 +65,7 @@ QVGPixmapData::QVGPixmapData(PixelType type)
recreate = true;
inImagePool = false;
inLRU = false;
+ failedToAlloc = false;
#if !defined(QT_NO_EGL)
context = 0;
qt_vg_register_pixmap(this);
@@ -155,6 +156,9 @@ void QVGPixmapData::resize(int wid, int ht)
void QVGPixmapData::fromImage
(const QImage &image, Qt::ImageConversionFlags flags)
{
+ if(image.isNull())
+ return;
+
QImage img = image;
createPixmapForImage(img, flags, false);
}
@@ -203,10 +207,19 @@ void QVGPixmapData::createPixmapForImage(QImage &image, Qt::ImageConversionFlags
else
resize(image.width(), image.height());
- if (inPlace && image.data_ptr()->convertInPlace(sourceFormat(), flags))
+ QImage::Format format = sourceFormat();
+ int d = image.depth();
+ if (d == 1 || d == 16 || d == 24 || (d == 32 && !image.hasAlphaChannel()))
+ format = QImage::Format_RGB32;
+ else if (!(flags & Qt::NoOpaqueDetection) && const_cast<QImage &>(image).data_ptr()->checkForAlphaPixels())
+ format = sourceFormat();
+ else
+ format = image.hasAlphaChannel() ? sourceFormat() : QImage::Format_RGB32;
+
+ if (inPlace && image.data_ptr()->convertInPlace(format, flags))
source = image;
else
- source = image.convertToFormat(sourceFormat());
+ source = image.convertToFormat(format);
recreate = true;
}
@@ -278,7 +291,7 @@ QPaintEngine* QVGPixmapData::paintEngine() const
VGImage QVGPixmapData::toVGImage()
{
- if (!isValid())
+ if (!isValid() || failedToAlloc)
return VG_INVALID_HANDLE;
#if !defined(QT_NO_EGL)
@@ -294,11 +307,13 @@ VGImage QVGPixmapData::toVGImage()
if (vgImage == VG_INVALID_HANDLE) {
vgImage = QVGImagePool::instance()->createImageForPixmap
- (VG_sARGB_8888_PRE, w, h, VG_IMAGE_QUALITY_FASTER, this);
+ (qt_vg_image_to_vg_format(source.format()), w, h, VG_IMAGE_QUALITY_FASTER, this);
// Bail out if we run out of GPU memory - try again next time.
- if (vgImage == VG_INVALID_HANDLE)
+ if (vgImage == VG_INVALID_HANDLE) {
+ failedToAlloc = true;
return VG_INVALID_HANDLE;
+ }
inImagePool = true;
} else if (inImagePool) {
@@ -309,7 +324,7 @@ VGImage QVGPixmapData::toVGImage()
vgImageSubData
(vgImage,
source.constBits(), source.bytesPerLine(),
- VG_sARGB_8888_PRE, 0, 0, w, h);
+ qt_vg_image_to_vg_format(source.format()), 0, 0, w, h);
}
recreate = false;
diff --git a/src/openvg/qpixmapdata_vg_p.h b/src/openvg/qpixmapdata_vg_p.h
index 114d5454b1..7ffdc85b70 100644
--- a/src/openvg/qpixmapdata_vg_p.h
+++ b/src/openvg/qpixmapdata_vg_p.h
@@ -143,7 +143,9 @@ private:
QVGPixmapData *nextLRU;
QVGPixmapData *prevLRU;
bool inLRU;
+ bool failedToAlloc;
friend class QVGImagePool;
+ friend class QVGPaintEngine;
#if !defined(QT_NO_EGL)
QVGPixmapData *next;
diff --git a/src/openvg/qvg_symbian.cpp b/src/openvg/qvg_symbian.cpp
index 41b35fc22e..c608c81dbe 100644
--- a/src/openvg/qvg_symbian.cpp
+++ b/src/openvg/qvg_symbian.cpp
@@ -164,7 +164,6 @@ void QVGPixmapData::fromNativeType(void* pixmap, NativeType type)
CFbsBitmap *bitmap = reinterpret_cast<CFbsBitmap*>(pixmap);
bool deleteSourceBitmap = false;
-
#ifdef Q_SYMBIAN_HAS_EXTENDED_BITMAP_TYPE
// Rasterize extended bitmaps
diff --git a/src/plugins/accessible/widgets/simplewidgets.cpp b/src/plugins/accessible/widgets/simplewidgets.cpp
index f39d5389f5..4a3acbb16c 100644
--- a/src/plugins/accessible/widgets/simplewidgets.cpp
+++ b/src/plugins/accessible/widgets/simplewidgets.cpp
@@ -602,7 +602,7 @@ int QAccessibleDisplay::navigate(RelationFlag rel, int entry, QAccessibleInterfa
return QAccessibleWidgetEx::navigate(rel, entry, target);
}
-/*! \reimp */
+/*! \internal */
QString QAccessibleDisplay::imageDescription()
{
#ifndef QT_NO_TOOLTIP
@@ -612,7 +612,7 @@ QString QAccessibleDisplay::imageDescription()
#endif
}
-/*! \reimp */
+/*! \internal */
QSize QAccessibleDisplay::imageSize()
{
QLabel *label = qobject_cast<QLabel *>(widget());
@@ -624,7 +624,7 @@ QSize QAccessibleDisplay::imageSize()
return pixmap->size();
}
-/*! \reimp */
+/*! \internal */
QRect QAccessibleDisplay::imagePosition(QAccessible2::CoordinateType coordType)
{
QLabel *label = qobject_cast<QLabel *>(widget());
diff --git a/src/plugins/bearer/connman/qconnmanengine.cpp b/src/plugins/bearer/connman/qconnmanengine.cpp
index a8b8911176..7f3501e80a 100644
--- a/src/plugins/bearer/connman/qconnmanengine.cpp
+++ b/src/plugins/bearer/connman/qconnmanengine.cpp
@@ -170,13 +170,26 @@ bool QConnmanEngine::hasIdentifier(const QString &id)
void QConnmanEngine::connectToId(const QString &id)
{
QMutexLocker locker(&mutex);
- QConnmanConnectThread *thread;
- thread = new QConnmanConnectThread(this);
- thread->setServicePath(serviceFromId(id));
- thread->setIdentifier(id);
- connect(thread,SIGNAL(connectionError(QString,QBearerEngineImpl::ConnectionError)),
- this,SIGNAL(connectionError(QString,QBearerEngineImpl::ConnectionError)));
- thread->start();
+ QString servicePath = serviceFromId(id);
+ QConnmanServiceInterface serv(servicePath);
+ if(!serv.isValid()) {
+ emit connectionError(id, QBearerEngineImpl::InterfaceLookupError);
+ } else {
+ if(serv.getType() != "cellular") {
+
+ serv.connect();
+ } else {
+ QOfonoManagerInterface ofonoManager(0);
+ QString modemPath = ofonoManager.currentModem().path();
+ QOfonoDataConnectionManagerInterface dc(modemPath,0);
+ foreach(const QDBusObjectPath dcPath,dc.getPrimaryContexts()) {
+ if(dcPath.path().contains(servicePath.section("_",-1))) {
+ QOfonoPrimaryDataContextInterface primaryContext(dcPath.path(),0);
+ primaryContext.setActive(true);
+ }
+ }
+ }
+ }
}
void QConnmanEngine::disconnectFromId(const QString &id)
@@ -713,6 +726,7 @@ void QConnmanEngine::addNetworkConfiguration(const QString &networkPath)
if(servicePath.isEmpty()) {
id = QString::number(qHash(networkPath));
+ serv = 0;
} else {
id = QString::number(qHash(servicePath));
serv = new QConnmanServiceInterface(servicePath,this);
@@ -791,62 +805,6 @@ bool QConnmanEngine::requiresPolling() const
return false;
}
-
-QConnmanConnectThread::QConnmanConnectThread(QObject *parent)
- :QThread(parent),
- servicePath(), identifier()
-{
-}
-
-QConnmanConnectThread::~QConnmanConnectThread()
-{
-}
-
-void QConnmanConnectThread::stop()
-{
- if(currentThread() != this) {
- QMetaObject::invokeMethod(this, "quit",
- Qt::QueuedConnection);
- } else {
- quit();
- }
- wait();
-}
-
-void QConnmanConnectThread::run()
-{
- QConnmanServiceInterface serv(servicePath);
- if(!serv.isValid()) {
- emit connectionError(identifier, QBearerEngineImpl::InterfaceLookupError);
- } else {
- if(serv.getType() != "cellular") {
- serv.connect();
- } else {
- QOfonoManagerInterface ofonoManager(0);
- QString modemPath = ofonoManager.currentModem().path();
- QOfonoDataConnectionManagerInterface dc(modemPath,0);
- foreach(const QDBusObjectPath dcPath,dc.getPrimaryContexts()) {
- if(dcPath.path().contains(servicePath.section("_",-1))) {
- QOfonoPrimaryDataContextInterface primaryContext(dcPath.path(),0);
- primaryContext.setActive(true);
- }
- }
- }
- }
-}
-
-void QConnmanConnectThread::setServicePath(const QString &path)
-{
- QMutexLocker locker(&mutex);
- servicePath = path;
-}
-
-void QConnmanConnectThread::setIdentifier(const QString &id)
-{
- QMutexLocker locker(&mutex);
- identifier = id;
-}
-
QT_END_NAMESPACE
#endif // QT_NO_DBUS
diff --git a/src/plugins/bearer/connman/qconnmanengine.h b/src/plugins/bearer/connman/qconnmanengine.h
index 569bbc7a73..2a2308f17d 100644
--- a/src/plugins/bearer/connman/qconnmanengine.h
+++ b/src/plugins/bearer/connman/qconnmanengine.h
@@ -59,14 +59,12 @@
#include <QMap>
#include <QVariant>
-#include <QtCore/qthread.h>
#ifndef QT_NO_BEARERMANAGEMENT
#ifndef QT_NO_DBUS
QT_BEGIN_NAMESPACE
-class QConnmanConnectThread;
class QConnmanEngine : public QBearerEngineImpl
{
Q_OBJECT
@@ -141,33 +139,8 @@ private:
bool isRoamingAllowed(const QString &context);
protected:
bool requiresPolling() const;
- QConnmanConnectThread *connThread;
};
-class QConnmanConnectThread : public QThread
-{
- Q_OBJECT
-
-public:
- QConnmanConnectThread(QObject *parent = 0);
- ~QConnmanConnectThread();
- bool keepRunning;
- void stop();
- void setServicePath(const QString &path);
- void setIdentifier(const QString &id);
-
-Q_SIGNALS:
- void connectionError(const QString &id, QBearerEngineImpl::ConnectionError error);
-
-protected:
- void run();
- QString servicePath;
- QString identifier;
-
-private:
- QMutex mutex;
-
-};
QT_END_NAMESPACE
diff --git a/src/plugins/bearer/connman/qconnmanservice_linux.cpp b/src/plugins/bearer/connman/qconnmanservice_linux.cpp
index 549a07a7a1..054542298d 100644
--- a/src/plugins/bearer/connman/qconnmanservice_linux.cpp
+++ b/src/plugins/bearer/connman/qconnmanservice_linux.cpp
@@ -106,7 +106,7 @@ if (QLatin1String(signal) == SIGNAL(propertyChanged(QString,QDBusVariant))) {
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -216,7 +216,6 @@ void QConnmanManagerInterface::registerCounter(const QString &path, quint32 inte
{ QDBusReply<QList<QDBusObjectPath> > reply = this->call(QLatin1String("RegisterCounter"),
QVariant::fromValue(path),
QVariant::fromValue(interval));
- bool ok = true;
if(reply.error().type() == QDBusError::InvalidArgs) {
qWarning() << reply.error().message();
}
@@ -225,7 +224,6 @@ void QConnmanManagerInterface::registerCounter(const QString &path, quint32 inte
void QConnmanManagerInterface::unregisterCounter(const QString &path)
{ QDBusReply<QList<QDBusObjectPath> > reply = this->call(QLatin1String("UnregisterCounter"),
QVariant::fromValue(path));
- bool ok = true;
if(reply.error().type() == QDBusError::InvalidArgs) {
qWarning() << reply.error().message();
}
@@ -338,7 +336,7 @@ void QConnmanNetworkInterface::connectNotify(const char *signal)
this->path(),
QLatin1String(CONNMAN_NETWORK_INTERFACE),
QLatin1String("PropertyChanged"),
- this,SIGNAL(propertyChanged(QString,QDBusVariant))) ) {
+ this,SIGNAL(propertyChanged(QString,QDBusVariant)))) {
qWarning() << "network properties not connected";
}
}
@@ -353,7 +351,7 @@ void QConnmanNetworkInterface::connectNotify(const char *signal)
helper,SLOT(propertyChanged(QString,QDBusVariant)));
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -538,7 +536,7 @@ void QConnmanServiceInterface::connectNotify(const char *signal)
helper,SLOT(propertyChanged(QString,QDBusVariant)));
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -569,10 +567,9 @@ QVariant QConnmanServiceInterface::getProperty(const QString &property)
return var;
}
-// clearProperty
void QConnmanServiceInterface::connect()
{
- QDBusReply<QVariantMap> reply = this->call(QLatin1String("Connect"));
+ this->asyncCall(QLatin1String("Connect"));
}
void QConnmanServiceInterface::disconnect()
@@ -866,7 +863,7 @@ void QConnmanTechnologyInterface::connectNotify(const char *signal)
helper,SLOT(propertyChanged(QString,QDBusVariant)));
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -1031,7 +1028,7 @@ void QConnmanDeviceInterface::connectNotify(const char *signal)
helper,SLOT(propertyChanged(QString,QDBusVariant)));
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
diff --git a/src/plugins/bearer/connman/qofonoservice_linux.cpp b/src/plugins/bearer/connman/qofonoservice_linux.cpp
index 955f4b13c6..52f596b4c9 100644
--- a/src/plugins/bearer/connman/qofonoservice_linux.cpp
+++ b/src/plugins/bearer/connman/qofonoservice_linux.cpp
@@ -262,7 +262,7 @@ void QOfonoModemInterface::connectNotify(const char *signal)
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}}
void QOfonoModemInterface::disconnectNotify(const char *signal)
@@ -385,7 +385,7 @@ if (QLatin1String(signal) == SIGNAL(propertyChanged(QString,QDBusVariant))) {
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -483,7 +483,7 @@ if (QLatin1String(signal) == SIGNAL(propertyChanged(QString,QDBusVariant))) {
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -586,7 +586,7 @@ if (QLatin1String(signal) == SIGNAL(propertyChanged(QString,QDBusVariant))) {
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -675,7 +675,7 @@ if (QLatin1String(signal) == SIGNAL(propertyChanged(QString,QDBusVariant))) {
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
@@ -794,7 +794,7 @@ if (QLatin1String(signal) == SIGNAL(propertyChanged(QString,QDBusVariant))) {
QObject::connect(helper,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)),
- this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)));
+ this,SIGNAL(propertyChangedContext(const QString &,const QString &,const QDBusVariant &)), Qt::UniqueConnection);
}
}
diff --git a/src/plugins/bearer/corewlan/corewlan.pro b/src/plugins/bearer/corewlan/corewlan.pro
index 922a501963..9cb39551f2 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 844e38b103..9946b171d3 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 &id)
{
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 &id)
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 == id) {
ok = true;
}
@@ -900,6 +914,7 @@ quint64 QCoreWlanEngine::startTime(const QString &id)
}
}
}
+ [autoreleasepool release];
return timestamp;
}
diff --git a/src/plugins/bearer/icd/icd.pro b/src/plugins/bearer/icd/icd.pro
index 464cc1c609..6700cdaaa8 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/icd/maemo_icd.cpp b/src/plugins/bearer/icd/maemo_icd.cpp
index 4f879e34c8..57ab0a84ef 100644
--- a/src/plugins/bearer/icd/maemo_icd.cpp
+++ b/src/plugins/bearer/icd/maemo_icd.cpp
@@ -508,6 +508,7 @@ uint IcdPrivate::state(QList<IcdStateResult>& state_results)
mInterface.clear();
while ((time(0)<=(started+timeout_secs)) && mInterface.isEmpty()) {
mDBus->synchronousDispatch(1000);
+ QCoreApplication::sendPostedEvents(icd, QEvent::MetaCall);
}
if (time(0)>(started+timeout_secs)) {
@@ -685,6 +686,7 @@ uint IcdPrivate::addrinfo(QList<IcdAddressInfoResult>& addr_results)
mInterface.clear();
while ((time(0)<=(started+timeout_secs)) && mInterface.isEmpty()) {
mDBus->synchronousDispatch(1000);
+ QCoreApplication::sendPostedEvents(icd, QEvent::MetaCall);
}
if (time(0)>(started+timeout_secs)) {
diff --git a/src/plugins/bearer/icd/qnetworksession_impl.cpp b/src/plugins/bearer/icd/qnetworksession_impl.cpp
index 37434e373e..8d0f587112 100644
--- a/src/plugins/bearer/icd/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/icd/qnetworksession_impl.cpp
@@ -679,7 +679,7 @@ void QNetworkSessionPrivateImpl::open()
if (serviceConfig.isValid()) {
lastError = QNetworkSession::OperationNotSupportedError;
emit QNetworkSessionPrivate::error(lastError);
- } else if (!isOpen) {
+ } else if (!opened) {
if (publicConfig.type() == QNetworkConfiguration::UserChoice) {
/* Caller is trying to connect to default IAP.
* At this time we will not know the IAP details so we just
diff --git a/src/plugins/bearer/symbian/qnetworksession_impl.cpp b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
index 7f81397dba..53a5b4d0d6 100644
--- a/src/plugins/bearer/symbian/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/symbian/qnetworksession_impl.cpp
@@ -760,7 +760,7 @@ void QNetworkSessionPrivateImpl::Error(TInt /*aError*/)
{
#ifdef QT_BEARERMGMT_SYMBIAN_DEBUG
qDebug() << "QNS this : " << QString::number((uint)this) << " - "
- << "roaming Error() occured, isOpen is: " << isOpen;
+ << "roaming Error() occurred, isOpen is: " << isOpen;
#endif
if (isOpen) {
isOpen = false;
@@ -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
@@ -1151,10 +1151,10 @@ void QNetworkSessionPrivateImpl::RunL()
serviceConfig = QNetworkConfiguration();
iError = QNetworkSession::InvalidConfigurationError;
QT_TRYCATCH_LEAVING(emit QNetworkSessionPrivate::error(iError));
- Cancel();
if (ipConnectionNotifier) {
ipConnectionNotifier->StopNotifications();
}
+ Cancel();
QT_TRYCATCH_LEAVING(syncStateWithInterface());
break;
case KErrCancel: // Connection attempt cancelled
@@ -1173,10 +1173,10 @@ void QNetworkSessionPrivateImpl::RunL()
iError = QNetworkSession::UnknownSessionError;
}
QT_TRYCATCH_LEAVING(emit QNetworkSessionPrivate::error(iError));
- Cancel();
if (ipConnectionNotifier) {
ipConnectionNotifier->StopNotifications();
}
+ Cancel();
QT_TRYCATCH_LEAVING(syncStateWithInterface());
break;
}
@@ -1268,10 +1268,10 @@ bool QNetworkSessionPrivateImpl::newState(QNetworkSession::State newState, TUint
serviceConfig = QNetworkConfiguration();
iError = QNetworkSession::SessionAbortedError;
emit QNetworkSessionPrivate::error(iError);
- Cancel();
if (ipConnectionNotifier) {
ipConnectionNotifier->StopNotifications();
}
+ Cancel();
// Start handling IAP state change signals from QNetworkConfigurationManagerPrivate
iHandleStateNotificationsFromManager = true;
emitSessionClosed = true; // Emit SessionClosed after state change has been reported
diff --git a/src/plugins/bearer/symbian/symbian.pri b/src/plugins/bearer/symbian/symbian.pri
index e874945c7a..8d92f57b68 100644
--- a/src/plugins/bearer/symbian/symbian.pri
+++ b/src/plugins/bearer/symbian/symbian.pri
@@ -1,7 +1,7 @@
TARGET = qsymbianbearer
include(../../qpluginbase.pri)
-QT += network
+QT = core network
HEADERS += ../symbianengine.h \
../qnetworksession_impl.h
diff --git a/src/plugins/bearer/symbian/symbianengine.cpp b/src/plugins/bearer/symbian/symbianengine.cpp
index f759a959a4..f025d865f4 100644
--- a/src/plugins/bearer/symbian/symbianengine.cpp
+++ b/src/plugins/bearer/symbian/symbianengine.cpp
@@ -135,10 +135,9 @@ void SymbianEngine::initialize()
updateConfigurations();
updateStatesToSnaps();
- updateAvailableAccessPoints(); // On first time updates synchronously (without WLAN scans)
+ updateAvailableAccessPoints(); // On first time updates (without WLAN scans)
// Start monitoring IAP and/or SNAP changes in Symbian CommsDB
startCommsDatabaseNotifications();
- iFirstUpdate = false;
}
SymbianEngine::~SymbianEngine()
@@ -790,6 +789,12 @@ void SymbianEngine::accessPointScanningReady(TBool scanSuccessful, TConnMonIapIn
mutex.unlock();
emit updateCompleted();
mutex.lock();
+ } else {
+ iFirstUpdate = false;
+ if (iScanInQueue) {
+ iScanInQueue = EFalse;
+ updateAvailableAccessPoints();
+ }
}
}
@@ -976,7 +981,7 @@ void SymbianEngine::RunL()
QMutexLocker locker(&mutex);
if (iStatus != KErrCancel) {
- // By default, start relistening notifications. Stop only if interesting event occured.
+ // By default, start relistening notifications. Stop only if interesting event occurred.
iWaitingCommsDatabaseNotifications = true;
RDbNotifier::TEvent event = STATIC_CAST(RDbNotifier::TEvent, iStatus.Int());
switch (event) {
@@ -1356,24 +1361,31 @@ AccessPointsAvailabilityScanner::~AccessPointsAvailabilityScanner()
void AccessPointsAvailabilityScanner::DoCancel()
{
iConnectionMonitor.CancelAsyncRequest(EConnMonGetPckgAttribute);
+ iScanActive = EFalse;
+ iOwner.iScanInQueue = EFalse;
}
void AccessPointsAvailabilityScanner::StartScanning()
{
- if (iOwner.iFirstUpdate) {
- // On first update (the mgr is being instantiated) update only those bearers who
- // don't need time-consuming scans (WLAN).
- // Note: EBearerIdWCDMA covers also GPRS bearer
- iConnectionMonitor.GetPckgAttribute(EBearerIdWCDMA, 0, KIapAvailability, iIapBuf, iStatus);
- User::WaitForRequest(iStatus);
- if (iStatus.Int() == KErrNone) {
- iOwner.accessPointScanningReady(true,iIapBuf());
+ if (!iScanActive) {
+ iScanActive = ETrue;
+ if (iOwner.iFirstUpdate) {
+ // On first update (the mgr is being instantiated) update only those bearers who
+ // don't need time-consuming scans (WLAN).
+ // Note: EBearerIdWCDMA covers also GPRS bearer
+ iConnectionMonitor.GetPckgAttribute(EBearerIdWCDMA, 0, KIapAvailability, iIapBuf, iStatus);
+ } else {
+ iConnectionMonitor.GetPckgAttribute(EBearerIdAll, 0, KIapAvailability, iIapBuf, iStatus);
}
- } else {
- iConnectionMonitor.GetPckgAttribute(EBearerIdAll, 0, KIapAvailability, iIapBuf, iStatus);
+
if (!IsActive()) {
SetActive();
}
+ } else {
+ // Queue scan for getting WLAN info after first request returns
+ if (iOwner.iFirstUpdate) {
+ iOwner.iScanInQueue = ETrue;
+ }
}
}
@@ -1381,6 +1393,7 @@ void AccessPointsAvailabilityScanner::RunL()
{
QMutexLocker locker(&iOwner.mutex);
+ iScanActive = EFalse;
if (iStatus.Int() != KErrNone) {
iIapBuf().iCount = 0;
QT_TRYCATCH_LEAVING(iOwner.accessPointScanningReady(false,iIapBuf()));
diff --git a/src/plugins/bearer/symbian/symbianengine.h b/src/plugins/bearer/symbian/symbianengine.h
index 7c1076ed2b..337d4d11e6 100644
--- a/src/plugins/bearer/symbian/symbianengine.h
+++ b/src/plugins/bearer/symbian/symbianengine.h
@@ -207,6 +207,7 @@ private: // Data
TBool iInitOk;
TBool iUpdateGoingOn;
TBool iUpdatePending;
+ TBool iScanInQueue;
AccessPointsAvailabilityScanner* ipAccessPointsAvailabilityScanner;
@@ -234,9 +235,10 @@ protected: // From CActive
void DoCancel();
private: // Data
- SymbianEngine& iOwner;
+ SymbianEngine& iOwner;
RConnectionMonitor& iConnectionMonitor;
- TConnMonIapInfoBuf iIapBuf;
+ TConnMonIapInfoBuf iIapBuf;
+ TBool iScanActive;
};
QT_END_NAMESPACE
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpaintengine.cpp
index 4869eba55e..ceed7aeb59 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;
@@ -67,6 +68,15 @@ public:
Matrix_BlitsUnsupported = (Matrix_NegativeScale|Matrix_RectsUnsupported)
};
+ inline static uint getTransformationType(const QTransform &transform)
+ {
+ int ret = transform.type();
+ if (qMin(transform.m11(), transform.m22()) < 0) {
+ ret |= QDirectFBPaintEnginePrivate::Matrix_NegativeScale;
+ }
+ return ret;
+ }
+
enum CompositionModeStatus {
PorterDuff_None = 0x0,
PorterDuff_Supported = 0x1,
@@ -98,7 +108,7 @@ public:
inline bool isSimpleBrush(const QBrush &brush) const;
- void drawTiledPixmap(const QRectF &dest, const QPixmap &pixmap, const QPointF &pos);
+ void drawTiledPixmap(const QRectF &dest, const QPixmap &pixmap, const QPointF &pos, const QTransform &pixmapTransform);
void blit(const QRectF &dest, IDirectFBSurface *surface, const QRectF &src);
inline bool supportsStretchBlit() const;
@@ -112,7 +122,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 +630,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 +674,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));
}
}
@@ -691,7 +716,8 @@ void QDirectFBPaintEngine::drawTiledPixmap(const QRectF &r,
const QPixmap pix(data);
QRasterPaintEngine::drawTiledPixmap(r, pix, offset);
} else {
- CLIPPED_PAINT(d->drawTiledPixmap(r, pixmap, offset));
+ QTransform transform(state()->matrix);
+ CLIPPED_PAINT(d->drawTiledPixmap(r, pixmap, offset, transform));
}
}
@@ -811,9 +837,14 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QBrush &brush)
return; }
case Qt::TexturePattern: {
+ const QPointF &brushOrigin = state()->brushOrigin;
+ const QTransform stateTransform = state()->matrix;
+ QTransform transform(stateTransform);
+ transform.translate(brushOrigin.x(), brushOrigin.y());
+ transform = brush.transform() * transform;
if (!(d->compositionModeStatus & QDirectFBPaintEnginePrivate::PorterDuff_Supported)
- || (d->transformationType & QDirectFBPaintEnginePrivate::Matrix_BlitsUnsupported)
- || (!d->supportsStretchBlit() && state()->matrix.isScaling())) {
+ || (QDirectFBPaintEnginePrivate::getTransformationType(transform) & QDirectFBPaintEnginePrivate::Matrix_BlitsUnsupported)
+ || (!d->supportsStretchBlit() && transform.isScaling())) {
break;
}
@@ -821,7 +852,7 @@ void QDirectFBPaintEngine::fillRect(const QRectF &rect, const QBrush &brush)
if (texture.pixmapData()->classId() != QPixmapData::DirectFBClass)
break;
- CLIPPED_PAINT(d->drawTiledPixmap(rect, texture, rect.topLeft() - state()->brushOrigin));
+ CLIPPED_PAINT(d->drawTiledPixmap(stateTransform.mapRect(rect), texture, rect.topLeft() - brushOrigin, transform));
return; }
default:
break;
@@ -932,10 +963,7 @@ void QDirectFBPaintEnginePrivate::unlock(QDirectFBPaintDevice *device)
void QDirectFBPaintEnginePrivate::setTransform(const QTransform &transform)
{
- transformationType = transform.type();
- if (qMin(transform.m11(), transform.m22()) < 0) {
- transformationType |= QDirectFBPaintEnginePrivate::Matrix_NegativeScale;
- }
+ transformationType = getTransformationType(transform);
setPen(q->state()->pen);
}
@@ -978,7 +1006,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 +1059,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);
}
@@ -1132,10 +1165,12 @@ static inline qreal fixCoord(qreal rect_pos, qreal pixmapSize, qreal offset)
return pos;
}
-void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPixmap &pixmap, const QPointF &off)
+void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPixmap &pixmap,
+ const QPointF &off, const QTransform &pixmapTransform)
{
- Q_ASSERT(!(transformationType & Matrix_BlitsUnsupported));
const QTransform &transform = q->state()->matrix;
+ Q_ASSERT(!(getTransformationType(transform) & Matrix_BlitsUnsupported) &&
+ !(getTransformationType(pixmapTransform) & Matrix_BlitsUnsupported));
const QRect destinationRect = transform.mapRect(dest).toRect().normalized();
QRect newClip = destinationRect;
if (!currentClip.isEmpty())
@@ -1152,22 +1187,27 @@ void QDirectFBPaintEnginePrivate::drawTiledPixmap(const QRectF &dest, const QPix
};
surface->SetClip(surface, &clip);
- QPointF offset = off;
+ QPointF offset = pixmapTransform.inverted().map(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()) {
+ if (transform.isScaling() || pixmapTransform.isScaling()) {
Q_ASSERT(supportsStretchBlit());
Q_ASSERT(qMin(transform.m11(), transform.m22()) >= 0);
offset.rx() *= transform.m11();
offset.ry() *= transform.m22();
- const QSizeF mappedSize(pixmapSize.width() * transform.m11(), pixmapSize.height() * transform.m22());
+ const QSizeF mappedSize(pixmapSize.width() * pixmapTransform.m11(), pixmapSize.height() * pixmapTransform.m22());
qreal y = fixCoord(destinationRect.y(), mappedSize.height(), offset.y());
const qreal startX = fixCoord(destinationRect.x(), mappedSize.width(), offset.x());
while (y <= destinationRect.bottom()) {
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
index c0d96d7e2a..ce3a05ad49 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
@@ -251,12 +251,6 @@ bool QDirectFBPixmapData::fromDataBufferDescription(const DFBDataBufferDescripti
}
QDirectFBPointer<IDirectFBImageProvider> provider(providerPtr);
- DFBSurfaceDescription surfaceDescription;
- if ((result = provider->GetSurfaceDescription(provider.data(), &surfaceDescription)) != DFB_OK) {
- DirectFBError("QDirectFBPixmapData::fromDataBufferDescription(): Can't get surface description", result);
- return false;
- }
-
DFBImageDescription imageDescription;
result = provider->GetImageDescription(provider.data(), &imageDescription);
if (result != DFB_OK) {
@@ -264,7 +258,17 @@ bool QDirectFBPixmapData::fromDataBufferDescription(const DFBDataBufferDescripti
return false;
}
- alpha = imageDescription.caps & (DICAPS_ALPHACHANNEL|DICAPS_COLORKEY);
+ if (imageDescription.caps & DICAPS_COLORKEY) {
+ return false;
+ }
+
+ DFBSurfaceDescription surfaceDescription;
+ if ((result = provider->GetSurfaceDescription(provider.data(), &surfaceDescription)) != DFB_OK) {
+ DirectFBError("QDirectFBPixmapData::fromDataBufferDescription(): Can't get surface description", result);
+ return false;
+ }
+
+ alpha = imageDescription.caps & DICAPS_ALPHACHANNEL;
imageFormat = alpha ? screen->alphaPixmapFormat() : screen->pixelFormat();
dfbSurface = screen->createDFBSurface(QSize(surfaceDescription.width, surfaceDescription.height),
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
index bf6164d49e..f2ee6ae2bb 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.cpp
@@ -1554,9 +1554,8 @@ void QDirectFBScreen::exposeRegion(QRegion r, int)
: (DSBLIT_BLEND_ALPHACHANNEL|DSBLIT_BLEND_COLORALPHA);
}
}
- if (!region.isEmpty()) {
- solidFill(d_ptr->backgroundColor, region);
- }
+
+ solidFill(d_ptr->backgroundColor, region);
while (idx > 0) {
const PaintCommand &cmd = commands[--idx];
@@ -1629,29 +1628,34 @@ void QDirectFBScreen::solidFill(const QColor &color, const QRegion &region)
Q_UNUSED(color);
Q_UNUSED(region);
#else
+ QDirectFBScreen::solidFill(d_ptr->primarySurface, color, region);
+#endif
+}
+
+static inline void clearRect(IDirectFBSurface *surface, const QColor &color, const QRect &rect)
+{
+ Q_ASSERT(surface);
+ const DFBRegion region = { rect.left(), rect.top(), rect.right(), rect.bottom() };
+ // could just reinterpret_cast this to a DFBRegion
+ surface->SetClip(surface, &region);
+ surface->Clear(surface, color.red(), color.green(), color.blue(), color.alpha());
+}
+
+void QDirectFBScreen::solidFill(IDirectFBSurface *surface, const QColor &color, const QRegion &region)
+{
if (region.isEmpty())
return;
- d_ptr->primarySurface->SetColor(d_ptr->primarySurface,
- color.red(), color.green(), color.blue(),
- color.alpha());
const int n = region.rectCount();
if (n == 1) {
- const QRect r = region.boundingRect();
- d_ptr->primarySurface->FillRectangle(d_ptr->primarySurface, r.x(), r.y(), r.width(), r.height());
+ clearRect(surface, color, region.boundingRect());
} else {
const QVector<QRect> rects = region.rects();
- QVarLengthArray<DFBRectangle, 32> rectArray(n);
for (int i=0; i<n; ++i) {
- const QRect &r = rects.at(i);
- rectArray[i].x = r.x();
- rectArray[i].y = r.y();
- rectArray[i].w = r.width();
- rectArray[i].h = r.height();
+ clearRect(surface, color, rects.at(i));
}
- d_ptr->primarySurface->FillRectangles(d_ptr->primarySurface, rectArray.constData(), n);
}
-#endif
+ surface->SetClip(surface, 0);
}
QImage::Format QDirectFBScreen::alphaPixmapFormat() const
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
index c483020e40..1085423e67 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbscreen.h
@@ -159,6 +159,7 @@ public:
void exposeRegion(QRegion r, int changing);
void solidFill(const QColor &color, const QRegion &region);
+ static void solidFill(IDirectFBSurface *surface, const QColor &color, const QRegion &region);
void setMode(int width, int height, int depth);
void blank(bool on);
diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
index 51969fc8e0..fbc539b021 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp
@@ -344,9 +344,11 @@ void QDirectFBWindowSurface::flush(QWidget *widget, const QRegion &region,
if (!win)
return;
+#ifndef QT_NO_QWS_PROXYSCREEN
QWExtra *extra = qt_widget_private(widget)->extraData();
if (extra && extra->proxyWidget)
return;
+#endif
const quint8 windowOpacity = quint8(win->windowOpacity() * 0xff);
const QRect windowGeometry = geometry();
@@ -380,11 +382,18 @@ void QDirectFBWindowSurface::flush(QWidget *widget, const QRegion &region,
flushPending = false;
}
-void QDirectFBWindowSurface::beginPaint(const QRegion &)
+void QDirectFBWindowSurface::beginPaint(const QRegion &region)
{
if (!engine) {
engine = new QDirectFBPaintEngine(this);
}
+
+ if (dfbSurface) {
+ const QWidget *win = window();
+ if (win && win->testAttribute(Qt::WA_NoSystemBackground)) {
+ QDirectFBScreen::solidFill(dfbSurface, Qt::transparent, region);
+ }
+ }
flushPending = true;
}
diff --git a/src/plugins/graphicssystems/meego/dithering.cpp b/src/plugins/graphicssystems/meego/dithering.cpp
new file mode 100644
index 0000000000..1a2e3fa24a
--- /dev/null
+++ b/src/plugins/graphicssystems/meego/dithering.cpp
@@ -0,0 +1,306 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+// This is an implementation of the 32bit => 16bit Floyd-Steinberg dithering.
+// The alghorithm used here is not the fastest possible but it's prolly fast enough:
+// uses look-up tables, integer-only arthmetics and works in one pass on two lines
+// at a time. It's a high-quality dithering using 1/8 diffusion precission.
+// Two functions here to look at:
+//
+// * convertRGBA32_to_RGB565
+// * convertRGBA32_to_RGBA4444
+//
+// Each channel (RGBA) is diffused independently and alpha is dithered too.
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#include <QVarLengthArray>
+
+// Gets a component (red = 1, green = 2...) from a RGBA data structure.
+// data is unsigned char. stride is the number of bytes per line.
+#define GET_RGBA_COMPONENT(data, x, y, stride, c) (data[(y * stride) + (x << 2) + c])
+
+// Writes a new pixel with r, g, b to data in 565 16bit format. Data is a short.
+#define PUT_565(data, x, y, width, r, g, b) (data[(y * width) + x] = (r << 11) | (g << 5) | b)
+
+// Writes a new pixel with r, g, b, a to data in 4444 RGBA 16bit format. Data is a short.
+#define PUT_4444(data, x, y, width, r, g, b, a) (data[(y * width) + x] = (r << 12) | (g << 8) | (b << 4) | a)
+
+// 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
+
+// Clamps a value to be in 0..255 range.
+#define CLAMP_256(v) if (v > 255) v = 255; if (v < 0) v = 0;
+
+// 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(alignedWidth * height * 2);
+
+ // Lookup tables for the 8bit => 6bit and 8bit => 5bit conversion
+ unsigned char lookup_8bit_to_5bit[256];
+ short lookup_8bit_to_5bit_diff[256];
+ unsigned char lookup_8bit_to_6bit[256];
+ short lookup_8bit_to_6bit_diff[256];
+
+ // Macros for the conversion using the lookup table.
+ #define CONVERT_8BIT_TO_5BIT(v) (lookup_8bit_to_5bit[v])
+ #define DIFF_8BIT_TO_5BIT(v) (lookup_8bit_to_5bit_diff[v])
+
+ #define CONVERT_8BIT_TO_6BIT(v) (lookup_8bit_to_6bit[v])
+ #define DIFF_8BIT_TO_6BIT(v) (lookup_8bit_to_6bit_diff[v])
+
+ int i;
+ int x, y, c; // Pixel we're processing. c is component number (0, 1, 2 for r, b, b)
+ short component[3]; // Stores the new components (r, g, b) for pixel produced during conversion
+ short diff; // The difference between the converted value and the original one. To be accumulated.
+ QVarLengthArray <short> accumulatorData(3 * width * 2); // Data for three acumulators for r, g, b. Each accumulator is two lines.
+ short *accumulator[3]; // Helper for accessing the accumulator on a per-channel basis more easily.
+ accumulator[0] = accumulatorData.data();
+ accumulator[1] = accumulatorData.data() + width;
+ accumulator[2] = accumulatorData.data() + (width * 2);
+
+ // Produce the conversion lookup tables.
+ for (i = 0; i < 256; i++) {
+ lookup_8bit_to_5bit[i] = round(i / 8.0);
+
+ // 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);
+
+ // 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
+ memset(accumulator[0], 0, width * 4);
+ memset(accumulator[1], 0, width * 4);
+ memset(accumulator[2], 0, width * 4);
+
+ // For each line...
+ for (y = 0; y < height; y++) {
+
+ // For each accumulator, move the second line (index 1) to replace the first line (index 0).
+ // Clear the second line (index 1)
+ memcpy(accumulator[0], accumulator[0] + width, width * 2);
+ memset(accumulator[0] + width, 0, width * 2);
+
+ memcpy(accumulator[1], accumulator[1] + width, width * 2);
+ memset(accumulator[1] + width, 0, width * 2);
+
+ memcpy(accumulator[2], accumulator[2] + width, width * 2);
+ memset(accumulator[2] + width, 0, width * 2);
+
+ // For each column....
+ for (x = 0; x < width; x++) {
+
+ // For each component (r, g, b)...
+ for (c = 0; c < 3; c++) {
+
+ // Get the 8bit value from the original image
+ component[c] = GET_RGBA_COMPONENT(in, x, y, stride, c);
+
+ // Add the diffusion for this pixel we stored in the accumulator.
+ // >> 7 because the values in accumulator are stored * 128
+ component[c] += accumulator[c][x] >> 7;
+
+ // Make sure we're not over the boundaries.
+ CLAMP_256(component[c]);
+
+ // For green component we use 6 bits. Otherwise 5 bits.
+ // Store the difference from converting 8bit => 6 bit and the orig pixel.
+ // Convert 8bit => 6(5) bit.
+ if (c == 1) {
+ diff = DIFF_8BIT_TO_6BIT(component[c]);
+ component[c] = CONVERT_8BIT_TO_6BIT(component[c]);
+ } else {
+ diff = DIFF_8BIT_TO_5BIT(component[c]);
+ component[c] = CONVERT_8BIT_TO_5BIT(component[c]);
+ }
+
+ // Distribute the difference according to the matrix in the
+ // accumulation bufffer.
+ ACCUMULATE(accumulator[c], x + 1, 0, width, diff * 7);
+ ACCUMULATE(accumulator[c], x - 1, 1, width, diff * 3);
+ ACCUMULATE(accumulator[c], x, 1, width, diff * 5);
+ ACCUMULATE(accumulator[c], x + 1, 1, width, diff * 1);
+ }
+
+ // Write the newly produced pixel
+ PUT_565(out, x, y, alignedWidth, component[2], component[1], component[0]);
+ }
+ }
+
+ return out;
+}
+
+// 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(alignedWidth * 2 * height);
+
+ // Lookup tables for the 8bit => 4bit conversion
+ unsigned char lookup_8bit_to_4bit[256];
+ short lookup_8bit_to_4bit_diff[256];
+
+ // Macros for the conversion using the lookup table.
+ #define CONVERT_8BIT_TO_4BIT(v) (lookup_8bit_to_4bit[v])
+ #define DIFF_8BIT_TO_4BIT(v) (lookup_8bit_to_4bit_diff[v])
+
+ int i;
+ int x, y, c; // Pixel we're processing. c is component number (0, 1, 2, 3 for r, b, b, a)
+ short component[4]; // Stores the new components (r, g, b, a) for pixel produced during conversion
+ short diff; // The difference between the converted value and the original one. To be accumulated.
+ QVarLengthArray <short> accumulatorData(4 * width * 2); // Data for three acumulators for r, g, b. Each accumulator is two lines.
+ short *accumulator[4]; // Helper for accessing the accumulator on a per-channel basis more easily.
+ accumulator[0] = accumulatorData.data();
+ accumulator[1] = accumulatorData.data() + width;
+ accumulator[2] = accumulatorData.data() + (width * 2);
+ accumulator[3] = accumulatorData.data() + (width * 3);
+
+ // Produce the conversion lookup tables.
+ for (i = 0; i < 256; i++) {
+ lookup_8bit_to_4bit[i] = round(i / 16.0);
+ // 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
+ memset(accumulator[0], 0, width * 4);
+ memset(accumulator[1], 0, width * 4);
+ memset(accumulator[2], 0, width * 4);
+ memset(accumulator[3], 0, width * 4);
+
+ // For each line...
+ for (y = 0; y < height; y++) {
+
+ // For each component (r, g, b, a)...
+ memcpy(accumulator[0], accumulator[0] + width, width * 2);
+ memset(accumulator[0] + width, 0, width * 2);
+
+ memcpy(accumulator[1], accumulator[1] + width, width * 2);
+ memset(accumulator[1] + width, 0, width * 2);
+
+ memcpy(accumulator[2], accumulator[2] + width, width * 2);
+ memset(accumulator[2] + width, 0, width * 2);
+
+ memcpy(accumulator[3], accumulator[3] + width, width * 2);
+ memset(accumulator[3] + width, 0, width * 2);
+
+ // For each column....
+ for (x = 0; x < width; x++) {
+
+ // For each component (r, g, b, a)...
+ for (c = 0; c < 4; c++) {
+
+ // Get the 8bit value from the original image
+ component[c] = GET_RGBA_COMPONENT(in, x, y, stride, c);
+
+ // Add the diffusion for this pixel we stored in the accumulator.
+ // >> 7 because the values in accumulator are stored * 128
+ component[c] += accumulator[c][x] >> 7;
+
+ // Make sure we're not over the boundaries.
+ CLAMP_256(component[c]);
+
+ // Store the difference from converting 8bit => 4bit and the orig pixel.
+ // Convert 8bit => 4bit.
+ diff = DIFF_8BIT_TO_4BIT(component[c]);
+ component[c] = CONVERT_8BIT_TO_4BIT(component[c]);
+
+ // Distribute the difference according to the matrix in the
+ // accumulation bufffer.
+ ACCUMULATE(accumulator[c], x + 1, 0, width, diff * 7);
+ ACCUMULATE(accumulator[c], x - 1, 1, width, diff * 3);
+ ACCUMULATE(accumulator[c], x, 1, width, diff * 5);
+ ACCUMULATE(accumulator[c], x + 1, 1, width, diff * 1);
+ }
+
+ // Write the newly produced pixel
+ 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];
+ }
+ }
+
+ return out;
+}
diff --git a/src/plugins/graphicssystems/meego/meego.pro b/src/plugins/graphicssystems/meego/meego.pro
index d750d349e7..0d3cce622f 100644
--- a/src/plugins/graphicssystems/meego/meego.pro
+++ b/src/plugins/graphicssystems/meego/meego.pro
@@ -5,8 +5,8 @@ QT += gui opengl
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/graphicssystems
-HEADERS = qmeegographicssystem.h qmeegopixmapdata.h qmeegoextensions.h
-SOURCES = qmeegographicssystem.cpp qmeegographicssystem.h qmeegographicssystemplugin.h qmeegographicssystemplugin.cpp qmeegopixmapdata.h qmeegopixmapdata.cpp qmeegoextensions.h qmeegoextensions.cpp
+HEADERS = qmeegographicssystem.h qmeegopixmapdata.h qmeegoextensions.h qmeegorasterpixmapdata.h qmeegolivepixmapdata.h
+SOURCES = qmeegographicssystem.cpp qmeegographicssystem.h qmeegographicssystemplugin.h qmeegographicssystemplugin.cpp qmeegopixmapdata.h qmeegopixmapdata.cpp qmeegoextensions.h qmeegoextensions.cpp qmeegorasterpixmapdata.h qmeegorasterpixmapdata.cpp qmeegolivepixmapdata.cpp qmeegolivepixmapdata.h dithering.cpp
target.path += $$[QT_INSTALL_PLUGINS]/graphicssystems
INSTALLS += target
diff --git a/src/plugins/graphicssystems/meego/qmeegoextensions.cpp b/src/plugins/graphicssystems/meego/qmeegoextensions.cpp
index 611c962f38..dff80a4da5 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 9e78caf19b..49a1e3098b 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 f8b228c4e8..507f70b082 100644
--- a/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp
+++ b/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp
@@ -54,6 +54,7 @@
#include <private/qpixmap_x11_p.h>
#include "qmeegopixmapdata.h"
+#include "qmeegolivepixmapdata.h"
#include "qmeegographicssystem.h"
#include "qmeegoextensions.h"
@@ -81,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
+ // uninitialized paintDevice due to a Qt bug too complex to even
+ // explain here... not to mention fix without going crazy.
// MDK
QGLShareContextScope ctx(qt_gl_share_widget()->context());
-
+
return new QRasterPixmapData(type);
}
@@ -102,8 +103,8 @@ QPixmapData *QMeeGoGraphicsSystem::createPixmapData(QPixmapData *origin)
if (QMeeGoPixmapData::sharedImagesMap.contains(rawResource))
return new QMeeGoPixmapData();
- }
-
+ }
+
return new QRasterPixmapData(origin->pixelType());
}
@@ -150,11 +151,11 @@ void QMeeGoGraphicsSystem::setTranslucent(bool translucent)
QPixmapData *QMeeGoGraphicsSystem::pixmapDataFromEGLSharedImage(Qt::HANDLE handle, const QImage &softImage)
{
if (softImage.format() != QImage::Format_ARGB32_Premultiplied &&
- softImage.format() != QImage::Format_ARGB32) {
- qFatal("For egl shared images, the soft image has to be ARGB32 or ARGB32_Premultiplied");
+ softImage.format() != QImage::Format_RGB32) {
+ 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);
@@ -173,28 +174,12 @@ QPixmapData *QMeeGoGraphicsSystem::pixmapDataFromEGLSharedImage(Qt::HANDLE handl
}
}
-QPixmapData *QMeeGoGraphicsSystem::pixmapDataFromEGLImage(Qt::HANDLE handle)
-{
- if (QMeeGoGraphicsSystem::meeGoRunning()) {
- QMeeGoPixmapData *pmd = new QMeeGoPixmapData;
- pmd->fromEGLImage(handle);
-
- // FIXME Ok. This is a bit BAD BAD BAD. We're abusing here the fact that we KNOW
- // that this function is used for the live pixmap...
- pmd->texture()->options &= ~QGLContext::InvertedYBindOption;
- return QMeeGoGraphicsSystem::wrapPixmapData(pmd);
- } else {
- qFatal("Can't create from EGL image when not running meego graphics system!");
- return NULL;
- }
-}
-
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();
@@ -207,169 +192,62 @@ QPixmapData *QMeeGoGraphicsSystem::pixmapDataWithGLTexture(int w, int h)
return QMeeGoGraphicsSystem::wrapPixmapData(pmd);
}
-Qt::HANDLE QMeeGoGraphicsSystem::createLiveTexture(int w, int h, QImage::Format format)
-{
- // No need to wrap the QPixmapData here. This QPixmap(Data) is a
- // internal implementation and we don't migrate it between
- // graphics system switching.
-
- // We use a bit ugly way of enforcing a color format on the X pixmap -- we create
- // a local QImage and fromImage from there. This is quite redundant (extra overhead of creating
- // the useless image only to delete it) but shouldn't be too bad for now... you're not expected
- // to call createLiveTexture too often anyways. Would be great if QX11PixmapData had a way to
- // force the X format upon creation or resize.
-
- QImage image(w, h, format);
- QX11PixmapData *pmd = new QX11PixmapData(QPixmapData::PixmapType);
- pmd->fromImage(image, Qt::NoOpaqueDetection);
- QPixmap *p = new QPixmap(pmd);
-
- liveTexturePixmaps.insert(p->handle(), p);
- return p->handle();
-}
-
-void QMeeGoGraphicsSystem::destroyLiveTexture(Qt::HANDLE h)
-{
- if (liveTexturePixmaps.contains(h)) {
- QPixmap *p = liveTexturePixmaps.value(h);
- delete p;
- liveTexturePixmaps.remove(h);
- } else
- qWarning("Trying to destroy live texture %ld which was not found!", h);
-}
-
-bool QMeeGoGraphicsSystem::lockLiveTexture(Qt::HANDLE h)
+bool QMeeGoGraphicsSystem::meeGoRunning()
{
- if (! liveTexturePixmaps.contains(h)) {
- qWarning("Trying to lock live texture %ld which was not found!", h);
+ if (! QApplicationPrivate::instance()) {
+ qWarning("Application not running just yet... hard to know what system running!");
return false;
}
- EGLint attribs[] = {
- EGL_MAP_PRESERVE_PIXELS_KHR, EGL_TRUE,
- EGL_LOCK_USAGE_HINT_KHR, EGL_READ_SURFACE_BIT_KHR | EGL_WRITE_SURFACE_BIT_KHR,
- EGL_NONE
- };
+ QString name = QApplicationPrivate::instance()->graphics_system_name;
+ if (name == "runtime") {
+ QRuntimeGraphicsSystem *rsystem = (QRuntimeGraphicsSystem *) QApplicationPrivate::instance()->graphics_system;
+ name = rsystem->graphicsSystemName();
+ }
- QGLShareContextScope ctx(qt_gl_share_widget()->context());
- EGLSurface surface = getSurfaceForLiveTexturePixmap(liveTexturePixmaps.value(h));
- return QMeeGoExtensions::eglLockSurfaceKHR(QEgl::display(), surface, attribs);
+ return (name == "meego");
}
-bool QMeeGoGraphicsSystem::unlockLiveTexture(Qt::HANDLE h)
+QPixmapData* QMeeGoGraphicsSystem::pixmapDataWithNewLiveTexture(int w, int h, QImage::Format format)
{
- if (! liveTexturePixmaps.contains(h)) {
- qWarning("Trying to lock live texture %ld which was not found!", h);
- return false;
- }
-
- QGLShareContextScope ctx(qt_gl_share_widget()->context());
- QMeeGoExtensions::ensureInitialized();
-
- EGLSurface surface = getSurfaceForLiveTexturePixmap(liveTexturePixmaps.value(h));
- if (QMeeGoExtensions::eglUnlockSurfaceKHR(QEgl::display(), surface)) {
- glFinish();
- return true;
- } else {
- return false;
- }
+ return new QMeeGoLivePixmapData(w, h, format);
}
-void QMeeGoGraphicsSystem::queryLiveTexture(Qt::HANDLE h, void **data, int *pitch)
+QPixmapData* QMeeGoGraphicsSystem::pixmapDataFromLiveTextureHandle(Qt::HANDLE handle)
{
- // FIXME Only allow this on locked surfaces
- if (! liveTexturePixmaps.contains(h)) {
- qWarning("Trying to query live texture %ld which was not found!", h);
- return;
- }
-
- QGLShareContextScope ctx(qt_gl_share_widget()->context());
- QMeeGoExtensions::ensureInitialized();
-
- EGLSurface surface = getSurfaceForLiveTexturePixmap(liveTexturePixmaps.value(h));
- eglQuerySurface(QEgl::display(), surface, EGL_BITMAP_POINTER_KHR, (EGLint*) data);
- eglQuerySurface(QEgl::display(), surface, EGL_BITMAP_PITCH_KHR, (EGLint*) pitch);
+ return new QMeeGoLivePixmapData(handle);
}
-Qt::HANDLE QMeeGoGraphicsSystem::liveTextureToEGLImage(Qt::HANDLE h)
+QImage* QMeeGoGraphicsSystem::lockLiveTexture(QPixmap* pixmap, void* fenceSync)
{
- QGLShareContextScope ctx(qt_gl_share_widget()->context());
- QMeeGoExtensions::ensureInitialized();
-
- EGLint attribs[] = {
- EGL_IMAGE_PRESERVED_KHR, EGL_TRUE,
- EGL_NONE
- };
-
- EGLImageKHR eglImage = QEgl::eglCreateImageKHR(QEgl::display(), EGL_NO_CONTEXT, EGL_NATIVE_PIXMAP_KHR,
- (EGLClientBuffer) h, attribs);
-
- if (eglImage == EGL_NO_IMAGE_KHR)
- qWarning("eglCreateImageKHR failed!");
-
- return (Qt::HANDLE) eglImage;
+ QMeeGoLivePixmapData *pixmapData = static_cast<QMeeGoLivePixmapData*>(pixmap->data_ptr().data());
+ return pixmapData->lock(fenceSync);
}
-bool QMeeGoGraphicsSystem::meeGoRunning()
+bool QMeeGoGraphicsSystem::releaseLiveTexture(QPixmap *pixmap, QImage *image)
{
- if (! QApplicationPrivate::instance()) {
- qWarning("Application not running just yet... hard to know what system running!");
- return false;
- }
-
- QString name = QApplicationPrivate::instance()->graphics_system_name;
- if (name == "runtime") {
- QRuntimeGraphicsSystem *rsystem = (QRuntimeGraphicsSystem *) QApplicationPrivate::instance()->graphics_system;
- name = rsystem->graphicsSystemName();
- }
-
- return (name == "meego");
+ QMeeGoLivePixmapData *pixmapData = static_cast<QMeeGoLivePixmapData*>(pixmap->data_ptr().data());
+ return pixmapData->release(image);
}
-void QMeeGoGraphicsSystem::destroySurfaceForLiveTexturePixmap(QPixmapData* pmd)
+Qt::HANDLE QMeeGoGraphicsSystem::getLiveTextureHandle(QPixmap *pixmap)
{
- Q_ASSERT(pmd->classId() == QPixmapData::X11Class);
- QX11PixmapData *pixmapData = static_cast<QX11PixmapData*>(pmd);
- if (pixmapData->gl_surface) {
- eglDestroySurface(QEgl::display(), (EGLSurface)pixmapData->gl_surface);
- pixmapData->gl_surface = 0;
- }
+ QMeeGoLivePixmapData *pixmapData = static_cast<QMeeGoLivePixmapData*>(pixmap->data_ptr().data());
+ return pixmapData->handle();
}
-EGLSurface QMeeGoGraphicsSystem::getSurfaceForLiveTexturePixmap(QPixmap *pixmap)
+void* QMeeGoGraphicsSystem::createFenceSync()
{
- // This code is a crative remix of the stuff that can be found in the
- // Qt's TFP implementation in /src/opengl/qgl_x11egl.cpp ::bindiTextureFromNativePixmap
- QX11PixmapData *pixmapData = static_cast<QX11PixmapData*>(pixmap->data_ptr().data());
- Q_ASSERT(pixmapData->classId() == QPixmapData::X11Class);
- bool hasAlpha = pixmapData->hasAlphaChannel();
-
- if (pixmapData->gl_surface &&
- hasAlpha == (pixmapData->flags & QX11PixmapData::GlSurfaceCreatedWithAlpha))
- return pixmapData->gl_surface;
-
- // Check to see if the surface is still valid
- if (pixmapData->gl_surface &&
- hasAlpha != ((pixmapData->flags & QX11PixmapData::GlSurfaceCreatedWithAlpha) > 0)) {
- // Surface is invalid!
- QMeeGoGraphicsSystem::destroySurfaceForLiveTexturePixmap(pixmapData);
- }
-
- if (pixmapData->gl_surface == 0) {
- EGLConfig config = QEgl::defaultConfig(QInternal::Pixmap,
- QEgl::OpenGL,
- hasAlpha ? QEgl::Translucent : QEgl::NoOptions);
-
- pixmapData->gl_surface = (void*)QEgl::createSurface(pixmap, config);
-
- if (hasAlpha)
- pixmapData->flags = pixmapData->flags | QX11PixmapData::GlSurfaceCreatedWithAlpha;
-
- if (pixmapData->gl_surface == (void*)EGL_NO_SURFACE)
- return NULL;
- }
+ QGLShareContextScope ctx(qt_gl_share_widget()->context());
+ QMeeGoExtensions::ensureInitialized();
+ return QMeeGoExtensions::eglCreateSyncKHR(QEgl::display(), EGL_SYNC_FENCE_KHR, NULL);
+}
- return pixmapData->gl_surface;
+void QMeeGoGraphicsSystem::destroyFenceSync(void *fenceSync)
+{
+ QGLShareContextScope ctx(qt_gl_share_widget()->context());
+ QMeeGoExtensions::ensureInitialized();
+ QMeeGoExtensions::eglDestroySyncKHR(QEgl::display(), fenceSync);
}
/* C API */
@@ -384,11 +262,6 @@ QPixmapData* qt_meego_pixmapdata_from_egl_shared_image(Qt::HANDLE handle, const
return QMeeGoGraphicsSystem::pixmapDataFromEGLSharedImage(handle, softImage);
}
-QPixmapData* qt_meego_pixmapdata_from_egl_image(Qt::HANDLE handle)
-{
- return QMeeGoGraphicsSystem::pixmapDataFromEGLImage(handle);
-}
-
QPixmapData* qt_meego_pixmapdata_with_gl_texture(int w, int h)
{
return QMeeGoGraphicsSystem::pixmapDataWithGLTexture(w, h);
@@ -419,32 +292,37 @@ void qt_meego_update_egl_shared_image_pixmap(QPixmap *pixmap)
QMeeGoGraphicsSystem::updateEGLSharedImagePixmap(pixmap);
}
-Qt::HANDLE qt_meego_live_texture_create(int w, int h, QImage::Format format)
+QPixmapData* qt_meego_pixmapdata_with_new_live_texture(int w, int h, QImage::Format format)
+{
+ return QMeeGoGraphicsSystem::pixmapDataWithNewLiveTexture(w, h, format);
+}
+
+QPixmapData* qt_meego_pixmapdata_from_live_texture_handle(Qt::HANDLE handle)
{
- return QMeeGoGraphicsSystem::createLiveTexture(w, h, format);
+ return QMeeGoGraphicsSystem::pixmapDataFromLiveTextureHandle(handle);
}
-void qt_meego_live_texture_destroy(Qt::HANDLE h)
+QImage* qt_meego_live_texture_lock(QPixmap *pixmap, void *fenceSync)
{
- QMeeGoGraphicsSystem::destroyLiveTexture(h);
+ return QMeeGoGraphicsSystem::lockLiveTexture(pixmap, fenceSync);
}
-bool qt_meego_live_texture_lock(Qt::HANDLE h)
+bool qt_meego_live_texture_release(QPixmap *pixmap, QImage *image)
{
- return QMeeGoGraphicsSystem::lockLiveTexture(h);
+ return QMeeGoGraphicsSystem::releaseLiveTexture(pixmap, image);
}
-bool qt_meego_live_texture_unlock(Qt::HANDLE h)
+Qt::HANDLE qt_meego_live_texture_get_handle(QPixmap *pixmap)
{
- return QMeeGoGraphicsSystem::unlockLiveTexture(h);
+ return QMeeGoGraphicsSystem::getLiveTextureHandle(pixmap);
}
-void qt_meego_live_texture_query(Qt::HANDLE h, void **data, int *pitch)
+void* qt_meego_create_fence_sync(void)
{
- return QMeeGoGraphicsSystem::queryLiveTexture(h, data, pitch);
+ return QMeeGoGraphicsSystem::createFenceSync();
}
-Qt::HANDLE qt_meego_live_texture_to_egl_image(Qt::HANDLE h)
+void qt_meego_destroy_fence_sync(void* fs)
{
- return QMeeGoGraphicsSystem::liveTextureToEGLImage(h);
+ return QMeeGoGraphicsSystem::destroyFenceSync(fs);
}
diff --git a/src/plugins/graphicssystems/meego/qmeegographicssystem.h b/src/plugins/graphicssystems/meego/qmeegographicssystem.h
index 934d32d783..1e50f001af 100644
--- a/src/plugins/graphicssystems/meego/qmeegographicssystem.h
+++ b/src/plugins/graphicssystems/meego/qmeegographicssystem.h
@@ -67,12 +67,14 @@ public:
static QPixmapData *pixmapDataWithGLTexture(int w, int h);
static void updateEGLSharedImagePixmap(QPixmap *pixmap);
- static Qt::HANDLE createLiveTexture(int w, int h, QImage::Format format);
- static void destroyLiveTexture(Qt::HANDLE h);
- static bool lockLiveTexture(Qt::HANDLE h);
- static bool unlockLiveTexture(Qt::HANDLE h);
- static void queryLiveTexture(Qt::HANDLE h, void **data, int *pitch);
- static Qt::HANDLE liveTextureToEGLImage(Qt::HANDLE h);
+ static QPixmapData *pixmapDataWithNewLiveTexture(int w, int h, QImage::Format format);
+ static QPixmapData *pixmapDataFromLiveTextureHandle(Qt::HANDLE handle);
+ 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();
@@ -88,19 +90,19 @@ private:
extern "C" {
Q_DECL_EXPORT int qt_meego_image_to_egl_shared_image(const QImage &image);
Q_DECL_EXPORT QPixmapData* qt_meego_pixmapdata_from_egl_shared_image(Qt::HANDLE handle, const QImage &softImage);
- Q_DECL_EXPORT QPixmapData* qt_meego_pixmapdata_from_egl_image(Qt::HANDLE handle);
Q_DECL_EXPORT QPixmapData* qt_meego_pixmapdata_with_gl_texture(int w, int h);
Q_DECL_EXPORT void qt_meego_update_egl_shared_image_pixmap(QPixmap *pixmap);
Q_DECL_EXPORT bool qt_meego_destroy_egl_shared_image(Qt::HANDLE handle);
Q_DECL_EXPORT void qt_meego_set_surface_fixed_size(int width, int height);
Q_DECL_EXPORT void qt_meego_set_surface_scaling(int x, int y, int width, int height);
- Q_DECL_EXPORT void qt_meego_set_translucent(bool translucent);
- Q_DECL_EXPORT Qt::HANDLE m_live_texture_create(int w, int h, QImage::Format format);
- Q_DECL_EXPORT void m_live_texture_destroy(Qt::HANDLE h);
- Q_DECL_EXPORT bool m_live_texture_lock(Qt::HANDLE h);
- Q_DECL_EXPORT bool m_live_texture_unlock(Qt::HANDLE h);
- Q_DECL_EXPORT void m_live_texture_query(Qt::HANDLE h, void **data, int *pitch);
- Q_DECL_EXPORT Qt::HANDLE m_live_texture_to_egl_image(Qt::HANDLE h);
+ 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, 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
new file mode 100644
index 0000000000..16096c98b5
--- /dev/null
+++ b/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.cpp
@@ -0,0 +1,292 @@
+/****************************************************************************
+**
+** 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 "qmeegolivepixmapdata.h"
+#include "qmeegorasterpixmapdata.h"
+#include <private/qimage_p.h>
+#include <private/qwindowsurface_gl_p.h>
+#include <private/qeglcontext_p.h>
+#include <private/qapplication_p.h>
+#include <private/qgraphicssystem_runtime_p.h>
+#include <private/qpixmap_x11_p.h>
+#include <stdio.h>
+
+static EGLint lock_attribs[] = {
+ EGL_MAP_PRESERVE_PIXELS_KHR, EGL_TRUE,
+ EGL_LOCK_USAGE_HINT_KHR, EGL_READ_SURFACE_BIT_KHR | EGL_WRITE_SURFACE_BIT_KHR,
+ EGL_NONE
+};
+
+static EGLint preserved_attribs[] = {
+ EGL_IMAGE_PRESERVED_KHR, EGL_TRUE,
+ EGL_NONE
+};
+
+// as copied from qwindowsurface.cpp
+void qt_scrollRectInImage(QImage &img, const QRect &rect, const QPoint &offset)
+{
+ // make sure we don't detach
+ uchar *mem = const_cast<uchar*>(const_cast<const QImage &>(img).bits());
+
+ int lineskip = img.bytesPerLine();
+ int depth = img.depth() >> 3;
+
+ const QRect imageRect(0, 0, img.width(), img.height());
+ const QRect r = rect & imageRect & imageRect.translated(-offset);
+ const QPoint p = rect.topLeft() + offset;
+
+ if (r.isEmpty())
+ return;
+
+ const uchar *src;
+ uchar *dest;
+
+ if (r.top() < p.y()) {
+ src = mem + r.bottom() * lineskip + r.left() * depth;
+ dest = mem + (p.y() + r.height() - 1) * lineskip + p.x() * depth;
+ lineskip = -lineskip;
+ } else {
+ src = mem + r.top() * lineskip + r.left() * depth;
+ dest = mem + p.y() * lineskip + p.x() * depth;
+ }
+
+ const int w = r.width();
+ int h = r.height();
+ const int bytes = w * depth;
+
+ // overlapping segments?
+ if (offset.y() == 0 && qAbs(offset.x()) < w) {
+ do {
+ ::memmove(dest, src, bytes);
+ dest += lineskip;
+ src += lineskip;
+ } while (--h);
+ } else {
+ do {
+ ::memcpy(dest, src, bytes);
+ dest += lineskip;
+ src += lineskip;
+ } while (--h);
+ }
+}
+
+/* Public */
+
+QMeeGoLivePixmapData::QMeeGoLivePixmapData(int w, int h, QImage::Format format) : QGLPixmapData(QPixmapData::PixmapType)
+{
+ QImage image(w, h, format);
+ QX11PixmapData *pmd = new QX11PixmapData(QPixmapData::PixmapType);
+ pmd->fromImage(image, Qt::NoOpaqueDetection);
+ backingX11Pixmap = new QPixmap(pmd);
+
+ initializeThroughEGLImage();
+}
+
+QMeeGoLivePixmapData::QMeeGoLivePixmapData(Qt::HANDLE h) : QGLPixmapData(QPixmapData::PixmapType)
+{
+ backingX11Pixmap = new QPixmap(QPixmap::fromX11Pixmap(h));
+ initializeThroughEGLImage();
+}
+
+QMeeGoLivePixmapData::~QMeeGoLivePixmapData()
+{
+ delete backingX11Pixmap;
+}
+
+void QMeeGoLivePixmapData::initializeThroughEGLImage()
+{
+ QGLShareContextScope ctx(qt_gl_share_widget()->context());
+ QMeeGoExtensions::ensureInitialized();
+
+ EGLImageKHR eglImage = EGL_NO_IMAGE_KHR;
+ GLuint newTextureId = 0;
+
+ eglImage = QEgl::eglCreateImageKHR(QEgl::display(), EGL_NO_CONTEXT, EGL_NATIVE_PIXMAP_KHR,
+ (EGLClientBuffer) backingX11Pixmap->handle(), preserved_attribs);
+
+ if (eglImage == EGL_NO_IMAGE_KHR) {
+ qWarning("eglCreateImageKHR failed (live texture)!");
+ return;
+ }
+
+ glGenTextures(1, &newTextureId);
+ glBindTexture(GL_TEXTURE_2D, newTextureId);
+
+ glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, (EGLImageKHR) eglImage);
+ if (glGetError() == GL_NO_ERROR) {
+ resize(backingX11Pixmap->width(), backingX11Pixmap->height());
+ texture()->id = newTextureId;
+ texture()->options &= ~QGLContext::InvertedYBindOption;
+ m_hasAlpha = backingX11Pixmap->hasAlphaChannel();
+ } else {
+ qWarning("Failed to create a texture from an egl image (live texture)!");
+ glDeleteTextures(1, &newTextureId);
+ }
+
+ QEgl::eglDestroyImageKHR(QEgl::display(), eglImage);
+}
+
+QPixmapData *QMeeGoLivePixmapData::createCompatiblePixmapData() const
+{
+ qWarning("Create compatible called on live pixmap! Expect fail soon...");
+ return new QMeeGoRasterPixmapData(pixelType());
+}
+
+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;
+ QImage::Format format;
+ lockedImage = QImage();
+
+ surface = getSurfaceForBackingPixmap();
+ if (! QMeeGoExtensions::eglLockSurfaceKHR(QEgl::display(), surface, lock_attribs)) {
+ qWarning("Failed to lock surface (live texture)!");
+ return &lockedImage;
+ }
+
+ eglQuerySurface(QEgl::display(), surface, EGL_BITMAP_POINTER_KHR, (EGLint*) &data);
+ eglQuerySurface(QEgl::display(), surface, EGL_BITMAP_PITCH_KHR, (EGLint*) &pitch);
+
+ // Ok, here we know we just support those two formats. Real solution would be:
+ // uqery also the format.
+ if (backingX11Pixmap->depth() > 16)
+ format = QImage::Format_ARGB32_Premultiplied;
+ else
+ format = QImage::Format_RGB16;
+
+ if (data == NULL || pitch == 0) {
+ qWarning("Failed to query the live texture!");
+ return &lockedImage;
+ }
+
+ lockedImage = QImage((uchar *) data, width(), height(), format);
+ return &lockedImage;
+}
+
+bool QMeeGoLivePixmapData::release(QImage* /*img*/)
+{
+ QGLShareContextScope ctx(qt_gl_share_widget()->context());
+ QMeeGoExtensions::ensureInitialized();
+
+ if (QMeeGoExtensions::eglUnlockSurfaceKHR(QEgl::display(), getSurfaceForBackingPixmap())) {
+ lockedImage = QImage();
+ return true;
+ } else {
+ lockedImage = QImage();
+ return false;
+ }
+}
+
+Qt::HANDLE QMeeGoLivePixmapData::handle()
+{
+ return backingX11Pixmap->handle();
+}
+
+bool QMeeGoLivePixmapData::scroll(int dx, int dy, const QRect &rect)
+{
+ lock(NULL);
+
+ if (!lockedImage.isNull())
+ qt_scrollRectInImage(lockedImage, rect, QPoint(dx, dy));
+
+ release(&lockedImage);
+ return true;
+}
+
+EGLSurface QMeeGoLivePixmapData::getSurfaceForBackingPixmap()
+{
+ // This code is a crative remix of the stuff that can be found in the
+ // Qt's TFP implementation in /src/opengl/qgl_x11egl.cpp ::bindiTextureFromNativePixmap
+ QX11PixmapData *pixmapData = static_cast<QX11PixmapData*>(backingX11Pixmap->data_ptr().data());
+ Q_ASSERT(pixmapData->classId() == QPixmapData::X11Class);
+ bool hasAlpha = pixmapData->hasAlphaChannel();
+
+ if (pixmapData->gl_surface &&
+ hasAlpha == (pixmapData->flags & QX11PixmapData::GlSurfaceCreatedWithAlpha))
+ return pixmapData->gl_surface;
+
+ // Check to see if the surface is still valid
+ if (pixmapData->gl_surface &&
+ hasAlpha != ((pixmapData->flags & QX11PixmapData::GlSurfaceCreatedWithAlpha) > 0)) {
+ // Surface is invalid!
+ destroySurfaceForPixmapData(pixmapData);
+ }
+
+ if (pixmapData->gl_surface == 0) {
+ EGLConfig config = QEgl::defaultConfig(QInternal::Pixmap,
+ QEgl::OpenGL,
+ hasAlpha ? QEgl::Translucent : QEgl::NoOptions);
+
+ pixmapData->gl_surface = (void*)QEgl::createSurface(backingX11Pixmap, config);
+
+ if (hasAlpha)
+ pixmapData->flags |= QX11PixmapData::GlSurfaceCreatedWithAlpha;
+ else
+ pixmapData->flags &= ~QX11PixmapData::GlSurfaceCreatedWithAlpha;
+
+ if (pixmapData->gl_surface == (void*)EGL_NO_SURFACE)
+ return NULL;
+ }
+
+ return pixmapData->gl_surface;
+}
+
+void QMeeGoLivePixmapData::destroySurfaceForPixmapData(QPixmapData* pmd)
+{
+ Q_ASSERT(pmd->classId() == QPixmapData::X11Class);
+ QX11PixmapData *pixmapData = static_cast<QX11PixmapData*>(pmd);
+ if (pixmapData->gl_surface) {
+ eglDestroySurface(QEgl::display(), (EGLSurface)pixmapData->gl_surface);
+ pixmapData->gl_surface = 0;
+ }
+}
diff --git a/tools/qdoc3/apigenerator.h b/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h
index fefef5da54..2c6854eb9a 100644
--- a/tools/qdoc3/apigenerator.h
+++ b/src/plugins/graphicssystems/meego/qmeegolivepixmapdata.h
@@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the tools applications of the Qt Toolkit.
+** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -39,27 +39,33 @@
**
****************************************************************************/
-#ifndef APIGENERATOR_H
-#define APIGENERATOR_H
+#ifndef MLIVEPIXMAPDATA_H
+#define MLIVEPIXMAPDATA_H
-#include <QTextStream>
+#include <private/qpixmapdata_gl_p.h>
+#include "qmeegoextensions.h"
-#include "generator.h"
-
-QT_BEGIN_NAMESPACE
-
-class ApiGenerator : public Generator
+class QMeeGoLivePixmapData : public QGLPixmapData
{
public:
- QString format();
- void generateTree(const Tree *tree, CodeMarker *marker);
+ QMeeGoLivePixmapData(int w, int h, QImage::Format format);
+ QMeeGoLivePixmapData(Qt::HANDLE h);
+ ~QMeeGoLivePixmapData();
-private:
- void generateNode(const Node *node, CodeMarker *marker, int indent = 0);
+ QPixmapData *createCompatiblePixmapData() const;
+ bool scroll(int dx, int dy, const QRect &rect);
- QTextStream out;
-};
+ void initializeThroughEGLImage();
-QT_END_NAMESPACE
+ QImage* lock(EGLSyncKHR fenceSync);
+ bool release(QImage *img);
+ Qt::HANDLE handle();
+
+ EGLSurface getSurfaceForBackingPixmap();
+ void destroySurfaceForPixmapData(QPixmapData* pmd);
+
+ QPixmap *backingX11Pixmap;
+ QImage lockedImage;
+};
#endif
diff --git a/src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp b/src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp
index 84fc59359b..eb63692774 100644
--- a/src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp
+++ b/src/plugins/graphicssystems/meego/qmeegopixmapdata.cpp
@@ -41,12 +41,18 @@
#include "qmeegopixmapdata.h"
#include "qmeegoextensions.h"
+#include "qmeegorasterpixmapdata.h"
#include <private/qimage_p.h>
#include <private/qwindowsurface_gl_p.h>
#include <private/qeglcontext_p.h>
#include <private/qapplication_p.h>
#include <private/qgraphicssystem_runtime_p.h>
+// 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 };
QHash <void*, QMeeGoImageInfo*> QMeeGoPixmapData::sharedImagesMap;
@@ -87,36 +93,6 @@ void QMeeGoPixmapData::fromImage(const QImage &image,
}
}
-void QMeeGoPixmapData::fromEGLImage(Qt::HANDLE handle)
-{
- QGLShareContextScope ctx(qt_gl_share_widget()->context());
- QMeeGoExtensions::ensureInitialized();
-
- bool textureIsBound = false;
- GLuint newTextureId;
- GLint newWidth, newHeight;
-
- glGenTextures(1, &newTextureId);
- glBindTexture(GL_TEXTURE_2D, newTextureId);
-
- glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, (EGLImageKHR) handle);
- GLint err = glGetError();
- if (err == GL_NO_ERROR)
- textureIsBound = true;
-
- QMeeGoExtensions::eglQueryImageNOK(QEgl::display(), (EGLImageKHR) handle, EGL_WIDTH, &newWidth);
- QMeeGoExtensions::eglQueryImageNOK(QEgl::display(), (EGLImageKHR) handle, EGL_HEIGHT, &newHeight);
-
- if (textureIsBound) {
- // FIXME Remove this ugly hasAlphaChannel check when Qt lands the NoOpaqueCheck flag fix
- // for QGLPixmapData.
- fromTexture(newTextureId, newWidth, newHeight, true);
- } else {
- qWarning("Failed to create a texture from an egl image!");
- glDeleteTextures(1, &newTextureId);
- }
-}
-
void QMeeGoPixmapData::fromEGLSharedImage(Qt::HANDLE handle, const QImage &si)
{
if (si.isNull())
@@ -133,12 +109,10 @@ void QMeeGoPixmapData::fromEGLSharedImage(Qt::HANDLE handle, const QImage &si)
glGenTextures(1, &newTextureId);
glBindTexture(GL_TEXTURE_2D, newTextureId);
- glFinish();
EGLImageKHR image = QEgl::eglCreateImageKHR(QEgl::display(), EGL_NO_CONTEXT, EGL_SHARED_IMAGE_NOK,
(EGLClientBuffer)handle, preserved_image_attribs);
if (image != EGL_NO_IMAGE_KHR) {
- glFinish();
glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image);
GLint err = glGetError();
if (err == GL_NO_ERROR)
@@ -148,14 +122,12 @@ void QMeeGoPixmapData::fromEGLSharedImage(Qt::HANDLE handle, const QImage &si)
QMeeGoExtensions::eglQueryImageNOK(QEgl::display(), image, EGL_HEIGHT, &newHeight);
QEgl::eglDestroyImageKHR(QEgl::display(), image);
- glFinish();
}
if (textureIsBound) {
- // FIXME Remove this ugly hasAlphaChannel check when Qt lands the NoOpaqueCheck flag fix
- // for QGLPixmapData.
fromTexture(newTextureId, newWidth, newHeight,
(si.hasAlphaChannel() && const_cast<QImage &>(si).data_ptr()->checkForAlphaPixels()));
+ texture()->options &= ~QGLContext::InvertedYBindOption;
softImage = si;
QMeeGoPixmapData::registerSharedImage(handle, softImage);
} else {
@@ -170,22 +142,32 @@ Qt::HANDLE QMeeGoPixmapData::imageToEGLSharedImage(const QImage &image)
QMeeGoExtensions::ensureInitialized();
- glFinish();
- QGLPixmapData pixmapData(QPixmapData::PixmapType);
- pixmapData.fromImage(image, 0);
- GLuint textureId = pixmapData.bind();
+ GLuint textureId;
+
+ glGenTextures(1, &textureId);
+ glBindTexture(GL_TEXTURE_2D, textureId);
+ if (image.hasAlphaChannel() && const_cast<QImage &>(image).data_ptr()->checkForAlphaPixels()) {
+ 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());
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image.width(), image.height(), 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, converted);
+ free(converted);
+ }
- glFinish();
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+
+ glBindTexture(GL_TEXTURE_2D, textureId);
EGLImageKHR eglimage = QEgl::eglCreateImageKHR(QEgl::display(), QEglContext::currentContext(QEgl::OpenGL)->context(),
EGL_GL_TEXTURE_2D_KHR,
(EGLClientBuffer) textureId,
preserved_image_attribs);
- glFinish();
-
+ glDeleteTextures(1, &textureId);
if (eglimage) {
EGLNativeSharedImageTypeNOK handle = QMeeGoExtensions::eglCreateSharedImageNOK(QEgl::display(), eglimage, NULL);
QEgl::eglDestroyImageKHR(QEgl::display(), eglimage);
- glFinish();
return (Qt::HANDLE) handle;
} else {
qWarning("Failed to create shared image from pixmap/texture!");
@@ -195,6 +177,7 @@ Qt::HANDLE QMeeGoPixmapData::imageToEGLSharedImage(const QImage &image)
void QMeeGoPixmapData::updateFromSoftImage()
{
+ // FIXME That's broken with recent 16bit textures changes.
m_dirty = true;
m_source = softImage;
ensureCreated();
@@ -234,3 +217,8 @@ void QMeeGoPixmapData::registerSharedImage(Qt::HANDLE handle, const QImage &si)
qWarning("Inconsistency detected: overwriting entry in sharedImagesMap but handle/format different");
}
}
+
+QPixmapData *QMeeGoPixmapData::createCompatiblePixmapData() const
+{
+ return new QMeeGoRasterPixmapData(pixelType());
+}
diff --git a/src/plugins/graphicssystems/meego/qmeegopixmapdata.h b/src/plugins/graphicssystems/meego/qmeegopixmapdata.h
index 8b1ae146df..c66e719596 100644
--- a/src/plugins/graphicssystems/meego/qmeegopixmapdata.h
+++ b/src/plugins/graphicssystems/meego/qmeegopixmapdata.h
@@ -55,8 +55,8 @@ class QMeeGoPixmapData : public QGLPixmapData
public:
QMeeGoPixmapData();
void fromTexture(GLuint textureId, int w, int h, bool alpha);
+ QPixmapData *createCompatiblePixmapData() const;
- virtual void fromEGLImage(Qt::HANDLE handle);
virtual void fromEGLSharedImage(Qt::HANDLE handle, const QImage &softImage);
virtual void fromImage (const QImage &image, Qt::ImageConversionFlags flags);
virtual QImage toImage() const;
diff --git a/tools/qdoc3/ccodeparser.cpp b/src/plugins/graphicssystems/meego/qmeegorasterpixmapdata.cpp
index 48aa539666..b6a3727096 100644
--- a/tools/qdoc3/ccodeparser.cpp
+++ b/src/plugins/graphicssystems/meego/qmeegorasterpixmapdata.cpp
@@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the tools applications of the Qt Toolkit.
+** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -39,35 +39,22 @@
**
****************************************************************************/
-/*
- ccodeparser.cpp
-*/
+#include "qmeegorasterpixmapdata.h"
-#include "ccodeparser.h"
+/* Public */
-QT_BEGIN_NAMESPACE
-
-CCodeParser::CCodeParser()
-{
-}
-
-CCodeParser::~CCodeParser()
+QMeeGoRasterPixmapData::QMeeGoRasterPixmapData() : QRasterPixmapData(QPixmapData::PixmapType)
{
}
-QString CCodeParser::language()
+QMeeGoRasterPixmapData::QMeeGoRasterPixmapData(QPixmapData::PixelType t) : QRasterPixmapData(t)
{
- return QLatin1String("C");
}
-QString CCodeParser::headerFileNameFilter()
+void QMeeGoRasterPixmapData::copy(const QPixmapData *data, const QRect &rect)
{
- return QLatin1String("*.ch *.h");
+ if (data->classId() == QPixmapData::OpenGLClass)
+ fromImage(data->toImage(rect).copy(), Qt::NoOpaqueDetection);
+ else
+ QRasterPixmapData::copy(data, rect);
}
-
-QString CCodeParser::sourceFileNameFilter()
-{
- return QLatin1String("*.c");
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/loutgenerator.h b/src/plugins/graphicssystems/meego/qmeegorasterpixmapdata.h
index 484d38fe37..636b0e6fb6 100644
--- a/tools/qdoc3/loutgenerator.h
+++ b/src/plugins/graphicssystems/meego/qmeegorasterpixmapdata.h
@@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the tools applications of the Qt Toolkit.
+** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -39,29 +39,17 @@
**
****************************************************************************/
-/*
- loutgenerator.h
-*/
+#ifndef MRASTERPIXMAPDATA_H
+#define MRASTERPIXMAPDATA_H
-#ifndef LOUTGENERATOR_H
-#define LOUTGENERATOR_H
+#include <private/qpixmap_raster_p.h>
-#include "bookgenerator.h"
-
-QT_BEGIN_NAMESPACE
-
-class LoutGenerator : public BookGenerator
+class QMeeGoRasterPixmapData : public QRasterPixmapData
{
public:
- LoutGenerator();
- ~LoutGenerator();
-
- virtual QString format();
-
-protected:
- // ###
+ QMeeGoRasterPixmapData();
+ QMeeGoRasterPixmapData(QPixmapData::PixelType t);
+ void copy(const QPixmapData *data, const QRect &rect);
};
-QT_END_NAMESPACE
-
#endif
diff --git a/src/plugins/phonon/mmf/mmf.pro b/src/plugins/phonon/mmf/mmf.pro
index ac111881bf..691fc807aa 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 = /epoc32/include
+ PREPEND_INCLUDEPATH = $${EPOCROOT}epoc32/include
PREPEND_INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty
diff --git a/src/plugins/qpluginbase.pri b/src/plugins/qpluginbase.pri
index 84009d8ebc..7cbffe05b0 100644
--- a/src/plugins/qpluginbase.pri
+++ b/src/plugins/qpluginbase.pri
@@ -1,6 +1,6 @@
TEMPLATE = lib
isEmpty(QT_MAJOR_VERSION) {
- VERSION=4.7.1
+ VERSION=4.7.2
} else {
VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}
}
diff --git a/src/plugins/s60/feedback/feedback.pro b/src/plugins/s60/feedback/feedback.pro
new file mode 100644
index 0000000000..5e577ec593
--- /dev/null
+++ b/src/plugins/s60/feedback/feedback.pro
@@ -0,0 +1,18 @@
+include(../../qpluginbase.pri)
+
+TARGET = qtactilefeedback$${QT_LIBINFIX}
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/s60/feedback
+
+INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
+!contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) {
+ HEADERS += qtactileFeedback.h
+ SOURCES += qtactileFeedback_s60.cpp
+
+ LIBS += -ltouchfeedback
+}
+
+load(data_caging_paths)
+
+TARGET.UID3=0x200315B4
diff --git a/tools/qdoc3/command.h b/src/plugins/s60/feedback/qtactileFeedback.h
index 2346afffdc..7c4cc291fc 100644
--- a/tools/qdoc3/command.h
+++ b/src/plugins/s60/feedback/qtactileFeedback.h
@@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the tools applications of the Qt Toolkit.
+** This file is part of the QtGui module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -39,22 +39,16 @@
**
****************************************************************************/
-/*
- command.h
-*/
+#include <QEvent>
+#include <QWidget>
-#ifndef COMMAND_H
-#define COMMAND_H
+#include "private/qs60style_feedbackinterface_p.h"
-#include <qstringlist.h>
+class QTactileFeedback : public TactileFeedbackInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(TactileFeedbackInterface)
-#include "location.h"
-
-QT_BEGIN_NAMESPACE
-
-void executeCommand( const Location& location, const QString& commandFormat,
- const QStringList& args );
-
-QT_END_NAMESPACE
-
-#endif
+ public:
+ void touchFeedback(QEvent *event, const QWidget *widget);
+ };
diff --git a/src/plugins/s60/feedback/qtactileFeedback_s60.cpp b/src/plugins/s60/feedback/qtactileFeedback_s60.cpp
new file mode 100644
index 0000000000..c2f1d346cf
--- /dev/null
+++ b/src/plugins/s60/feedback/qtactileFeedback_s60.cpp
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QApplication>
+#include <QObject>
+#include <QSlider>
+#include <QScrollBar>
+
+#include <QtCore/qplugin.h>
+#include "qtactileFeedback.h"
+
+#include <touchfeedback.h>
+
+void QTactileFeedback::touchFeedback(QEvent *event, const QWidget *widget)
+{
+ //Lets share the global instance for touch feedback (you are NOT allowed to try and delete it!).
+ MTouchFeedback* feedback = MTouchFeedback::Instance();
+
+ //If the widget itself is not handling focus, try to use focusProxy widget.
+ const QWidget *w = ((widget->focusPolicy() == Qt::NoFocus) && (widget->focusProxy())) ? widget->focusProxy() : widget;
+
+ //Only give tactile feedback for enabled widgets that take focus.
+ if (feedback && w && w->isEnabled() && w->isWidgetType() && w->isVisible()) {
+ //Scrollbars are 'special' that they don't take focus (nor they have focusProxy), yet we'd like to have tactile feedback for them
+ if (w->focusPolicy() == Qt::NoFocus)
+ if (!qobject_cast<const QScrollBar *>(w))
+ return;
+
+ //Don't give tactile feedback for widgets that are outside topmost dialog.
+ QWidget *dialog = QApplication::activeModalWidget();
+ if (dialog) {
+ QList<const QWidget *> allChildren = dialog->findChildren<const QWidget *>();
+ if (!allChildren.contains(w))
+ return;
+ }
+
+ //Widget specific tactile feedback.
+ if (qobject_cast<const QSlider *>(w) || qobject_cast<const QScrollBar *>(w))
+ feedback->InstantFeedback(ETouchFeedbackSensitive);
+ else
+ feedback->InstantFeedback(ETouchFeedbackBasic);
+ }
+}
+
+Q_EXPORT_PLUGIN2("feedback", QTactileFeedback);
diff --git a/src/plugins/s60/s60.pro b/src/plugins/s60/s60.pro
index c999fff656..1ddf3261dc 100644
--- a/src/plugins/s60/s60.pro
+++ b/src/plugins/s60/s60.pro
@@ -6,6 +6,10 @@ symbian {
SUBDIRS += 3_1 3_2
}
+ !contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) {
+ SUBDIRS += feedback
+ }
+
# 5.0 is used also for Symbian3 and later
SUBDIRS += 5_0
} \ No newline at end of file
diff --git a/src/qbase.pri b/src/qbase.pri
index e565e4aea9..3a40928f69 100644
--- a/src/qbase.pri
+++ b/src/qbase.pri
@@ -4,7 +4,7 @@ INCLUDEPATH *= $$QMAKE_INCDIR_QT/$$TARGET #just for today to have some compat
isEmpty(QT_ARCH):!isEmpty(ARCH):QT_ARCH=$$ARCH #another compat that will rot for change #215700
TEMPLATE = lib
isEmpty(QT_MAJOR_VERSION) {
- VERSION=4.7.1
+ VERSION=4.7.2
} else {
VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}
}
@@ -36,7 +36,7 @@ CONFIG += qt warn_on depend_includepath
CONFIG += qmake_cache target_qt
CONFIG -= fix_output_dirs
win32|mac:!macx-xcode:CONFIG += debug_and_release
-linux*-g++*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF
+linux*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF
contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions
@@ -185,8 +185,8 @@ include(qt_targets.pri)
win32:DEFINES+=_USE_MATH_DEFINES
symbian {
- # Make partial upgrade SIS file for all dll's except webkit
- !contains(TARGET.UID3, 0x200267C2):!contains(TARGET.UID3, 0xE00267C2) {
+ # Make partial upgrade SIS file for all dll's except webkit and s60main
+ !contains(TARGET.UID3, 0x200267C2):!contains(TARGET.UID3, 0xE00267C2):!contains(TARGET.UID3, 0x2001E61F):!contains(TARGET.UID3, 0xE001E61F) {
# Partial upgrade SIS file
vendorinfo = \
"; Localised Vendor name" \
@@ -195,8 +195,11 @@ symbian {
"; Unique Vendor name" \
":\"Nokia, Qt\"" \
" "
+ isEmpty(QT_LIBINFIX): PARTIAL_UPGRADE_UID = 0x2001E61C
+ else: PARTIAL_UPGRADE_UID = 0xE001E61C
+
pu_header = "; Partial upgrade package for testing $${TARGET} changes without reinstalling everything" \
- "$${LITERAL_HASH}{\"$${TARGET}\"}, (0x2001E61C), $${QT_MAJOR_VERSION},$${QT_MINOR_VERSION},$${QT_PATCH_VERSION}, TYPE=PU"
+ "$${LITERAL_HASH}{\"$${TARGET}\"}, ($$PARTIAL_UPGRADE_UID), $${QT_MAJOR_VERSION},$${QT_MINOR_VERSION},$${QT_PATCH_VERSION}, TYPE=PU"
partial_upgrade.pkg_prerules = pu_header vendorinfo
partial_upgrade.sources = $$QMAKE_LIBDIR_QT/$${TARGET}.dll
partial_upgrade.path = c:/sys/bin
diff --git a/src/qt3support/canvas/q3canvas.cpp b/src/qt3support/canvas/q3canvas.cpp
index 959c4352b5..1b4706d0f1 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 d82d0f0e57..e24eeb579e 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/QtCoreu.def b/src/s60installs/bwins/QtCoreu.def
index f4e3a28275..6ecb403e2a 100644
--- a/src/s60installs/bwins/QtCoreu.def
+++ b/src/s60installs/bwins/QtCoreu.def
@@ -2960,7 +2960,7 @@ EXPORTS
?qvsnprintf@@YAHPADIPBD0@Z @ 2959 NONAME ; int qvsnprintf(char *, unsigned int, char const *, char *)
?raiseError@QXmlStreamReader@@QAEXABVQString@@@Z @ 2960 NONAME ; void QXmlStreamReader::raiseError(class QString const &)
?rangeContains@QXmlUtils@@CA_NPBVQXmlCharRange@@0VQChar@@@Z @ 2961 NONAME ; bool QXmlUtils::rangeContains(class QXmlCharRange const *, class QXmlCharRange const *, class QChar)
- ?reactivateDeferredActiveObjects@QEventDispatcherSymbian@@QAEXXZ @ 2962 NONAME ; void QEventDispatcherSymbian::reactivateDeferredActiveObjects(void)
+ ?reactivateDeferredActiveObjects@QEventDispatcherSymbian@@QAEXXZ @ 2962 NONAME ABSENT ; void QEventDispatcherSymbian::reactivateDeferredActiveObjects(void)
?reactivateSocketNotifier@QEventDispatcherSymbian@@QAEXPAVQSocketNotifier@@@Z @ 2963 NONAME ; void QEventDispatcherSymbian::reactivateSocketNotifier(class QSocketNotifier *)
?read@QAbstractFileEngine@@UAE_JPAD_J@Z @ 2964 NONAME ; long long QAbstractFileEngine::read(char *, long long)
?read@QFSFileEngine@@UAE_JPAD_J@Z @ 2965 NONAME ; long long QFSFileEngine::read(char *, long long)
@@ -4484,4 +4484,6 @@ EXPORTS
?selectThread@QEventDispatcherSymbian@@AAEAAVQSelectThread@@XZ @ 4483 NONAME ; class QSelectThread & QEventDispatcherSymbian::selectThread(void)
?qt_symbian_SetupThreadHeap@@YAHHAAUSStdEpocThreadCreateInfo@@@Z @ 4484 NONAME ; int qt_symbian_SetupThreadHeap(int, struct SStdEpocThreadCreateInfo &)
?objectNameChanged@QAbstractDeclarativeData@@2P6AXPAV1@PAVQObject@@@ZA @ 4485 NONAME ; void (*QAbstractDeclarativeData::objectNameChanged)(class QAbstractDeclarativeData *, class QObject *)
+ ?queueDeferredActiveObjectsCompletion@QEventDispatcherSymbian@@QAEXXZ @ 4486 NONAME ; void QEventDispatcherSymbian::queueDeferredActiveObjectsCompletion(void)
+ ?reactivateDeferredActiveObjects@QEventDispatcherSymbian@@UAEXXZ @ 4487 NONAME ; void QEventDispatcherSymbian::reactivateDeferredActiveObjects(void)
diff --git a/src/s60installs/bwins/QtDeclarativeu.def b/src/s60installs/bwins/QtDeclarativeu.def
index b72147e13b..9e88df7211 100644
--- a/src/s60installs/bwins/QtDeclarativeu.def
+++ b/src/s60installs/bwins/QtDeclarativeu.def
@@ -1,1842 +1,1843 @@
EXPORTS
?write@QDeclarativeProperty@@QBE_NABVQVariant@@@Z @ 1 NONAME ; bool QDeclarativeProperty::write(class QVariant const &) const
- ?setStored@QMetaPropertyBuilder@@QAEX_N@Z @ 2 NONAME ; void QMetaPropertyBuilder::setStored(bool)
+ ?setStored@QMetaPropertyBuilder@@QAEX_N@Z @ 2 NONAME ABSENT ; void QMetaPropertyBuilder::setStored(bool)
?trUtf8@QDeclarativeExpression@@SA?AVQString@@PBD0H@Z @ 3 NONAME ; class QString QDeclarativeExpression::trUtf8(char const *, char const *, int)
?qt_metacast@QDeclarativeComponent@@UAEPAXPBD@Z @ 4 NONAME ; void * QDeclarativeComponent::qt_metacast(char const *)
- ?name@QDeclarativeDebugService@@QBE?AVQString@@XZ @ 5 NONAME ; class QString QDeclarativeDebugService::name(void) const
- ?debugId@QDeclarativeDebugObjectReference@@QBEHXZ @ 6 NONAME ; int QDeclarativeDebugObjectReference::debugId(void) const
+ ?name@QDeclarativeDebugService@@QBE?AVQString@@XZ @ 5 NONAME ABSENT ; class QString QDeclarativeDebugService::name(void) const
+ ?debugId@QDeclarativeDebugObjectReference@@QBEHXZ @ 6 NONAME ABSENT ; int QDeclarativeDebugObjectReference::debugId(void) const
?addPluginPath@QDeclarativeEngine@@QAEXABVQString@@@Z @ 7 NONAME ; void QDeclarativeEngine::addPluginPath(class QString const &)
- ?name@QMetaPropertyBuilder@@QBE?AVQByteArray@@XZ @ 8 NONAME ; class QByteArray QMetaPropertyBuilder::name(void) const
+ ?name@QMetaPropertyBuilder@@QBE?AVQByteArray@@XZ @ 8 NONAME ABSENT ; class QByteArray QMetaPropertyBuilder::name(void) const
??6QDeclarativeInfo@@QAEAAV0@_J@Z @ 9 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(long long)
- ?propertyOffset@QDeclarativeOpenMetaObjectType@@QBEHXZ @ 10 NONAME ; int QDeclarativeOpenMetaObjectType::propertyOffset(void) const
- ??0QDeclarativeText@@QAE@PAVQDeclarativeItem@@@Z @ 11 NONAME ; QDeclarativeText::QDeclarativeText(class QDeclarativeItem *)
+ ?propertyOffset@QDeclarativeOpenMetaObjectType@@QBEHXZ @ 10 NONAME ABSENT ; int QDeclarativeOpenMetaObjectType::propertyOffset(void) const
+ ??0QDeclarativeText@@QAE@PAVQDeclarativeItem@@@Z @ 11 NONAME ABSENT ; QDeclarativeText::QDeclarativeText(class QDeclarativeItem *)
?propertyTypeName@QDeclarativeProperty@@QBEPBDXZ @ 12 NONAME ; char const * QDeclarativeProperty::propertyTypeName(void) const
- ?getStaticMetaObject@QDeclarativeDebugService@@SAABUQMetaObject@@XZ @ 13 NONAME ; struct QMetaObject const & QDeclarativeDebugService::getStaticMetaObject(void)
- ?setLeft@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 14 NONAME ; void QDeclarativeAnchors::setLeft(class QDeclarativeAnchorLine const &)
+ ?getStaticMetaObject@QDeclarativeDebugService@@SAABUQMetaObject@@XZ @ 13 NONAME ABSENT ; struct QMetaObject const & QDeclarativeDebugService::getStaticMetaObject(void)
+ ?setLeft@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 14 NONAME ABSENT ; void QDeclarativeAnchors::setLeft(class QDeclarativeAnchorLine const &)
?qt_metacall@QDeclarativeExpression@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 15 NONAME ; int QDeclarativeExpression::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?staticMetaObject@QDeclarativePen@@2UQMetaObject@@B @ 16 NONAME ; struct QMetaObject const QDeclarativePen::staticMetaObject
+ ?staticMetaObject@QDeclarativePen@@2UQMetaObject@@B @ 16 NONAME ABSENT ; struct QMetaObject const QDeclarativePen::staticMetaObject
?transformOriginChanged@QDeclarativeItem@@IAEXW4TransformOrigin@1@@Z @ 17 NONAME ; void QDeclarativeItem::transformOriginChanged(enum QDeclarativeItem::TransformOrigin)
- ?isStored@QMetaPropertyBuilder@@QBE_NXZ @ 18 NONAME ; bool QMetaPropertyBuilder::isStored(void) const
+ ?isStored@QMetaPropertyBuilder@@QBE_NXZ @ 18 NONAME ABSENT ; bool QMetaPropertyBuilder::isStored(void) const
?elapsed@QDeclarativeItemPrivate@@SA_JAAVQElapsedTimer@@@Z @ 19 NONAME ; long long QDeclarativeItemPrivate::elapsed(class QElapsedTimer &)
?clearComponentCache@QDeclarativeEngine@@QAEXXZ @ 20 NONAME ; void QDeclarativeEngine::clearComponentCache(void)
?forceActiveFocus@QDeclarativeItem@@QAEXXZ @ 21 NONAME ; void QDeclarativeItem::forceActiveFocus(void)
- ?tr@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0H@Z @ 22 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::tr(char const *, char const *, int)
+ ?tr@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0H@Z @ 22 NONAME ABSENT ; class QString QDeclarativeDebugObjectExpressionWatch::tr(char const *, char const *, int)
??1QDeclarativeParserStatus@@UAE@XZ @ 23 NONAME ; QDeclarativeParserStatus::~QDeclarativeParserStatus(void)
- ?gradient@QDeclarativeRectangle@@QBEPAVQDeclarativeGradient@@XZ @ 24 NONAME ; class QDeclarativeGradient * QDeclarativeRectangle::gradient(void) const
- ?setReadable@QMetaPropertyBuilder@@QAEX_N@Z @ 25 NONAME ; void QMetaPropertyBuilder::setReadable(bool)
+ ?gradient@QDeclarativeRectangle@@QBEPAVQDeclarativeGradient@@XZ @ 24 NONAME ABSENT ; class QDeclarativeGradient * QDeclarativeRectangle::gradient(void) const
+ ?setReadable@QMetaPropertyBuilder@@QAEX_N@Z @ 25 NONAME ABSENT ; void QMetaPropertyBuilder::setReadable(bool)
?d_func@QDeclarativeExpression@@AAEPAVQDeclarativeExpressionPrivate@@XZ @ 26 NONAME ; class QDeclarativeExpressionPrivate * QDeclarativeExpression::d_func(void)
- ??1QDeclarativeDomValueValueSource@@QAE@XZ @ 27 NONAME ; QDeclarativeDomValueValueSource::~QDeclarativeDomValueValueSource(void)
+ ??1QDeclarativeDomValueValueSource@@QAE@XZ @ 27 NONAME ABSENT ; QDeclarativeDomValueValueSource::~QDeclarativeDomValueValueSource(void)
??_EQDeclarativeStateGroup@@UAE@I@Z @ 28 NONAME ; QDeclarativeStateGroup::~QDeclarativeStateGroup(unsigned int)
- ?property@QDeclarativeDomObject@@QBE?AVQDeclarativeDomProperty@@ABVQByteArray@@@Z @ 29 NONAME ; class QDeclarativeDomProperty QDeclarativeDomObject::property(class QByteArray const &) const
- ?tr@QDeclarativeAnchors@@SA?AVQString@@PBD0H@Z @ 30 NONAME ; class QString QDeclarativeAnchors::tr(char const *, char const *, int)
+ ?property@QDeclarativeDomObject@@QBE?AVQDeclarativeDomProperty@@ABVQByteArray@@@Z @ 29 NONAME ABSENT ; class QDeclarativeDomProperty QDeclarativeDomObject::property(class QByteArray const &) const
+ ?tr@QDeclarativeAnchors@@SA?AVQString@@PBD0H@Z @ 30 NONAME ABSENT ; class QString QDeclarativeAnchors::tr(char const *, char const *, int)
?location@QDeclarativeCustomParserNode@@QBE?AULocation@QDeclarativeParser@@XZ @ 31 NONAME ; struct QDeclarativeParser::Location QDeclarativeCustomParserNode::location(void) const
??0QDeclarativeComponent@@QAE@PAVQDeclarativeEngine@@ABVQString@@PAVQObject@@@Z @ 32 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QString const &, class QObject *)
?d_func@QDeclarativeContext@@AAEPAVQDeclarativeContextPrivate@@XZ @ 33 NONAME ; class QDeclarativeContextPrivate * QDeclarativeContext::d_func(void)
- ?resetLeft@QDeclarativeAnchors@@QAEXXZ @ 34 NONAME ; void QDeclarativeAnchors::resetLeft(void)
+ ?resetLeft@QDeclarativeAnchors@@QAEXXZ @ 34 NONAME ABSENT ; void QDeclarativeAnchors::resetLeft(void)
?setOfflineStoragePath@QDeclarativeEngine@@QAEXABVQString@@@Z @ 35 NONAME ; void QDeclarativeEngine::setOfflineStoragePath(class QString const &)
- ?getStaticMetaObject@QListModelInterface@@SAABUQMetaObject@@XZ @ 36 NONAME ; struct QMetaObject const & QListModelInterface::getStaticMetaObject(void)
+ ?getStaticMetaObject@QListModelInterface@@SAABUQMetaObject@@XZ @ 36 NONAME ABSENT ; struct QMetaObject const & QListModelInterface::getStaticMetaObject(void)
?tr@QDeclarativeEngine@@SA?AVQString@@PBD0H@Z @ 37 NONAME ; class QString QDeclarativeEngine::tr(char const *, char const *, int)
??0QDeclarativeEngine@@QAE@PAVQObject@@@Z @ 38 NONAME ; QDeclarativeEngine::QDeclarativeEngine(class QObject *)
- ??0QDeclarativeDebugObjectReference@@QAE@ABV0@@Z @ 39 NONAME ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(class QDeclarativeDebugObjectReference const &)
- ?set@QDeclarativeListModel@@QAEXHABVQScriptValue@@@Z @ 40 NONAME ; void QDeclarativeListModel::set(int, class QScriptValue const &)
+ ??0QDeclarativeDebugObjectReference@@QAE@ABV0@@Z @ 39 NONAME ABSENT ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(class QDeclarativeDebugObjectReference const &)
+ ?set@QDeclarativeListModel@@QAEXHABVQScriptValue@@@Z @ 40 NONAME ABSENT ; void QDeclarativeListModel::set(int, class QScriptValue const &)
?tr@QDeclarativeState@@SA?AVQString@@PBD0H@Z @ 41 NONAME ; class QString QDeclarativeState::tr(char const *, char const *, int)
- ?metaObject@QDeclarativeBinding@@UBEPBUQMetaObject@@XZ @ 42 NONAME ; struct QMetaObject const * QDeclarativeBinding::metaObject(void) const
- ?setUser@QMetaPropertyBuilder@@QAEX_N@Z @ 43 NONAME ; void QMetaPropertyBuilder::setUser(bool)
- ?tr@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0@Z @ 44 NONAME ; class QString QDeclarativeDebugRootContextQuery::tr(char const *, char const *)
- ?setHorizontalCenterOffset@QDeclarativeAnchors@@QAEXM@Z @ 45 NONAME ; void QDeclarativeAnchors::setHorizontalCenterOffset(float)
+ ?metaObject@QDeclarativeBinding@@UBEPBUQMetaObject@@XZ @ 42 NONAME ABSENT ; struct QMetaObject const * QDeclarativeBinding::metaObject(void) const
+ ?setUser@QMetaPropertyBuilder@@QAEX_N@Z @ 43 NONAME ABSENT ; void QMetaPropertyBuilder::setUser(bool)
+ ?tr@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0@Z @ 44 NONAME ABSENT ; class QString QDeclarativeDebugRootContextQuery::tr(char const *, char const *)
+ ?setHorizontalCenterOffset@QDeclarativeAnchors@@QAEXM@Z @ 45 NONAME ABSENT ; void QDeclarativeAnchors::setHorizontalCenterOffset(float)
?connectDownloadProgress@QDeclarativePixmap@@QAE_NPAVQObject@@H@Z @ 46 NONAME ; bool QDeclarativePixmap::connectDownloadProgress(class QObject *, int)
??0QDeclarativeProperty@@QAE@XZ @ 47 NONAME ; QDeclarativeProperty::QDeclarativeProperty(void)
- ?valueType@QDeclarativeValueTypeFactory@@SAPAVQDeclarativeValueType@@H@Z @ 48 NONAME ; class QDeclarativeValueType * QDeclarativeValueTypeFactory::valueType(int)
- ??1QDeclarativeText@@UAE@XZ @ 49 NONAME ; QDeclarativeText::~QDeclarativeText(void)
- ?getStaticMetaObject@QDeclarativeText@@SAABUQMetaObject@@XZ @ 50 NONAME ; struct QMetaObject const & QDeclarativeText::getStaticMetaObject(void)
- ?isDesignable@QMetaPropertyBuilder@@QBE_NXZ @ 51 NONAME ; bool QMetaPropertyBuilder::isDesignable(void) const
+ ?valueType@QDeclarativeValueTypeFactory@@SAPAVQDeclarativeValueType@@H@Z @ 48 NONAME ABSENT ; class QDeclarativeValueType * QDeclarativeValueTypeFactory::valueType(int)
+ ??1QDeclarativeText@@UAE@XZ @ 49 NONAME ABSENT ; QDeclarativeText::~QDeclarativeText(void)
+ ?getStaticMetaObject@QDeclarativeText@@SAABUQMetaObject@@XZ @ 50 NONAME ABSENT ; struct QMetaObject const & QDeclarativeText::getStaticMetaObject(void)
+ ?isDesignable@QMetaPropertyBuilder@@QBE_NXZ @ 51 NONAME ABSENT ; bool QMetaPropertyBuilder::isDesignable(void) const
?tr@QDeclarativeStateGroup@@SA?AVQString@@PBD0H@Z @ 52 NONAME ; class QString QDeclarativeStateGroup::tr(char const *, char const *, int)
?errors@QDeclarativeView@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 53 NONAME ; class QList<class QDeclarativeError> QDeclarativeView::errors(void) const
- ??0QPacket@@QAE@ABV0@@Z @ 54 NONAME ; QPacket::QPacket(class QPacket const &)
- ??1QDeclarativeDebugObjectExpressionWatch@@UAE@XZ @ 55 NONAME ; QDeclarativeDebugObjectExpressionWatch::~QDeclarativeDebugObjectExpressionWatch(void)
+ ??0QPacket@@QAE@ABV0@@Z @ 54 NONAME ABSENT ; QPacket::QPacket(class QPacket const &)
+ ??1QDeclarativeDebugObjectExpressionWatch@@UAE@XZ @ 55 NONAME ABSENT ; QDeclarativeDebugObjectExpressionWatch::~QDeclarativeDebugObjectExpressionWatch(void)
?status@QDeclarativePixmap@@QBE?AW4Status@1@XZ @ 56 NONAME ; enum QDeclarativePixmap::Status QDeclarativePixmap::status(void) const
- ?bottom@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 57 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::bottom(void) const
- ??_EQDeclarativeDebugObjectQuery@@UAE@I@Z @ 58 NONAME ; QDeclarativeDebugObjectQuery::~QDeclarativeDebugObjectQuery(unsigned int)
- ??0QDeclarativeDomObject@@QAE@XZ @ 59 NONAME ; QDeclarativeDomObject::QDeclarativeDomObject(void)
- ?errors@QDeclarativeDomDocument@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 60 NONAME ; class QList<class QDeclarativeError> QDeclarativeDomDocument::errors(void) const
+ ?bottom@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 57 NONAME ABSENT ; class QDeclarativeAnchorLine QDeclarativeAnchors::bottom(void) const
+ ??_EQDeclarativeDebugObjectQuery@@UAE@I@Z @ 58 NONAME ABSENT ; QDeclarativeDebugObjectQuery::~QDeclarativeDebugObjectQuery(unsigned int)
+ ??0QDeclarativeDomObject@@QAE@XZ @ 59 NONAME ABSENT ; QDeclarativeDomObject::QDeclarativeDomObject(void)
+ ?errors@QDeclarativeDomDocument@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 60 NONAME ABSENT ; class QList<class QDeclarativeError> QDeclarativeDomDocument::errors(void) const
?toChanged@QDeclarativeTransition@@IAEXXZ @ 61 NONAME ; void QDeclarativeTransition::toChanged(void)
?objectOwnership@QDeclarativeEngine@@SA?AW4ObjectOwnership@1@PAVQObject@@@Z @ 62 NONAME ; enum QDeclarativeEngine::ObjectOwnership QDeclarativeEngine::objectOwnership(class QObject *)
- ??0QDeclarativeDebugWatch@@QAE@PAVQObject@@@Z @ 63 NONAME ; QDeclarativeDebugWatch::QDeclarativeDebugWatch(class QObject *)
+ ??0QDeclarativeDebugWatch@@QAE@PAVQObject@@@Z @ 63 NONAME ABSENT ; QDeclarativeDebugWatch::QDeclarativeDebugWatch(class QObject *)
?value@QDeclarativePropertyMap@@QBE?AVQVariant@@ABVQString@@@Z @ 64 NONAME ; class QVariant QDeclarativePropertyMap::value(class QString const &) const
?trUtf8@QDeclarativePropertyMap@@SA?AVQString@@PBD0@Z @ 65 NONAME ; class QString QDeclarativePropertyMap::trUtf8(char const *, char const *)
- ?isWaiting@QDeclarativeDebugQuery@@QBE_NXZ @ 66 NONAME ; bool QDeclarativeDebugQuery::isWaiting(void) const
+ ?isWaiting@QDeclarativeDebugQuery@@QBE_NXZ @ 66 NONAME ABSENT ; bool QDeclarativeDebugQuery::isWaiting(void) const
??1Variant@QDeclarativeParser@@QAE@XZ @ 67 NONAME ; QDeclarativeParser::Variant::~Variant(void)
??0Variant@QDeclarativeParser@@QAE@ABVQString@@@Z @ 68 NONAME ; QDeclarativeParser::Variant::Variant(class QString const &)
- ?paintedSizeChanged@QDeclarativeText@@IAEXXZ @ 69 NONAME ; void QDeclarativeText::paintedSizeChanged(void)
- ??1QDeclarativeDebugClient@@UAE@XZ @ 70 NONAME ; QDeclarativeDebugClient::~QDeclarativeDebugClient(void)
- ?trUtf8@QPacketProtocol@@SA?AVQString@@PBD0@Z @ 71 NONAME ; class QString QPacketProtocol::trUtf8(char const *, char const *)
- ?trUtf8@QDeclarativeListModel@@SA?AVQString@@PBD0@Z @ 72 NONAME ; class QString QDeclarativeListModel::trUtf8(char const *, char const *)
+ ?paintedSizeChanged@QDeclarativeText@@IAEXXZ @ 69 NONAME ABSENT ; void QDeclarativeText::paintedSizeChanged(void)
+ ??1QDeclarativeDebugClient@@UAE@XZ @ 70 NONAME ABSENT ; QDeclarativeDebugClient::~QDeclarativeDebugClient(void)
+ ?trUtf8@QPacketProtocol@@SA?AVQString@@PBD0@Z @ 71 NONAME ABSENT ; class QString QPacketProtocol::trUtf8(char const *, char const *)
+ ?trUtf8@QDeclarativeListModel@@SA?AVQString@@PBD0@Z @ 72 NONAME ABSENT ; class QString QDeclarativeListModel::trUtf8(char const *, char const *)
?qt_metacast@QDeclarativeState@@UAEPAXPBD@Z @ 73 NONAME ; void * QDeclarativeState::qt_metacast(char const *)
- ??1QDeclarativeDebugContextReference@@QAE@XZ @ 74 NONAME ; QDeclarativeDebugContextReference::~QDeclarativeDebugContextReference(void)
+ ??1QDeclarativeDebugContextReference@@QAE@XZ @ 74 NONAME ABSENT ; QDeclarativeDebugContextReference::~QDeclarativeDebugContextReference(void)
?getStaticMetaObject@QDeclarativeStateOperation@@SAABUQMetaObject@@XZ @ 75 NONAME ; struct QMetaObject const & QDeclarativeStateOperation::getStaticMetaObject(void)
- ?isInvalid@QDeclarativeDomValue@@QBE_NXZ @ 76 NONAME ; bool QDeclarativeDomValue::isInvalid(void) const
- ?trUtf8@QDeclarativeText@@SA?AVQString@@PBD0H@Z @ 77 NONAME ; class QString QDeclarativeText::trUtf8(char const *, char const *, int)
+ ?isInvalid@QDeclarativeDomValue@@QBE_NXZ @ 76 NONAME ABSENT ; bool QDeclarativeDomValue::isInvalid(void) const
+ ?trUtf8@QDeclarativeText@@SA?AVQString@@PBD0H@Z @ 77 NONAME ABSENT ; class QString QDeclarativeText::trUtf8(char const *, char const *, int)
??0QDeclarativeListReference@@QAE@ABV0@@Z @ 78 NONAME ; QDeclarativeListReference::QDeclarativeListReference(class QDeclarativeListReference const &)
?classBegin@QDeclarativeItem@@MAEXXZ @ 79 NONAME ; void QDeclarativeItem::classBegin(void)
?setTransformOrigin@QDeclarativeItem@@QAEXW4TransformOrigin@1@@Z @ 80 NONAME ; void QDeclarativeItem::setTransformOrigin(enum QDeclarativeItem::TransformOrigin)
?event@QDeclarativeItem@@MAE_NPAVQEvent@@@Z @ 81 NONAME ; bool QDeclarativeItem::event(class QEvent *)
- ?setAttributes@QMetaMethodBuilder@@QAEXH@Z @ 82 NONAME ; void QMetaMethodBuilder::setAttributes(int)
+ ?setAttributes@QMetaMethodBuilder@@QAEXH@Z @ 82 NONAME ABSENT ; void QMetaMethodBuilder::setAttributes(int)
?imageType@QDeclarativeImageProvider@@QBE?AW4ImageType@1@XZ @ 83 NONAME ; enum QDeclarativeImageProvider::ImageType QDeclarativeImageProvider::imageType(void) const
- ??_EQDeclarativeDebugObjectReference@@QAE@I@Z @ 84 NONAME ; QDeclarativeDebugObjectReference::~QDeclarativeDebugObjectReference(unsigned int)
- ?qt_metacall@QDeclarativeDebugQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 85 NONAME ; int QDeclarativeDebugQuery::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ??_EQDeclarativeDebugObjectReference@@QAE@I@Z @ 84 NONAME ABSENT ; QDeclarativeDebugObjectReference::~QDeclarativeDebugObjectReference(unsigned int)
+ ?qt_metacall@QDeclarativeDebugQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 85 NONAME ABSENT ; int QDeclarativeDebugQuery::qt_metacall(enum QMetaObject::Call, int, void * *)
?findState@QDeclarativeStateGroup@@QBEPAVQDeclarativeState@@ABVQString@@@Z @ 86 NONAME ; class QDeclarativeState * QDeclarativeStateGroup::findState(class QString const &) const
?asScript@Variant@QDeclarativeParser@@QBE?AVQString@@XZ @ 87 NONAME ; class QString QDeclarativeParser::Variant::asScript(void) const
?qt_metacast@QDeclarativeExtensionPlugin@@UAEPAXPBD@Z @ 88 NONAME ; void * QDeclarativeExtensionPlugin::qt_metacast(char const *)
- ?objectId@QDeclarativeDomObject@@QBE?AVQString@@XZ @ 89 NONAME ; class QString QDeclarativeDomObject::objectId(void) const
- ?right@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 90 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::right(void) const
- ?removeFromObject@QDeclarativeAbstractBinding@@QAEXXZ @ 91 NONAME ; void QDeclarativeAbstractBinding::removeFromObject(void)
+ ?objectId@QDeclarativeDomObject@@QBE?AVQString@@XZ @ 89 NONAME ABSENT ; class QString QDeclarativeDomObject::objectId(void) const
+ ?right@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 90 NONAME ABSENT ; class QDeclarativeAnchorLine QDeclarativeAnchors::right(void) const
+ ?removeFromObject@QDeclarativeAbstractBinding@@QAEXXZ @ 91 NONAME ABSENT ; void QDeclarativeAbstractBinding::removeFromObject(void)
?resizeMode@QDeclarativeView@@QBE?AW4ResizeMode@1@XZ @ 92 NONAME ; enum QDeclarativeView::ResizeMode QDeclarativeView::resizeMode(void) const
- ?object@QDeclarativeOpenMetaObject@@QBEPAVQObject@@XZ @ 93 NONAME ; class QObject * QDeclarativeOpenMetaObject::object(void) const
- ?staticMetaObject@QDeclarativeBehavior@@2UQMetaObject@@B @ 94 NONAME ; struct QMetaObject const QDeclarativeBehavior::staticMetaObject
- ?toObject@QDeclarativeDomValue@@QBE?AVQDeclarativeDomObject@@XZ @ 95 NONAME ; class QDeclarativeDomObject QDeclarativeDomValue::toObject(void) const
+ ?object@QDeclarativeOpenMetaObject@@QBEPAVQObject@@XZ @ 93 NONAME ABSENT ; class QObject * QDeclarativeOpenMetaObject::object(void) const
+ ?staticMetaObject@QDeclarativeBehavior@@2UQMetaObject@@B @ 94 NONAME ABSENT ; struct QMetaObject const QDeclarativeBehavior::staticMetaObject
+ ?toObject@QDeclarativeDomValue@@QBE?AVQDeclarativeDomObject@@XZ @ 95 NONAME ABSENT ; class QDeclarativeDomObject QDeclarativeDomValue::toObject(void) const
?setLine@QDeclarativeError@@QAEXH@Z @ 96 NONAME ; void QDeclarativeError::setLine(int)
??6QDeclarativeInfo@@QAEAAV0@K@Z @ 97 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned long)
- ??0QDeclarativeDebugConnection@@QAE@PAVQObject@@@Z @ 98 NONAME ; QDeclarativeDebugConnection::QDeclarativeDebugConnection(class QObject *)
- ?qt_metacast@QDeclarativeDebugQuery@@UAEPAXPBD@Z @ 99 NONAME ; void * QDeclarativeDebugQuery::qt_metacast(char const *)
- ?isValid@QDeclarativeGridScaledImage@@QBE_NXZ @ 100 NONAME ; bool QDeclarativeGridScaledImage::isValid(void) const
+ ??0QDeclarativeDebugConnection@@QAE@PAVQObject@@@Z @ 98 NONAME ABSENT ; QDeclarativeDebugConnection::QDeclarativeDebugConnection(class QObject *)
+ ?qt_metacast@QDeclarativeDebugQuery@@UAEPAXPBD@Z @ 99 NONAME ABSENT ; void * QDeclarativeDebugQuery::qt_metacast(char const *)
+ ?isValid@QDeclarativeGridScaledImage@@QBE_NXZ @ 100 NONAME ABSENT ; bool QDeclarativeGridScaledImage::isValid(void) const
?qt_metacast@QDeclarativeContext@@UAEPAXPBD@Z @ 101 NONAME ; void * QDeclarativeContext::qt_metacast(char const *)
- ?metaObject@QDeclarativeDebugClient@@UBEPBUQMetaObject@@XZ @ 102 NONAME ; struct QMetaObject const * QDeclarativeDebugClient::metaObject(void) const
+ ?metaObject@QDeclarativeDebugClient@@UBEPBUQMetaObject@@XZ @ 102 NONAME ABSENT ; struct QMetaObject const * QDeclarativeDebugClient::metaObject(void) const
?transitions@QDeclarativeItemPrivate@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeTransition@@@@XZ @ 103 NONAME ; class QDeclarativeListProperty<class QDeclarativeTransition> QDeclarativeItemPrivate::transitions(void)
- ??0QDeclarativeDebugPropertyWatch@@QAE@PAVQObject@@@Z @ 104 NONAME ; QDeclarativeDebugPropertyWatch::QDeclarativeDebugPropertyWatch(class QObject *)
- ??_EQDeclarativeDebugPropertyReference@@QAE@I@Z @ 105 NONAME ; QDeclarativeDebugPropertyReference::~QDeclarativeDebugPropertyReference(unsigned int)
- ?itemsChanged@QListModelInterface@@IAEXHHABV?$QList@H@@@Z @ 106 NONAME ; void QListModelInterface::itemsChanged(int, int, class QList<int> const &)
+ ??0QDeclarativeDebugPropertyWatch@@QAE@PAVQObject@@@Z @ 104 NONAME ABSENT ; QDeclarativeDebugPropertyWatch::QDeclarativeDebugPropertyWatch(class QObject *)
+ ??_EQDeclarativeDebugPropertyReference@@QAE@I@Z @ 105 NONAME ABSENT ; QDeclarativeDebugPropertyReference::~QDeclarativeDebugPropertyReference(unsigned int)
+ ?itemsChanged@QListModelInterface@@IAEXHHABV?$QList@H@@@Z @ 106 NONAME ABSENT ; void QListModelInterface::itemsChanged(int, int, class QList<int> const &)
??6@YA?AVQDebug@@V0@PAVQDeclarativeItem@@@Z @ 107 NONAME ; class QDebug operator<<(class QDebug, class QDeclarativeItem *)
- ?write@QDeclarativePropertyPrivate@@SA_NABVQDeclarativeProperty@@ABVQVariant@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 108 NONAME ; bool QDeclarativePropertyPrivate::write(class QDeclarativeProperty const &, class QVariant const &, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
- ?verticalTileRule@QDeclarativeGridScaledImage@@QBE?AW4TileMode@QDeclarativeBorderImage@@XZ @ 109 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::verticalTileRule(void) const
- ?tr@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0@Z @ 110 NONAME ; class QString QDeclarativeDebugObjectQuery::tr(char const *, char const *)
- ?isDynamic@QMetaPropertyBuilder@@QBE_NXZ @ 111 NONAME ; bool QMetaPropertyBuilder::isDynamic(void) const
- ?removeClassInfo@QMetaObjectBuilder@@QAEXH@Z @ 112 NONAME ; void QMetaObjectBuilder::removeClassInfo(int)
+ ?write@QDeclarativePropertyPrivate@@SA_NABVQDeclarativeProperty@@ABVQVariant@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 108 NONAME ABSENT ; bool QDeclarativePropertyPrivate::write(class QDeclarativeProperty const &, class QVariant const &, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
+ ?verticalTileRule@QDeclarativeGridScaledImage@@QBE?AW4TileMode@QDeclarativeBorderImage@@XZ @ 109 NONAME ABSENT ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::verticalTileRule(void) const
+ ?tr@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0@Z @ 110 NONAME ABSENT ; class QString QDeclarativeDebugObjectQuery::tr(char const *, char const *)
+ ?isDynamic@QMetaPropertyBuilder@@QBE_NXZ @ 111 NONAME ABSENT ; bool QMetaPropertyBuilder::isDynamic(void) const
+ ?removeClassInfo@QMetaObjectBuilder@@QAEXH@Z @ 112 NONAME ABSENT ; void QMetaObjectBuilder::removeClassInfo(int)
?warnings@QDeclarativeEngine@@IAEXABV?$QList@VQDeclarativeError@@@@@Z @ 113 NONAME ; void QDeclarativeEngine::warnings(class QList<class QDeclarativeError> const &)
?description@QDeclarativeError@@QBE?AVQString@@XZ @ 114 NONAME ; class QString QDeclarativeError::description(void) const
- ?binding@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 115 NONAME ; class QString QDeclarativeDebugPropertyReference::binding(void) const
- ?trUtf8@QDeclarativePen@@SA?AVQString@@PBD0@Z @ 116 NONAME ; class QString QDeclarativePen::trUtf8(char const *, char const *)
- ?readValueProperty@QDeclarativePropertyPrivate@@QAE?AVQVariant@@XZ @ 117 NONAME ; class QVariant QDeclarativePropertyPrivate::readValueProperty(void)
- ?propertyType@QDeclarativeDomDynamicProperty@@QBEHXZ @ 118 NONAME ; int QDeclarativeDomDynamicProperty::propertyType(void) const
- ?gridBottom@QDeclarativeGridScaledImage@@QBEHXZ @ 119 NONAME ; int QDeclarativeGridScaledImage::gridBottom(void) const
- ?setRadius@QDeclarativeRectangle@@QAEXM@Z @ 120 NONAME ; void QDeclarativeRectangle::setRadius(float)
- ?d_func@QDeclarativeBehavior@@AAEPAVQDeclarativeBehaviorPrivate@@XZ @ 121 NONAME ; class QDeclarativeBehaviorPrivate * QDeclarativeBehavior::d_func(void)
- ?isValid@QDeclarativePen@@QAE_NXZ @ 122 NONAME ; bool QDeclarativePen::isValid(void)
- ?result@QDeclarativeDebugExpressionQuery@@QBE?AVQVariant@@XZ @ 123 NONAME ; class QVariant QDeclarativeDebugExpressionQuery::result(void) const
- ?isEnumOrFlag@QMetaPropertyBuilder@@QBE_NXZ @ 124 NONAME ; bool QMetaPropertyBuilder::isEnumOrFlag(void) const
- ?addToObject@QDeclarativeAbstractBinding@@QAEXPAVQObject@@@Z @ 125 NONAME ; void QDeclarativeAbstractBinding::addToObject(class QObject *)
+ ?binding@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 115 NONAME ABSENT ; class QString QDeclarativeDebugPropertyReference::binding(void) const
+ ?trUtf8@QDeclarativePen@@SA?AVQString@@PBD0@Z @ 116 NONAME ABSENT ; class QString QDeclarativePen::trUtf8(char const *, char const *)
+ ?readValueProperty@QDeclarativePropertyPrivate@@QAE?AVQVariant@@XZ @ 117 NONAME ABSENT ; class QVariant QDeclarativePropertyPrivate::readValueProperty(void)
+ ?propertyType@QDeclarativeDomDynamicProperty@@QBEHXZ @ 118 NONAME ABSENT ; int QDeclarativeDomDynamicProperty::propertyType(void) const
+ ?gridBottom@QDeclarativeGridScaledImage@@QBEHXZ @ 119 NONAME ABSENT ; int QDeclarativeGridScaledImage::gridBottom(void) const
+ ?setRadius@QDeclarativeRectangle@@QAEXM@Z @ 120 NONAME ABSENT ; void QDeclarativeRectangle::setRadius(float)
+ ?d_func@QDeclarativeBehavior@@AAEPAVQDeclarativeBehaviorPrivate@@XZ @ 121 NONAME ABSENT ; class QDeclarativeBehaviorPrivate * QDeclarativeBehavior::d_func(void)
+ ?isValid@QDeclarativePen@@QAE_NXZ @ 122 NONAME ABSENT ; bool QDeclarativePen::isValid(void)
+ ?result@QDeclarativeDebugExpressionQuery@@QBE?AVQVariant@@XZ @ 123 NONAME ABSENT ; class QVariant QDeclarativeDebugExpressionQuery::result(void) const
+ ?isEnumOrFlag@QMetaPropertyBuilder@@QBE_NXZ @ 124 NONAME ABSENT ; bool QMetaPropertyBuilder::isEnumOrFlag(void) const
+ ?addToObject@QDeclarativeAbstractBinding@@QAEXPAVQObject@@@Z @ 125 NONAME ABSENT ; void QDeclarativeAbstractBinding::addToObject(class QObject *)
?trUtf8@QDeclarativeView@@SA?AVQString@@PBD0H@Z @ 126 NONAME ; class QString QDeclarativeView::trUtf8(char const *, char const *, int)
- ?d_func@QDeclarativeAnchors@@AAEPAVQDeclarativeAnchorsPrivate@@XZ @ 127 NONAME ; class QDeclarativeAnchorsPrivate * QDeclarativeAnchors::d_func(void)
- ??1QPacket@@UAE@XZ @ 128 NONAME ; QPacket::~QPacket(void)
- ?top@QDeclarativeScaleGrid@@QBEHXZ @ 129 NONAME ; int QDeclarativeScaleGrid::top(void) const
+ ?d_func@QDeclarativeAnchors@@AAEPAVQDeclarativeAnchorsPrivate@@XZ @ 127 NONAME ABSENT ; class QDeclarativeAnchorsPrivate * QDeclarativeAnchors::d_func(void)
+ ??1QPacket@@UAE@XZ @ 128 NONAME ABSENT ; QPacket::~QPacket(void)
+ ?top@QDeclarativeScaleGrid@@QBEHXZ @ 129 NONAME ABSENT ; int QDeclarativeScaleGrid::top(void) const
?setExpression@QDeclarativeExpression@@QAEXABVQString@@@Z @ 130 NONAME ; void QDeclarativeExpression::setExpression(class QString const &)
- ??1QDeclarativeDebugEngineReference@@QAE@XZ @ 131 NONAME ; QDeclarativeDebugEngineReference::~QDeclarativeDebugEngineReference(void)
+ ??1QDeclarativeDebugEngineReference@@QAE@XZ @ 131 NONAME ABSENT ; QDeclarativeDebugEngineReference::~QDeclarativeDebugEngineReference(void)
??0QDeclarativeStateOperation@@QAE@PAVQObject@@@Z @ 132 NONAME ; QDeclarativeStateOperation::QDeclarativeStateOperation(class QObject *)
?transform_clear@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@@Z @ 133 NONAME ; void QDeclarativeItemPrivate::transform_clear(class QDeclarativeListProperty<class QGraphicsTransform> *)
- ?staticMetaObject@QDeclarativeValueType@@2UQMetaObject@@B @ 134 NONAME ; struct QMetaObject const QDeclarativeValueType::staticMetaObject
- ?propertyName@QDeclarativeDomDynamicProperty@@QBE?AVQByteArray@@XZ @ 135 NONAME ; class QByteArray QDeclarativeDomDynamicProperty::propertyName(void) const
+ ?staticMetaObject@QDeclarativeValueType@@2UQMetaObject@@B @ 134 NONAME ABSENT ; struct QMetaObject const QDeclarativeValueType::staticMetaObject
+ ?propertyName@QDeclarativeDomDynamicProperty@@QBE?AVQByteArray@@XZ @ 135 NONAME ABSENT ; class QByteArray QDeclarativeDomDynamicProperty::propertyName(void) const
?focusChanged@QDeclarativeItem@@IAEX_N@Z @ 136 NONAME ; void QDeclarativeItem::focusChanged(bool)
- ?getStaticMetaObject@QDeclarativeBinding@@SAABUQMetaObject@@XZ @ 137 NONAME ; struct QMetaObject const & QDeclarativeBinding::getStaticMetaObject(void)
- ?copy@QDeclarativeMetaType@@SA_NHPAXPBX@Z @ 138 NONAME ; bool QDeclarativeMetaType::copy(int, void *, void const *)
- ?qt_metacall@QDeclarativeDebugEnginesQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 139 NONAME ; int QDeclarativeDebugEnginesQuery::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?tr@QDeclarativeDebugWatch@@SA?AVQString@@PBD0@Z @ 140 NONAME ; class QString QDeclarativeDebugWatch::tr(char const *, char const *)
- ?setEnumOrFlag@QMetaPropertyBuilder@@QAEX_N@Z @ 141 NONAME ; void QMetaPropertyBuilder::setEnumOrFlag(bool)
- ?getStaticMetaObject@QDeclarativeRectangle@@SAABUQMetaObject@@XZ @ 142 NONAME ; struct QMetaObject const & QDeclarativeRectangle::getStaticMetaObject(void)
+ ?getStaticMetaObject@QDeclarativeBinding@@SAABUQMetaObject@@XZ @ 137 NONAME ABSENT ; struct QMetaObject const & QDeclarativeBinding::getStaticMetaObject(void)
+ ?copy@QDeclarativeMetaType@@SA_NHPAXPBX@Z @ 138 NONAME ABSENT ; bool QDeclarativeMetaType::copy(int, void *, void const *)
+ ?qt_metacall@QDeclarativeDebugEnginesQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 139 NONAME ABSENT ; int QDeclarativeDebugEnginesQuery::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?tr@QDeclarativeDebugWatch@@SA?AVQString@@PBD0@Z @ 140 NONAME ABSENT ; class QString QDeclarativeDebugWatch::tr(char const *, char const *)
+ ?setEnumOrFlag@QMetaPropertyBuilder@@QAEX_N@Z @ 141 NONAME ABSENT ; void QMetaPropertyBuilder::setEnumOrFlag(bool)
+ ?getStaticMetaObject@QDeclarativeRectangle@@SAABUQMetaObject@@XZ @ 142 NONAME ABSENT ; struct QMetaObject const & QDeclarativeRectangle::getStaticMetaObject(void)
?isValid@QDeclarativeProperty@@QBE_NXZ @ 143 NONAME ; bool QDeclarativeProperty::isValid(void) const
?isConnected@QDeclarativeDebugClient@@QBE_NXZ @ 144 NONAME ABSENT ; bool QDeclarativeDebugClient::isConnected(void) const
- ?enabled@QDeclarativeBinding@@QBE_NXZ @ 145 NONAME ; bool QDeclarativeBinding::enabled(void) const
+ ?enabled@QDeclarativeBinding@@QBE_NXZ @ 145 NONAME ABSENT ; bool QDeclarativeBinding::enabled(void) const
?setSource@QDeclarativeView@@QAEXABVQUrl@@@Z @ 146 NONAME ; void QDeclarativeView::setSource(class QUrl const &)
- ??_EQDeclarativeDebugService@@UAE@I@Z @ 147 NONAME ; QDeclarativeDebugService::~QDeclarativeDebugService(unsigned int)
- ??0QDeclarativeDomDynamicProperty@@QAE@ABV0@@Z @ 148 NONAME ; QDeclarativeDomDynamicProperty::QDeclarativeDomDynamicProperty(class QDeclarativeDomDynamicProperty const &)
- ?className@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 149 NONAME ; class QString QDeclarativeDebugObjectReference::className(void) const
- ?indexOfSlot@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 150 NONAME ; int QMetaObjectBuilder::indexOfSlot(class QByteArray const &)
- ?tr@QDeclarativeDebugConnection@@SA?AVQString@@PBD0H@Z @ 151 NONAME ; class QString QDeclarativeDebugConnection::tr(char const *, char const *, int)
+ ??_EQDeclarativeDebugService@@UAE@I@Z @ 147 NONAME ABSENT ; QDeclarativeDebugService::~QDeclarativeDebugService(unsigned int)
+ ??0QDeclarativeDomDynamicProperty@@QAE@ABV0@@Z @ 148 NONAME ABSENT ; QDeclarativeDomDynamicProperty::QDeclarativeDomDynamicProperty(class QDeclarativeDomDynamicProperty const &)
+ ?className@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 149 NONAME ABSENT ; class QString QDeclarativeDebugObjectReference::className(void) const
+ ?indexOfSlot@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 150 NONAME ABSENT ; int QMetaObjectBuilder::indexOfSlot(class QByteArray const &)
+ ?tr@QDeclarativeDebugConnection@@SA?AVQString@@PBD0H@Z @ 151 NONAME ABSENT ; class QString QDeclarativeDebugConnection::tr(char const *, char const *, int)
?progressChanged@QDeclarativeComponent@@IAEXM@Z @ 152 NONAME ; void QDeclarativeComponent::progressChanged(float)
?hasError@QDeclarativeExpression@@QBE_NXZ @ 153 NONAME ; bool QDeclarativeExpression::hasError(void) const
?error@QDeclarativePixmap@@QBE?AVQString@@XZ @ 154 NONAME ; class QString QDeclarativePixmap::error(void) const
- ?property@QMetaObjectBuilder@@QBE?AVQMetaPropertyBuilder@@H@Z @ 155 NONAME ; class QMetaPropertyBuilder QMetaObjectBuilder::property(int) const
- ?index@QDeclarativeType@@QBEHXZ @ 156 NONAME ; int QDeclarativeType::index(void) const
- ?tr@QDeclarativeRectangle@@SA?AVQString@@PBD0@Z @ 157 NONAME ; class QString QDeclarativeRectangle::tr(char const *, char const *)
- ??0QDeclarativeScaleGrid@@QAE@PAVQObject@@@Z @ 158 NONAME ; QDeclarativeScaleGrid::QDeclarativeScaleGrid(class QObject *)
- ?engines@QDeclarativeDebugEnginesQuery@@QBE?AV?$QList@VQDeclarativeDebugEngineReference@@@@XZ @ 159 NONAME ; class QList<class QDeclarativeDebugEngineReference> QDeclarativeDebugEnginesQuery::engines(void) const
- ?qt_metacall@QDeclarativeDebugPropertyWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 160 NONAME ; int QDeclarativeDebugPropertyWatch::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?metaObject@QDeclarativeAnchors@@UBEPBUQMetaObject@@XZ @ 161 NONAME ; struct QMetaObject const * QDeclarativeAnchors::metaObject(void) const
+ ?property@QMetaObjectBuilder@@QBE?AVQMetaPropertyBuilder@@H@Z @ 155 NONAME ABSENT ; class QMetaPropertyBuilder QMetaObjectBuilder::property(int) const
+ ?index@QDeclarativeType@@QBEHXZ @ 156 NONAME ABSENT ; int QDeclarativeType::index(void) const
+ ?tr@QDeclarativeRectangle@@SA?AVQString@@PBD0@Z @ 157 NONAME ABSENT ; class QString QDeclarativeRectangle::tr(char const *, char const *)
+ ??0QDeclarativeScaleGrid@@QAE@PAVQObject@@@Z @ 158 NONAME ABSENT ; QDeclarativeScaleGrid::QDeclarativeScaleGrid(class QObject *)
+ ?engines@QDeclarativeDebugEnginesQuery@@QBE?AV?$QList@VQDeclarativeDebugEngineReference@@@@XZ @ 159 NONAME ABSENT ; class QList<class QDeclarativeDebugEngineReference> QDeclarativeDebugEnginesQuery::engines(void) const
+ ?qt_metacall@QDeclarativeDebugPropertyWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 160 NONAME ABSENT ; int QDeclarativeDebugPropertyWatch::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?metaObject@QDeclarativeAnchors@@UBEPBUQMetaObject@@XZ @ 161 NONAME ABSENT ; struct QMetaObject const * QDeclarativeAnchors::metaObject(void) const
??BQDeclarativePixmap@@QBEABVQPixmap@@XZ @ 162 NONAME ; QDeclarativePixmap::operator class QPixmap const &(void) const
?sceneResized@QDeclarativeView@@IAEXVQSize@@@Z @ 163 NONAME ; void QDeclarativeView::sceneResized(class QSize)
?subFocusItemChange@QDeclarativeItemPrivate@@UAEXXZ @ 164 NONAME ; void QDeclarativeItemPrivate::subFocusItemChange(void)
- ?hasNotifySignal@QDeclarativeDebugPropertyReference@@QBE_NXZ @ 165 NONAME ; bool QDeclarativeDebugPropertyReference::hasNotifySignal(void) const
- ?addSlot@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 166 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addSlot(class QByteArray const &)
+ ?hasNotifySignal@QDeclarativeDebugPropertyReference@@QBE_NXZ @ 165 NONAME ABSENT ; bool QDeclarativeDebugPropertyReference::hasNotifySignal(void) const
+ ?addSlot@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 166 NONAME ABSENT ; class QMetaMethodBuilder QMetaObjectBuilder::addSlot(class QByteArray const &)
?trUtf8@QDeclarativeStateOperation@@SA?AVQString@@PBD0@Z @ 167 NONAME ; class QString QDeclarativeStateOperation::trUtf8(char const *, char const *)
- ?propertyCreated@QDeclarativeOpenMetaObjectType@@MAEXHAAVQMetaPropertyBuilder@@@Z @ 168 NONAME ; void QDeclarativeOpenMetaObjectType::propertyCreated(int, class QMetaPropertyBuilder &)
+ ?propertyCreated@QDeclarativeOpenMetaObjectType@@MAEXHAAVQMetaPropertyBuilder@@@Z @ 168 NONAME ABSENT ; void QDeclarativeOpenMetaObjectType::propertyCreated(int, class QMetaPropertyBuilder &)
??1QDeclarativeItemPrivate@@UAE@XZ @ 169 NONAME ; QDeclarativeItemPrivate::~QDeclarativeItemPrivate(void)
?clear@QDeclarativePropertyMap@@QAEXABVQString@@@Z @ 170 NONAME ; void QDeclarativePropertyMap::clear(class QString const &)
- ?tr@QDeclarativeDebugClient@@SA?AVQString@@PBD0H@Z @ 171 NONAME ; class QString QDeclarativeDebugClient::tr(char const *, char const *, int)
+ ?tr@QDeclarativeDebugClient@@SA?AVQString@@PBD0H@Z @ 171 NONAME ABSENT ; class QString QDeclarativeDebugClient::tr(char const *, char const *, int)
?read@QDeclarativeProperty@@SA?AVQVariant@@PAVQObject@@ABVQString@@PAVQDeclarativeEngine@@@Z @ 172 NONAME ; class QVariant QDeclarativeProperty::read(class QObject *, class QString const &, class QDeclarativeEngine *)
?insert@QDeclarativePropertyMap@@QAEXABVQString@@ABVQVariant@@@Z @ 173 NONAME ; void QDeclarativePropertyMap::insert(class QString const &, class QVariant const &)
??1QDeclarativeContext@@UAE@XZ @ 174 NONAME ; QDeclarativeContext::~QDeclarativeContext(void)
?operationCount@QDeclarativeState@@QBEHXZ @ 175 NONAME ; int QDeclarativeState::operationCount(void) const
?getStaticMetaObject@QDeclarativeItem@@SAABUQMetaObject@@XZ @ 176 NONAME ; struct QMetaObject const & QDeclarativeItem::getStaticMetaObject(void)
- ?qtAnimationStateChanged@QDeclarativeBehavior@@AAEXW4State@QAbstractAnimation@@0@Z @ 177 NONAME ; void QDeclarativeBehavior::qtAnimationStateChanged(enum QAbstractAnimation::State, enum QAbstractAnimation::State)
- ?trUtf8@QDeclarativeBehavior@@SA?AVQString@@PBD0H@Z @ 178 NONAME ; class QString QDeclarativeBehavior::trUtf8(char const *, char const *, int)
+ ?qtAnimationStateChanged@QDeclarativeBehavior@@AAEXW4State@QAbstractAnimation@@0@Z @ 177 NONAME ABSENT ; void QDeclarativeBehavior::qtAnimationStateChanged(enum QAbstractAnimation::State, enum QAbstractAnimation::State)
+ ?trUtf8@QDeclarativeBehavior@@SA?AVQString@@PBD0H@Z @ 178 NONAME ABSENT ; class QString QDeclarativeBehavior::trUtf8(char const *, char const *, int)
?status@QDeclarativeComponent@@QBE?AW4Status@1@XZ @ 179 NONAME ; enum QDeclarativeComponent::Status QDeclarativeComponent::status(void) const
?boundingRect@QDeclarativeItem@@UBE?AVQRectF@@XZ @ 180 NONAME ; class QRectF QDeclarativeItem::boundingRect(void) const
- ?availableInVersion@QDeclarativeType@@QBE_NHH@Z @ 181 NONAME ; bool QDeclarativeType::availableInVersion(int, int) const
- ?getStaticMetaObject@QDeclarativeDebugWatch@@SAABUQMetaObject@@XZ @ 182 NONAME ; struct QMetaObject const & QDeclarativeDebugWatch::getStaticMetaObject(void)
- ??_EQDeclarativeRectangle@@UAE@I@Z @ 183 NONAME ; QDeclarativeRectangle::~QDeclarativeRectangle(unsigned int)
- ?setTopMargin@QDeclarativeAnchors@@QAEXM@Z @ 184 NONAME ; void QDeclarativeAnchors::setTopMargin(float)
- ??5@YAAAVQDataStream@@AAV0@AAUQDeclarativeObjectProperty@QDeclarativeEngineDebugServer@@@Z @ 185 NONAME ; class QDataStream & operator>>(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &)
- ??1QDeclarativeValueTypeFactory@@QAE@XZ @ 186 NONAME ; QDeclarativeValueTypeFactory::~QDeclarativeValueTypeFactory(void)
- ?metaObject@QDeclarativeDebugObjectExpressionWatch@@UBEPBUQMetaObject@@XZ @ 187 NONAME ; struct QMetaObject const * QDeclarativeDebugObjectExpressionWatch::metaObject(void) const
+ ?availableInVersion@QDeclarativeType@@QBE_NHH@Z @ 181 NONAME ABSENT ; bool QDeclarativeType::availableInVersion(int, int) const
+ ?getStaticMetaObject@QDeclarativeDebugWatch@@SAABUQMetaObject@@XZ @ 182 NONAME ABSENT ; struct QMetaObject const & QDeclarativeDebugWatch::getStaticMetaObject(void)
+ ??_EQDeclarativeRectangle@@UAE@I@Z @ 183 NONAME ABSENT ; QDeclarativeRectangle::~QDeclarativeRectangle(unsigned int)
+ ?setTopMargin@QDeclarativeAnchors@@QAEXM@Z @ 184 NONAME ABSENT ; void QDeclarativeAnchors::setTopMargin(float)
+ ??5@YAAAVQDataStream@@AAV0@AAUQDeclarativeObjectProperty@QDeclarativeEngineDebugServer@@@Z @ 185 NONAME ABSENT ; class QDataStream & operator>>(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectProperty &)
+ ??1QDeclarativeValueTypeFactory@@QAE@XZ @ 186 NONAME ABSENT ; QDeclarativeValueTypeFactory::~QDeclarativeValueTypeFactory(void)
+ ?metaObject@QDeclarativeDebugObjectExpressionWatch@@UBEPBUQMetaObject@@XZ @ 187 NONAME ABSENT ; struct QMetaObject const * QDeclarativeDebugObjectExpressionWatch::metaObject(void) const
??0QDeclarativeComponent@@QAE@PAVQObject@@@Z @ 188 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QObject *)
?qt_metacast@QDeclarativeItem@@UAEPAXPBD@Z @ 189 NONAME ; void * QDeclarativeItem::qt_metacast(char const *)
?changes@QDeclarativeState@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeStateOperation@@@@XZ @ 190 NONAME ; class QDeclarativeListProperty<class QDeclarativeStateOperation> QDeclarativeState::changes(void)
?resizeEvent@QDeclarativeView@@MAEXPAVQResizeEvent@@@Z @ 191 NONAME ; void QDeclarativeView::resizeEvent(class QResizeEvent *)
- ?d_func@QDeclarativeBinding@@ABEPBVQDeclarativeBindingPrivate@@XZ @ 192 NONAME ; class QDeclarativeBindingPrivate const * QDeclarativeBinding::d_func(void) const
- ?wrapMode@QDeclarativeText@@QBE?AW4WrapMode@1@XZ @ 193 NONAME ; enum QDeclarativeText::WrapMode QDeclarativeText::wrapMode(void) const
- ?centerIn@QDeclarativeAnchors@@QBEPAVQGraphicsObject@@XZ @ 194 NONAME ; class QGraphicsObject * QDeclarativeAnchors::centerIn(void) const
- ??0QDeclarativeType@@AAE@HABURegisterType@QDeclarativePrivate@@@Z @ 195 NONAME ; QDeclarativeType::QDeclarativeType(int, struct QDeclarativePrivate::RegisterType const &)
+ ?d_func@QDeclarativeBinding@@ABEPBVQDeclarativeBindingPrivate@@XZ @ 192 NONAME ABSENT ; class QDeclarativeBindingPrivate const * QDeclarativeBinding::d_func(void) const
+ ?wrapMode@QDeclarativeText@@QBE?AW4WrapMode@1@XZ @ 193 NONAME ABSENT ; enum QDeclarativeText::WrapMode QDeclarativeText::wrapMode(void) const
+ ?centerIn@QDeclarativeAnchors@@QBEPAVQGraphicsObject@@XZ @ 194 NONAME ABSENT ; class QGraphicsObject * QDeclarativeAnchors::centerIn(void) const
+ ??0QDeclarativeType@@AAE@HABURegisterType@QDeclarativePrivate@@@Z @ 195 NONAME ABSENT ; QDeclarativeType::QDeclarativeType(int, struct QDeclarativePrivate::RegisterType const &)
?trUtf8@QDeclarativeComponent@@SA?AVQString@@PBD0H@Z @ 196 NONAME ; class QString QDeclarativeComponent::trUtf8(char const *, char const *, int)
- ??0QMetaObjectBuilder@@QAE@PBUQMetaObject@@V?$QFlags@W4AddMember@QMetaObjectBuilder@@@@@Z @ 197 NONAME ; QMetaObjectBuilder::QMetaObjectBuilder(struct QMetaObject const *, class QFlags<enum QMetaObjectBuilder::AddMember>)
+ ??0QMetaObjectBuilder@@QAE@PBUQMetaObject@@V?$QFlags@W4AddMember@QMetaObjectBuilder@@@@@Z @ 197 NONAME ABSENT ; QMetaObjectBuilder::QMetaObjectBuilder(struct QMetaObject const *, class QFlags<enum QMetaObjectBuilder::AddMember>)
?quit@QDeclarativeEngine@@IAEXXZ @ 198 NONAME ; void QDeclarativeEngine::quit(void)
?qmlregister@QDeclarativePrivate@@YAHW4RegistrationType@1@PAX@Z @ 199 NONAME ; int QDeclarativePrivate::qmlregister(enum QDeclarativePrivate::RegistrationType, void *)
- ??0QMetaEnumBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 200 NONAME ; QMetaEnumBuilder::QMetaEnumBuilder(class QMetaObjectBuilder const *, int)
- ?setBottom@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 201 NONAME ; void QDeclarativeAnchors::setBottom(class QDeclarativeAnchorLine const &)
+ ??0QMetaEnumBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 200 NONAME ABSENT ; QMetaEnumBuilder::QMetaEnumBuilder(class QMetaObjectBuilder const *, int)
+ ?setBottom@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 201 NONAME ABSENT ; void QDeclarativeAnchors::setBottom(class QDeclarativeAnchorLine const &)
??0QDeclarativeCustomParser@@QAE@XZ @ 202 NONAME ; QDeclarativeCustomParser::QDeclarativeCustomParser(void)
- ?value@QDeclarativeOpenMetaObject@@QBE?AVQVariant@@ABVQByteArray@@@Z @ 203 NONAME ; class QVariant QDeclarativeOpenMetaObject::value(class QByteArray const &) const
- ?styleColor@QDeclarativeText@@QBE?AVQColor@@XZ @ 204 NONAME ; class QColor QDeclarativeText::styleColor(void) const
- ?centerInChanged@QDeclarativeAnchors@@IAEXXZ @ 205 NONAME ; void QDeclarativeAnchors::centerInChanged(void)
- ?colorChanged@QDeclarativeRectangle@@IAEXXZ @ 206 NONAME ; void QDeclarativeRectangle::colorChanged(void)
- ??0QDeclarativePropertyPrivate@@QAE@ABV0@@Z @ 207 NONAME ; QDeclarativePropertyPrivate::QDeclarativePropertyPrivate(class QDeclarativePropertyPrivate const &)
+ ?value@QDeclarativeOpenMetaObject@@QBE?AVQVariant@@ABVQByteArray@@@Z @ 203 NONAME ABSENT ; class QVariant QDeclarativeOpenMetaObject::value(class QByteArray const &) const
+ ?styleColor@QDeclarativeText@@QBE?AVQColor@@XZ @ 204 NONAME ABSENT ; class QColor QDeclarativeText::styleColor(void) const
+ ?centerInChanged@QDeclarativeAnchors@@IAEXXZ @ 205 NONAME ABSENT ; void QDeclarativeAnchors::centerInChanged(void)
+ ?colorChanged@QDeclarativeRectangle@@IAEXXZ @ 206 NONAME ABSENT ; void QDeclarativeRectangle::colorChanged(void)
+ ??0QDeclarativePropertyPrivate@@QAE@ABV0@@Z @ 207 NONAME ABSENT ; QDeclarativePropertyPrivate::QDeclarativePropertyPrivate(class QDeclarativePropertyPrivate const &)
?loadUrl@QDeclarativeComponent@@QAEXABVQUrl@@@Z @ 208 NONAME ; void QDeclarativeComponent::loadUrl(class QUrl const &)
?beginCreate@QDeclarativeComponent@@UAEPAVQObject@@PAVQDeclarativeContext@@@Z @ 209 NONAME ; class QObject * QDeclarativeComponent::beginCreate(class QDeclarativeContext *)
- ?setRight@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 210 NONAME ; void QDeclarativeAnchors::setRight(class QDeclarativeAnchorLine const &)
+ ?setRight@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 210 NONAME ABSENT ; void QDeclarativeAnchors::setRight(class QDeclarativeAnchorLine const &)
?needsNotifySignal@QDeclarativeProperty@@QBE_NXZ @ 211 NONAME ; bool QDeclarativeProperty::needsNotifySignal(void) const
- ?fill@QDeclarativeAnchors@@QBEPAVQGraphicsObject@@XZ @ 212 NONAME ; class QGraphicsObject * QDeclarativeAnchors::fill(void) const
+ ?fill@QDeclarativeAnchors@@QBEPAVQGraphicsObject@@XZ @ 212 NONAME ABSENT ; class QGraphicsObject * QDeclarativeAnchors::fill(void) const
?top@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 213 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::top(void) const
?clear@QDeclarativeListReference@@QBE_NXZ @ 214 NONAME ; bool QDeclarativeListReference::clear(void) const
?parentChanged@QDeclarativeItem@@IAEXPAV1@@Z @ 215 NONAME ; void QDeclarativeItem::parentChanged(class QDeclarativeItem *)
- ?columnNumber@QDeclarativeDebugFileReference@@QBEHXZ @ 216 NONAME ; int QDeclarativeDebugFileReference::columnNumber(void) const
+ ?columnNumber@QDeclarativeDebugFileReference@@QBEHXZ @ 216 NONAME ABSENT ; int QDeclarativeDebugFileReference::columnNumber(void) const
??0QDeclarativeListModel@@AAE@_NPAVQObject@@@Z @ 217 NONAME ABSENT ; QDeclarativeListModel::QDeclarativeListModel(bool, class QObject *)
?apply@QDeclarativeState@@QAEXPAVQDeclarativeStateGroup@@PAVQDeclarativeTransition@@PAV1@@Z @ 218 NONAME ; void QDeclarativeState::apply(class QDeclarativeStateGroup *, class QDeclarativeTransition *, class QDeclarativeState *)
- ?isValid@QDeclarativeDomProperty@@QBE_NXZ @ 219 NONAME ; bool QDeclarativeDomProperty::isValid(void) const
- ?trUtf8@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0@Z @ 220 NONAME ; class QString QDeclarativeDebugExpressionQuery::trUtf8(char const *, char const *)
+ ?isValid@QDeclarativeDomProperty@@QBE_NXZ @ 219 NONAME ABSENT ; bool QDeclarativeDomProperty::isValid(void) const
+ ?trUtf8@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0@Z @ 220 NONAME ABSENT ; class QString QDeclarativeDebugExpressionQuery::trUtf8(char const *, char const *)
?statusChanged@QDeclarativeView@@IAEXW4Status@1@@Z @ 221 NONAME ; void QDeclarativeView::statusChanged(enum QDeclarativeView::Status)
- ?componentComplete@QDeclarativeText@@UAEXXZ @ 222 NONAME ; void QDeclarativeText::componentComplete(void)
+ ?componentComplete@QDeclarativeText@@UAEXXZ @ 222 NONAME ABSENT ; void QDeclarativeText::componentComplete(void)
?canCount@QDeclarativeListReference@@QBE_NXZ @ 223 NONAME ; bool QDeclarativeListReference::canCount(void) const
- ??1QListModelInterface@@UAE@XZ @ 224 NONAME ; QListModelInterface::~QListModelInterface(void)
- ??0QDeclarativeAnchors@@QAE@PAVQObject@@@Z @ 225 NONAME ; QDeclarativeAnchors::QDeclarativeAnchors(class QObject *)
+ ??1QListModelInterface@@UAE@XZ @ 224 NONAME ABSENT ; QListModelInterface::~QListModelInterface(void)
+ ??0QDeclarativeAnchors@@QAE@PAVQObject@@@Z @ 225 NONAME ABSENT ; QDeclarativeAnchors::QDeclarativeAnchors(class QObject *)
?resources_at@QDeclarativeItemPrivate@@SAPAVQObject@@PAV?$QDeclarativeListProperty@VQObject@@@@H@Z @ 226 NONAME ; class QObject * QDeclarativeItemPrivate::resources_at(class QDeclarativeListProperty<class QObject> *, int)
- ?isExtendedType@QDeclarativeType@@QBE_NXZ @ 227 NONAME ; bool QDeclarativeType::isExtendedType(void) const
- ?top@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 228 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::top(void) const
+ ?isExtendedType@QDeclarativeType@@QBE_NXZ @ 227 NONAME ABSENT ; bool QDeclarativeType::isExtendedType(void) const
+ ?top@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 228 NONAME ABSENT ; class QDeclarativeAnchorLine QDeclarativeAnchors::top(void) const
??0QDeclarativePropertyMap@@QAE@PAVQObject@@@Z @ 229 NONAME ; QDeclarativePropertyMap::QDeclarativePropertyMap(class QObject *)
??0QDeclarativeExpression@@IAE@PAVQDeclarativeContextData@@PAXPAVQDeclarativeRefCount@@PAVQObject@@ABVQString@@HAAVQDeclarativeExpressionPrivate@@@Z @ 230 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, void *, class QDeclarativeRefCount *, class QObject *, class QString const &, int, class QDeclarativeExpressionPrivate &)
- ?setColor@QDeclarativeText@@QAEXABVQColor@@@Z @ 231 NONAME ; void QDeclarativeText::setColor(class QColor const &)
- ?hasStdCppSet@QMetaPropertyBuilder@@QBE_NXZ @ 232 NONAME ; bool QMetaPropertyBuilder::hasStdCppSet(void) const
- ??0QDeclarativeDebugFileReference@@QAE@ABV0@@Z @ 233 NONAME ; QDeclarativeDebugFileReference::QDeclarativeDebugFileReference(class QDeclarativeDebugFileReference const &)
- ?toValueInterceptor@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueValueInterceptor@@XZ @ 234 NONAME ; class QDeclarativeDomValueValueInterceptor QDeclarativeDomValue::toValueInterceptor(void) const
- ??0QDeclarativeDebugEngineReference@@QAE@H@Z @ 235 NONAME ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(int)
+ ?setColor@QDeclarativeText@@QAEXABVQColor@@@Z @ 231 NONAME ABSENT ; void QDeclarativeText::setColor(class QColor const &)
+ ?hasStdCppSet@QMetaPropertyBuilder@@QBE_NXZ @ 232 NONAME ABSENT ; bool QMetaPropertyBuilder::hasStdCppSet(void) const
+ ??0QDeclarativeDebugFileReference@@QAE@ABV0@@Z @ 233 NONAME ABSENT ; QDeclarativeDebugFileReference::QDeclarativeDebugFileReference(class QDeclarativeDebugFileReference const &)
+ ?toValueInterceptor@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueValueInterceptor@@XZ @ 234 NONAME ABSENT ; class QDeclarativeDomValueValueInterceptor QDeclarativeDomValue::toValueInterceptor(void) const
+ ??0QDeclarativeDebugEngineReference@@QAE@H@Z @ 235 NONAME ABSENT ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(int)
?tr@QDeclarativePixmap@@SA?AVQString@@PBD0H@Z @ 236 NONAME ; class QString QDeclarativePixmap::tr(char const *, char const *, int)
?state@QDeclarativeItemPrivate@@QBE?AVQString@@XZ @ 237 NONAME ; class QString QDeclarativeItemPrivate::state(void) const
??1QDeclarativePropertyValueInterceptor@@UAE@XZ @ 238 NONAME ; QDeclarativePropertyValueInterceptor::~QDeclarativePropertyValueInterceptor(void)
?getStaticMetaObject@QDeclarativePropertyMap@@SAABUQMetaObject@@XZ @ 239 NONAME ; struct QMetaObject const & QDeclarativePropertyMap::getStaticMetaObject(void)
- ??1QDeclarativeScaleGrid@@UAE@XZ @ 240 NONAME ; QDeclarativeScaleGrid::~QDeclarativeScaleGrid(void)
- ?idString@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 241 NONAME ; class QString QDeclarativeDebugObjectReference::idString(void) const
- ?customTypeData@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 242 NONAME ; class QByteArray QDeclarativeDomObject::customTypeData(void) const
+ ??1QDeclarativeScaleGrid@@UAE@XZ @ 240 NONAME ABSENT ; QDeclarativeScaleGrid::~QDeclarativeScaleGrid(void)
+ ?idString@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 241 NONAME ABSENT ; class QString QDeclarativeDebugObjectReference::idString(void) const
+ ?customTypeData@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 242 NONAME ABSENT ; class QByteArray QDeclarativeDomObject::customTypeData(void) const
?stop@QDeclarativeTransition@@QAEXXZ @ 243 NONAME ; void QDeclarativeTransition::stop(void)
?data@QDeclarativeListModel@@UBE?AV?$QHash@HVQVariant@@@@HABV?$QList@H@@@Z @ 244 NONAME ABSENT ; class QHash<int, class QVariant> QDeclarativeListModel::data(int, class QList<int> const &) const
- ?verticalCenterOffset@QDeclarativeAnchors@@QBEMXZ @ 245 NONAME ; float QDeclarativeAnchors::verticalCenterOffset(void) const
- ?metaObject@QDeclarativeText@@UBEPBUQMetaObject@@XZ @ 246 NONAME ; struct QMetaObject const * QDeclarativeText::metaObject(void) const
+ ?verticalCenterOffset@QDeclarativeAnchors@@QBEMXZ @ 245 NONAME ABSENT ; float QDeclarativeAnchors::verticalCenterOffset(void) const
+ ?metaObject@QDeclarativeText@@UBEPBUQMetaObject@@XZ @ 246 NONAME ABSENT ; struct QMetaObject const * QDeclarativeText::metaObject(void) const
??0QDeclarativeComponent@@QAE@PAVQDeclarativeEngine@@PAVQObject@@@Z @ 247 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QObject *)
- ?createProperty@QDeclarativeOpenMetaObjectType@@QAEHABVQByteArray@@@Z @ 248 NONAME ; int QDeclarativeOpenMetaObjectType::createProperty(class QByteArray const &)
+ ?createProperty@QDeclarativeOpenMetaObjectType@@QAEHABVQByteArray@@@Z @ 248 NONAME ABSENT ; int QDeclarativeOpenMetaObjectType::createProperty(class QByteArray const &)
??0QDeclarativeContext@@QAE@PAVQDeclarativeEngine@@PAVQObject@@@Z @ 249 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeEngine *, class QObject *)
??6QDeclarativeInfo@@QAEAAV0@M@Z @ 250 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(float)
- ??4QDeclarativeDomValueLiteral@@QAEAAV0@ABV0@@Z @ 251 NONAME ; class QDeclarativeDomValueLiteral & QDeclarativeDomValueLiteral::operator=(class QDeclarativeDomValueLiteral const &)
+ ??4QDeclarativeDomValueLiteral@@QAEAAV0@ABV0@@Z @ 251 NONAME ABSENT ; class QDeclarativeDomValueLiteral & QDeclarativeDomValueLiteral::operator=(class QDeclarativeDomValueLiteral const &)
?setScript@QDeclarativeScriptString@@QAEXABVQString@@@Z @ 252 NONAME ; void QDeclarativeScriptString::setScript(class QString const &)
?requestImage@QDeclarativeImageProvider@@UAE?AVQImage@@ABVQString@@PAVQSize@@ABV4@@Z @ 253 NONAME ; class QImage QDeclarativeImageProvider::requestImage(class QString const &, class QSize *, class QSize const &)
- ?qt_metacast@QPacketProtocol@@UAEPAXPBD@Z @ 254 NONAME ; void * QPacketProtocol::qt_metacast(char const *)
- ?addMetaObject@QMetaObjectBuilder@@QAEXPBUQMetaObject@@V?$QFlags@W4AddMember@QMetaObjectBuilder@@@@@Z @ 255 NONAME ; void QMetaObjectBuilder::addMetaObject(struct QMetaObject const *, class QFlags<enum QMetaObjectBuilder::AddMember>)
- ?trUtf8@QDeclarativeRectangle@@SA?AVQString@@PBD0H@Z @ 256 NONAME ; class QString QDeclarativeRectangle::trUtf8(char const *, char const *, int)
- ?qt_metacast@QDeclarativeText@@UAEPAXPBD@Z @ 257 NONAME ; void * QDeclarativeText::qt_metacast(char const *)
+ ?qt_metacast@QPacketProtocol@@UAEPAXPBD@Z @ 254 NONAME ABSENT ; void * QPacketProtocol::qt_metacast(char const *)
+ ?addMetaObject@QMetaObjectBuilder@@QAEXPBUQMetaObject@@V?$QFlags@W4AddMember@QMetaObjectBuilder@@@@@Z @ 255 NONAME ABSENT ; void QMetaObjectBuilder::addMetaObject(struct QMetaObject const *, class QFlags<enum QMetaObjectBuilder::AddMember>)
+ ?trUtf8@QDeclarativeRectangle@@SA?AVQString@@PBD0H@Z @ 256 NONAME ABSENT ; class QString QDeclarativeRectangle::trUtf8(char const *, char const *, int)
+ ?qt_metacast@QDeclarativeText@@UAEPAXPBD@Z @ 257 NONAME ABSENT ; void * QDeclarativeText::qt_metacast(char const *)
?anchors@QDeclarativeItemPrivate@@QAEPAVQDeclarativeAnchors@@XZ @ 258 NONAME ; class QDeclarativeAnchors * QDeclarativeItemPrivate::anchors(void)
- ??0QListModelInterface@@IAE@AAVQObjectPrivate@@PAVQObject@@@Z @ 259 NONAME ; QListModelInterface::QListModelInterface(class QObjectPrivate &, class QObject *)
- ?valueTypeName@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 260 NONAME ; class QString QDeclarativeDebugPropertyReference::valueTypeName(void) const
- ?setStyleColor@QDeclarativeText@@QAEXABVQColor@@@Z @ 261 NONAME ; void QDeclarativeText::setStyleColor(class QColor const &)
- ?create@QDeclarativeType@@QBEPAVQObject@@XZ @ 262 NONAME ; class QObject * QDeclarativeType::create(void) const
- ?metaObject@QDeclarativeDebugExpressionQuery@@UBEPBUQMetaObject@@XZ @ 263 NONAME ; struct QMetaObject const * QDeclarativeDebugExpressionQuery::metaObject(void) const
+ ??0QListModelInterface@@IAE@AAVQObjectPrivate@@PAVQObject@@@Z @ 259 NONAME ABSENT ; QListModelInterface::QListModelInterface(class QObjectPrivate &, class QObject *)
+ ?valueTypeName@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 260 NONAME ABSENT ; class QString QDeclarativeDebugPropertyReference::valueTypeName(void) const
+ ?setStyleColor@QDeclarativeText@@QAEXABVQColor@@@Z @ 261 NONAME ABSENT ; void QDeclarativeText::setStyleColor(class QColor const &)
+ ?create@QDeclarativeType@@QBEPAVQObject@@XZ @ 262 NONAME ABSENT ; class QObject * QDeclarativeType::create(void) const
+ ?metaObject@QDeclarativeDebugExpressionQuery@@UBEPBUQMetaObject@@XZ @ 263 NONAME ABSENT ; struct QMetaObject const * QDeclarativeDebugExpressionQuery::metaObject(void) const
?engine@QDeclarativeView@@QBEPAVQDeclarativeEngine@@XZ @ 264 NONAME ; class QDeclarativeEngine * QDeclarativeView::engine(void) const
- ?readyRead@QPacketProtocol@@IAEXXZ @ 265 NONAME ; void QPacketProtocol::readyRead(void)
- ?qt_metacall@QDeclarativeValueType@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 266 NONAME ; int QDeclarativeValueType::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?propertyType@QDeclarativePropertyPrivate@@QBEHXZ @ 267 NONAME ; int QDeclarativePropertyPrivate::propertyType(void) const
+ ?readyRead@QPacketProtocol@@IAEXXZ @ 265 NONAME ABSENT ; void QPacketProtocol::readyRead(void)
+ ?qt_metacall@QDeclarativeValueType@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 266 NONAME ABSENT ; int QDeclarativeValueType::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?propertyType@QDeclarativePropertyPrivate@@QBEHXZ @ 267 NONAME ABSENT ; int QDeclarativePropertyPrivate::propertyType(void) const
?inputMethodQuery@QDeclarativeItem@@MBE?AVQVariant@@W4InputMethodQuery@Qt@@@Z @ 268 NONAME ; class QVariant QDeclarativeItem::inputMethodQuery(enum Qt::InputMethodQuery) const
?sizeHint@QDeclarativeView@@UBE?AVQSize@@XZ @ 269 NONAME ; class QSize QDeclarativeView::sizeHint(void) const
?flags@QDeclarativeCustomParser@@QBE?AV?$QFlags@W4Flag@QDeclarativeCustomParser@@@@XZ @ 270 NONAME ; class QFlags<enum QDeclarativeCustomParser::Flag> QDeclarativeCustomParser::flags(void) const
- ?staticMetaObject@QDeclarativeDebugObjectExpressionWatch@@2UQMetaObject@@B @ 271 NONAME ; struct QMetaObject const QDeclarativeDebugObjectExpressionWatch::staticMetaObject
- ??0QDeclarativeDebugPropertyReference@@QAE@ABV0@@Z @ 272 NONAME ; QDeclarativeDebugPropertyReference::QDeclarativeDebugPropertyReference(class QDeclarativeDebugPropertyReference const &)
+ ?staticMetaObject@QDeclarativeDebugObjectExpressionWatch@@2UQMetaObject@@B @ 271 NONAME ABSENT ; struct QMetaObject const QDeclarativeDebugObjectExpressionWatch::staticMetaObject
+ ??0QDeclarativeDebugPropertyReference@@QAE@ABV0@@Z @ 272 NONAME ABSENT ; QDeclarativeDebugPropertyReference::QDeclarativeDebugPropertyReference(class QDeclarativeDebugPropertyReference const &)
??_EQDeclarativeCustomParser@@UAE@I@Z @ 273 NONAME ; QDeclarativeCustomParser::~QDeclarativeCustomParser(unsigned int)
??6QDeclarativeInfo@@QAEAAV0@ABVQStringRef@@@Z @ 274 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QStringRef const &)
- ?values@QDeclarativeDomList@@QBE?AV?$QList@VQDeclarativeDomValue@@@@XZ @ 275 NONAME ; class QList<class QDeclarativeDomValue> QDeclarativeDomList::values(void) const
+ ?values@QDeclarativeDomList@@QBE?AV?$QList@VQDeclarativeDomValue@@@@XZ @ 275 NONAME ABSENT ; class QList<class QDeclarativeDomValue> QDeclarativeDomList::values(void) const
?errorString@QDeclarativeComponent@@QBE?AVQString@@XZ @ 276 NONAME ; class QString QDeclarativeComponent::errorString(void) const
- ?metaObject@QDeclarativeEngineDebug@@UBEPBUQMetaObject@@XZ @ 277 NONAME ; struct QMetaObject const * QDeclarativeEngineDebug::metaObject(void) const
- ??1QDeclarativeDomValueValueInterceptor@@QAE@XZ @ 278 NONAME ; QDeclarativeDomValueValueInterceptor::~QDeclarativeDomValueValueInterceptor(void)
- ?flatten@QDeclarativeListModel@@AAE_NXZ @ 279 NONAME ; bool QDeclarativeListModel::flatten(void)
- ?propertyCount@QMetaObjectBuilder@@QBEHXZ @ 280 NONAME ; int QMetaObjectBuilder::propertyCount(void) const
- ?method@QMetaObjectBuilder@@QBE?AVQMetaMethodBuilder@@H@Z @ 281 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::method(int) const
- ?textFormat@QDeclarativeText@@QBE?AW4TextFormat@1@XZ @ 282 NONAME ; enum QDeclarativeText::TextFormat QDeclarativeText::textFormat(void) const
- ?getStaticMetaObject@QDeclarativeDebugObjectExpressionWatch@@SAABUQMetaObject@@XZ @ 283 NONAME ; struct QMetaObject const & QDeclarativeDebugObjectExpressionWatch::getStaticMetaObject(void)
- ?write@QDeclarativeBehavior@@UAEXABVQVariant@@@Z @ 284 NONAME ; void QDeclarativeBehavior::write(class QVariant const &)
+ ?metaObject@QDeclarativeEngineDebug@@UBEPBUQMetaObject@@XZ @ 277 NONAME ABSENT ; struct QMetaObject const * QDeclarativeEngineDebug::metaObject(void) const
+ ??1QDeclarativeDomValueValueInterceptor@@QAE@XZ @ 278 NONAME ABSENT ; QDeclarativeDomValueValueInterceptor::~QDeclarativeDomValueValueInterceptor(void)
+ ?flatten@QDeclarativeListModel@@AAE_NXZ @ 279 NONAME ABSENT ; bool QDeclarativeListModel::flatten(void)
+ ?propertyCount@QMetaObjectBuilder@@QBEHXZ @ 280 NONAME ABSENT ; int QMetaObjectBuilder::propertyCount(void) const
+ ?method@QMetaObjectBuilder@@QBE?AVQMetaMethodBuilder@@H@Z @ 281 NONAME ABSENT ; class QMetaMethodBuilder QMetaObjectBuilder::method(int) const
+ ?textFormat@QDeclarativeText@@QBE?AW4TextFormat@1@XZ @ 282 NONAME ABSENT ; enum QDeclarativeText::TextFormat QDeclarativeText::textFormat(void) const
+ ?getStaticMetaObject@QDeclarativeDebugObjectExpressionWatch@@SAABUQMetaObject@@XZ @ 283 NONAME ABSENT ; struct QMetaObject const & QDeclarativeDebugObjectExpressionWatch::getStaticMetaObject(void)
+ ?write@QDeclarativeBehavior@@UAEXABVQVariant@@@Z @ 284 NONAME ABSENT ; void QDeclarativeBehavior::write(class QVariant const &)
?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@@Z @ 285 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &, class QSize const &)
- ?resetTop@QDeclarativeAnchors@@QAEXXZ @ 286 NONAME ; void QDeclarativeAnchors::resetTop(void)
- ?queryId@QDeclarativeDebugWatch@@QBEHXZ @ 287 NONAME ; int QDeclarativeDebugWatch::queryId(void) const
+ ?resetTop@QDeclarativeAnchors@@QAEXXZ @ 286 NONAME ABSENT ; void QDeclarativeAnchors::resetTop(void)
+ ?queryId@QDeclarativeDebugWatch@@QBEHXZ @ 287 NONAME ABSENT ; int QDeclarativeDebugWatch::queryId(void) const
?trUtf8@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0H@Z @ 288 NONAME ; class QString QDeclarativeExtensionPlugin::trUtf8(char const *, char const *, int)
?staticMetaObject@QDeclarativeComponent@@2UQMetaObject@@B @ 289 NONAME ; struct QMetaObject const QDeclarativeComponent::staticMetaObject
?setStateGroup@QDeclarativeState@@QAEXPAVQDeclarativeStateGroup@@@Z @ 290 NONAME ; void QDeclarativeState::setStateGroup(class QDeclarativeStateGroup *)
- ?access@QMetaMethodBuilder@@QBE?AW4Access@QMetaMethod@@XZ @ 291 NONAME ; enum QMetaMethod::Access QMetaMethodBuilder::access(void) const
- ?tr@QDeclarativeDebugQuery@@SA?AVQString@@PBD0@Z @ 292 NONAME ; class QString QDeclarativeDebugQuery::tr(char const *, char const *)
- ?attachedPropertiesType@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 293 NONAME ; struct QMetaObject const * QDeclarativeType::attachedPropertiesType(void) const
+ ?access@QMetaMethodBuilder@@QBE?AW4Access@QMetaMethod@@XZ @ 291 NONAME ABSENT ; enum QMetaMethod::Access QMetaMethodBuilder::access(void) const
+ ?tr@QDeclarativeDebugQuery@@SA?AVQString@@PBD0@Z @ 292 NONAME ABSENT ; class QString QDeclarativeDebugQuery::tr(char const *, char const *)
+ ?attachedPropertiesType@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 293 NONAME ABSENT ; struct QMetaObject const * QDeclarativeType::attachedPropertiesType(void) const
?setName@QDeclarativeState@@QAEXABVQString@@@Z @ 294 NONAME ; void QDeclarativeState::setName(class QString const &)
?setReversed@QDeclarativeTransition@@QAEX_N@Z @ 295 NONAME ; void QDeclarativeTransition::setReversed(bool)
- ?idForObject@QDeclarativeDebugService@@SAHPAVQObject@@@Z @ 296 NONAME ; int QDeclarativeDebugService::idForObject(class QObject *)
- ?qt_metacall@QDeclarativeDebugWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 297 NONAME ; int QDeclarativeDebugWatch::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?idForObject@QDeclarativeDebugService@@SAHPAVQObject@@@Z @ 296 NONAME ABSENT ; int QDeclarativeDebugService::idForObject(class QObject *)
+ ?qt_metacall@QDeclarativeDebugWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 297 NONAME ABSENT ; int QDeclarativeDebugWatch::qt_metacall(enum QMetaObject::Call, int, void * *)
?fromState@QDeclarativeTransition@@QBE?AVQString@@XZ @ 298 NONAME ; class QString QDeclarativeTransition::fromState(void) const
??1QDeclarativeExpression@@UAE@XZ @ 299 NONAME ; QDeclarativeExpression::~QDeclarativeExpression(void)
- ?binding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@ABVQDeclarativeProperty@@@Z @ 300 NONAME ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::binding(class QDeclarativeProperty const &)
- ?removeMethod@QMetaObjectBuilder@@QAEXH@Z @ 301 NONAME ; void QMetaObjectBuilder::removeMethod(int)
+ ?binding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@ABVQDeclarativeProperty@@@Z @ 300 NONAME ABSENT ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::binding(class QDeclarativeProperty const &)
+ ?removeMethod@QMetaObjectBuilder@@QAEXH@Z @ 301 NONAME ABSENT ; void QMetaObjectBuilder::removeMethod(int)
?operationAt@QDeclarativeState@@QBEPAVQDeclarativeStateOperation@@H@Z @ 302 NONAME ; class QDeclarativeStateOperation * QDeclarativeState::operationAt(int) const
- ?methodCount@QMetaObjectBuilder@@QBEHXZ @ 303 NONAME ; int QMetaObjectBuilder::methodCount(void) const
- ?font@QDeclarativeText@@QBE?AVQFont@@XZ @ 304 NONAME ; class QFont QDeclarativeText::font(void) const
+ ?methodCount@QMetaObjectBuilder@@QBEHXZ @ 303 NONAME ABSENT ; int QMetaObjectBuilder::methodCount(void) const
+ ?font@QDeclarativeText@@QBE?AVQFont@@XZ @ 304 NONAME ABSENT ; class QFont QDeclarativeText::font(void) const
?completeCreate@QDeclarativeComponent@@UAEXXZ @ 305 NONAME ; void QDeclarativeComponent::completeCreate(void)
- ??0QDeclarativeDomProperty@@QAE@XZ @ 306 NONAME ; QDeclarativeDomProperty::QDeclarativeDomProperty(void)
- ?initDefault@QDeclarativePropertyPrivate@@QAEXPAVQObject@@@Z @ 307 NONAME ; void QDeclarativePropertyPrivate::initDefault(class QObject *)
- ?count@QDeclarativeListModel@@UBEHXZ @ 308 NONAME ; int QDeclarativeListModel::count(void) const
+ ??0QDeclarativeDomProperty@@QAE@XZ @ 306 NONAME ABSENT ; QDeclarativeDomProperty::QDeclarativeDomProperty(void)
+ ?initDefault@QDeclarativePropertyPrivate@@QAEXPAVQObject@@@Z @ 307 NONAME ABSENT ; void QDeclarativePropertyPrivate::initDefault(class QObject *)
+ ?count@QDeclarativeListModel@@UBEHXZ @ 308 NONAME ABSENT ; int QDeclarativeListModel::count(void) const
?setSmooth@QDeclarativeItem@@QAEX_N@Z @ 309 NONAME ; void QDeclarativeItem::setSmooth(bool)
- ?value@QDeclarativeDebugPropertyReference@@QBE?AVQVariant@@XZ @ 310 NONAME ; class QVariant QDeclarativeDebugPropertyReference::value(void) const
+ ?value@QDeclarativeDebugPropertyReference@@QBE?AVQVariant@@XZ @ 310 NONAME ABSENT ; class QVariant QDeclarativeDebugPropertyReference::value(void) const
?resources@QDeclarativeItemPrivate@@QAE?AV?$QDeclarativeListProperty@VQObject@@@@XZ @ 311 NONAME ; class QDeclarativeListProperty<class QObject> QDeclarativeItemPrivate::resources(void)
- ?clear@QPacketProtocol@@QAEXXZ @ 312 NONAME ; void QPacketProtocol::clear(void)
+ ?clear@QPacketProtocol@@QAEXXZ @ 312 NONAME ABSENT ; void QPacketProtocol::clear(void)
?setState@QDeclarativeItemPrivate@@QAEXABVQString@@@Z @ 313 NONAME ; void QDeclarativeItemPrivate::setState(class QString const &)
- ??4QDeclarativeDebugPropertyReference@@QAEAAV0@ABV0@@Z @ 314 NONAME ; class QDeclarativeDebugPropertyReference & QDeclarativeDebugPropertyReference::operator=(class QDeclarativeDebugPropertyReference const &)
+ ??4QDeclarativeDebugPropertyReference@@QAEAAV0@ABV0@@Z @ 314 NONAME ABSENT ; class QDeclarativeDebugPropertyReference & QDeclarativeDebugPropertyReference::operator=(class QDeclarativeDebugPropertyReference const &)
?metaObject@QDeclarativeView@@UBEPBUQMetaObject@@XZ @ 315 NONAME ; struct QMetaObject const * QDeclarativeView::metaObject(void) const
?listElementType@QDeclarativeListReference@@QBEPBUQMetaObject@@XZ @ 316 NONAME ; struct QMetaObject const * QDeclarativeListReference::listElementType(void) const
??0QDeclarativeProperty@@QAE@PAVQObject@@PAVQDeclarativeContext@@@Z @ 317 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QDeclarativeContext *)
- ?setTarget@QDeclarativeBehavior@@UAEXABVQDeclarativeProperty@@@Z @ 318 NONAME ; void QDeclarativeBehavior::setTarget(class QDeclarativeProperty const &)
- ?tr@QDeclarativeValueType@@SA?AVQString@@PBD0H@Z @ 319 NONAME ; class QString QDeclarativeValueType::tr(char const *, char const *, int)
- ?parent@QDeclarativeOpenMetaObject@@IBEPAUQAbstractDynamicMetaObject@@XZ @ 320 NONAME ; struct QAbstractDynamicMetaObject * QDeclarativeOpenMetaObject::parent(void) const
- ??0QDeclarativeDebugClient@@QAE@ABVQString@@PAVQDeclarativeDebugConnection@@@Z @ 321 NONAME ; QDeclarativeDebugClient::QDeclarativeDebugClient(class QString const &, class QDeclarativeDebugConnection *)
+ ?setTarget@QDeclarativeBehavior@@UAEXABVQDeclarativeProperty@@@Z @ 318 NONAME ABSENT ; void QDeclarativeBehavior::setTarget(class QDeclarativeProperty const &)
+ ?tr@QDeclarativeValueType@@SA?AVQString@@PBD0H@Z @ 319 NONAME ABSENT ; class QString QDeclarativeValueType::tr(char const *, char const *, int)
+ ?parent@QDeclarativeOpenMetaObject@@IBEPAUQAbstractDynamicMetaObject@@XZ @ 320 NONAME ABSENT ; struct QAbstractDynamicMetaObject * QDeclarativeOpenMetaObject::parent(void) const
+ ??0QDeclarativeDebugClient@@QAE@ABVQString@@PAVQDeclarativeDebugConnection@@@Z @ 321 NONAME ABSENT ; QDeclarativeDebugClient::QDeclarativeDebugClient(class QString const &, class QDeclarativeDebugConnection *)
?qt_metacall@QDeclarativeStateOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 322 NONAME ; int QDeclarativeStateOperation::qt_metacall(enum QMetaObject::Call, int, void * *)
?type@Variant@QDeclarativeParser@@QBE?AW4Type@12@XZ @ 323 NONAME ; enum QDeclarativeParser::Variant::Type QDeclarativeParser::Variant::type(void) const
??6QDeclarativeInfo@@QAEAAV0@_N@Z @ 324 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(bool)
- ?value@QDeclarativeDomProperty@@QBE?AVQDeclarativeDomValue@@XZ @ 325 NONAME ; class QDeclarativeDomValue QDeclarativeDomProperty::value(void) const
- ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectExpressionWatch@@ABVQDeclarativeDebugObjectReference@@ABVQString@@PAVQObject@@@Z @ 326 NONAME ; class QDeclarativeDebugObjectExpressionWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugObjectReference const &, class QString const &, class QObject *)
- ??_EQDeclarativeDebugConnection@@UAE@I@Z @ 327 NONAME ; QDeclarativeDebugConnection::~QDeclarativeDebugConnection(unsigned int)
- ?qt_metacall@QDeclarativeDebugConnection@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 328 NONAME ; int QDeclarativeDebugConnection::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?tr@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0H@Z @ 329 NONAME ; class QString QDeclarativeDebugPropertyWatch::tr(char const *, char const *, int)
+ ?value@QDeclarativeDomProperty@@QBE?AVQDeclarativeDomValue@@XZ @ 325 NONAME ABSENT ; class QDeclarativeDomValue QDeclarativeDomProperty::value(void) const
+ ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectExpressionWatch@@ABVQDeclarativeDebugObjectReference@@ABVQString@@PAVQObject@@@Z @ 326 NONAME ABSENT ; class QDeclarativeDebugObjectExpressionWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugObjectReference const &, class QString const &, class QObject *)
+ ??_EQDeclarativeDebugConnection@@UAE@I@Z @ 327 NONAME ABSENT ; QDeclarativeDebugConnection::~QDeclarativeDebugConnection(unsigned int)
+ ?qt_metacall@QDeclarativeDebugConnection@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 328 NONAME ABSENT ; int QDeclarativeDebugConnection::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?tr@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0H@Z @ 329 NONAME ABSENT ; class QString QDeclarativeDebugPropertyWatch::tr(char const *, char const *, int)
?errors@QDeclarativeComponent@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 330 NONAME ; class QList<class QDeclarativeError> QDeclarativeComponent::errors(void) const
??0QDeclarativeCustomParserNode@@QAE@ABV0@@Z @ 331 NONAME ; QDeclarativeCustomParserNode::QDeclarativeCustomParserNode(class QDeclarativeCustomParserNode const &)
??1QDeclarativeImageProvider@@UAE@XZ @ 332 NONAME ; QDeclarativeImageProvider::~QDeclarativeImageProvider(void)
- ?sync@QDeclarativeListModel@@QAEXXZ @ 333 NONAME ; void QDeclarativeListModel::sync(void)
- ?objectForId@QDeclarativeDebugService@@SAPAVQObject@@H@Z @ 334 NONAME ; class QObject * QDeclarativeDebugService::objectForId(int)
+ ?sync@QDeclarativeListModel@@QAEXXZ @ 333 NONAME ABSENT ; void QDeclarativeListModel::sync(void)
+ ?objectForId@QDeclarativeDebugService@@SAPAVQObject@@H@Z @ 334 NONAME ABSENT ; class QObject * QDeclarativeDebugService::objectForId(int)
?hasFocus@QDeclarativeItem@@QBE_NXZ @ 335 NONAME ; bool QDeclarativeItem::hasFocus(void) const
??1QDeclarativeExtensionPlugin@@UAE@XZ @ 336 NONAME ; QDeclarativeExtensionPlugin::~QDeclarativeExtensionPlugin(void)
- ?qt_metacall@QDeclarativeBehavior@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 337 NONAME ; int QDeclarativeBehavior::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?d_func@QDeclarativeBehavior@@ABEPBVQDeclarativeBehaviorPrivate@@XZ @ 338 NONAME ; class QDeclarativeBehaviorPrivate const * QDeclarativeBehavior::d_func(void) const
- ?wrapModeChanged@QDeclarativeText@@IAEXXZ @ 339 NONAME ; void QDeclarativeText::wrapModeChanged(void)
- ?elideModeChanged@QDeclarativeText@@IAEXW4TextElideMode@1@@Z @ 340 NONAME ; void QDeclarativeText::elideModeChanged(enum QDeclarativeText::TextElideMode)
+ ?qt_metacall@QDeclarativeBehavior@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 337 NONAME ABSENT ; int QDeclarativeBehavior::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?d_func@QDeclarativeBehavior@@ABEPBVQDeclarativeBehaviorPrivate@@XZ @ 338 NONAME ABSENT ; class QDeclarativeBehaviorPrivate const * QDeclarativeBehavior::d_func(void) const
+ ?wrapModeChanged@QDeclarativeText@@IAEXXZ @ 339 NONAME ABSENT ; void QDeclarativeText::wrapModeChanged(void)
+ ?elideModeChanged@QDeclarativeText@@IAEXW4TextElideMode@1@@Z @ 340 NONAME ABSENT ; void QDeclarativeText::elideModeChanged(enum QDeclarativeText::TextElideMode)
??1QDeclarativeExtensionInterface@@UAE@XZ @ 341 NONAME ; QDeclarativeExtensionInterface::~QDeclarativeExtensionInterface(void)
- ?addEnumerator@QMetaObjectBuilder@@QAE?AVQMetaEnumBuilder@@ABVQMetaEnum@@@Z @ 342 NONAME ; class QMetaEnumBuilder QMetaObjectBuilder::addEnumerator(class QMetaEnum const &)
- ?interfaceIId@QDeclarativeType@@QBEPBDXZ @ 343 NONAME ; char const * QDeclarativeType::interfaceIId(void) const
- ?resetHorizontalCenter@QDeclarativeAnchors@@QAEXXZ @ 344 NONAME ; void QDeclarativeAnchors::resetHorizontalCenter(void)
+ ?addEnumerator@QMetaObjectBuilder@@QAE?AVQMetaEnumBuilder@@ABVQMetaEnum@@@Z @ 342 NONAME ABSENT ; class QMetaEnumBuilder QMetaObjectBuilder::addEnumerator(class QMetaEnum const &)
+ ?interfaceIId@QDeclarativeType@@QBEPBDXZ @ 343 NONAME ABSENT ; char const * QDeclarativeType::interfaceIId(void) const
+ ?resetHorizontalCenter@QDeclarativeAnchors@@QAEXXZ @ 344 NONAME ABSENT ; void QDeclarativeAnchors::resetHorizontalCenter(void)
?outputWarningsToStandardError@QDeclarativeEngine@@QBE_NXZ @ 345 NONAME ; bool QDeclarativeEngine::outputWarningsToStandardError(void) const
?height@QDeclarativePixmap@@QBEHXZ @ 346 NONAME ; int QDeclarativePixmap::height(void) const
- ?getStaticMetaObject@QDeclarativeBehavior@@SAABUQMetaObject@@XZ @ 347 NONAME ; struct QMetaObject const & QDeclarativeBehavior::getStaticMetaObject(void)
- ??0QMetaEnumBuilder@@QAE@XZ @ 348 NONAME ; QMetaEnumBuilder::QMetaEnumBuilder(void)
- ?isValueType@QDeclarativeValueTypeFactory@@SA_NH@Z @ 349 NONAME ; bool QDeclarativeValueTypeFactory::isValueType(int)
- ?setWidth@QDeclarativePen@@QAEXH@Z @ 350 NONAME ; void QDeclarativePen::setWidth(int)
- ?isReadable@QMetaPropertyBuilder@@QBE_NXZ @ 351 NONAME ; bool QMetaPropertyBuilder::isReadable(void) const
+ ?getStaticMetaObject@QDeclarativeBehavior@@SAABUQMetaObject@@XZ @ 347 NONAME ABSENT ; struct QMetaObject const & QDeclarativeBehavior::getStaticMetaObject(void)
+ ??0QMetaEnumBuilder@@QAE@XZ @ 348 NONAME ABSENT ; QMetaEnumBuilder::QMetaEnumBuilder(void)
+ ?isValueType@QDeclarativeValueTypeFactory@@SA_NH@Z @ 349 NONAME ABSENT ; bool QDeclarativeValueTypeFactory::isValueType(int)
+ ?setWidth@QDeclarativePen@@QAEXH@Z @ 350 NONAME ABSENT ; void QDeclarativePen::setWidth(int)
+ ?isReadable@QMetaPropertyBuilder@@QBE_NXZ @ 351 NONAME ABSENT ; bool QMetaPropertyBuilder::isReadable(void) const
?metaObject@QDeclarativeExpression@@UBEPBUQMetaObject@@XZ @ 352 NONAME ; struct QMetaObject const * QDeclarativeExpression::metaObject(void) const
- ??0QDeclarativeDomValueLiteral@@QAE@ABV0@@Z @ 353 NONAME ; QDeclarativeDomValueLiteral::QDeclarativeDomValueLiteral(class QDeclarativeDomValueLiteral const &)
- ?getStaticMetaObject@QDeclarativeDebugQuery@@SAABUQMetaObject@@XZ @ 354 NONAME ; struct QMetaObject const & QDeclarativeDebugQuery::getStaticMetaObject(void)
- ??0QDeclarativeDomComponent@@QAE@XZ @ 355 NONAME ; QDeclarativeDomComponent::QDeclarativeDomComponent(void)
- ??1QDeclarativePropertyPrivate@@QAE@XZ @ 356 NONAME ; QDeclarativePropertyPrivate::~QDeclarativePropertyPrivate(void)
+ ??0QDeclarativeDomValueLiteral@@QAE@ABV0@@Z @ 353 NONAME ABSENT ; QDeclarativeDomValueLiteral::QDeclarativeDomValueLiteral(class QDeclarativeDomValueLiteral const &)
+ ?getStaticMetaObject@QDeclarativeDebugQuery@@SAABUQMetaObject@@XZ @ 354 NONAME ABSENT ; struct QMetaObject const & QDeclarativeDebugQuery::getStaticMetaObject(void)
+ ??0QDeclarativeDomComponent@@QAE@XZ @ 355 NONAME ABSENT ; QDeclarativeDomComponent::QDeclarativeDomComponent(void)
+ ??1QDeclarativePropertyPrivate@@QAE@XZ @ 356 NONAME ABSENT ; QDeclarativePropertyPrivate::~QDeclarativePropertyPrivate(void)
?setBaselineOffset@QDeclarativeItem@@QAEXM@Z @ 357 NONAME ; void QDeclarativeItem::setBaselineOffset(float)
- ??0QDeclarativeDebugPropertyReference@@QAE@XZ @ 358 NONAME ; QDeclarativeDebugPropertyReference::QDeclarativeDebugPropertyReference(void)
+ ??0QDeclarativeDebugPropertyReference@@QAE@XZ @ 358 NONAME ABSENT ; QDeclarativeDebugPropertyReference::QDeclarativeDebugPropertyReference(void)
?tr@QDeclarativeStateOperation@@SA?AVQString@@PBD0H@Z @ 359 NONAME ; class QString QDeclarativeStateOperation::tr(char const *, char const *, int)
?setState@QDeclarativeStateGroup@@QAEXABVQString@@@Z @ 360 NONAME ; void QDeclarativeStateGroup::setState(class QString const &)
??_EQDeclarativeImageProvider@@UAE@I@Z @ 361 NONAME ; QDeclarativeImageProvider::~QDeclarativeImageProvider(unsigned int)
?trUtf8@QDeclarativeComponent@@SA?AVQString@@PBD0@Z @ 362 NONAME ; class QString QDeclarativeComponent::trUtf8(char const *, char const *)
?isLoading@QDeclarativeComponent@@QBE_NXZ @ 363 NONAME ; bool QDeclarativeComponent::isLoading(void) const
- ?createFunction@QDeclarativeType@@QBEP6AXPAX@ZXZ @ 364 NONAME ; void (*)(void *) QDeclarativeType::createFunction(void) const
+ ?createFunction@QDeclarativeType@@QBEP6AXPAX@ZXZ @ 364 NONAME ABSENT ; void (*)(void *) QDeclarativeType::createFunction(void) const
?childrenRect@QDeclarativeItem@@QAE?AVQRectF@@XZ @ 365 NONAME ; class QRectF QDeclarativeItem::childrenRect(void)
- ?tr@QDeclarativeEngineDebug@@SA?AVQString@@PBD0@Z @ 366 NONAME ; class QString QDeclarativeEngineDebug::tr(char const *, char const *)
- ?objectTypeMajorVersion@QDeclarativeDomObject@@QBEHXZ @ 367 NONAME ; int QDeclarativeDomObject::objectTypeMajorVersion(void) const
+ ?tr@QDeclarativeEngineDebug@@SA?AVQString@@PBD0@Z @ 366 NONAME ABSENT ; class QString QDeclarativeEngineDebug::tr(char const *, char const *)
+ ?objectTypeMajorVersion@QDeclarativeDomObject@@QBEHXZ @ 367 NONAME ABSENT ; int QDeclarativeDomObject::objectTypeMajorVersion(void) const
??6QDeclarativeInfo@@QAEAAV0@D@Z @ 368 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(char)
- ??1QDeclarativeDomValueLiteral@@QAE@XZ @ 369 NONAME ; QDeclarativeDomValueLiteral::~QDeclarativeDomValueLiteral(void)
+ ??1QDeclarativeDomValueLiteral@@QAE@XZ @ 369 NONAME ABSENT ; QDeclarativeDomValueLiteral::~QDeclarativeDomValueLiteral(void)
?keepMouseGrab@QDeclarativeItem@@QBE_NXZ @ 370 NONAME ; bool QDeclarativeItem::keepMouseGrab(void) const
- ?tr@QDeclarativeEngineDebug@@SA?AVQString@@PBD0H@Z @ 371 NONAME ; class QString QDeclarativeEngineDebug::tr(char const *, char const *, int)
- ?getStaticMetaObject@QDeclarativeDebugConnection@@SAABUQMetaObject@@XZ @ 372 NONAME ; struct QMetaObject const & QDeclarativeDebugConnection::getStaticMetaObject(void)
- ?trUtf8@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0@Z @ 373 NONAME ; class QString QDeclarativeDebugRootContextQuery::trUtf8(char const *, char const *)
- ??AQDeclarativeOpenMetaObject@@QAEAAVQVariant@@H@Z @ 374 NONAME ; class QVariant & QDeclarativeOpenMetaObject::operator[](int)
+ ?tr@QDeclarativeEngineDebug@@SA?AVQString@@PBD0H@Z @ 371 NONAME ABSENT ; class QString QDeclarativeEngineDebug::tr(char const *, char const *, int)
+ ?getStaticMetaObject@QDeclarativeDebugConnection@@SAABUQMetaObject@@XZ @ 372 NONAME ABSENT ; struct QMetaObject const & QDeclarativeDebugConnection::getStaticMetaObject(void)
+ ?trUtf8@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0@Z @ 373 NONAME ABSENT ; class QString QDeclarativeDebugRootContextQuery::trUtf8(char const *, char const *)
+ ??AQDeclarativeOpenMetaObject@@QAEAAVQVariant@@H@Z @ 374 NONAME ABSENT ; class QVariant & QDeclarativeOpenMetaObject::operator[](int)
??0Variant@QDeclarativeParser@@QAE@XZ @ 375 NONAME ; QDeclarativeParser::Variant::Variant(void)
?status@QDeclarativeView@@QBE?AW4Status@1@XZ @ 376 NONAME ; enum QDeclarativeView::Status QDeclarativeView::status(void) const
- ??0QDeclarativeEngineDebug@@QAE@PAVQDeclarativeDebugConnection@@PAVQObject@@@Z @ 377 NONAME ; QDeclarativeEngineDebug::QDeclarativeEngineDebug(class QDeclarativeDebugConnection *, class QObject *)
+ ??0QDeclarativeEngineDebug@@QAE@PAVQDeclarativeDebugConnection@@PAVQObject@@@Z @ 377 NONAME ABSENT ; QDeclarativeEngineDebug::QDeclarativeEngineDebug(class QDeclarativeDebugConnection *, class QObject *)
?create@QDeclarativeComponent@@UAEPAVQObject@@PAVQDeclarativeContext@@@Z @ 378 NONAME ; class QObject * QDeclarativeComponent::create(class QDeclarativeContext *)
- ??_EQPacket@@UAE@I@Z @ 379 NONAME ; QPacket::~QPacket(unsigned int)
- ?trUtf8@QDeclarativeScaleGrid@@SA?AVQString@@PBD0H@Z @ 380 NONAME ; class QString QDeclarativeScaleGrid::trUtf8(char const *, char const *, int)
+ ??_EQPacket@@UAE@I@Z @ 379 NONAME ABSENT ; QPacket::~QPacket(unsigned int)
+ ?trUtf8@QDeclarativeScaleGrid@@SA?AVQString@@PBD0H@Z @ 380 NONAME ABSENT ; class QString QDeclarativeScaleGrid::trUtf8(char const *, char const *, int)
?isResettable@QDeclarativeProperty@@QBE_NXZ @ 381 NONAME ; bool QDeclarativeProperty::isResettable(void) const
?isList@QDeclarativeCustomParserProperty@@QBE_NXZ @ 382 NONAME ; bool QDeclarativeCustomParserProperty::isList(void) const
- ?resetVerticalCenter@QDeclarativeAnchors@@QAEXXZ @ 383 NONAME ; void QDeclarativeAnchors::resetVerticalCenter(void)
- ??0QDeclarativeValueType@@QAE@PAVQObject@@@Z @ 384 NONAME ; QDeclarativeValueType::QDeclarativeValueType(class QObject *)
- ?staticMetaObject@QDeclarativeDebugConnection@@2UQMetaObject@@B @ 385 NONAME ; struct QMetaObject const QDeclarativeDebugConnection::staticMetaObject
- ?isLiteral@QDeclarativeDomValue@@QBE_NXZ @ 386 NONAME ; bool QDeclarativeDomValue::isLiteral(void) const
+ ?resetVerticalCenter@QDeclarativeAnchors@@QAEXXZ @ 383 NONAME ABSENT ; void QDeclarativeAnchors::resetVerticalCenter(void)
+ ??0QDeclarativeValueType@@QAE@PAVQObject@@@Z @ 384 NONAME ABSENT ; QDeclarativeValueType::QDeclarativeValueType(class QObject *)
+ ?staticMetaObject@QDeclarativeDebugConnection@@2UQMetaObject@@B @ 385 NONAME ABSENT ; struct QMetaObject const QDeclarativeDebugConnection::staticMetaObject
+ ?isLiteral@QDeclarativeDomValue@@QBE_NXZ @ 386 NONAME ABSENT ; bool QDeclarativeDomValue::isLiteral(void) const
?qt_metacall@QDeclarativeItem@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 387 NONAME ; int QDeclarativeItem::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?qt_metacall@QListModelInterface@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 388 NONAME ; int QListModelInterface::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?move@QDeclarativeListModel@@QAEXHHH@Z @ 389 NONAME ; void QDeclarativeListModel::move(int, int, int)
- ?metaObject@QDeclarativeBehavior@@UBEPBUQMetaObject@@XZ @ 390 NONAME ; struct QMetaObject const * QDeclarativeBehavior::metaObject(void) const
+ ?qt_metacall@QListModelInterface@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 388 NONAME ABSENT ; int QListModelInterface::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?move@QDeclarativeListModel@@QAEXHHH@Z @ 389 NONAME ABSENT ; void QDeclarativeListModel::move(int, int, int)
+ ?metaObject@QDeclarativeBehavior@@UBEPBUQMetaObject@@XZ @ 390 NONAME ABSENT ; struct QMetaObject const * QDeclarativeBehavior::metaObject(void) const
?inputMethodPreHandler@QDeclarativeItem@@IAEXPAVQInputMethodEvent@@@Z @ 391 NONAME ; void QDeclarativeItem::inputMethodPreHandler(class QInputMethodEvent *)
- ?d_func@QDeclarativeText@@AAEPAVQDeclarativeTextPrivate@@XZ @ 392 NONAME ; class QDeclarativeTextPrivate * QDeclarativeText::d_func(void)
- ?signature@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 393 NONAME ; class QByteArray QMetaMethodBuilder::signature(void) const
+ ?d_func@QDeclarativeText@@AAEPAVQDeclarativeTextPrivate@@XZ @ 392 NONAME ABSENT ; class QDeclarativeTextPrivate * QDeclarativeText::d_func(void)
+ ?signature@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 393 NONAME ABSENT ; class QByteArray QMetaMethodBuilder::signature(void) const
??_EQDeclarativeParserStatus@@UAE@I@Z @ 394 NONAME ; QDeclarativeParserStatus::~QDeclarativeParserStatus(unsigned int)
- ?rightMargin@QDeclarativeAnchors@@QBEMXZ @ 395 NONAME ; float QDeclarativeAnchors::rightMargin(void) const
- ?itemsMoved@QListModelInterface@@IAEXHHH@Z @ 396 NONAME ; void QListModelInterface::itemsMoved(int, int, int)
- ?rectFFromString@QDeclarativeStringConverters@@YA?AVQRectF@@ABVQString@@PA_N@Z @ 397 NONAME ; class QRectF QDeclarativeStringConverters::rectFFromString(class QString const &, bool *)
+ ?rightMargin@QDeclarativeAnchors@@QBEMXZ @ 395 NONAME ABSENT ; float QDeclarativeAnchors::rightMargin(void) const
+ ?itemsMoved@QListModelInterface@@IAEXHHH@Z @ 396 NONAME ABSENT ; void QListModelInterface::itemsMoved(int, int, int)
+ ?rectFFromString@QDeclarativeStringConverters@@YA?AVQRectF@@ABVQString@@PA_N@Z @ 397 NONAME ABSENT ; class QRectF QDeclarativeStringConverters::rectFFromString(class QString const &, bool *)
?canAt@QDeclarativeListReference@@QBE_NXZ @ 398 NONAME ; bool QDeclarativeListReference::canAt(void) const
- ?children@QDeclarativeDebugObjectReference@@QBE?AV?$QList@VQDeclarativeDebugObjectReference@@@@XZ @ 399 NONAME ; class QList<class QDeclarativeDebugObjectReference> QDeclarativeDebugObjectReference::children(void) const
- ?tr@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0@Z @ 400 NONAME ; class QString QDeclarativeDebugEnginesQuery::tr(char const *, char const *)
- ?qt_metacall@QDeclarativeDebugExpressionQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 401 NONAME ; int QDeclarativeDebugExpressionQuery::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?children@QDeclarativeDebugObjectReference@@QBE?AV?$QList@VQDeclarativeDebugObjectReference@@@@XZ @ 399 NONAME ABSENT ; class QList<class QDeclarativeDebugObjectReference> QDeclarativeDebugObjectReference::children(void) const
+ ?tr@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0@Z @ 400 NONAME ABSENT ; class QString QDeclarativeDebugEnginesQuery::tr(char const *, char const *)
+ ?qt_metacall@QDeclarativeDebugExpressionQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 401 NONAME ABSENT ; int QDeclarativeDebugExpressionQuery::qt_metacall(enum QMetaObject::Call, int, void * *)
?getStaticMetaObject@QDeclarativeEngine@@SAABUQMetaObject@@XZ @ 402 NONAME ; struct QMetaObject const & QDeclarativeEngine::getStaticMetaObject(void)
?paintEvent@QDeclarativeView@@MAEXPAVQPaintEvent@@@Z @ 403 NONAME ; void QDeclarativeView::paintEvent(class QPaintEvent *)
- ?name@QDeclarativeDebugPropertyWatch@@QBE?AVQString@@XZ @ 404 NONAME ; class QString QDeclarativeDebugPropertyWatch::name(void) const
- ?bindingType@QDeclarativeAbstractBinding@@UBE?AW4Type@1@XZ @ 405 NONAME ; enum QDeclarativeAbstractBinding::Type QDeclarativeAbstractBinding::bindingType(void) const
- ?margins@QDeclarativeAnchors@@QBEMXZ @ 406 NONAME ; float QDeclarativeAnchors::margins(void) const
- ?length@QDeclarativeDomProperty@@QBEHXZ @ 407 NONAME ; int QDeclarativeDomProperty::length(void) const
- ??1QDeclarativeDomImport@@QAE@XZ @ 408 NONAME ; QDeclarativeDomImport::~QDeclarativeDomImport(void)
- ?mouseReleaseEvent@QDeclarativeText@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 409 NONAME ; void QDeclarativeText::mouseReleaseEvent(class QGraphicsSceneMouseEvent *)
- ?isCustomType@QDeclarativeDomObject@@QBE_NXZ @ 410 NONAME ; bool QDeclarativeDomObject::isCustomType(void) const
- ?radius@QDeclarativeRectangle@@QBEMXZ @ 411 NONAME ; float QDeclarativeRectangle::radius(void) const
+ ?name@QDeclarativeDebugPropertyWatch@@QBE?AVQString@@XZ @ 404 NONAME ABSENT ; class QString QDeclarativeDebugPropertyWatch::name(void) const
+ ?bindingType@QDeclarativeAbstractBinding@@UBE?AW4Type@1@XZ @ 405 NONAME ABSENT ; enum QDeclarativeAbstractBinding::Type QDeclarativeAbstractBinding::bindingType(void) const
+ ?margins@QDeclarativeAnchors@@QBEMXZ @ 406 NONAME ABSENT ; float QDeclarativeAnchors::margins(void) const
+ ?length@QDeclarativeDomProperty@@QBEHXZ @ 407 NONAME ABSENT ; int QDeclarativeDomProperty::length(void) const
+ ??1QDeclarativeDomImport@@QAE@XZ @ 408 NONAME ABSENT ; QDeclarativeDomImport::~QDeclarativeDomImport(void)
+ ?mouseReleaseEvent@QDeclarativeText@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 409 NONAME ABSENT ; void QDeclarativeText::mouseReleaseEvent(class QGraphicsSceneMouseEvent *)
+ ?isCustomType@QDeclarativeDomObject@@QBE_NXZ @ 410 NONAME ABSENT ; bool QDeclarativeDomObject::isCustomType(void) const
+ ?radius@QDeclarativeRectangle@@QBEMXZ @ 411 NONAME ABSENT ; float QDeclarativeRectangle::radius(void) const
??0QDeclarativeComponent@@AAE@PAVQDeclarativeEngine@@PAVQDeclarativeCompiledData@@HHPAVQObject@@@Z @ 412 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QDeclarativeCompiledData *, int, int, class QObject *)
?resources_count@QDeclarativeItemPrivate@@SAHPAV?$QDeclarativeListProperty@VQObject@@@@@Z @ 413 NONAME ; int QDeclarativeItemPrivate::resources_count(class QDeclarativeListProperty<class QObject> *)
?timerEvent@QDeclarativeView@@MAEXPAVQTimerEvent@@@Z @ 414 NONAME ; void QDeclarativeView::timerEvent(class QTimerEvent *)
?setToState@QDeclarativeTransition@@QAEXABVQString@@@Z @ 415 NONAME ; void QDeclarativeTransition::setToState(class QString const &)
?requestPixmap@QDeclarativeImageProvider@@UAE?AVQPixmap@@ABVQString@@PAVQSize@@ABV4@@Z @ 416 NONAME ; class QPixmap QDeclarativeImageProvider::requestPixmap(class QString const &, class QSize *, class QSize const &)
- ?methodType@QMetaMethodBuilder@@QBE?AW4MethodType@QMetaMethod@@XZ @ 417 NONAME ; enum QMetaMethod::MethodType QMetaMethodBuilder::methodType(void) const
+ ?methodType@QMetaMethodBuilder@@QBE?AW4MethodType@QMetaMethod@@XZ @ 417 NONAME ABSENT ; enum QMetaMethod::MethodType QMetaMethodBuilder::methodType(void) const
?getStaticMetaObject@QDeclarativeView@@SAABUQMetaObject@@XZ @ 418 NONAME ; struct QMetaObject const & QDeclarativeView::getStaticMetaObject(void)
?metaObject@QDeclarativeStateOperation@@UBEPBUQMetaObject@@XZ @ 419 NONAME ; struct QMetaObject const * QDeclarativeStateOperation::metaObject(void) const
?keyReleasePreHandler@QDeclarativeItem@@IAEXPAVQKeyEvent@@@Z @ 420 NONAME ; void QDeclarativeItem::keyReleasePreHandler(class QKeyEvent *)
- ?append@QDeclarativeListModel@@QAEXABVQScriptValue@@@Z @ 421 NONAME ; void QDeclarativeListModel::append(class QScriptValue const &)
- ??1QDeclarativeDebugObjectReference@@QAE@XZ @ 422 NONAME ; QDeclarativeDebugObjectReference::~QDeclarativeDebugObjectReference(void)
- ?tr@QDeclarativeDebugClient@@SA?AVQString@@PBD0@Z @ 423 NONAME ; class QString QDeclarativeDebugClient::tr(char const *, char const *)
+ ?append@QDeclarativeListModel@@QAEXABVQScriptValue@@@Z @ 421 NONAME ABSENT ; void QDeclarativeListModel::append(class QScriptValue const &)
+ ??1QDeclarativeDebugObjectReference@@QAE@XZ @ 422 NONAME ABSENT ; QDeclarativeDebugObjectReference::~QDeclarativeDebugObjectReference(void)
+ ?tr@QDeclarativeDebugClient@@SA?AVQString@@PBD0@Z @ 423 NONAME ABSENT ; class QString QDeclarativeDebugClient::tr(char const *, char const *)
?resolvedUrl@QDeclarativeContext@@QAE?AVQUrl@@ABV2@@Z @ 424 NONAME ; class QUrl QDeclarativeContext::resolvedUrl(class QUrl const &)
?object@QDeclarativeListReference@@QBEPAVQObject@@XZ @ 425 NONAME ; class QObject * QDeclarativeListReference::object(void) const
- ?setEnabled@QDeclarativeBehavior@@QAEX_N@Z @ 426 NONAME ; void QDeclarativeBehavior::setEnabled(bool)
+ ?setEnabled@QDeclarativeBehavior@@QAEX_N@Z @ 426 NONAME ABSENT ; void QDeclarativeBehavior::setEnabled(bool)
?line@QDeclarativeError@@QBEHXZ @ 427 NONAME ; int QDeclarativeError::line(void) const
?heightValid@QDeclarativeItem@@IBE_NXZ @ 428 NONAME ; bool QDeclarativeItem::heightValid(void) const
- ??1QDeclarativeOpenMetaObject@@UAE@XZ @ 429 NONAME ; QDeclarativeOpenMetaObject::~QDeclarativeOpenMetaObject(void)
- ??0QPacket@@QAE@XZ @ 430 NONAME ; QPacket::QPacket(void)
+ ??1QDeclarativeOpenMetaObject@@UAE@XZ @ 429 NONAME ABSENT ; QDeclarativeOpenMetaObject::~QDeclarativeOpenMetaObject(void)
+ ??0QPacket@@QAE@XZ @ 430 NONAME ABSENT ; QPacket::QPacket(void)
?trUtf8@QDeclarativePropertyMap@@SA?AVQString@@PBD0H@Z @ 431 NONAME ; class QString QDeclarativePropertyMap::trUtf8(char const *, char const *, int)
?trUtf8@QDeclarativeEngine@@SA?AVQString@@PBD0H@Z @ 432 NONAME ; class QString QDeclarativeEngine::trUtf8(char const *, char const *, int)
- ??0QDeclarativeDebugEngineReference@@QAE@XZ @ 433 NONAME ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(void)
+ ??0QDeclarativeDebugEngineReference@@QAE@XZ @ 433 NONAME ABSENT ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(void)
?qmlEngine@@YAPAVQDeclarativeEngine@@PBVQObject@@@Z @ 434 NONAME ; class QDeclarativeEngine * qmlEngine(class QObject const *)
?error@QDeclarativeExpression@@QBE?AVQDeclarativeError@@XZ @ 435 NONAME ; class QDeclarativeError QDeclarativeExpression::error(void) const
- ?tr@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0@Z @ 436 NONAME ; class QString QDeclarativeDebugExpressionQuery::tr(char const *, char const *)
- ?styleColorChanged@QDeclarativeText@@IAEXABVQColor@@@Z @ 437 NONAME ; void QDeclarativeText::styleColorChanged(class QColor const &)
- ?getStaticMetaObject@QDeclarativeDebugExpressionQuery@@SAABUQMetaObject@@XZ @ 438 NONAME ; struct QMetaObject const & QDeclarativeDebugExpressionQuery::getStaticMetaObject(void)
+ ?tr@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0@Z @ 436 NONAME ABSENT ; class QString QDeclarativeDebugExpressionQuery::tr(char const *, char const *)
+ ?styleColorChanged@QDeclarativeText@@IAEXABVQColor@@@Z @ 437 NONAME ABSENT ; void QDeclarativeText::styleColorChanged(class QColor const &)
+ ?getStaticMetaObject@QDeclarativeDebugExpressionQuery@@SAABUQMetaObject@@XZ @ 438 NONAME ABSENT ; struct QMetaObject const & QDeclarativeDebugExpressionQuery::getStaticMetaObject(void)
?trUtf8@QDeclarativeTransition@@SA?AVQString@@PBD0H@Z @ 439 NONAME ; class QString QDeclarativeTransition::trUtf8(char const *, char const *, int)
- ?writeValueProperty@QDeclarativePropertyPrivate@@QAE_NABVQVariant@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 440 NONAME ; bool QDeclarativePropertyPrivate::writeValueProperty(class QVariant const &, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
+ ?writeValueProperty@QDeclarativePropertyPrivate@@QAE_NABVQVariant@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 440 NONAME ABSENT ; bool QDeclarativePropertyPrivate::writeValueProperty(class QVariant const &, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
?errors@QDeclarativeCustomParser@@QBE?AV?$QList@VQDeclarativeError@@@@XZ @ 441 NONAME ; class QList<class QDeclarativeError> QDeclarativeCustomParser::errors(void) const
?statesProperty@QDeclarativeStateGroup@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeState@@@@XZ @ 442 NONAME ; class QDeclarativeListProperty<class QDeclarativeState> QDeclarativeStateGroup::statesProperty(void)
- ?roles@QDeclarativeListModel@@UBE?AV?$QList@H@@XZ @ 443 NONAME ; class QList<int> QDeclarativeListModel::roles(void) const
- ?name@QMetaEnumBuilder@@QBE?AVQByteArray@@XZ @ 444 NONAME ; class QByteArray QMetaEnumBuilder::name(void) const
- ??_EQDeclarativeDebugRootContextQuery@@UAE@I@Z @ 445 NONAME ; QDeclarativeDebugRootContextQuery::~QDeclarativeDebugRootContextQuery(unsigned int)
- ?setColor@QDeclarativeRectangle@@QAEXABVQColor@@@Z @ 446 NONAME ; void QDeclarativeRectangle::setColor(class QColor const &)
+ ?roles@QDeclarativeListModel@@UBE?AV?$QList@H@@XZ @ 443 NONAME ABSENT ; class QList<int> QDeclarativeListModel::roles(void) const
+ ?name@QMetaEnumBuilder@@QBE?AVQByteArray@@XZ @ 444 NONAME ABSENT ; class QByteArray QMetaEnumBuilder::name(void) const
+ ??_EQDeclarativeDebugRootContextQuery@@UAE@I@Z @ 445 NONAME ABSENT ; QDeclarativeDebugRootContextQuery::~QDeclarativeDebugRootContextQuery(unsigned int)
+ ?setColor@QDeclarativeRectangle@@QAEXABVQColor@@@Z @ 446 NONAME ABSENT ; void QDeclarativeRectangle::setColor(class QColor const &)
?clipChanged@QDeclarativeItem@@IAEX_N@Z @ 447 NONAME ; void QDeclarativeItem::clipChanged(bool)
??0QDeclarativeCustomParser@@QAE@V?$QFlags@W4Flag@QDeclarativeCustomParser@@@@@Z @ 448 NONAME ; QDeclarativeCustomParser::QDeclarativeCustomParser(class QFlags<enum QDeclarativeCustomParser::Flag>)
- ?valueChanged@QDeclarativeDebugWatch@@IAEXABVQByteArray@@ABVQVariant@@@Z @ 449 NONAME ; void QDeclarativeDebugWatch::valueChanged(class QByteArray const &, class QVariant const &)
+ ?valueChanged@QDeclarativeDebugWatch@@IAEXABVQByteArray@@ABVQVariant@@@Z @ 449 NONAME ABSENT ; void QDeclarativeDebugWatch::valueChanged(class QByteArray const &, class QVariant const &)
?activeFocusChanged@QDeclarativeItem@@IAEX_N@Z @ 450 NONAME ; void QDeclarativeItem::activeFocusChanged(bool)
?smoothChanged@QDeclarativeItem@@IAEX_N@Z @ 451 NONAME ; void QDeclarativeItem::smoothChanged(bool)
- ?colorChanged@QDeclarativeText@@IAEXABVQColor@@@Z @ 452 NONAME ; void QDeclarativeText::colorChanged(class QColor const &)
+ ?colorChanged@QDeclarativeText@@IAEXABVQColor@@@Z @ 452 NONAME ABSENT ; void QDeclarativeText::colorChanged(class QColor const &)
?continueExecute@QDeclarativeView@@AAEXXZ @ 453 NONAME ; void QDeclarativeView::continueExecute(void)
?initialSize@QDeclarativeView@@QBE?AVQSize@@XZ @ 454 NONAME ; class QSize QDeclarativeView::initialSize(void) const
- ?interfaceIId@QDeclarativeMetaType@@SAPBDH@Z @ 455 NONAME ; char const * QDeclarativeMetaType::interfaceIId(int)
- ?isValid@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 456 NONAME ; bool QDeclarativeDomDynamicProperty::isValid(void) const
- ?baselineChanged@QDeclarativeAnchors@@IAEXXZ @ 457 NONAME ; void QDeclarativeAnchors::baselineChanged(void)
+ ?interfaceIId@QDeclarativeMetaType@@SAPBDH@Z @ 455 NONAME ABSENT ; char const * QDeclarativeMetaType::interfaceIId(int)
+ ?isValid@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 456 NONAME ABSENT ; bool QDeclarativeDomDynamicProperty::isValid(void) const
+ ?baselineChanged@QDeclarativeAnchors@@IAEXXZ @ 457 NONAME ABSENT ; void QDeclarativeAnchors::baselineChanged(void)
?name@QDeclarativeState@@QBE?AVQString@@XZ @ 458 NONAME ; class QString QDeclarativeState::name(void) const
- ??4QDeclarativeDomObject@@QAEAAV0@ABV0@@Z @ 459 NONAME ; class QDeclarativeDomObject & QDeclarativeDomObject::operator=(class QDeclarativeDomObject const &)
+ ??4QDeclarativeDomObject@@QAEAAV0@ABV0@@Z @ 459 NONAME ABSENT ; class QDeclarativeDomObject & QDeclarativeDomObject::operator=(class QDeclarativeDomObject const &)
?qt_metacall@QDeclarativeContext@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 460 NONAME ; int QDeclarativeContext::qt_metacall(enum QMetaObject::Call, int, void * *)
- ??_EQDeclarativeValueType@@UAE@I@Z @ 461 NONAME ; QDeclarativeValueType::~QDeclarativeValueType(unsigned int)
+ ??_EQDeclarativeValueType@@UAE@I@Z @ 461 NONAME ABSENT ; QDeclarativeValueType::~QDeclarativeValueType(unsigned int)
?qt_metacall@QDeclarativeState@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 462 NONAME ; int QDeclarativeState::qt_metacall(enum QMetaObject::Call, int, void * *)
?isEnabled@QDeclarativeDebugService@@QBE_NXZ @ 463 NONAME ABSENT ; bool QDeclarativeDebugService::isEnabled(void) const
- ?stateChanged@QDeclarativeDebugWatch@@IAEXW4State@1@@Z @ 464 NONAME ; void QDeclarativeDebugWatch::stateChanged(enum QDeclarativeDebugWatch::State)
- ??0QMetaMethodBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 465 NONAME ; QMetaMethodBuilder::QMetaMethodBuilder(class QMetaObjectBuilder const *, int)
+ ?stateChanged@QDeclarativeDebugWatch@@IAEXW4State@1@@Z @ 464 NONAME ABSENT ; void QDeclarativeDebugWatch::stateChanged(enum QDeclarativeDebugWatch::State)
+ ??0QMetaMethodBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 465 NONAME ABSENT ; QMetaMethodBuilder::QMetaMethodBuilder(class QMetaObjectBuilder const *, int)
??4QDeclarativeListReference@@QAEAAV0@ABV0@@Z @ 466 NONAME ; class QDeclarativeListReference & QDeclarativeListReference::operator=(class QDeclarativeListReference const &)
- ?componentFinalized@QDeclarativeBehavior@@AAEXXZ @ 467 NONAME ; void QDeclarativeBehavior::componentFinalized(void)
- ?stateChanged@QDeclarativeDebugQuery@@IAEXW4State@1@@Z @ 468 NONAME ; void QDeclarativeDebugQuery::stateChanged(enum QDeclarativeDebugQuery::State)
- ?setVerticalCenter@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 469 NONAME ; void QDeclarativeAnchors::setVerticalCenter(class QDeclarativeAnchorLine const &)
+ ?componentFinalized@QDeclarativeBehavior@@AAEXXZ @ 467 NONAME ABSENT ; void QDeclarativeBehavior::componentFinalized(void)
+ ?stateChanged@QDeclarativeDebugQuery@@IAEXW4State@1@@Z @ 468 NONAME ABSENT ; void QDeclarativeDebugQuery::stateChanged(enum QDeclarativeDebugQuery::State)
+ ?setVerticalCenter@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 469 NONAME ABSENT ; void QDeclarativeAnchors::setVerticalCenter(class QDeclarativeAnchorLine const &)
?keyPressEvent@QDeclarativeItem@@MAEXPAVQKeyEvent@@@Z @ 470 NONAME ; void QDeclarativeItem::keyPressEvent(class QKeyEvent *)
- ?trUtf8@QDeclarativeValueType@@SA?AVQString@@PBD0@Z @ 471 NONAME ; class QString QDeclarativeValueType::trUtf8(char const *, char const *)
+ ?trUtf8@QDeclarativeValueType@@SA?AVQString@@PBD0@Z @ 471 NONAME ABSENT ; class QString QDeclarativeValueType::trUtf8(char const *, char const *)
?metaObject@QDeclarativeExtensionPlugin@@UBEPBUQMetaObject@@XZ @ 472 NONAME ; struct QMetaObject const * QDeclarativeExtensionPlugin::metaObject(void) const
- ?tr@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0H@Z @ 473 NONAME ; class QString QDeclarativeDebugObjectQuery::tr(char const *, char const *, int)
- ?setCenterIn@QDeclarativeAnchors@@QAEXPAVQGraphicsObject@@@Z @ 474 NONAME ; void QDeclarativeAnchors::setCenterIn(class QGraphicsObject *)
- ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@ABVQByteArray@@HH@Z @ 475 NONAME ; class QDeclarativeType * QDeclarativeMetaType::qmlType(class QByteArray const &, int, int)
- ??0QDeclarativeDebugObjectQuery@@AAE@PAVQObject@@@Z @ 476 NONAME ; QDeclarativeDebugObjectQuery::QDeclarativeDebugObjectQuery(class QObject *)
- ?isComponent@QDeclarativeDomObject@@QBE_NXZ @ 477 NONAME ; bool QDeclarativeDomObject::isComponent(void) const
+ ?tr@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0H@Z @ 473 NONAME ABSENT ; class QString QDeclarativeDebugObjectQuery::tr(char const *, char const *, int)
+ ?setCenterIn@QDeclarativeAnchors@@QAEXPAVQGraphicsObject@@@Z @ 474 NONAME ABSENT ; void QDeclarativeAnchors::setCenterIn(class QGraphicsObject *)
+ ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@ABVQByteArray@@HH@Z @ 475 NONAME ABSENT ; class QDeclarativeType * QDeclarativeMetaType::qmlType(class QByteArray const &, int, int)
+ ??0QDeclarativeDebugObjectQuery@@AAE@PAVQObject@@@Z @ 476 NONAME ABSENT ; QDeclarativeDebugObjectQuery::QDeclarativeDebugObjectQuery(class QObject *)
+ ?isComponent@QDeclarativeDomObject@@QBE_NXZ @ 477 NONAME ABSENT ; bool QDeclarativeDomObject::isComponent(void) const
?inputMethodEvent@QDeclarativeItem@@MAEXPAVQInputMethodEvent@@@Z @ 478 NONAME ; void QDeclarativeItem::inputMethodEvent(class QInputMethodEvent *)
- ?styleChanged@QDeclarativeText@@IAEXW4TextStyle@1@@Z @ 479 NONAME ; void QDeclarativeText::styleChanged(enum QDeclarativeText::TextStyle)
+ ?styleChanged@QDeclarativeText@@IAEXW4TextStyle@1@@Z @ 479 NONAME ABSENT ; void QDeclarativeText::styleChanged(enum QDeclarativeText::TextStyle)
?write@QDeclarativeProperty@@SA_NPAVQObject@@ABVQString@@ABVQVariant@@PAVQDeclarativeEngine@@@Z @ 480 NONAME ; bool QDeclarativeProperty::write(class QObject *, class QString const &, class QVariant const &, class QDeclarativeEngine *)
?pluginPathList@QDeclarativeEngine@@QBE?AVQStringList@@XZ @ 481 NONAME ; class QStringList QDeclarativeEngine::pluginPathList(void) const
?parentContext@QDeclarativeContext@@QBEPAV1@XZ @ 482 NONAME ; class QDeclarativeContext * QDeclarativeContext::parentContext(void) const
- ?leftMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 483 NONAME ; void QDeclarativeAnchors::leftMarginChanged(void)
- ?staticMetaObject@QDeclarativeDebugService@@2UQMetaObject@@B @ 484 NONAME ; struct QMetaObject const QDeclarativeDebugService::staticMetaObject
- ?topMargin@QDeclarativeAnchors@@QBEMXZ @ 485 NONAME ; float QDeclarativeAnchors::topMargin(void) const
- ??0QDeclarativeDebugExpressionQuery@@AAE@PAVQObject@@@Z @ 486 NONAME ; QDeclarativeDebugExpressionQuery::QDeclarativeDebugExpressionQuery(class QObject *)
- ??0QPacket@@IAE@ABVQByteArray@@@Z @ 487 NONAME ; QPacket::QPacket(class QByteArray const &)
+ ?leftMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 483 NONAME ABSENT ; void QDeclarativeAnchors::leftMarginChanged(void)
+ ?staticMetaObject@QDeclarativeDebugService@@2UQMetaObject@@B @ 484 NONAME ABSENT ; struct QMetaObject const QDeclarativeDebugService::staticMetaObject
+ ?topMargin@QDeclarativeAnchors@@QBEMXZ @ 485 NONAME ABSENT ; float QDeclarativeAnchors::topMargin(void) const
+ ??0QDeclarativeDebugExpressionQuery@@AAE@PAVQObject@@@Z @ 486 NONAME ABSENT ; QDeclarativeDebugExpressionQuery::QDeclarativeDebugExpressionQuery(class QObject *)
+ ??0QPacket@@IAE@ABVQByteArray@@@Z @ 487 NONAME ABSENT ; QPacket::QPacket(class QByteArray const &)
?implicitSize@QDeclarativePixmap@@QBEABVQSize@@XZ @ 488 NONAME ; class QSize const & QDeclarativePixmap::implicitSize(void) const
- ?setFlags@QMetaObjectBuilder@@QAEXV?$QFlags@W4MetaObjectFlag@QMetaObjectBuilder@@@@@Z @ 489 NONAME ; void QMetaObjectBuilder::setFlags(class QFlags<enum QMetaObjectBuilder::MetaObjectFlag>)
- ?horizontalCenterChanged@QDeclarativeAnchors@@IAEXXZ @ 490 NONAME ; void QDeclarativeAnchors::horizontalCenterChanged(void)
+ ?setFlags@QMetaObjectBuilder@@QAEXV?$QFlags@W4MetaObjectFlag@QMetaObjectBuilder@@@@@Z @ 489 NONAME ABSENT ; void QMetaObjectBuilder::setFlags(class QFlags<enum QMetaObjectBuilder::MetaObjectFlag>)
+ ?horizontalCenterChanged@QDeclarativeAnchors@@IAEXXZ @ 490 NONAME ABSENT ; void QDeclarativeAnchors::horizontalCenterChanged(void)
?right@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 491 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::right(void) const
- ?staticMetaObject@QDeclarativeDebugObjectQuery@@2UQMetaObject@@B @ 492 NONAME ; struct QMetaObject const QDeclarativeDebugObjectQuery::staticMetaObject
- ?propertyRead@QDeclarativeOpenMetaObject@@MAEXH@Z @ 493 NONAME ; void QDeclarativeOpenMetaObject::propertyRead(int)
+ ?staticMetaObject@QDeclarativeDebugObjectQuery@@2UQMetaObject@@B @ 492 NONAME ABSENT ; struct QMetaObject const QDeclarativeDebugObjectQuery::staticMetaObject
+ ?propertyRead@QDeclarativeOpenMetaObject@@MAEXH@Z @ 493 NONAME ABSENT ; void QDeclarativeOpenMetaObject::propertyRead(int)
?importPathList@QDeclarativeEngine@@QBE?AVQStringList@@XZ @ 494 NONAME ; class QStringList QDeclarativeEngine::importPathList(void) const
- ?border@QDeclarativeRectangle@@QAEPAVQDeclarativePen@@XZ @ 495 NONAME ; class QDeclarativePen * QDeclarativeRectangle::border(void)
+ ?border@QDeclarativeRectangle@@QAEPAVQDeclarativePen@@XZ @ 495 NONAME ABSENT ; class QDeclarativePen * QDeclarativeRectangle::border(void)
?baselineOffset@QDeclarativeItem@@QBEMXZ @ 496 NONAME ; float QDeclarativeItem::baselineOffset(void) const
- ?dateFromString@QDeclarativeStringConverters@@YA?AVQDate@@ABVQString@@PA_N@Z @ 497 NONAME ; class QDate QDeclarativeStringConverters::dateFromString(class QString const &, bool *)
- ?qt_metacast@QDeclarativeDebugObjectExpressionWatch@@UAEPAXPBD@Z @ 498 NONAME ; void * QDeclarativeDebugObjectExpressionWatch::qt_metacast(char const *)
- ??0QDeclarativeDomValue@@QAE@ABV0@@Z @ 499 NONAME ; QDeclarativeDomValue::QDeclarativeDomValue(class QDeclarativeDomValue const &)
- ??1QDeclarativeListModel@@UAE@XZ @ 500 NONAME ; QDeclarativeListModel::~QDeclarativeListModel(void)
+ ?dateFromString@QDeclarativeStringConverters@@YA?AVQDate@@ABVQString@@PA_N@Z @ 497 NONAME ABSENT ; class QDate QDeclarativeStringConverters::dateFromString(class QString const &, bool *)
+ ?qt_metacast@QDeclarativeDebugObjectExpressionWatch@@UAEPAXPBD@Z @ 498 NONAME ABSENT ; void * QDeclarativeDebugObjectExpressionWatch::qt_metacast(char const *)
+ ??0QDeclarativeDomValue@@QAE@ABV0@@Z @ 499 NONAME ABSENT ; QDeclarativeDomValue::QDeclarativeDomValue(class QDeclarativeDomValue const &)
+ ??1QDeclarativeListModel@@UAE@XZ @ 500 NONAME ABSENT ; QDeclarativeListModel::~QDeclarativeListModel(void)
?qmlAttachedPropertiesObject@@YAPAVQObject@@PAHPBV1@PBUQMetaObject@@_N@Z @ 501 NONAME ; class QObject * qmlAttachedPropertiesObject(int *, class QObject const *, struct QMetaObject const *, bool)
- ??_EQDeclarativeDebugClient@@UAE@I@Z @ 502 NONAME ; QDeclarativeDebugClient::~QDeclarativeDebugClient(unsigned int)
- ??4QDeclarativeDomComponent@@QAEAAV0@ABV0@@Z @ 503 NONAME ; class QDeclarativeDomComponent & QDeclarativeDomComponent::operator=(class QDeclarativeDomComponent const &)
- ?tr@QPacketProtocol@@SA?AVQString@@PBD0@Z @ 504 NONAME ; class QString QPacketProtocol::tr(char const *, char const *)
- ?setFont@QDeclarativeText@@QAEXABVQFont@@@Z @ 505 NONAME ; void QDeclarativeText::setFont(class QFont const &)
+ ??_EQDeclarativeDebugClient@@UAE@I@Z @ 502 NONAME ABSENT ; QDeclarativeDebugClient::~QDeclarativeDebugClient(unsigned int)
+ ??4QDeclarativeDomComponent@@QAEAAV0@ABV0@@Z @ 503 NONAME ABSENT ; class QDeclarativeDomComponent & QDeclarativeDomComponent::operator=(class QDeclarativeDomComponent const &)
+ ?tr@QPacketProtocol@@SA?AVQString@@PBD0@Z @ 504 NONAME ABSENT ; class QString QPacketProtocol::tr(char const *, char const *)
+ ?setFont@QDeclarativeText@@QAEXABVQFont@@@Z @ 505 NONAME ABSENT ; void QDeclarativeText::setFont(class QFont const &)
?fromChanged@QDeclarativeTransition@@IAEXXZ @ 506 NONAME ; void QDeclarativeTransition::fromChanged(void)
- ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQMetaMethod@@@Z @ 507 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QMetaMethod const &)
+ ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQMetaMethod@@@Z @ 507 NONAME ABSENT ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QMetaMethod const &)
?setHeight@QDeclarativeItemPrivate@@UAEXM@Z @ 508 NONAME ; void QDeclarativeItemPrivate::setHeight(float)
??0Variant@QDeclarativeParser@@QAE@ABV01@@Z @ 509 NONAME ; QDeclarativeParser::Variant::Variant(class QDeclarativeParser::Variant const &)
?getStaticMetaObject@QDeclarativeExtensionPlugin@@SAABUQMetaObject@@XZ @ 510 NONAME ; struct QMetaObject const & QDeclarativeExtensionPlugin::getStaticMetaObject(void)
- ??0QDeclarativeBinding@@QAE@PAXPAVQDeclarativeRefCount@@PAVQObject@@PAVQDeclarativeContextData@@ABVQString@@H2@Z @ 511 NONAME ; QDeclarativeBinding::QDeclarativeBinding(void *, class QDeclarativeRefCount *, class QObject *, class QDeclarativeContextData *, class QString const &, int, class QObject *)
- ?qt_metacast@QDeclarativeDebugClient@@UAEPAXPBD@Z @ 512 NONAME ; void * QDeclarativeDebugClient::qt_metacast(char const *)
- ?classInfoValue@QMetaObjectBuilder@@QBE?AVQByteArray@@H@Z @ 513 NONAME ; class QByteArray QMetaObjectBuilder::classInfoValue(int) const
- ?right@QDeclarativeScaleGrid@@QBEHXZ @ 514 NONAME ; int QDeclarativeScaleGrid::right(void) const
- ?setClassName@QMetaObjectBuilder@@QAEXABVQByteArray@@@Z @ 515 NONAME ; void QMetaObjectBuilder::setClassName(class QByteArray const &)
- ??1QDeclarativeAnchors@@UAE@XZ @ 516 NONAME ; QDeclarativeAnchors::~QDeclarativeAnchors(void)
- ?removeConstructor@QMetaObjectBuilder@@QAEXH@Z @ 517 NONAME ; void QMetaObjectBuilder::removeConstructor(int)
- ??4QDeclarativeDomValueValueInterceptor@@QAEAAV0@ABV0@@Z @ 518 NONAME ; class QDeclarativeDomValueValueInterceptor & QDeclarativeDomValueValueInterceptor::operator=(class QDeclarativeDomValueValueInterceptor const &)
+ ??0QDeclarativeBinding@@QAE@PAXPAVQDeclarativeRefCount@@PAVQObject@@PAVQDeclarativeContextData@@ABVQString@@H2@Z @ 511 NONAME ABSENT ; QDeclarativeBinding::QDeclarativeBinding(void *, class QDeclarativeRefCount *, class QObject *, class QDeclarativeContextData *, class QString const &, int, class QObject *)
+ ?qt_metacast@QDeclarativeDebugClient@@UAEPAXPBD@Z @ 512 NONAME ABSENT ; void * QDeclarativeDebugClient::qt_metacast(char const *)
+ ?classInfoValue@QMetaObjectBuilder@@QBE?AVQByteArray@@H@Z @ 513 NONAME ABSENT ; class QByteArray QMetaObjectBuilder::classInfoValue(int) const
+ ?right@QDeclarativeScaleGrid@@QBEHXZ @ 514 NONAME ABSENT ; int QDeclarativeScaleGrid::right(void) const
+ ?setClassName@QMetaObjectBuilder@@QAEXABVQByteArray@@@Z @ 515 NONAME ABSENT ; void QMetaObjectBuilder::setClassName(class QByteArray const &)
+ ??1QDeclarativeAnchors@@UAE@XZ @ 516 NONAME ABSENT ; QDeclarativeAnchors::~QDeclarativeAnchors(void)
+ ?removeConstructor@QMetaObjectBuilder@@QAEXH@Z @ 517 NONAME ABSENT ; void QMetaObjectBuilder::removeConstructor(int)
+ ??4QDeclarativeDomValueValueInterceptor@@QAEAAV0@ABV0@@Z @ 518 NONAME ABSENT ; class QDeclarativeDomValueValueInterceptor & QDeclarativeDomValueValueInterceptor::operator=(class QDeclarativeDomValueValueInterceptor const &)
?resolveType@QDeclarativeCustomParser@@IBEPBUQMetaObject@@ABVQByteArray@@@Z @ 519 NONAME ; struct QMetaObject const * QDeclarativeCustomParser::resolveType(class QByteArray const &) const
??_EQDeclarativePropertyValueSource@@UAE@I@Z @ 520 NONAME ; QDeclarativePropertyValueSource::~QDeclarativePropertyValueSource(unsigned int)
?connectFinished@QDeclarativePixmap@@QAE_NPAVQObject@@PBD@Z @ 521 NONAME ; bool QDeclarativePixmap::connectFinished(class QObject *, char const *)
?staticMetaObject@QDeclarativeItem@@2UQMetaObject@@B @ 522 NONAME ; struct QMetaObject const QDeclarativeItem::staticMetaObject
- ?qt_metacast@QDeclarativeDebugRootContextQuery@@UAEPAXPBD@Z @ 523 NONAME ; void * QDeclarativeDebugRootContextQuery::qt_metacast(char const *)
- ?itemsRemoved@QListModelInterface@@IAEXHH@Z @ 524 NONAME ; void QListModelInterface::itemsRemoved(int, int)
+ ?qt_metacast@QDeclarativeDebugRootContextQuery@@UAEPAXPBD@Z @ 523 NONAME ABSENT ; void * QDeclarativeDebugRootContextQuery::qt_metacast(char const *)
+ ?itemsRemoved@QListModelInterface@@IAEXHH@Z @ 524 NONAME ABSENT ; void QListModelInterface::itemsRemoved(int, int)
?networkAccessManager@QDeclarativeEngine@@QBEPAVQNetworkAccessManager@@XZ @ 525 NONAME ; class QNetworkAccessManager * QDeclarativeEngine::networkAccessManager(void) const
- ??0QDeclarativeDomValue@@QAE@XZ @ 526 NONAME ; QDeclarativeDomValue::QDeclarativeDomValue(void)
+ ??0QDeclarativeDomValue@@QAE@XZ @ 526 NONAME ABSENT ; QDeclarativeDomValue::QDeclarativeDomValue(void)
?init@QDeclarativeItemPrivate@@QAEXPAVQDeclarativeItem@@@Z @ 527 NONAME ; void QDeclarativeItemPrivate::init(class QDeclarativeItem *)
- ?addProperty@QMetaObjectBuilder@@QAE?AVQMetaPropertyBuilder@@ABVQByteArray@@0H@Z @ 528 NONAME ; class QMetaPropertyBuilder QMetaObjectBuilder::addProperty(class QByteArray const &, class QByteArray const &, int)
+ ?addProperty@QMetaObjectBuilder@@QAE?AVQMetaPropertyBuilder@@ABVQByteArray@@0H@Z @ 528 NONAME ABSENT ; class QMetaPropertyBuilder QMetaObjectBuilder::addProperty(class QByteArray const &, class QByteArray const &, int)
?getStaticMetaObject@QDeclarativeState@@SAABUQMetaObject@@XZ @ 529 NONAME ; struct QMetaObject const & QDeclarativeState::getStaticMetaObject(void)
- ?isResettable@QMetaPropertyBuilder@@QBE_NXZ @ 530 NONAME ; bool QMetaPropertyBuilder::isResettable(void) const
+ ?isResettable@QMetaPropertyBuilder@@QBE_NXZ @ 530 NONAME ABSENT ; bool QMetaPropertyBuilder::isResettable(void) const
?focusScopeItemChange@QDeclarativeItemPrivate@@UAEX_N@Z @ 531 NONAME ; void QDeclarativeItemPrivate::focusScopeItemChange(bool)
- ?bottomMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 532 NONAME ; void QDeclarativeAnchors::bottomMarginChanged(void)
+ ?bottomMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 532 NONAME ABSENT ; void QDeclarativeAnchors::bottomMarginChanged(void)
?offlineStoragePath@QDeclarativeEngine@@QBE?AVQString@@XZ @ 533 NONAME ; class QString QDeclarativeEngine::offlineStoragePath(void) const
?keys@QDeclarativePropertyMap@@QBE?AVQStringList@@XZ @ 534 NONAME ; class QStringList QDeclarativePropertyMap::keys(void) const
?addItemChangeListener@QDeclarativeItemPrivate@@QAEXPAVQDeclarativeItemChangeListener@@V?$QFlags@W4ChangeType@QDeclarativeItemPrivate@@@@@Z @ 535 NONAME ; void QDeclarativeItemPrivate::addItemChangeListener(class QDeclarativeItemChangeListener *, class QFlags<enum QDeclarativeItemPrivate::ChangeType>)
?clear@QDeclarativePixmap@@QAEXPAVQObject@@@Z @ 536 NONAME ; void QDeclarativePixmap::clear(class QObject *)
- ?addConstructor@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQMetaMethod@@@Z @ 537 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addConstructor(class QMetaMethod const &)
+ ?addConstructor@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQMetaMethod@@@Z @ 537 NONAME ABSENT ; class QMetaMethodBuilder QMetaObjectBuilder::addConstructor(class QMetaMethod const &)
??6QDeclarativeInfo@@QAEAAV0@F@Z @ 538 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(short)
- ?serialize@QMetaObjectBuilder@@QBEXAAVQDataStream@@@Z @ 539 NONAME ; void QMetaObjectBuilder::serialize(class QDataStream &) const
- ??0QDeclarativeDebugContextReference@@QAE@ABV0@@Z @ 540 NONAME ; QDeclarativeDebugContextReference::QDeclarativeDebugContextReference(class QDeclarativeDebugContextReference const &)
- ?saveProperty@QDeclarativePropertyPrivate@@SA?AVQByteArray@@PBUQMetaObject@@H@Z @ 541 NONAME ; class QByteArray QDeclarativePropertyPrivate::saveProperty(struct QMetaObject const *, int)
+ ?serialize@QMetaObjectBuilder@@QBEXAAVQDataStream@@@Z @ 539 NONAME ABSENT ; void QMetaObjectBuilder::serialize(class QDataStream &) const
+ ??0QDeclarativeDebugContextReference@@QAE@ABV0@@Z @ 540 NONAME ABSENT ; QDeclarativeDebugContextReference::QDeclarativeDebugContextReference(class QDeclarativeDebugContextReference const &)
+ ?saveProperty@QDeclarativePropertyPrivate@@SA?AVQByteArray@@PBUQMetaObject@@H@Z @ 541 NONAME ABSENT ; class QByteArray QDeclarativePropertyPrivate::saveProperty(struct QMetaObject const *, int)
?propertyType@QDeclarativeProperty@@QBEHXZ @ 542 NONAME ; int QDeclarativeProperty::propertyType(void) const
- ?isDefaultProperty@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 543 NONAME ; bool QDeclarativeDomDynamicProperty::isDefaultProperty(void) const
- ??_EQDeclarativeBehavior@@UAE@I@Z @ 544 NONAME ; QDeclarativeBehavior::~QDeclarativeBehavior(unsigned int)
- ??_EQDeclarativeListModel@@UAE@I@Z @ 545 NONAME ; QDeclarativeListModel::~QDeclarativeListModel(unsigned int)
- ?isCreatable@QDeclarativeType@@QBE_NXZ @ 546 NONAME ; bool QDeclarativeType::isCreatable(void) const
+ ?isDefaultProperty@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 543 NONAME ABSENT ; bool QDeclarativeDomDynamicProperty::isDefaultProperty(void) const
+ ??_EQDeclarativeBehavior@@UAE@I@Z @ 544 NONAME ABSENT ; QDeclarativeBehavior::~QDeclarativeBehavior(unsigned int)
+ ??_EQDeclarativeListModel@@UAE@I@Z @ 545 NONAME ABSENT ; QDeclarativeListModel::~QDeclarativeListModel(unsigned int)
+ ?isCreatable@QDeclarativeType@@QBE_NXZ @ 546 NONAME ABSENT ; bool QDeclarativeType::isCreatable(void) const
??6QDeclarativeInfo@@QAEAAV0@ABVQString@@@Z @ 547 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QString const &)
- ?tr@QDeclarativePen@@SA?AVQString@@PBD0@Z @ 548 NONAME ; class QString QDeclarativePen::tr(char const *, char const *)
+ ?tr@QDeclarativePen@@SA?AVQString@@PBD0@Z @ 548 NONAME ABSENT ; class QString QDeclarativePen::tr(char const *, char const *)
?trUtf8@QDeclarativeContext@@SA?AVQString@@PBD0H@Z @ 549 NONAME ; class QString QDeclarativeContext::trUtf8(char const *, char const *, int)
- ??0QDeclarativeListModel@@QAE@PAVQObject@@@Z @ 550 NONAME ; QDeclarativeListModel::QDeclarativeListModel(class QObject *)
- ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugContextReference@@ABVQString@@PAVQObject@@@Z @ 551 NONAME ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugContextReference const &, class QString const &, class QObject *)
+ ??0QDeclarativeListModel@@QAE@PAVQObject@@@Z @ 550 NONAME ABSENT ; QDeclarativeListModel::QDeclarativeListModel(class QObject *)
+ ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugContextReference@@ABVQString@@PAVQObject@@@Z @ 551 NONAME ABSENT ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugContextReference const &, class QString const &, class QObject *)
?setColumn@QDeclarativeError@@QAEXH@Z @ 552 NONAME ; void QDeclarativeError::setColumn(int)
??1QDeclarativeTransition@@UAE@XZ @ 553 NONAME ; QDeclarativeTransition::~QDeclarativeTransition(void)
??AQDeclarativePropertyMap@@QBE?AVQVariant@@ABVQString@@@Z @ 554 NONAME ; class QVariant QDeclarativePropertyMap::operator[](class QString const &) const
- ?qt_metacall@QDeclarativeListModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 555 NONAME ; int QDeclarativeListModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?qt_metacall@QDeclarativeListModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 555 NONAME ABSENT ; int QDeclarativeListModel::qt_metacall(enum QMetaObject::Call, int, void * *)
?qdeclarativeelement_destructor@QDeclarativePrivate@@YAXPAVQObject@@@Z @ 556 NONAME ; void QDeclarativePrivate::qdeclarativeelement_destructor(class QObject *)
- ?registerCustomStringConverter@QDeclarativeMetaType@@SAXHP6A?AVQVariant@@ABVQString@@@Z@Z @ 557 NONAME ; void QDeclarativeMetaType::registerCustomStringConverter(int, class QVariant (*)(class QString const &))
+ ?registerCustomStringConverter@QDeclarativeMetaType@@SAXHP6A?AVQVariant@@ABVQString@@@Z@Z @ 557 NONAME ABSENT ; void QDeclarativeMetaType::registerCustomStringConverter(int, class QVariant (*)(class QString const &))
?metaObject@QDeclarativeEngine@@UBEPBUQMetaObject@@XZ @ 558 NONAME ; struct QMetaObject const * QDeclarativeEngine::metaObject(void) const
- ??_EQDeclarativeDebugContextReference@@QAE@I@Z @ 559 NONAME ; QDeclarativeDebugContextReference::~QDeclarativeDebugContextReference(unsigned int)
- ?propertyWrite@QDeclarativeOpenMetaObject@@MAEXH@Z @ 560 NONAME ; void QDeclarativeOpenMetaObject::propertyWrite(int)
- ?qt_metacall@QDeclarativeDebugService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 561 NONAME ; int QDeclarativeDebugService::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?setVerticalCenterOffset@QDeclarativeAnchors@@QAEXM@Z @ 562 NONAME ; void QDeclarativeAnchors::setVerticalCenterOffset(float)
- ??1QDeclarativeDebugWatch@@UAE@XZ @ 563 NONAME ; QDeclarativeDebugWatch::~QDeclarativeDebugWatch(void)
- ??1QPacketAutoSend@@UAE@XZ @ 564 NONAME ; QPacketAutoSend::~QPacketAutoSend(void)
- ?geometryChanged@QDeclarativeText@@MAEXABVQRectF@@0@Z @ 565 NONAME ; void QDeclarativeText::geometryChanged(class QRectF const &, class QRectF const &)
- ?d_func@QDeclarativeRectangle@@AAEPAVQDeclarativeRectanglePrivate@@XZ @ 566 NONAME ; class QDeclarativeRectanglePrivate * QDeclarativeRectangle::d_func(void)
- ?qt_metacast@QDeclarativeListModel@@UAEPAXPBD@Z @ 567 NONAME ; void * QDeclarativeListModel::qt_metacast(char const *)
+ ??_EQDeclarativeDebugContextReference@@QAE@I@Z @ 559 NONAME ABSENT ; QDeclarativeDebugContextReference::~QDeclarativeDebugContextReference(unsigned int)
+ ?propertyWrite@QDeclarativeOpenMetaObject@@MAEXH@Z @ 560 NONAME ABSENT ; void QDeclarativeOpenMetaObject::propertyWrite(int)
+ ?qt_metacall@QDeclarativeDebugService@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 561 NONAME ABSENT ; int QDeclarativeDebugService::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?setVerticalCenterOffset@QDeclarativeAnchors@@QAEXM@Z @ 562 NONAME ABSENT ; void QDeclarativeAnchors::setVerticalCenterOffset(float)
+ ??1QDeclarativeDebugWatch@@UAE@XZ @ 563 NONAME ABSENT ; QDeclarativeDebugWatch::~QDeclarativeDebugWatch(void)
+ ??1QPacketAutoSend@@UAE@XZ @ 564 NONAME ABSENT ; QPacketAutoSend::~QPacketAutoSend(void)
+ ?geometryChanged@QDeclarativeText@@MAEXABVQRectF@@0@Z @ 565 NONAME ABSENT ; void QDeclarativeText::geometryChanged(class QRectF const &, class QRectF const &)
+ ?d_func@QDeclarativeRectangle@@AAEPAVQDeclarativeRectanglePrivate@@XZ @ 566 NONAME ABSENT ; class QDeclarativeRectanglePrivate * QDeclarativeRectangle::d_func(void)
+ ?qt_metacast@QDeclarativeListModel@@UAEPAXPBD@Z @ 567 NONAME ABSENT ; void * QDeclarativeListModel::qt_metacast(char const *)
?name@QDeclarativeCustomParserProperty@@QBE?AVQByteArray@@XZ @ 568 NONAME ; class QByteArray QDeclarativeCustomParserProperty::name(void) const
- ?update@QDeclarativeBinding@@QAEXXZ @ 569 NONAME ; void QDeclarativeBinding::update(void)
+ ?update@QDeclarativeBinding@@QAEXXZ @ 569 NONAME ABSENT ; void QDeclarativeBinding::update(void)
?trUtf8@QDeclarativeEngine@@SA?AVQString@@PBD0@Z @ 570 NONAME ; class QString QDeclarativeEngine::trUtf8(char const *, char const *)
- ?qt_metacast@QDeclarativeDebugConnection@@UAEPAXPBD@Z @ 571 NONAME ; void * QDeclarativeDebugConnection::qt_metacast(char const *)
- ?removeWatch@QDeclarativeEngineDebug@@QAEXPAVQDeclarativeDebugWatch@@@Z @ 572 NONAME ; void QDeclarativeEngineDebug::removeWatch(class QDeclarativeDebugWatch *)
- ?qt_metacast@QDeclarativeBinding@@UAEPAXPBD@Z @ 573 NONAME ; void * QDeclarativeBinding::qt_metacast(char const *)
- ?baseline@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 574 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::baseline(void) const
+ ?qt_metacast@QDeclarativeDebugConnection@@UAEPAXPBD@Z @ 571 NONAME ABSENT ; void * QDeclarativeDebugConnection::qt_metacast(char const *)
+ ?removeWatch@QDeclarativeEngineDebug@@QAEXPAVQDeclarativeDebugWatch@@@Z @ 572 NONAME ABSENT ; void QDeclarativeEngineDebug::removeWatch(class QDeclarativeDebugWatch *)
+ ?qt_metacast@QDeclarativeBinding@@UAEPAXPBD@Z @ 573 NONAME ABSENT ; void * QDeclarativeBinding::qt_metacast(char const *)
+ ?baseline@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 574 NONAME ABSENT ; class QDeclarativeAnchorLine QDeclarativeAnchors::baseline(void) const
?connectDownloadProgress@QDeclarativePixmap@@QAE_NPAVQObject@@PBD@Z @ 575 NONAME ; bool QDeclarativePixmap::connectDownloadProgress(class QObject *, char const *)
- ?restore@QDeclarativePropertyPrivate@@SA?AVQDeclarativeProperty@@ABVQByteArray@@PAVQObject@@PAVQDeclarativeContextData@@@Z @ 576 NONAME ; class QDeclarativeProperty QDeclarativePropertyPrivate::restore(class QByteArray const &, class QObject *, class QDeclarativeContextData *)
+ ?restore@QDeclarativePropertyPrivate@@SA?AVQDeclarativeProperty@@ABVQByteArray@@PAVQObject@@PAVQDeclarativeContextData@@@Z @ 576 NONAME ABSENT ; class QDeclarativeProperty QDeclarativePropertyPrivate::restore(class QByteArray const &, class QObject *, class QDeclarativeContextData *)
??0QDeclarativeProperty@@QAE@PAVQObject@@@Z @ 577 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *)
- ?source@QDeclarativeDebugObjectReference@@QBE?AVQDeclarativeDebugFileReference@@XZ @ 578 NONAME ; class QDeclarativeDebugFileReference QDeclarativeDebugObjectReference::source(void) const
- ?tr@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0H@Z @ 579 NONAME ; class QString QDeclarativeDebugExpressionQuery::tr(char const *, char const *, int)
- ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@H@Z @ 580 NONAME ; class QDeclarativeType * QDeclarativeMetaType::qmlType(int)
+ ?source@QDeclarativeDebugObjectReference@@QBE?AVQDeclarativeDebugFileReference@@XZ @ 578 NONAME ABSENT ; class QDeclarativeDebugFileReference QDeclarativeDebugObjectReference::source(void) const
+ ?tr@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0H@Z @ 579 NONAME ABSENT ; class QString QDeclarativeDebugExpressionQuery::tr(char const *, char const *, int)
+ ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@H@Z @ 580 NONAME ABSENT ; class QDeclarativeType * QDeclarativeMetaType::qmlType(int)
??1QDeclarativeCustomParser@@UAE@XZ @ 581 NONAME ; QDeclarativeCustomParser::~QDeclarativeCustomParser(void)
- ?toList@QDeclarativeDomValue@@QBE?AVQDeclarativeDomList@@XZ @ 582 NONAME ; class QDeclarativeDomList QDeclarativeDomValue::toList(void) const
- ?metaObject@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 583 NONAME ; struct QMetaObject const * QDeclarativeType::metaObject(void) const
- ?animation@QDeclarativeBehavior@@QAEPAVQDeclarativeAbstractAnimation@@XZ @ 584 NONAME ; class QDeclarativeAbstractAnimation * QDeclarativeBehavior::animation(void)
- ?listType@QDeclarativeMetaType@@SAHH@Z @ 585 NONAME ; int QDeclarativeMetaType::listType(int)
+ ?toList@QDeclarativeDomValue@@QBE?AVQDeclarativeDomList@@XZ @ 582 NONAME ABSENT ; class QDeclarativeDomList QDeclarativeDomValue::toList(void) const
+ ?metaObject@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 583 NONAME ABSENT ; struct QMetaObject const * QDeclarativeType::metaObject(void) const
+ ?animation@QDeclarativeBehavior@@QAEPAVQDeclarativeAbstractAnimation@@XZ @ 584 NONAME ABSENT ; class QDeclarativeAbstractAnimation * QDeclarativeBehavior::animation(void)
+ ?listType@QDeclarativeMetaType@@SAHH@Z @ 585 NONAME ABSENT ; int QDeclarativeMetaType::listType(int)
?transform_append@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@PAVQGraphicsTransform@@@Z @ 586 NONAME ; void QDeclarativeItemPrivate::transform_append(class QDeclarativeListProperty<class QGraphicsTransform> *, class QGraphicsTransform *)
?d_func@QDeclarativeComponent@@AAEPAVQDeclarativeComponentPrivate@@XZ @ 587 NONAME ; class QDeclarativeComponentPrivate * QDeclarativeComponent::d_func(void)
- ?variantFromString@QDeclarativeStringConverters@@YA?AVQVariant@@ABVQString@@@Z @ 588 NONAME ; class QVariant QDeclarativeStringConverters::variantFromString(class QString const &)
- ?qt_metacall@QDeclarativeScaleGrid@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 589 NONAME ; int QDeclarativeScaleGrid::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?variantFromString@QDeclarativeStringConverters@@YA?AVQVariant@@ABVQString@@@Z @ 588 NONAME ABSENT ; class QVariant QDeclarativeStringConverters::variantFromString(class QString const &)
+ ?qt_metacall@QDeclarativeScaleGrid@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 589 NONAME ABSENT ; int QDeclarativeScaleGrid::qt_metacall(enum QMetaObject::Call, int, void * *)
?size@QDeclarativePropertyMap@@QBEHXZ @ 590 NONAME ; int QDeclarativePropertyMap::size(void) const
?cancel@QDeclarativeState@@QAEXXZ @ 591 NONAME ; void QDeclarativeState::cancel(void)
?qt_metacall@QDeclarativeStateGroup@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 592 NONAME ; int QDeclarativeStateGroup::qt_metacall(enum QMetaObject::Call, int, void * *)
- ??0QDeclarativePropertyPrivate@@QAE@XZ @ 593 NONAME ; QDeclarativePropertyPrivate::QDeclarativePropertyPrivate(void)
- ?getStaticMetaObject@QDeclarativeDebugPropertyWatch@@SAABUQMetaObject@@XZ @ 594 NONAME ; struct QMetaObject const & QDeclarativeDebugPropertyWatch::getStaticMetaObject(void)
- ?trUtf8@QDeclarativeDebugWatch@@SA?AVQString@@PBD0H@Z @ 595 NONAME ; class QString QDeclarativeDebugWatch::trUtf8(char const *, char const *, int)
+ ??0QDeclarativePropertyPrivate@@QAE@XZ @ 593 NONAME ABSENT ; QDeclarativePropertyPrivate::QDeclarativePropertyPrivate(void)
+ ?getStaticMetaObject@QDeclarativeDebugPropertyWatch@@SAABUQMetaObject@@XZ @ 594 NONAME ABSENT ; struct QMetaObject const & QDeclarativeDebugPropertyWatch::getStaticMetaObject(void)
+ ?trUtf8@QDeclarativeDebugWatch@@SA?AVQString@@PBD0H@Z @ 595 NONAME ABSENT ; class QString QDeclarativeDebugWatch::trUtf8(char const *, char const *, int)
?transformOrigin@QDeclarativeItem@@QBE?AW4TransformOrigin@1@XZ @ 596 NONAME ; enum QDeclarativeItem::TransformOrigin QDeclarativeItem::transformOrigin(void) const
- ?setState@QDeclarativeDebugWatch@@AAEXW4State@1@@Z @ 597 NONAME ; void QDeclarativeDebugWatch::setState(enum QDeclarativeDebugWatch::State)
+ ?setState@QDeclarativeDebugWatch@@AAEXW4State@1@@Z @ 597 NONAME ABSENT ; void QDeclarativeDebugWatch::setState(enum QDeclarativeDebugWatch::State)
?evaluateEnum@QDeclarativeCustomParser@@IBEHABVQByteArray@@@Z @ 598 NONAME ; int QDeclarativeCustomParser::evaluateEnum(class QByteArray const &) const
- ?setState@QDeclarativeDebugQuery@@AAEXW4State@1@@Z @ 599 NONAME ; void QDeclarativeDebugQuery::setState(enum QDeclarativeDebugQuery::State)
- ?d_func@QDeclarativeText@@ABEPBVQDeclarativeTextPrivate@@XZ @ 600 NONAME ; class QDeclarativeTextPrivate const * QDeclarativeText::d_func(void) const
+ ?setState@QDeclarativeDebugQuery@@AAEXW4State@1@@Z @ 599 NONAME ABSENT ; void QDeclarativeDebugQuery::setState(enum QDeclarativeDebugQuery::State)
+ ?d_func@QDeclarativeText@@ABEPBVQDeclarativeTextPrivate@@XZ @ 600 NONAME ABSENT ; class QDeclarativeTextPrivate const * QDeclarativeText::d_func(void) const
?transitionsProperty@QDeclarativeStateGroup@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeTransition@@@@XZ @ 601 NONAME ; class QDeclarativeListProperty<class QDeclarativeTransition> QDeclarativeStateGroup::transitionsProperty(void)
- ?typeName@QDeclarativeType@@QBE?AVQByteArray@@XZ @ 602 NONAME ; class QByteArray QDeclarativeType::typeName(void) const
+ ?typeName@QDeclarativeType@@QBE?AVQByteArray@@XZ @ 602 NONAME ABSENT ; class QByteArray QDeclarativeType::typeName(void) const
?asStringList@Variant@QDeclarativeParser@@QBE?AVQStringList@@XZ @ 603 NONAME ; class QStringList QDeclarativeParser::Variant::asStringList(void) const
- ?removeKey@QMetaEnumBuilder@@QAEXH@Z @ 604 NONAME ; void QMetaEnumBuilder::removeKey(int)
- ?addRelatedMetaObject@QMetaObjectBuilder@@QAEHABQ6AABUQMetaObject@@XZ@Z @ 605 NONAME ; int QMetaObjectBuilder::addRelatedMetaObject(struct QMetaObject const & (* const)(void) const &)
- ??0QDeclarativeDomValueLiteral@@QAE@XZ @ 606 NONAME ; QDeclarativeDomValueLiteral::QDeclarativeDomValueLiteral(void)
- ??_EQDeclarativeDebugObjectExpressionWatch@@UAE@I@Z @ 607 NONAME ; QDeclarativeDebugObjectExpressionWatch::~QDeclarativeDebugObjectExpressionWatch(unsigned int)
+ ?removeKey@QMetaEnumBuilder@@QAEXH@Z @ 604 NONAME ABSENT ; void QMetaEnumBuilder::removeKey(int)
+ ?addRelatedMetaObject@QMetaObjectBuilder@@QAEHABQ6AABUQMetaObject@@XZ@Z @ 605 NONAME ABSENT ; int QMetaObjectBuilder::addRelatedMetaObject(struct QMetaObject const & (* const)(void) const &)
+ ??0QDeclarativeDomValueLiteral@@QAE@XZ @ 606 NONAME ABSENT ; QDeclarativeDomValueLiteral::QDeclarativeDomValueLiteral(void)
+ ??_EQDeclarativeDebugObjectExpressionWatch@@UAE@I@Z @ 607 NONAME ABSENT ; QDeclarativeDebugObjectExpressionWatch::~QDeclarativeDebugObjectExpressionWatch(unsigned int)
?computeTransformOrigin@QDeclarativeItemPrivate@@QBE?AVQPointF@@XZ @ 608 NONAME ; class QPointF QDeclarativeItemPrivate::computeTransformOrigin(void) const
??0QDeclarativeListReference@@QAE@PAVQObject@@PBDPAVQDeclarativeEngine@@@Z @ 609 NONAME ; QDeclarativeListReference::QDeclarativeListReference(class QObject *, char const *, class QDeclarativeEngine *)
?setData@QListModelInterface@@UAE_NHABV?$QHash@HVQVariant@@@@@Z @ 610 NONAME ABSENT ; bool QListModelInterface::setData(int, class QHash<int, class QVariant> const &)
- ??0QDeclarativePen@@QAE@PAVQObject@@@Z @ 611 NONAME ; QDeclarativePen::QDeclarativePen(class QObject *)
- ?trUtf8@QPacketProtocol@@SA?AVQString@@PBD0H@Z @ 612 NONAME ; class QString QPacketProtocol::trUtf8(char const *, char const *, int)
+ ??0QDeclarativePen@@QAE@PAVQObject@@@Z @ 611 NONAME ABSENT ; QDeclarativePen::QDeclarativePen(class QObject *)
+ ?trUtf8@QPacketProtocol@@SA?AVQString@@PBD0H@Z @ 612 NONAME ABSENT ; class QString QPacketProtocol::trUtf8(char const *, char const *, int)
?setContextObject@QDeclarativeContext@@QAEXPAVQObject@@@Z @ 613 NONAME ; void QDeclarativeContext::setContextObject(class QObject *)
??_EQDeclarativeState@@UAE@I@Z @ 614 NONAME ; QDeclarativeState::~QDeclarativeState(unsigned int)
?expression@QDeclarativeExpression@@QBE?AVQString@@XZ @ 615 NONAME ; class QString QDeclarativeExpression::expression(void) const
- ??1QDeclarativeDomDocument@@QAE@XZ @ 616 NONAME ; QDeclarativeDomDocument::~QDeclarativeDomDocument(void)
- ?trUtf8@QDeclarativeListModel@@SA?AVQString@@PBD0H@Z @ 617 NONAME ; class QString QDeclarativeListModel::trUtf8(char const *, char const *, int)
+ ??1QDeclarativeDomDocument@@QAE@XZ @ 616 NONAME ABSENT ; QDeclarativeDomDocument::~QDeclarativeDomDocument(void)
+ ?trUtf8@QDeclarativeListModel@@SA?AVQString@@PBD0H@Z @ 617 NONAME ABSENT ; class QString QDeclarativeListModel::trUtf8(char const *, char const *, int)
?asNumber@Variant@QDeclarativeParser@@QBENXZ @ 618 NONAME ; double QDeclarativeParser::Variant::asNumber(void) const
- ?d_func@QDeclarativeDebugClient@@ABEPBVQDeclarativeDebugClientPrivate@@XZ @ 619 NONAME ; class QDeclarativeDebugClientPrivate const * QDeclarativeDebugClient::d_func(void) const
+ ?d_func@QDeclarativeDebugClient@@ABEPBVQDeclarativeDebugClientPrivate@@XZ @ 619 NONAME ABSENT ; class QDeclarativeDebugClientPrivate const * QDeclarativeDebugClient::d_func(void) const
?sceneEvent@QDeclarativeItem@@MAE_NPAVQEvent@@@Z @ 620 NONAME ; bool QDeclarativeItem::sceneEvent(class QEvent *)
- ??0QDeclarativeDebugRootContextQuery@@AAE@PAVQObject@@@Z @ 621 NONAME ; QDeclarativeDebugRootContextQuery::QDeclarativeDebugRootContextQuery(class QObject *)
- ?name@QDeclarativeDebugEngineReference@@QBE?AVQString@@XZ @ 622 NONAME ; class QString QDeclarativeDebugEngineReference::name(void) const
+ ??0QDeclarativeDebugRootContextQuery@@AAE@PAVQObject@@@Z @ 621 NONAME ABSENT ; QDeclarativeDebugRootContextQuery::QDeclarativeDebugRootContextQuery(class QObject *)
+ ?name@QDeclarativeDebugEngineReference@@QBE?AVQString@@XZ @ 622 NONAME ABSENT ; class QString QDeclarativeDebugEngineReference::name(void) const
??_EQDeclarativeTransition@@UAE@I@Z @ 623 NONAME ; QDeclarativeTransition::~QDeclarativeTransition(unsigned int)
- ??0QDeclarativeAction@@QAE@ABV0@@Z @ 624 NONAME ; QDeclarativeAction::QDeclarativeAction(class QDeclarativeAction const &)
+ ??0QDeclarativeAction@@QAE@ABV0@@Z @ 624 NONAME ABSENT ; QDeclarativeAction::QDeclarativeAction(class QDeclarativeAction const &)
?extends@QDeclarativeState@@QBE?AVQString@@XZ @ 625 NONAME ; class QString QDeclarativeState::extends(void) const
?error@QDeclarativeCustomParser@@IAEXABVQDeclarativeCustomParserProperty@@ABVQString@@@Z @ 626 NONAME ; void QDeclarativeCustomParser::error(class QDeclarativeCustomParserProperty const &, class QString const &)
??0QDeclarativeCustomParserNode@@QAE@XZ @ 627 NONAME ; QDeclarativeCustomParserNode::QDeclarativeCustomParserNode(void)
- ?version@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 628 NONAME ; class QString QDeclarativeDomImport::version(void) const
+ ?version@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 628 NONAME ABSENT ; class QString QDeclarativeDomImport::version(void) const
?smooth@QDeclarativeItem@@QBE_NXZ @ 629 NONAME ; bool QDeclarativeItem::smooth(void) const
??1QDeclarativeInfo@@QAE@XZ @ 630 NONAME ; QDeclarativeInfo::~QDeclarativeInfo(void)
?qt_metacast@QDeclarativeStateOperation@@UAEPAXPBD@Z @ 631 NONAME ; void * QDeclarativeStateOperation::qt_metacast(char const *)
- ??4QDeclarativeDebugEngineReference@@QAEAAV0@ABV0@@Z @ 632 NONAME ; class QDeclarativeDebugEngineReference & QDeclarativeDebugEngineReference::operator=(class QDeclarativeDebugEngineReference const &)
- ?isValueType@QDeclarativePropertyPrivate@@QBE_NXZ @ 633 NONAME ; bool QDeclarativePropertyPrivate::isValueType(void) const
- ??0QDeclarativeDomValueValueSource@@QAE@ABV0@@Z @ 634 NONAME ; QDeclarativeDomValueValueSource::QDeclarativeDomValueValueSource(class QDeclarativeDomValueValueSource const &)
- ?trUtf8@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0H@Z @ 635 NONAME ; class QString QDeclarativeDebugPropertyWatch::trUtf8(char const *, char const *, int)
+ ??4QDeclarativeDebugEngineReference@@QAEAAV0@ABV0@@Z @ 632 NONAME ABSENT ; class QDeclarativeDebugEngineReference & QDeclarativeDebugEngineReference::operator=(class QDeclarativeDebugEngineReference const &)
+ ?isValueType@QDeclarativePropertyPrivate@@QBE_NXZ @ 633 NONAME ABSENT ; bool QDeclarativePropertyPrivate::isValueType(void) const
+ ??0QDeclarativeDomValueValueSource@@QAE@ABV0@@Z @ 634 NONAME ABSENT ; QDeclarativeDomValueValueSource::QDeclarativeDomValueValueSource(class QDeclarativeDomValueValueSource const &)
+ ?trUtf8@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0H@Z @ 635 NONAME ABSENT ; class QString QDeclarativeDebugPropertyWatch::trUtf8(char const *, char const *, int)
?trUtf8@QDeclarativePixmap@@SA?AVQString@@PBD0H@Z @ 636 NONAME ; class QString QDeclarativePixmap::trUtf8(char const *, char const *, int)
- ??_EQDeclarativeDebugExpressionQuery@@UAE@I@Z @ 637 NONAME ; QDeclarativeDebugExpressionQuery::~QDeclarativeDebugExpressionQuery(unsigned int)
- ?trUtf8@QListModelInterface@@SA?AVQString@@PBD0H@Z @ 638 NONAME ; class QString QListModelInterface::trUtf8(char const *, char const *, int)
- ?qt_metacall@QDeclarativeDebugObjectExpressionWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 639 NONAME ; int QDeclarativeDebugObjectExpressionWatch::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ??_EQDeclarativeDebugExpressionQuery@@UAE@I@Z @ 637 NONAME ABSENT ; QDeclarativeDebugExpressionQuery::~QDeclarativeDebugExpressionQuery(unsigned int)
+ ?trUtf8@QListModelInterface@@SA?AVQString@@PBD0H@Z @ 638 NONAME ABSENT ; class QString QListModelInterface::trUtf8(char const *, char const *, int)
+ ?qt_metacall@QDeclarativeDebugObjectExpressionWatch@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 639 NONAME ABSENT ; int QDeclarativeDebugObjectExpressionWatch::qt_metacall(enum QMetaObject::Call, int, void * *)
?d_func@QDeclarativeItem@@AAEPAVQDeclarativeItemPrivate@@XZ @ 640 NONAME ; class QDeclarativeItemPrivate * QDeclarativeItem::d_func(void)
- ?binding@QDeclarativeDomValueBinding@@QBE?AVQString@@XZ @ 641 NONAME ; class QString QDeclarativeDomValueBinding::binding(void) const
+ ?binding@QDeclarativeDomValueBinding@@QBE?AVQString@@XZ @ 641 NONAME ABSENT ; class QString QDeclarativeDomValueBinding::binding(void) const
?updateAutoState@QDeclarativeStateGroup@@AAE_NXZ @ 642 NONAME ; bool QDeclarativeStateGroup::updateAutoState(void)
- ?tr@QDeclarativeDebugService@@SA?AVQString@@PBD0@Z @ 643 NONAME ; class QString QDeclarativeDebugService::tr(char const *, char const *)
+ ?tr@QDeclarativeDebugService@@SA?AVQString@@PBD0@Z @ 643 NONAME ABSENT ; class QString QDeclarativeDebugService::tr(char const *, char const *)
?tr@QDeclarativeComponent@@SA?AVQString@@PBD0H@Z @ 644 NONAME ; class QString QDeclarativeComponent::tr(char const *, char const *, int)
??1QDeclarativeProperty@@QAE@XZ @ 645 NONAME ; QDeclarativeProperty::~QDeclarativeProperty(void)
- ?fontChanged@QDeclarativeText@@IAEXABVQFont@@@Z @ 646 NONAME ; void QDeclarativeText::fontChanged(class QFont const &)
+ ?fontChanged@QDeclarativeText@@IAEXABVQFont@@@Z @ 646 NONAME ABSENT ; void QDeclarativeText::fontChanged(class QFont const &)
?isLoading@QDeclarativePixmap@@QBE_NXZ @ 647 NONAME ; bool QDeclarativePixmap::isLoading(void) const
?removeItemChangeListener@QDeclarativeItemPrivate@@QAEXPAVQDeclarativeItemChangeListener@@V?$QFlags@W4ChangeType@QDeclarativeItemPrivate@@@@@Z @ 648 NONAME ; void QDeclarativeItemPrivate::removeItemChangeListener(class QDeclarativeItemChangeListener *, class QFlags<enum QDeclarativeItemPrivate::ChangeType>)
- ?isList@QDeclarativeDomValue@@QBE_NXZ @ 649 NONAME ; bool QDeclarativeDomValue::isList(void) const
- ?insert@QDeclarativeListModel@@QAEXHABVQScriptValue@@@Z @ 650 NONAME ; void QDeclarativeListModel::insert(int, class QScriptValue const &)
- ?staticMetaObject@QDeclarativeListModel@@2UQMetaObject@@B @ 651 NONAME ; struct QMetaObject const QDeclarativeListModel::staticMetaObject
+ ?isList@QDeclarativeDomValue@@QBE_NXZ @ 649 NONAME ABSENT ; bool QDeclarativeDomValue::isList(void) const
+ ?insert@QDeclarativeListModel@@QAEXHABVQScriptValue@@@Z @ 650 NONAME ABSENT ; void QDeclarativeListModel::insert(int, class QScriptValue const &)
+ ?staticMetaObject@QDeclarativeListModel@@2UQMetaObject@@B @ 651 NONAME ABSENT ; struct QMetaObject const QDeclarativeListModel::staticMetaObject
?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@@Z @ 652 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &)
- ?indexOfConstructor@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 653 NONAME ; int QMetaObjectBuilder::indexOfConstructor(class QByteArray const &)
+ ?indexOfConstructor@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 653 NONAME ABSENT ; int QMetaObjectBuilder::indexOfConstructor(class QByteArray const &)
?lineNumber@QDeclarativeExpression@@QBEHXZ @ 654 NONAME ; int QDeclarativeExpression::lineNumber(void) const
- ?trUtf8@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0H@Z @ 655 NONAME ; class QString QDeclarativeDebugRootContextQuery::trUtf8(char const *, char const *, int)
+ ?trUtf8@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0H@Z @ 655 NONAME ABSENT ; class QString QDeclarativeDebugRootContextQuery::trUtf8(char const *, char const *, int)
?toString@QDeclarativeError@@QBE?AVQString@@XZ @ 656 NONAME ; class QString QDeclarativeError::toString(void) const
- ?index@QMetaPropertyBuilder@@QBEHXZ @ 657 NONAME ; int QMetaPropertyBuilder::index(void) const
- ?commaPositions@QDeclarativeDomList@@QBE?AV?$QList@H@@XZ @ 658 NONAME ; class QList<int> QDeclarativeDomList::commaPositions(void) const
- ?tr@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0@Z @ 659 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::tr(char const *, char const *)
- ?tr@QDeclarativeAnchors@@SA?AVQString@@PBD0@Z @ 660 NONAME ; class QString QDeclarativeAnchors::tr(char const *, char const *)
+ ?index@QMetaPropertyBuilder@@QBEHXZ @ 657 NONAME ABSENT ; int QMetaPropertyBuilder::index(void) const
+ ?commaPositions@QDeclarativeDomList@@QBE?AV?$QList@H@@XZ @ 658 NONAME ABSENT ; class QList<int> QDeclarativeDomList::commaPositions(void) const
+ ?tr@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0@Z @ 659 NONAME ABSENT ; class QString QDeclarativeDebugObjectExpressionWatch::tr(char const *, char const *)
+ ?tr@QDeclarativeAnchors@@SA?AVQString@@PBD0@Z @ 660 NONAME ABSENT ; class QString QDeclarativeAnchors::tr(char const *, char const *)
?tr@QDeclarativeEngine@@SA?AVQString@@PBD0@Z @ 661 NONAME ; class QString QDeclarativeEngine::tr(char const *, char const *)
- ?setTextFormat@QDeclarativeText@@QAEXW4TextFormat@1@@Z @ 662 NONAME ; void QDeclarativeText::setTextFormat(enum QDeclarativeText::TextFormat)
- ?parserStatusCast@QDeclarativeType@@QBEHXZ @ 663 NONAME ; int QDeclarativeType::parserStatusCast(void) const
- ??_EQListModelInterface@@UAE@I@Z @ 664 NONAME ; QListModelInterface::~QListModelInterface(unsigned int)
- ?trUtf8@QDeclarativeBehavior@@SA?AVQString@@PBD0@Z @ 665 NONAME ; class QString QDeclarativeBehavior::trUtf8(char const *, char const *)
- ?getStaticMetaObject@QDeclarativeListModel@@SAABUQMetaObject@@XZ @ 666 NONAME ; struct QMetaObject const & QDeclarativeListModel::getStaticMetaObject(void)
- ?setStdCppSet@QMetaPropertyBuilder@@QAEX_N@Z @ 667 NONAME ; void QMetaPropertyBuilder::setStdCppSet(bool)
+ ?setTextFormat@QDeclarativeText@@QAEXW4TextFormat@1@@Z @ 662 NONAME ABSENT ; void QDeclarativeText::setTextFormat(enum QDeclarativeText::TextFormat)
+ ?parserStatusCast@QDeclarativeType@@QBEHXZ @ 663 NONAME ABSENT ; int QDeclarativeType::parserStatusCast(void) const
+ ??_EQListModelInterface@@UAE@I@Z @ 664 NONAME ABSENT ; QListModelInterface::~QListModelInterface(unsigned int)
+ ?trUtf8@QDeclarativeBehavior@@SA?AVQString@@PBD0@Z @ 665 NONAME ABSENT ; class QString QDeclarativeBehavior::trUtf8(char const *, char const *)
+ ?getStaticMetaObject@QDeclarativeListModel@@SAABUQMetaObject@@XZ @ 666 NONAME ABSENT ; struct QMetaObject const & QDeclarativeListModel::getStaticMetaObject(void)
+ ?setStdCppSet@QMetaPropertyBuilder@@QAEX_N@Z @ 667 NONAME ABSENT ; void QMetaPropertyBuilder::setStdCppSet(bool)
??0QDeclarativeItemPrivate@@QAE@XZ @ 668 NONAME ; QDeclarativeItemPrivate::QDeclarativeItemPrivate(void)
- ??0QDeclarativeDebugService@@QAE@ABVQString@@PAVQObject@@@Z @ 669 NONAME ; QDeclarativeDebugService::QDeclarativeDebugService(class QString const &, class QObject *)
+ ??0QDeclarativeDebugService@@QAE@ABVQString@@PAVQObject@@@Z @ 669 NONAME ABSENT ; QDeclarativeDebugService::QDeclarativeDebugService(class QString const &, class QObject *)
?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@_N@Z @ 670 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &, bool)
- ??_EQPacketAutoSend@@UAE@I@Z @ 671 NONAME ; QPacketAutoSend::~QPacketAutoSend(unsigned int)
- ?saveValueType@QDeclarativePropertyPrivate@@SA?AVQByteArray@@PBUQMetaObject@@H0H@Z @ 672 NONAME ; class QByteArray QDeclarativePropertyPrivate::saveValueType(struct QMetaObject const *, int, struct QMetaObject const *, int)
+ ??_EQPacketAutoSend@@UAE@I@Z @ 671 NONAME ABSENT ; QPacketAutoSend::~QPacketAutoSend(unsigned int)
+ ?saveValueType@QDeclarativePropertyPrivate@@SA?AVQByteArray@@PBUQMetaObject@@H0H@Z @ 672 NONAME ABSENT ; class QByteArray QDeclarativePropertyPrivate::saveValueType(struct QMetaObject const *, int, struct QMetaObject const *, int)
?resetHeight@QDeclarativeItem@@QAEXXZ @ 673 NONAME ; void QDeclarativeItem::resetHeight(void)
- ?setVAlign@QDeclarativeText@@QAEXW4VAlignment@1@@Z @ 674 NONAME ; void QDeclarativeText::setVAlign(enum QDeclarativeText::VAlignment)
- ??1QDeclarativeDebugService@@UAE@XZ @ 675 NONAME ; QDeclarativeDebugService::~QDeclarativeDebugService(void)
- ?trUtf8@QDeclarativeDebugService@@SA?AVQString@@PBD0H@Z @ 676 NONAME ; class QString QDeclarativeDebugService::trUtf8(char const *, char const *, int)
- ?elideMode@QDeclarativeText@@QBE?AW4TextElideMode@1@XZ @ 677 NONAME ; enum QDeclarativeText::TextElideMode QDeclarativeText::elideMode(void) const
+ ?setVAlign@QDeclarativeText@@QAEXW4VAlignment@1@@Z @ 674 NONAME ABSENT ; void QDeclarativeText::setVAlign(enum QDeclarativeText::VAlignment)
+ ??1QDeclarativeDebugService@@UAE@XZ @ 675 NONAME ABSENT ; QDeclarativeDebugService::~QDeclarativeDebugService(void)
+ ?trUtf8@QDeclarativeDebugService@@SA?AVQString@@PBD0H@Z @ 676 NONAME ABSENT ; class QString QDeclarativeDebugService::trUtf8(char const *, char const *, int)
+ ?elideMode@QDeclarativeText@@QBE?AW4TextElideMode@1@XZ @ 677 NONAME ABSENT ; enum QDeclarativeText::TextElideMode QDeclarativeText::elideMode(void) const
?baseUrl@QDeclarativeContext@@QBE?AVQUrl@@XZ @ 678 NONAME ; class QUrl QDeclarativeContext::baseUrl(void) const
- ?qt_metacall@QDeclarativeDebugRootContextQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 679 NONAME ; int QDeclarativeDebugRootContextQuery::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?qt_metacall@QDeclarativeDebugRootContextQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 679 NONAME ABSENT ; int QDeclarativeDebugRootContextQuery::qt_metacall(enum QMetaObject::Call, int, void * *)
?isNamed@QDeclarativeState@@QBE_NXZ @ 680 NONAME ; bool QDeclarativeState::isNamed(void) const
?isString@Variant@QDeclarativeParser@@QBE_NXZ @ 681 NONAME ; bool QDeclarativeParser::Variant::isString(void) const
?restart@QDeclarativeItemPrivate@@SA_JAAVQElapsedTimer@@@Z @ 682 NONAME ; long long QDeclarativeItemPrivate::restart(class QElapsedTimer &)
- ?trUtf8@QDeclarativeDebugClient@@SA?AVQString@@PBD0H@Z @ 683 NONAME ; class QString QDeclarativeDebugClient::trUtf8(char const *, char const *, int)
+ ?trUtf8@QDeclarativeDebugClient@@SA?AVQString@@PBD0H@Z @ 683 NONAME ABSENT ; class QString QDeclarativeDebugClient::trUtf8(char const *, char const *, int)
?qt_metacast@QDeclarativeTransition@@UAEPAXPBD@Z @ 684 NONAME ; void * QDeclarativeTransition::qt_metacast(char const *)
??1QDeclarativePixmap@@QAE@XZ @ 685 NONAME ; QDeclarativePixmap::~QDeclarativePixmap(void)
- ?timeFromString@QDeclarativeStringConverters@@YA?AVQTime@@ABVQString@@PA_N@Z @ 686 NONAME ; class QTime QDeclarativeStringConverters::timeFromString(class QString const &, bool *)
- ?d_func@QDeclarativeDebugClient@@AAEPAVQDeclarativeDebugClientPrivate@@XZ @ 687 NONAME ; class QDeclarativeDebugClientPrivate * QDeclarativeDebugClient::d_func(void)
- ??1QDeclarativeType@@AAE@XZ @ 688 NONAME ; QDeclarativeType::~QDeclarativeType(void)
- ?colorFromString@QDeclarativeStringConverters@@YA?AVQColor@@ABVQString@@PA_N@Z @ 689 NONAME ; class QColor QDeclarativeStringConverters::colorFromString(class QString const &, bool *)
- ??_EQPacketProtocol@@UAE@I@Z @ 690 NONAME ; QPacketProtocol::~QPacketProtocol(unsigned int)
- ?tr@QDeclarativeListModel@@SA?AVQString@@PBD0@Z @ 691 NONAME ; class QString QDeclarativeListModel::tr(char const *, char const *)
+ ?timeFromString@QDeclarativeStringConverters@@YA?AVQTime@@ABVQString@@PA_N@Z @ 686 NONAME ABSENT ; class QTime QDeclarativeStringConverters::timeFromString(class QString const &, bool *)
+ ?d_func@QDeclarativeDebugClient@@AAEPAVQDeclarativeDebugClientPrivate@@XZ @ 687 NONAME ABSENT ; class QDeclarativeDebugClientPrivate * QDeclarativeDebugClient::d_func(void)
+ ??1QDeclarativeType@@AAE@XZ @ 688 NONAME ABSENT ; QDeclarativeType::~QDeclarativeType(void)
+ ?colorFromString@QDeclarativeStringConverters@@YA?AVQColor@@ABVQString@@PA_N@Z @ 689 NONAME ABSENT ; class QColor QDeclarativeStringConverters::colorFromString(class QString const &, bool *)
+ ??_EQPacketProtocol@@UAE@I@Z @ 690 NONAME ABSENT ; QPacketProtocol::~QPacketProtocol(unsigned int)
+ ?tr@QDeclarativeListModel@@SA?AVQString@@PBD0@Z @ 691 NONAME ABSENT ; class QString QDeclarativeListModel::tr(char const *, char const *)
??0QDeclarativePixmap@@QAE@XZ @ 692 NONAME ; QDeclarativePixmap::QDeclarativePixmap(void)
- ??0QDeclarativeDebugObjectReference@@QAE@XZ @ 693 NONAME ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(void)
+ ??0QDeclarativeDebugObjectReference@@QAE@XZ @ 693 NONAME ABSENT ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(void)
?staticMetaObject@QDeclarativeExtensionPlugin@@2UQMetaObject@@B @ 694 NONAME ; struct QMetaObject const QDeclarativeExtensionPlugin::staticMetaObject
- ?isNull@QDeclarativeScaleGrid@@QBE_NXZ @ 695 NONAME ; bool QDeclarativeScaleGrid::isNull(void) const
+ ?isNull@QDeclarativeScaleGrid@@QBE_NXZ @ 695 NONAME ABSENT ; bool QDeclarativeScaleGrid::isNull(void) const
??_EQDeclarativeStateOperation@@UAE@I@Z @ 696 NONAME ; QDeclarativeStateOperation::~QDeclarativeStateOperation(unsigned int)
??6QDeclarativeInfo@@QAEAAV0@H@Z @ 697 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(int)
- ??0QDeclarativeDomDynamicProperty@@QAE@XZ @ 698 NONAME ; QDeclarativeDomDynamicProperty::QDeclarativeDomDynamicProperty(void)
- ?tr@QDeclarativeRectangle@@SA?AVQString@@PBD0H@Z @ 699 NONAME ; class QString QDeclarativeRectangle::tr(char const *, char const *, int)
+ ??0QDeclarativeDomDynamicProperty@@QAE@XZ @ 698 NONAME ABSENT ; QDeclarativeDomDynamicProperty::QDeclarativeDomDynamicProperty(void)
+ ?tr@QDeclarativeRectangle@@SA?AVQString@@PBD0H@Z @ 699 NONAME ABSENT ; class QString QDeclarativeRectangle::tr(char const *, char const *, int)
?type@QDeclarativeProperty@@QBE?AW4Type@1@XZ @ 700 NONAME ; enum QDeclarativeProperty::Type QDeclarativeProperty::type(void) const
- ??0QDeclarativeDebugQuery@@IAE@PAVQObject@@@Z @ 701 NONAME ; QDeclarativeDebugQuery::QDeclarativeDebugQuery(class QObject *)
- ?baselineOffset@QDeclarativeAnchors@@QBEMXZ @ 702 NONAME ; float QDeclarativeAnchors::baselineOffset(void) const
- ??4QDeclarativeDomDocument@@QAEAAV0@ABV0@@Z @ 703 NONAME ; class QDeclarativeDomDocument & QDeclarativeDomDocument::operator=(class QDeclarativeDomDocument const &)
- ??0QDeclarativeOpenMetaObject@@QAE@PAVQObject@@PAVQDeclarativeOpenMetaObjectType@@_N@Z @ 704 NONAME ; QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(class QObject *, class QDeclarativeOpenMetaObjectType *, bool)
+ ??0QDeclarativeDebugQuery@@IAE@PAVQObject@@@Z @ 701 NONAME ABSENT ; QDeclarativeDebugQuery::QDeclarativeDebugQuery(class QObject *)
+ ?baselineOffset@QDeclarativeAnchors@@QBEMXZ @ 702 NONAME ABSENT ; float QDeclarativeAnchors::baselineOffset(void) const
+ ??4QDeclarativeDomDocument@@QAEAAV0@ABV0@@Z @ 703 NONAME ABSENT ; class QDeclarativeDomDocument & QDeclarativeDomDocument::operator=(class QDeclarativeDomDocument const &)
+ ??0QDeclarativeOpenMetaObject@@QAE@PAVQObject@@PAVQDeclarativeOpenMetaObjectType@@_N@Z @ 704 NONAME ABSENT ; QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(class QObject *, class QDeclarativeOpenMetaObjectType *, bool)
?trUtf8@QDeclarativeExpression@@SA?AVQString@@PBD0@Z @ 705 NONAME ; class QString QDeclarativeExpression::trUtf8(char const *, char const *)
- ??0QPacketProtocol@@QAE@PAVQIODevice@@PAVQObject@@@Z @ 706 NONAME ; QPacketProtocol::QPacketProtocol(class QIODevice *, class QObject *)
+ ??0QPacketProtocol@@QAE@PAVQIODevice@@PAVQObject@@@Z @ 706 NONAME ABSENT ; QPacketProtocol::QPacketProtocol(class QIODevice *, class QObject *)
??1QDeclarativeListReference@@QAE@XZ @ 707 NONAME ; QDeclarativeListReference::~QDeclarativeListReference(void)
?clearError@QDeclarativeExpression@@QAEXXZ @ 708 NONAME ; void QDeclarativeExpression::clearError(void)
- ?setLineNumber@QDeclarativeDebugFileReference@@QAEXH@Z @ 709 NONAME ; void QDeclarativeDebugFileReference::setLineNumber(int)
+ ?setLineNumber@QDeclarativeDebugFileReference@@QAEXH@Z @ 709 NONAME ABSENT ; void QDeclarativeDebugFileReference::setLineNumber(int)
?qt_metacall@QDeclarativeExtensionPlugin@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 710 NONAME ; int QDeclarativeExtensionPlugin::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?boundingRect@QDeclarativeText@@UBE?AVQRectF@@XZ @ 711 NONAME ; class QRectF QDeclarativeText::boundingRect(void) const
- ?setColor@QDeclarativePen@@QAEXABVQColor@@@Z @ 712 NONAME ; void QDeclarativePen::setColor(class QColor const &)
- ??0QDeclarativeDomImport@@QAE@XZ @ 713 NONAME ; QDeclarativeDomImport::QDeclarativeDomImport(void)
+ ?boundingRect@QDeclarativeText@@UBE?AVQRectF@@XZ @ 711 NONAME ABSENT ; class QRectF QDeclarativeText::boundingRect(void) const
+ ?setColor@QDeclarativePen@@QAEXABVQColor@@@Z @ 712 NONAME ABSENT ; void QDeclarativePen::setColor(class QColor const &)
+ ??0QDeclarativeDomImport@@QAE@XZ @ 713 NONAME ABSENT ; QDeclarativeDomImport::QDeclarativeDomImport(void)
?clearErrors@QDeclarativeCustomParser@@QAEXXZ @ 714 NONAME ; void QDeclarativeCustomParser::clearErrors(void)
- ?trUtf8@QDeclarativeDebugQuery@@SA?AVQString@@PBD0H@Z @ 715 NONAME ; class QString QDeclarativeDebugQuery::trUtf8(char const *, char const *, int)
- ?toRelocatableData@QMetaObjectBuilder@@QBE?AVQByteArray@@PA_N@Z @ 716 NONAME ; class QByteArray QMetaObjectBuilder::toRelocatableData(bool *) const
+ ?trUtf8@QDeclarativeDebugQuery@@SA?AVQString@@PBD0H@Z @ 715 NONAME ABSENT ; class QString QDeclarativeDebugQuery::trUtf8(char const *, char const *, int)
+ ?toRelocatableData@QMetaObjectBuilder@@QBE?AVQByteArray@@PA_N@Z @ 716 NONAME ABSENT ; class QByteArray QMetaObjectBuilder::toRelocatableData(bool *) const
?qt_metacast@QDeclarativeView@@UAEPAXPBD@Z @ 717 NONAME ; void * QDeclarativeView::qt_metacast(char const *)
?mapToItem@QDeclarativeItem@@QBE?AVQScriptValue@@ABV2@MM@Z @ 718 NONAME ; class QScriptValue QDeclarativeItem::mapToItem(class QScriptValue const &, float, float) const
?setPluginPathList@QDeclarativeEngine@@QAEXABVQStringList@@@Z @ 719 NONAME ; void QDeclarativeEngine::setPluginPathList(class QStringList const &)
?metaObject@QDeclarativeState@@UBEPBUQMetaObject@@XZ @ 720 NONAME ; struct QMetaObject const * QDeclarativeState::metaObject(void) const
- ?boundingRect@QDeclarativeRectangle@@UBE?AVQRectF@@XZ @ 721 NONAME ; class QRectF QDeclarativeRectangle::boundingRect(void) const
- ?uri@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 722 NONAME ; class QString QDeclarativeDomImport::uri(void) const
+ ?boundingRect@QDeclarativeRectangle@@UBE?AVQRectF@@XZ @ 721 NONAME ABSENT ; class QRectF QDeclarativeRectangle::boundingRect(void) const
+ ?uri@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 722 NONAME ABSENT ; class QString QDeclarativeDomImport::uri(void) const
?setContextProperty@QDeclarativeContext@@QAEXABVQString@@PAVQObject@@@Z @ 723 NONAME ; void QDeclarativeContext::setContextProperty(class QString const &, class QObject *)
?setBaseUrl@QDeclarativeEngine@@QAEXABVQUrl@@@Z @ 724 NONAME ; void QDeclarativeEngine::setBaseUrl(class QUrl const &)
- ?trUtf8@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0H@Z @ 725 NONAME ; class QString QDeclarativeDebugEnginesQuery::trUtf8(char const *, char const *, int)
- ?setScriptable@QMetaPropertyBuilder@@QAEX_N@Z @ 726 NONAME ; void QMetaPropertyBuilder::setScriptable(bool)
+ ?trUtf8@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0H@Z @ 725 NONAME ABSENT ; class QString QDeclarativeDebugEnginesQuery::trUtf8(char const *, char const *, int)
+ ?setScriptable@QMetaPropertyBuilder@@QAEX_N@Z @ 726 NONAME ABSENT ; void QMetaPropertyBuilder::setScriptable(bool)
??0QDeclarativeProperty@@QAE@PAVQObject@@PAVQDeclarativeEngine@@@Z @ 727 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QDeclarativeEngine *)
- ?itemsInserted@QListModelInterface@@IAEXHH@Z @ 728 NONAME ; void QListModelInterface::itemsInserted(int, int)
- ?generateBorderedRect@QDeclarativeRectangle@@AAEXXZ @ 729 NONAME ; void QDeclarativeRectangle::generateBorderedRect(void)
- ?verticalCenterOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 730 NONAME ; void QDeclarativeAnchors::verticalCenterOffsetChanged(void)
+ ?itemsInserted@QListModelInterface@@IAEXHH@Z @ 728 NONAME ABSENT ; void QListModelInterface::itemsInserted(int, int)
+ ?generateBorderedRect@QDeclarativeRectangle@@AAEXXZ @ 729 NONAME ABSENT ; void QDeclarativeRectangle::generateBorderedRect(void)
+ ?verticalCenterOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 730 NONAME ABSENT ; void QDeclarativeAnchors::verticalCenterOffsetChanged(void)
?width@QDeclarativeItem@@QBEMXZ @ 731 NONAME ; float QDeclarativeItem::width(void) const
- ?isValueInterceptor@QDeclarativeDomValue@@QBE_NXZ @ 732 NONAME ; bool QDeclarativeDomValue::isValueInterceptor(void) const
+ ?isValueInterceptor@QDeclarativeDomValue@@QBE_NXZ @ 732 NONAME ABSENT ; bool QDeclarativeDomValue::isValueInterceptor(void) const
?transform_at@QDeclarativeItemPrivate@@SAPAVQGraphicsTransform@@PAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@H@Z @ 733 NONAME ; class QGraphicsTransform * QDeclarativeItemPrivate::transform_at(class QDeclarativeListProperty<class QGraphicsTransform> *, int)
- ??1QDeclarativeDomValueBinding@@QAE@XZ @ 734 NONAME ; QDeclarativeDomValueBinding::~QDeclarativeDomValueBinding(void)
- ?qt_metacast@QDeclarativeAnchors@@UAEPAXPBD@Z @ 735 NONAME ; void * QDeclarativeAnchors::qt_metacast(char const *)
- ?isInterface@QDeclarativeMetaType@@SA_NH@Z @ 736 NONAME ; bool QDeclarativeMetaType::isInterface(int)
- ?qt_metacall@QDeclarativeRectangle@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 737 NONAME ; int QDeclarativeRectangle::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?trUtf8@QDeclarativePen@@SA?AVQString@@PBD0H@Z @ 738 NONAME ; class QString QDeclarativePen::trUtf8(char const *, char const *, int)
+ ??1QDeclarativeDomValueBinding@@QAE@XZ @ 734 NONAME ABSENT ; QDeclarativeDomValueBinding::~QDeclarativeDomValueBinding(void)
+ ?qt_metacast@QDeclarativeAnchors@@UAEPAXPBD@Z @ 735 NONAME ABSENT ; void * QDeclarativeAnchors::qt_metacast(char const *)
+ ?isInterface@QDeclarativeMetaType@@SA_NH@Z @ 736 NONAME ABSENT ; bool QDeclarativeMetaType::isInterface(int)
+ ?qt_metacall@QDeclarativeRectangle@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 737 NONAME ABSENT ; int QDeclarativeRectangle::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?trUtf8@QDeclarativePen@@SA?AVQString@@PBD0H@Z @ 738 NONAME ABSENT ; class QString QDeclarativePen::trUtf8(char const *, char const *, int)
??0Variant@QDeclarativeParser@@QAE@ABVQString@@PAVNode@AST@QDeclarativeJS@@@Z @ 739 NONAME ; QDeclarativeParser::Variant::Variant(class QString const &, class QDeclarativeJS::AST::Node *)
- ?rootObject@QDeclarativeDomDocument@@QBE?AVQDeclarativeDomObject@@XZ @ 740 NONAME ; class QDeclarativeDomObject QDeclarativeDomDocument::rootObject(void) const
- ?rightChanged@QDeclarativeAnchors@@IAEXXZ @ 741 NONAME ; void QDeclarativeAnchors::rightChanged(void)
+ ?rootObject@QDeclarativeDomDocument@@QBE?AVQDeclarativeDomObject@@XZ @ 740 NONAME ABSENT ; class QDeclarativeDomObject QDeclarativeDomDocument::rootObject(void) const
+ ?rightChanged@QDeclarativeAnchors@@IAEXXZ @ 741 NONAME ABSENT ; void QDeclarativeAnchors::rightChanged(void)
?isReady@QDeclarativePixmap@@QBE_NXZ @ 742 NONAME ; bool QDeclarativePixmap::isReady(void) const
??6QDeclarativeInfo@@QAEAAV0@ABVQByteArray@@@Z @ 743 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QByteArray const &)
?qt_metacast@QDeclarativeEngine@@UAEPAXPBD@Z @ 744 NONAME ; void * QDeclarativeEngine::qt_metacast(char const *)
- ?objectType@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 745 NONAME ; class QByteArray QDeclarativeDomObject::objectType(void) const
- ?addConstructor@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 746 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addConstructor(class QByteArray const &)
+ ?objectType@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 745 NONAME ABSENT ; class QByteArray QDeclarativeDomObject::objectType(void) const
+ ?addConstructor@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 746 NONAME ABSENT ; class QMetaMethodBuilder QMetaObjectBuilder::addConstructor(class QByteArray const &)
?read@QDeclarativeProperty@@SA?AVQVariant@@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@@Z @ 747 NONAME ; class QVariant QDeclarativeProperty::read(class QObject *, class QString const &, class QDeclarativeContext *)
- ?staticMetaObject@QDeclarativeDebugExpressionQuery@@2UQMetaObject@@B @ 748 NONAME ; struct QMetaObject const QDeclarativeDebugExpressionQuery::staticMetaObject
- ?queryRootContexts@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugRootContextQuery@@ABVQDeclarativeDebugEngineReference@@PAVQObject@@@Z @ 749 NONAME ; class QDeclarativeDebugRootContextQuery * QDeclarativeEngineDebug::queryRootContexts(class QDeclarativeDebugEngineReference const &, class QObject *)
- ?vector3DFromString@QDeclarativeStringConverters@@YA?AVQVector3D@@ABVQString@@PA_N@Z @ 750 NONAME ; class QVector3D QDeclarativeStringConverters::vector3DFromString(class QString const &, bool *)
+ ?staticMetaObject@QDeclarativeDebugExpressionQuery@@2UQMetaObject@@B @ 748 NONAME ABSENT ; struct QMetaObject const QDeclarativeDebugExpressionQuery::staticMetaObject
+ ?queryRootContexts@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugRootContextQuery@@ABVQDeclarativeDebugEngineReference@@PAVQObject@@@Z @ 749 NONAME ABSENT ; class QDeclarativeDebugRootContextQuery * QDeclarativeEngineDebug::queryRootContexts(class QDeclarativeDebugEngineReference const &, class QObject *)
+ ?vector3DFromString@QDeclarativeStringConverters@@YA?AVQVector3D@@ABVQString@@PA_N@Z @ 750 NONAME ABSENT ; class QVector3D QDeclarativeStringConverters::vector3DFromString(class QString const &, bool *)
?rootContext@QDeclarativeView@@QBEPAVQDeclarativeContext@@XZ @ 751 NONAME ; class QDeclarativeContext * QDeclarativeView::rootContext(void) const
- ??_EQDeclarativeDebugPropertyWatch@@UAE@I@Z @ 752 NONAME ; QDeclarativeDebugPropertyWatch::~QDeclarativeDebugPropertyWatch(unsigned int)
- ?relatedMetaObjectCount@QMetaObjectBuilder@@QBEHXZ @ 753 NONAME ; int QMetaObjectBuilder::relatedMetaObjectCount(void) const
+ ??_EQDeclarativeDebugPropertyWatch@@UAE@I@Z @ 752 NONAME ABSENT ; QDeclarativeDebugPropertyWatch::~QDeclarativeDebugPropertyWatch(unsigned int)
+ ?relatedMetaObjectCount@QMetaObjectBuilder@@QBEHXZ @ 753 NONAME ABSENT ; int QMetaObjectBuilder::relatedMetaObjectCount(void) const
?script@QDeclarativeScriptString@@QBE?AVQString@@XZ @ 754 NONAME ; class QString QDeclarativeScriptString::script(void) const
- ?index@QMetaMethodBuilder@@QBEHXZ @ 755 NONAME ; int QMetaMethodBuilder::index(void) const
- ??4QDeclarativeDomValueBinding@@QAEAAV0@ABV0@@Z @ 756 NONAME ; class QDeclarativeDomValueBinding & QDeclarativeDomValueBinding::operator=(class QDeclarativeDomValueBinding const &)
+ ?index@QMetaMethodBuilder@@QBEHXZ @ 755 NONAME ABSENT ; int QMetaMethodBuilder::index(void) const
+ ??4QDeclarativeDomValueBinding@@QAEAAV0@ABV0@@Z @ 756 NONAME ABSENT ; class QDeclarativeDomValueBinding & QDeclarativeDomValueBinding::operator=(class QDeclarativeDomValueBinding const &)
??0QDeclarativeExpression@@QAE@XZ @ 757 NONAME ; QDeclarativeExpression::QDeclarativeExpression(void)
?paint@QDeclarativeItem@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 758 NONAME ; void QDeclarativeItem::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *)
- ?send@QPacketProtocol@@QAE?AVQPacketAutoSend@@XZ @ 759 NONAME ; class QPacketAutoSend QPacketProtocol::send(void)
- ?countChanged@QDeclarativeListModel@@IAEXXZ @ 760 NONAME ; void QDeclarativeListModel::countChanged(void)
- ??0QDeclarativeGridScaledImage@@QAE@PAVQIODevice@@@Z @ 761 NONAME ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(class QIODevice *)
- ??_EQDeclarativeBinding@@UAE@I@Z @ 762 NONAME ; QDeclarativeBinding::~QDeclarativeBinding(unsigned int)
- ?baseMetaObject@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 763 NONAME ; struct QMetaObject const * QDeclarativeType::baseMetaObject(void) const
- ?tr@QDeclarativeDebugConnection@@SA?AVQString@@PBD0@Z @ 764 NONAME ; class QString QDeclarativeDebugConnection::tr(char const *, char const *)
- ?staticMetaObject@QDeclarativeBinding@@2UQMetaObject@@B @ 765 NONAME ; struct QMetaObject const QDeclarativeBinding::staticMetaObject
- ?qualifier@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 766 NONAME ; class QString QDeclarativeDomImport::qualifier(void) const
+ ?send@QPacketProtocol@@QAE?AVQPacketAutoSend@@XZ @ 759 NONAME ABSENT ; class QPacketAutoSend QPacketProtocol::send(void)
+ ?countChanged@QDeclarativeListModel@@IAEXXZ @ 760 NONAME ABSENT ; void QDeclarativeListModel::countChanged(void)
+ ??0QDeclarativeGridScaledImage@@QAE@PAVQIODevice@@@Z @ 761 NONAME ABSENT ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(class QIODevice *)
+ ??_EQDeclarativeBinding@@UAE@I@Z @ 762 NONAME ABSENT ; QDeclarativeBinding::~QDeclarativeBinding(unsigned int)
+ ?baseMetaObject@QDeclarativeType@@QBEPBUQMetaObject@@XZ @ 763 NONAME ABSENT ; struct QMetaObject const * QDeclarativeType::baseMetaObject(void) const
+ ?tr@QDeclarativeDebugConnection@@SA?AVQString@@PBD0@Z @ 764 NONAME ABSENT ; class QString QDeclarativeDebugConnection::tr(char const *, char const *)
+ ?staticMetaObject@QDeclarativeBinding@@2UQMetaObject@@B @ 765 NONAME ABSENT ; struct QMetaObject const QDeclarativeBinding::staticMetaObject
+ ?qualifier@QDeclarativeDomImport@@QBE?AVQString@@XZ @ 766 NONAME ABSENT ; class QString QDeclarativeDomImport::qualifier(void) const
??0QDeclarativeProperty@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@@Z @ 767 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QString const &, class QDeclarativeContext *)
- ?setSuperClass@QMetaObjectBuilder@@QAEXPBUQMetaObject@@@Z @ 768 NONAME ; void QMetaObjectBuilder::setSuperClass(struct QMetaObject const *)
+ ?setSuperClass@QMetaObjectBuilder@@QAEXPBUQMetaObject@@@Z @ 768 NONAME ABSENT ; void QMetaObjectBuilder::setSuperClass(struct QMetaObject const *)
?contains@QDeclarativePropertyMap@@QBE_NABVQString@@@Z @ 769 NONAME ; bool QDeclarativePropertyMap::contains(class QString const &) const
- ?setGradient@QDeclarativeRectangle@@QAEXPAVQDeclarativeGradient@@@Z @ 770 NONAME ; void QDeclarativeRectangle::setGradient(class QDeclarativeGradient *)
+ ?setGradient@QDeclarativeRectangle@@QAEXPAVQDeclarativeGradient@@@Z @ 770 NONAME ABSENT ; void QDeclarativeRectangle::setGradient(class QDeclarativeGradient *)
?metaObject@QDeclarativeTransition@@UBEPBUQMetaObject@@XZ @ 771 NONAME ; struct QMetaObject const * QDeclarativeTransition::metaObject(void) const
- ?defaultMethod@QDeclarativeMetaType@@SA?AVQMetaMethod@@PBUQMetaObject@@@Z @ 772 NONAME ; class QMetaMethod QDeclarativeMetaType::defaultMethod(struct QMetaObject const *)
+ ?defaultMethod@QDeclarativeMetaType@@SA?AVQMetaMethod@@PBUQMetaObject@@@Z @ 772 NONAME ABSENT ; class QMetaMethod QDeclarativeMetaType::defaultMethod(struct QMetaObject const *)
?tr@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0H@Z @ 773 NONAME ; class QString QDeclarativeExtensionPlugin::tr(char const *, char const *, int)
- ?metaObject@QDeclarativeValueType@@UBEPBUQMetaObject@@XZ @ 774 NONAME ; struct QMetaObject const * QDeclarativeValueType::metaObject(void) const
+ ?metaObject@QDeclarativeValueType@@UBEPBUQMetaObject@@XZ @ 774 NONAME ABSENT ; struct QMetaObject const * QDeclarativeValueType::metaObject(void) const
?hasNotifySignal@QDeclarativeProperty@@QBE_NXZ @ 775 NONAME ; bool QDeclarativeProperty::hasNotifySignal(void) const
- ?create@QDeclarativeType@@QBEXPAPAVQObject@@PAPAXI@Z @ 776 NONAME ; void QDeclarativeType::create(class QObject * *, void * *, unsigned int) const
+ ?create@QDeclarativeType@@QBEXPAPAVQObject@@PAPAXI@Z @ 776 NONAME ABSENT ; void QDeclarativeType::create(class QObject * *, void * *, unsigned int) const
?reversible@QDeclarativeTransition@@QBE_NXZ @ 777 NONAME ; bool QDeclarativeTransition::reversible(void) const
- ?invalidPacket@QPacketProtocol@@IAEXXZ @ 778 NONAME ; void QPacketProtocol::invalidPacket(void)
- ??0QDeclarativeDebugObjectReference@@QAE@H@Z @ 779 NONAME ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(int)
- ?superClass@QMetaObjectBuilder@@QBEPBUQMetaObject@@XZ @ 780 NONAME ; struct QMetaObject const * QMetaObjectBuilder::superClass(void) const
+ ?invalidPacket@QPacketProtocol@@IAEXXZ @ 778 NONAME ABSENT ; void QPacketProtocol::invalidPacket(void)
+ ??0QDeclarativeDebugObjectReference@@QAE@H@Z @ 779 NONAME ABSENT ; QDeclarativeDebugObjectReference::QDeclarativeDebugObjectReference(int)
+ ?superClass@QMetaObjectBuilder@@QBEPBUQMetaObject@@XZ @ 780 NONAME ABSENT ; struct QMetaObject const * QMetaObjectBuilder::superClass(void) const
?isValid@QDeclarativeListReference@@QBE_NXZ @ 781 NONAME ; bool QDeclarativeListReference::isValid(void) const
?source@QDeclarativeView@@QBE?AVQUrl@@XZ @ 782 NONAME ; class QUrl QDeclarativeView::source(void) const
?method@QDeclarativeProperty@@QBE?AVQMetaMethod@@XZ @ 783 NONAME ; class QMetaMethod QDeclarativeProperty::method(void) const
??0QDeclarativeInfo@@QAE@ABV0@@Z @ 784 NONAME ; QDeclarativeInfo::QDeclarativeInfo(class QDeclarativeInfo const &)
- ?deleteFromBinding@QDeclarativeAction@@QAEXXZ @ 785 NONAME ; void QDeclarativeAction::deleteFromBinding(void)
+ ?deleteFromBinding@QDeclarativeAction@@QAEXXZ @ 785 NONAME ABSENT ; void QDeclarativeAction::deleteFromBinding(void)
?setClip@QDeclarativeItem@@QAEX_N@Z @ 786 NONAME ; void QDeclarativeItem::setClip(bool)
??4QDeclarativeCustomParserNode@@QAEAAV0@ABV0@@Z @ 787 NONAME ; class QDeclarativeCustomParserNode & QDeclarativeCustomParserNode::operator=(class QDeclarativeCustomParserNode const &)
- ?color@QDeclarativePen@@QBE?AVQColor@@XZ @ 788 NONAME ; class QColor QDeclarativePen::color(void) const
+ ?color@QDeclarativePen@@QBE?AVQColor@@XZ @ 788 NONAME ABSENT ; class QColor QDeclarativePen::color(void) const
?clear@QDeclarativePixmap@@QAEXXZ @ 789 NONAME ; void QDeclarativePixmap::clear(void)
- ?setDesignable@QMetaPropertyBuilder@@QAEX_N@Z @ 790 NONAME ; void QMetaPropertyBuilder::setDesignable(bool)
- ?setWrapMode@QDeclarativeText@@QAEXW4WrapMode@1@@Z @ 791 NONAME ; void QDeclarativeText::setWrapMode(enum QDeclarativeText::WrapMode)
- ?addClassInfo@QMetaObjectBuilder@@QAEHABVQByteArray@@0@Z @ 792 NONAME ; int QMetaObjectBuilder::addClassInfo(class QByteArray const &, class QByteArray const &)
- ?qt_metacall@QDeclarativePen@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 793 NONAME ; int QDeclarativePen::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?dynamicProperty@QDeclarativeDomObject@@QBE?AVQDeclarativeDomDynamicProperty@@ABVQByteArray@@@Z @ 794 NONAME ; class QDeclarativeDomDynamicProperty QDeclarativeDomObject::dynamicProperty(class QByteArray const &) const
- ??1QDeclarativeDomComponent@@QAE@XZ @ 795 NONAME ; QDeclarativeDomComponent::~QDeclarativeDomComponent(void)
- ?setRight@QDeclarativeScaleGrid@@QAEXH@Z @ 796 NONAME ; void QDeclarativeScaleGrid::setRight(int)
- ?isList@QDeclarativeMetaType@@SA_NH@Z @ 797 NONAME ; bool QDeclarativeMetaType::isList(int)
+ ?setDesignable@QMetaPropertyBuilder@@QAEX_N@Z @ 790 NONAME ABSENT ; void QMetaPropertyBuilder::setDesignable(bool)
+ ?setWrapMode@QDeclarativeText@@QAEXW4WrapMode@1@@Z @ 791 NONAME ABSENT ; void QDeclarativeText::setWrapMode(enum QDeclarativeText::WrapMode)
+ ?addClassInfo@QMetaObjectBuilder@@QAEHABVQByteArray@@0@Z @ 792 NONAME ABSENT ; int QMetaObjectBuilder::addClassInfo(class QByteArray const &, class QByteArray const &)
+ ?qt_metacall@QDeclarativePen@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 793 NONAME ABSENT ; int QDeclarativePen::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?dynamicProperty@QDeclarativeDomObject@@QBE?AVQDeclarativeDomDynamicProperty@@ABVQByteArray@@@Z @ 794 NONAME ABSENT ; class QDeclarativeDomDynamicProperty QDeclarativeDomObject::dynamicProperty(class QByteArray const &) const
+ ??1QDeclarativeDomComponent@@QAE@XZ @ 795 NONAME ABSENT ; QDeclarativeDomComponent::~QDeclarativeDomComponent(void)
+ ?setRight@QDeclarativeScaleGrid@@QAEXH@Z @ 796 NONAME ABSENT ; void QDeclarativeScaleGrid::setRight(int)
+ ?isList@QDeclarativeMetaType@@SA_NH@Z @ 797 NONAME ABSENT ; bool QDeclarativeMetaType::isList(int)
??6QDeclarativeInfo@@QAEAAV0@VQTextStreamManipulator@@@Z @ 798 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QTextStreamManipulator)
?index@QDeclarativeProperty@@QBEHXZ @ 799 NONAME ; int QDeclarativeProperty::index(void) const
- ?d_func@QMetaPropertyBuilder@@ABEPAVQMetaPropertyBuilderPrivate@@XZ @ 800 NONAME ; class QMetaPropertyBuilderPrivate * QMetaPropertyBuilder::d_func(void) const
- ?tr@QDeclarativeScaleGrid@@SA?AVQString@@PBD0H@Z @ 801 NONAME ; class QString QDeclarativeScaleGrid::tr(char const *, char const *, int)
- ?setEnabled@QDeclarativeAbstractBinding@@QAEX_N@Z @ 802 NONAME ; void QDeclarativeAbstractBinding::setEnabled(bool)
- ?returnType@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 803 NONAME ; class QByteArray QMetaMethodBuilder::returnType(void) const
- ?propertyValueSourceCast@QDeclarativeType@@QBEHXZ @ 804 NONAME ; int QDeclarativeType::propertyValueSourceCast(void) const
- ?mousePressEvent@QDeclarativeText@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 805 NONAME ; void QDeclarativeText::mousePressEvent(class QGraphicsSceneMouseEvent *)
- ?trUtf8@QDeclarativeText@@SA?AVQString@@PBD0@Z @ 806 NONAME ; class QString QDeclarativeText::trUtf8(char const *, char const *)
- ?constructor@QMetaObjectBuilder@@QBE?AVQMetaMethodBuilder@@H@Z @ 807 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::constructor(int) const
- ?defaultProperty@QDeclarativeMetaType@@SA?AVQMetaProperty@@PAVQObject@@@Z @ 808 NONAME ; class QMetaProperty QDeclarativeMetaType::defaultProperty(class QObject *)
+ ?d_func@QMetaPropertyBuilder@@ABEPAVQMetaPropertyBuilderPrivate@@XZ @ 800 NONAME ABSENT ; class QMetaPropertyBuilderPrivate * QMetaPropertyBuilder::d_func(void) const
+ ?tr@QDeclarativeScaleGrid@@SA?AVQString@@PBD0H@Z @ 801 NONAME ABSENT ; class QString QDeclarativeScaleGrid::tr(char const *, char const *, int)
+ ?setEnabled@QDeclarativeAbstractBinding@@QAEX_N@Z @ 802 NONAME ABSENT ; void QDeclarativeAbstractBinding::setEnabled(bool)
+ ?returnType@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 803 NONAME ABSENT ; class QByteArray QMetaMethodBuilder::returnType(void) const
+ ?propertyValueSourceCast@QDeclarativeType@@QBEHXZ @ 804 NONAME ABSENT ; int QDeclarativeType::propertyValueSourceCast(void) const
+ ?mousePressEvent@QDeclarativeText@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 805 NONAME ABSENT ; void QDeclarativeText::mousePressEvent(class QGraphicsSceneMouseEvent *)
+ ?trUtf8@QDeclarativeText@@SA?AVQString@@PBD0@Z @ 806 NONAME ABSENT ; class QString QDeclarativeText::trUtf8(char const *, char const *)
+ ?constructor@QMetaObjectBuilder@@QBE?AVQMetaMethodBuilder@@H@Z @ 807 NONAME ABSENT ; class QMetaMethodBuilder QMetaObjectBuilder::constructor(int) const
+ ?defaultProperty@QDeclarativeMetaType@@SA?AVQMetaProperty@@PAVQObject@@@Z @ 808 NONAME ABSENT ; class QMetaProperty QDeclarativeMetaType::defaultProperty(class QObject *)
?resetHeight@QDeclarativeItemPrivate@@UAEXXZ @ 809 NONAME ; void QDeclarativeItemPrivate::resetHeight(void)
- ?qt_metacast@QDeclarativeDebugPropertyWatch@@UAEPAXPBD@Z @ 810 NONAME ; void * QDeclarativeDebugPropertyWatch::qt_metacast(char const *)
+ ?qt_metacast@QDeclarativeDebugPropertyWatch@@UAEPAXPBD@Z @ 810 NONAME ABSENT ; void * QDeclarativeDebugPropertyWatch::qt_metacast(char const *)
??1QDeclarativeStateOperation@@UAE@XZ @ 811 NONAME ; QDeclarativeStateOperation::~QDeclarativeStateOperation(void)
- ??_EQDeclarativeDebugQuery@@UAE@I@Z @ 812 NONAME ; QDeclarativeDebugQuery::~QDeclarativeDebugQuery(unsigned int)
- ?update@QDeclarativeAbstractBinding@@QAEXXZ @ 813 NONAME ; void QDeclarativeAbstractBinding::update(void)
- ?tr@QDeclarativeBehavior@@SA?AVQString@@PBD0H@Z @ 814 NONAME ; class QString QDeclarativeBehavior::tr(char const *, char const *, int)
- ?read@QPacketProtocol@@QAE?AVQPacket@@XZ @ 815 NONAME ; class QPacket QPacketProtocol::read(void)
+ ??_EQDeclarativeDebugQuery@@UAE@I@Z @ 812 NONAME ABSENT ; QDeclarativeDebugQuery::~QDeclarativeDebugQuery(unsigned int)
+ ?update@QDeclarativeAbstractBinding@@QAEXXZ @ 813 NONAME ABSENT ; void QDeclarativeAbstractBinding::update(void)
+ ?tr@QDeclarativeBehavior@@SA?AVQString@@PBD0H@Z @ 814 NONAME ABSENT ; class QString QDeclarativeBehavior::tr(char const *, char const *, int)
+ ?read@QPacketProtocol@@QAE?AVQPacket@@XZ @ 815 NONAME ABSENT ; class QPacket QPacketProtocol::read(void)
?setParentItem@QDeclarativeItem@@QAEXPAV1@@Z @ 816 NONAME ; void QDeclarativeItem::setParentItem(class QDeclarativeItem *)
?qmlAttachedProperties@QDeclarativeComponent@@SAPAVQDeclarativeComponentAttached@@PAVQObject@@@Z @ 817 NONAME ; class QDeclarativeComponentAttached * QDeclarativeComponent::qmlAttachedProperties(class QObject *)
??0QDeclarativeView@@QAE@ABVQUrl@@PAVQWidget@@@Z @ 818 NONAME ; QDeclarativeView::QDeclarativeView(class QUrl const &, class QWidget *)
?valueChanged@QDeclarativeExpression@@IAEXXZ @ 819 NONAME ; void QDeclarativeExpression::valueChanged(void)
??_EQDeclarativeView@@UAE@I@Z @ 820 NONAME ; QDeclarativeView::~QDeclarativeView(unsigned int)
?trUtf8@QDeclarativeStateGroup@@SA?AVQString@@PBD0H@Z @ 821 NONAME ; class QString QDeclarativeStateGroup::trUtf8(char const *, char const *, int)
- ?tag@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 822 NONAME ; class QByteArray QMetaMethodBuilder::tag(void) const
- ?getStaticMetaObject@QPacketProtocol@@SAABUQMetaObject@@XZ @ 823 NONAME ; struct QMetaObject const & QPacketProtocol::getStaticMetaObject(void)
+ ?tag@QMetaMethodBuilder@@QBE?AVQByteArray@@XZ @ 822 NONAME ABSENT ; class QByteArray QMetaMethodBuilder::tag(void) const
+ ?getStaticMetaObject@QPacketProtocol@@SAABUQMetaObject@@XZ @ 823 NONAME ABSENT ; struct QMetaObject const & QPacketProtocol::getStaticMetaObject(void)
?setContext@QDeclarativeScriptString@@QAEXPAVQDeclarativeContext@@@Z @ 824 NONAME ; void QDeclarativeScriptString::setContext(class QDeclarativeContext *)
?addImageProvider@QDeclarativeEngine@@QAEXABVQString@@PAVQDeclarativeImageProvider@@@Z @ 825 NONAME ; void QDeclarativeEngine::addImageProvider(class QString const &, class QDeclarativeImageProvider *)
?d_func@QDeclarativeStateGroup@@ABEPBVQDeclarativeStateGroupPrivate@@XZ @ 826 NONAME ; class QDeclarativeStateGroupPrivate const * QDeclarativeStateGroup::d_func(void) const
?stateChanged@QDeclarativeItem@@IAEXABVQString@@@Z @ 827 NONAME ; void QDeclarativeItem::stateChanged(class QString const &)
- ?horizontalAlignmentChanged@QDeclarativeText@@IAEXW4HAlignment@1@@Z @ 828 NONAME ; void QDeclarativeText::horizontalAlignmentChanged(enum QDeclarativeText::HAlignment)
- ??5@YAAAVQDataStream@@AAV0@AAUQDeclarativeObjectData@QDeclarativeEngineDebugServer@@@Z @ 829 NONAME ; class QDataStream & operator>>(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectData &)
- ?setDynamic@QMetaPropertyBuilder@@QAEX_N@Z @ 830 NONAME ; void QMetaPropertyBuilder::setDynamic(bool)
+ ?horizontalAlignmentChanged@QDeclarativeText@@IAEXW4HAlignment@1@@Z @ 828 NONAME ABSENT ; void QDeclarativeText::horizontalAlignmentChanged(enum QDeclarativeText::HAlignment)
+ ??5@YAAAVQDataStream@@AAV0@AAUQDeclarativeObjectData@QDeclarativeEngineDebugServer@@@Z @ 829 NONAME ABSENT ; class QDataStream & operator>>(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectData &)
+ ?setDynamic@QMetaPropertyBuilder@@QAEX_N@Z @ 830 NONAME ABSENT ; void QMetaPropertyBuilder::setDynamic(bool)
?pixmap@QDeclarativePixmap@@QBEABVQPixmap@@XZ @ 831 NONAME ; class QPixmap const & QDeclarativePixmap::pixmap(void) const
?d_func@QDeclarativeEngine@@ABEPBVQDeclarativeEnginePrivate@@XZ @ 832 NONAME ; class QDeclarativeEnginePrivate const * QDeclarativeEngine::d_func(void) const
- ?toBinding@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueBinding@@XZ @ 833 NONAME ; class QDeclarativeDomValueBinding QDeclarativeDomValue::toBinding(void) const
+ ?toBinding@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueBinding@@XZ @ 833 NONAME ABSENT ; class QDeclarativeDomValueBinding QDeclarativeDomValue::toBinding(void) const
?removeImageProvider@QDeclarativeEngine@@QAEXABVQString@@@Z @ 834 NONAME ; void QDeclarativeEngine::removeImageProvider(class QString const &)
- ?horizontalCenterOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 835 NONAME ; void QDeclarativeAnchors::horizontalCenterOffsetChanged(void)
+ ?horizontalCenterOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 835 NONAME ABSENT ; void QDeclarativeAnchors::horizontalCenterOffsetChanged(void)
?tr@QDeclarativeContext@@SA?AVQString@@PBD0@Z @ 836 NONAME ; class QString QDeclarativeContext::tr(char const *, char const *)
?d_func@QDeclarativeItem@@ABEPBVQDeclarativeItemPrivate@@XZ @ 837 NONAME ; class QDeclarativeItemPrivate const * QDeclarativeItem::d_func(void) const
- ?isUser@QMetaPropertyBuilder@@QBE_NXZ @ 838 NONAME ; bool QMetaPropertyBuilder::isUser(void) const
- ?doUpdate@QDeclarativeRectangle@@AAEXXZ @ 839 NONAME ; void QDeclarativeRectangle::doUpdate(void)
+ ?isUser@QMetaPropertyBuilder@@QBE_NXZ @ 838 NONAME ABSENT ; bool QMetaPropertyBuilder::isUser(void) const
+ ?doUpdate@QDeclarativeRectangle@@AAEXXZ @ 839 NONAME ABSENT ; void QDeclarativeRectangle::doUpdate(void)
?qmlExecuteDeferred@@YAXPAVQObject@@@Z @ 840 NONAME ; void qmlExecuteDeferred(class QObject *)
?setImplicitHeight@QDeclarativeItem@@IAEXM@Z @ 841 NONAME ; void QDeclarativeItem::setImplicitHeight(float)
- ?horizontalCenterOffset@QDeclarativeAnchors@@QBEMXZ @ 842 NONAME ; float QDeclarativeAnchors::horizontalCenterOffset(void) const
- ?resetRight@QDeclarativeAnchors@@QAEXXZ @ 843 NONAME ; void QDeclarativeAnchors::resetRight(void)
+ ?horizontalCenterOffset@QDeclarativeAnchors@@QBEMXZ @ 842 NONAME ABSENT ; float QDeclarativeAnchors::horizontalCenterOffset(void) const
+ ?resetRight@QDeclarativeAnchors@@QAEXXZ @ 843 NONAME ABSENT ; void QDeclarativeAnchors::resetRight(void)
??6QDeclarativeInfo@@QAEAAV0@J@Z @ 844 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(long)
?isReady@QDeclarativeComponent@@QBE_NXZ @ 845 NONAME ; bool QDeclarativeComponent::isReady(void) const
- ??4QDeclarativeDebugObjectReference@@QAEAAV0@ABV0@@Z @ 846 NONAME ; class QDeclarativeDebugObjectReference & QDeclarativeDebugObjectReference::operator=(class QDeclarativeDebugObjectReference const &)
- ??1QDeclarativeDomDynamicProperty@@QAE@XZ @ 847 NONAME ; QDeclarativeDomDynamicProperty::~QDeclarativeDomDynamicProperty(void)
- ??1QDeclarativeBehavior@@UAE@XZ @ 848 NONAME ; QDeclarativeBehavior::~QDeclarativeBehavior(void)
+ ??4QDeclarativeDebugObjectReference@@QAEAAV0@ABV0@@Z @ 846 NONAME ABSENT ; class QDeclarativeDebugObjectReference & QDeclarativeDebugObjectReference::operator=(class QDeclarativeDebugObjectReference const &)
+ ??1QDeclarativeDomDynamicProperty@@QAE@XZ @ 847 NONAME ABSENT ; QDeclarativeDomDynamicProperty::~QDeclarativeDomDynamicProperty(void)
+ ??1QDeclarativeBehavior@@UAE@XZ @ 848 NONAME ABSENT ; QDeclarativeBehavior::~QDeclarativeBehavior(void)
?qmlInfo@@YA?AVQDeclarativeInfo@@PBVQObject@@@Z @ 849 NONAME ; class QDeclarativeInfo qmlInfo(class QObject const *)
- ?qt_metacall@QDeclarativeDebugClient@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 850 NONAME ; int QDeclarativeDebugClient::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?d_func@QDeclarativeDebugService@@ABEPBVQDeclarativeDebugServicePrivate@@XZ @ 851 NONAME ; class QDeclarativeDebugServicePrivate const * QDeclarativeDebugService::d_func(void) const
- ??1QDeclarativeDebugQuery@@UAE@XZ @ 852 NONAME ; QDeclarativeDebugQuery::~QDeclarativeDebugQuery(void)
+ ?qt_metacall@QDeclarativeDebugClient@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 850 NONAME ABSENT ; int QDeclarativeDebugClient::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?d_func@QDeclarativeDebugService@@ABEPBVQDeclarativeDebugServicePrivate@@XZ @ 851 NONAME ABSENT ; class QDeclarativeDebugServicePrivate const * QDeclarativeDebugService::d_func(void) const
+ ??1QDeclarativeDebugQuery@@UAE@XZ @ 852 NONAME ABSENT ; QDeclarativeDebugQuery::~QDeclarativeDebugQuery(void)
?data_append@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQObject@@@@PAVQObject@@@Z @ 853 NONAME ; void QDeclarativeItemPrivate::data_append(class QDeclarativeListProperty<class QObject> *, class QObject *)
?tr@QDeclarativeState@@SA?AVQString@@PBD0@Z @ 854 NONAME ; class QString QDeclarativeState::tr(char const *, char const *)
- ?trUtf8@QDeclarativeEngineDebug@@SA?AVQString@@PBD0H@Z @ 855 NONAME ; class QString QDeclarativeEngineDebug::trUtf8(char const *, char const *, int)
- ?createProperty@QDeclarativeOpenMetaObject@@MAEHPBD0@Z @ 856 NONAME ; int QDeclarativeOpenMetaObject::createProperty(char const *, char const *)
- ?bottomMargin@QDeclarativeAnchors@@QBEMXZ @ 857 NONAME ; float QDeclarativeAnchors::bottomMargin(void) const
+ ?trUtf8@QDeclarativeEngineDebug@@SA?AVQString@@PBD0H@Z @ 855 NONAME ABSENT ; class QString QDeclarativeEngineDebug::trUtf8(char const *, char const *, int)
+ ?createProperty@QDeclarativeOpenMetaObject@@MAEHPBD0@Z @ 856 NONAME ABSENT ; int QDeclarativeOpenMetaObject::createProperty(char const *, char const *)
+ ?bottomMargin@QDeclarativeAnchors@@QBEMXZ @ 857 NONAME ABSENT ; float QDeclarativeAnchors::bottomMargin(void) const
?q_func@QDeclarativeItemPrivate@@AAEPAVQDeclarativeItem@@XZ @ 858 NONAME ; class QDeclarativeItem * QDeclarativeItemPrivate::q_func(void)
- ?trUtf8@QDeclarativeScaleGrid@@SA?AVQString@@PBD0@Z @ 859 NONAME ; class QString QDeclarativeScaleGrid::trUtf8(char const *, char const *)
- ??1QDeclarativeDomList@@QAE@XZ @ 860 NONAME ; QDeclarativeDomList::~QDeclarativeDomList(void)
- ??0QDeclarativeOpenMetaObjectType@@QAE@PBUQMetaObject@@PAVQDeclarativeEngine@@@Z @ 861 NONAME ; QDeclarativeOpenMetaObjectType::QDeclarativeOpenMetaObjectType(struct QMetaObject const *, class QDeclarativeEngine *)
- ?removeProperty@QMetaObjectBuilder@@QAEXH@Z @ 862 NONAME ; void QMetaObjectBuilder::removeProperty(int)
- ?staticMetaObject@QDeclarativeScaleGrid@@2UQMetaObject@@B @ 863 NONAME ; struct QMetaObject const QDeclarativeScaleGrid::staticMetaObject
- ??0QDeclarativeDomObject@@QAE@ABV0@@Z @ 864 NONAME ; QDeclarativeDomObject::QDeclarativeDomObject(class QDeclarativeDomObject const &)
- ?qt_metacast@QDeclarativeDebugWatch@@UAEPAXPBD@Z @ 865 NONAME ; void * QDeclarativeDebugWatch::qt_metacast(char const *)
+ ?trUtf8@QDeclarativeScaleGrid@@SA?AVQString@@PBD0@Z @ 859 NONAME ABSENT ; class QString QDeclarativeScaleGrid::trUtf8(char const *, char const *)
+ ??1QDeclarativeDomList@@QAE@XZ @ 860 NONAME ABSENT ; QDeclarativeDomList::~QDeclarativeDomList(void)
+ ??0QDeclarativeOpenMetaObjectType@@QAE@PBUQMetaObject@@PAVQDeclarativeEngine@@@Z @ 861 NONAME ABSENT ; QDeclarativeOpenMetaObjectType::QDeclarativeOpenMetaObjectType(struct QMetaObject const *, class QDeclarativeEngine *)
+ ?removeProperty@QMetaObjectBuilder@@QAEXH@Z @ 862 NONAME ABSENT ; void QMetaObjectBuilder::removeProperty(int)
+ ?staticMetaObject@QDeclarativeScaleGrid@@2UQMetaObject@@B @ 863 NONAME ABSENT ; struct QMetaObject const QDeclarativeScaleGrid::staticMetaObject
+ ??0QDeclarativeDomObject@@QAE@ABV0@@Z @ 864 NONAME ABSENT ; QDeclarativeDomObject::QDeclarativeDomObject(class QDeclarativeDomObject const &)
+ ?qt_metacast@QDeclarativeDebugWatch@@UAEPAXPBD@Z @ 865 NONAME ABSENT ; void * QDeclarativeDebugWatch::qt_metacast(char const *)
?implicitHeight@QDeclarativeItem@@QBEMXZ @ 866 NONAME ; float QDeclarativeItem::implicitHeight(void) const
- ?trUtf8@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0@Z @ 867 NONAME ; class QString QDeclarativeDebugPropertyWatch::trUtf8(char const *, char const *)
+ ?trUtf8@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0@Z @ 867 NONAME ABSENT ; class QString QDeclarativeDebugPropertyWatch::trUtf8(char const *, char const *)
??6@YA?AVQDebug@@V0@ABVQDeclarativeError@@@Z @ 868 NONAME ; class QDebug operator<<(class QDebug, class QDeclarativeError const &)
?setContextProperty@QDeclarativeContext@@QAEXABVQString@@ABVQVariant@@@Z @ 869 NONAME ; void QDeclarativeContext::setContextProperty(class QString const &, class QVariant const &)
- ?imports@QDeclarativeDomDocument@@QBE?AV?$QList@VQDeclarativeDomImport@@@@XZ @ 870 NONAME ; class QList<class QDeclarativeDomImport> QDeclarativeDomDocument::imports(void) const
+ ?imports@QDeclarativeDomDocument@@QBE?AV?$QList@VQDeclarativeDomImport@@@@XZ @ 870 NONAME ABSENT ; class QList<class QDeclarativeDomImport> QDeclarativeDomDocument::imports(void) const
?tr@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0@Z @ 871 NONAME ; class QString QDeclarativeExtensionPlugin::tr(char const *, char const *)
- ?getStaticMetaObject@QDeclarativePen@@SAABUQMetaObject@@XZ @ 872 NONAME ; struct QMetaObject const & QDeclarativePen::getStaticMetaObject(void)
- ?penChanged@QDeclarativePen@@IAEXXZ @ 873 NONAME ; void QDeclarativePen::penChanged(void)
- ?propertyTypeName@QDeclarativeDomDynamicProperty@@QBE?AVQByteArray@@XZ @ 874 NONAME ; class QByteArray QDeclarativeDomDynamicProperty::propertyTypeName(void) const
- ?position@QDeclarativeDomValue@@QBEHXZ @ 875 NONAME ; int QDeclarativeDomValue::position(void) const
+ ?getStaticMetaObject@QDeclarativePen@@SAABUQMetaObject@@XZ @ 872 NONAME ABSENT ; struct QMetaObject const & QDeclarativePen::getStaticMetaObject(void)
+ ?penChanged@QDeclarativePen@@IAEXXZ @ 873 NONAME ABSENT ; void QDeclarativePen::penChanged(void)
+ ?propertyTypeName@QDeclarativeDomDynamicProperty@@QBE?AVQByteArray@@XZ @ 874 NONAME ABSENT ; class QByteArray QDeclarativeDomDynamicProperty::propertyTypeName(void) const
+ ?position@QDeclarativeDomValue@@QBEHXZ @ 875 NONAME ABSENT ; int QDeclarativeDomValue::position(void) const
?setWidth@QDeclarativeItemPrivate@@UAEXM@Z @ 876 NONAME ; void QDeclarativeItemPrivate::setWidth(float)
- ?staticMetaObject@QDeclarativeDebugWatch@@2UQMetaObject@@B @ 877 NONAME ; struct QMetaObject const QDeclarativeDebugWatch::staticMetaObject
+ ?staticMetaObject@QDeclarativeDebugWatch@@2UQMetaObject@@B @ 877 NONAME ABSENT ; struct QMetaObject const QDeclarativeDebugWatch::staticMetaObject
??0QDeclarativePixmap@@QAE@PAVQDeclarativeEngine@@ABVQUrl@@@Z @ 878 NONAME ; QDeclarativePixmap::QDeclarativePixmap(class QDeclarativeEngine *, class QUrl const &)
??_EQDeclarativeContext@@UAE@I@Z @ 879 NONAME ; QDeclarativeContext::~QDeclarativeContext(unsigned int)
- ?staticMetaObject@QDeclarativeDebugQuery@@2UQMetaObject@@B @ 880 NONAME ; struct QMetaObject const QDeclarativeDebugQuery::staticMetaObject
+ ?staticMetaObject@QDeclarativeDebugQuery@@2UQMetaObject@@B @ 880 NONAME ABSENT ; struct QMetaObject const QDeclarativeDebugQuery::staticMetaObject
??0QDeclarativeExtensionPlugin@@QAE@PAVQObject@@@Z @ 881 NONAME ; QDeclarativeExtensionPlugin::QDeclarativeExtensionPlugin(class QObject *)
- ?resetBindingForObject@QDeclarativeEngineDebug@@QAE_NHABVQString@@@Z @ 882 NONAME ; bool QDeclarativeEngineDebug::resetBindingForObject(int, class QString const &)
- ??_EQDeclarativeOpenMetaObject@@UAE@I@Z @ 883 NONAME ; QDeclarativeOpenMetaObject::~QDeclarativeOpenMetaObject(unsigned int)
+ ?resetBindingForObject@QDeclarativeEngineDebug@@QAE_NHABVQString@@@Z @ 882 NONAME ABSENT ; bool QDeclarativeEngineDebug::resetBindingForObject(int, class QString const &)
+ ??_EQDeclarativeOpenMetaObject@@UAE@I@Z @ 883 NONAME ABSENT ; QDeclarativeOpenMetaObject::~QDeclarativeOpenMetaObject(unsigned int)
?states@QDeclarativeItemPrivate@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeState@@@@XZ @ 884 NONAME ; class QDeclarativeListProperty<class QDeclarativeState> QDeclarativeItemPrivate::states(void)
- ?rawMetaObjectForType@QDeclarativePropertyPrivate@@SAPBUQMetaObject@@PAVQDeclarativeEnginePrivate@@H@Z @ 885 NONAME ; struct QMetaObject const * QDeclarativePropertyPrivate::rawMetaObjectForType(class QDeclarativeEnginePrivate *, int)
+ ?rawMetaObjectForType@QDeclarativePropertyPrivate@@SAPBUQMetaObject@@PAVQDeclarativeEnginePrivate@@H@Z @ 885 NONAME ABSENT ; struct QMetaObject const * QDeclarativePropertyPrivate::rawMetaObjectForType(class QDeclarativeEnginePrivate *, int)
?setHeight@QDeclarativeItem@@QAEXM@Z @ 886 NONAME ; void QDeclarativeItem::setHeight(float)
- ??0QDeclarativeDomDocument@@QAE@ABV0@@Z @ 887 NONAME ; QDeclarativeDomDocument::QDeclarativeDomDocument(class QDeclarativeDomDocument const &)
- ?position@QDeclarativeDomDynamicProperty@@QBEHXZ @ 888 NONAME ; int QDeclarativeDomDynamicProperty::position(void) const
+ ??0QDeclarativeDomDocument@@QAE@ABV0@@Z @ 887 NONAME ABSENT ; QDeclarativeDomDocument::QDeclarativeDomDocument(class QDeclarativeDomDocument const &)
+ ?position@QDeclarativeDomDynamicProperty@@QBEHXZ @ 888 NONAME ABSENT ; int QDeclarativeDomDynamicProperty::position(void) const
?animations@QDeclarativeTransition@@QAE?AV?$QDeclarativeListProperty@VQDeclarativeAbstractAnimation@@@@XZ @ 889 NONAME ; class QDeclarativeListProperty<class QDeclarativeAbstractAnimation> QDeclarativeTransition::animations(void)
?tr@QDeclarativeExpression@@SA?AVQString@@PBD0H@Z @ 890 NONAME ; class QString QDeclarativeExpression::tr(char const *, char const *, int)
- ??_EQMetaObjectBuilder@@UAE@I@Z @ 891 NONAME ; QMetaObjectBuilder::~QMetaObjectBuilder(unsigned int)
- ?propertyName@QDeclarativeDomProperty@@QBE?AVQByteArray@@XZ @ 892 NONAME ; class QByteArray QDeclarativeDomProperty::propertyName(void) const
- ?setBindingForObject@QDeclarativeEngineDebug@@QAE_NHABVQString@@ABVQVariant@@_N@Z @ 893 NONAME ; bool QDeclarativeEngineDebug::setBindingForObject(int, class QString const &, class QVariant const &, bool)
+ ??_EQMetaObjectBuilder@@UAE@I@Z @ 891 NONAME ABSENT ; QMetaObjectBuilder::~QMetaObjectBuilder(unsigned int)
+ ?propertyName@QDeclarativeDomProperty@@QBE?AVQByteArray@@XZ @ 892 NONAME ABSENT ; class QByteArray QDeclarativeDomProperty::propertyName(void) const
+ ?setBindingForObject@QDeclarativeEngineDebug@@QAE_NHABVQString@@ABVQVariant@@_N@Z @ 893 NONAME ABSENT ; bool QDeclarativeEngineDebug::setBindingForObject(int, class QString const &, class QVariant const &, bool)
??0QDeclarativeView@@QAE@PAVQWidget@@@Z @ 894 NONAME ; QDeclarativeView::QDeclarativeView(class QWidget *)
?createObject@QDeclarativeComponent@@IAE?AVQScriptValue@@PAVQObject@@@Z @ 895 NONAME ; class QScriptValue QDeclarativeComponent::createObject(class QObject *)
- ?name@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 896 NONAME ; class QString QDeclarativeDebugPropertyReference::name(void) const
- ?object@QDeclarativeDomValueValueSource@@QBE?AVQDeclarativeDomObject@@XZ @ 897 NONAME ; class QDeclarativeDomObject QDeclarativeDomValueValueSource::object(void) const
- ??0QMetaPropertyBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 898 NONAME ; QMetaPropertyBuilder::QMetaPropertyBuilder(class QMetaObjectBuilder const *, int)
- ?d_func@QDeclarativeEngineDebug@@ABEPBVQDeclarativeEngineDebugPrivate@@XZ @ 899 NONAME ; class QDeclarativeEngineDebugPrivate const * QDeclarativeEngineDebug::d_func(void) const
- ?d_func@QDeclarativeBinding@@AAEPAVQDeclarativeBindingPrivate@@XZ @ 900 NONAME ; class QDeclarativeBindingPrivate * QDeclarativeBinding::d_func(void)
- ?trUtf8@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0H@Z @ 901 NONAME ; class QString QDeclarativeDebugExpressionQuery::trUtf8(char const *, char const *, int)
- ?attachedPropertiesFuncId@QDeclarativeMetaType@@SAHPBUQMetaObject@@@Z @ 902 NONAME ; int QDeclarativeMetaType::attachedPropertiesFuncId(struct QMetaObject const *)
+ ?name@QDeclarativeDebugPropertyReference@@QBE?AVQString@@XZ @ 896 NONAME ABSENT ; class QString QDeclarativeDebugPropertyReference::name(void) const
+ ?object@QDeclarativeDomValueValueSource@@QBE?AVQDeclarativeDomObject@@XZ @ 897 NONAME ABSENT ; class QDeclarativeDomObject QDeclarativeDomValueValueSource::object(void) const
+ ??0QMetaPropertyBuilder@@AAE@PBVQMetaObjectBuilder@@H@Z @ 898 NONAME ABSENT ; QMetaPropertyBuilder::QMetaPropertyBuilder(class QMetaObjectBuilder const *, int)
+ ?d_func@QDeclarativeEngineDebug@@ABEPBVQDeclarativeEngineDebugPrivate@@XZ @ 899 NONAME ABSENT ; class QDeclarativeEngineDebugPrivate const * QDeclarativeEngineDebug::d_func(void) const
+ ?d_func@QDeclarativeBinding@@AAEPAVQDeclarativeBindingPrivate@@XZ @ 900 NONAME ABSENT ; class QDeclarativeBindingPrivate * QDeclarativeBinding::d_func(void)
+ ?trUtf8@QDeclarativeDebugExpressionQuery@@SA?AVQString@@PBD0H@Z @ 901 NONAME ABSENT ; class QString QDeclarativeDebugExpressionQuery::trUtf8(char const *, char const *, int)
+ ?attachedPropertiesFuncId@QDeclarativeMetaType@@SAHPBUQMetaObject@@@Z @ 902 NONAME ABSENT ; int QDeclarativeMetaType::attachedPropertiesFuncId(struct QMetaObject const *)
?horizontalCenter@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 903 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::horizontalCenter(void) const
?isNull@QDeclarativeComponent@@QBE_NXZ @ 904 NONAME ; bool QDeclarativeComponent::isNull(void) const
- ?d_func@QDeclarativeRectangle@@ABEPBVQDeclarativeRectanglePrivate@@XZ @ 905 NONAME ; class QDeclarativeRectanglePrivate const * QDeclarativeRectangle::d_func(void) const
- ?setRightMargin@QDeclarativeAnchors@@QAEXM@Z @ 906 NONAME ; void QDeclarativeAnchors::setRightMargin(float)
- ?className@QMetaObjectBuilder@@QBE?AVQByteArray@@XZ @ 907 NONAME ; class QByteArray QMetaObjectBuilder::className(void) const
+ ?d_func@QDeclarativeRectangle@@ABEPBVQDeclarativeRectanglePrivate@@XZ @ 905 NONAME ABSENT ; class QDeclarativeRectanglePrivate const * QDeclarativeRectangle::d_func(void) const
+ ?setRightMargin@QDeclarativeAnchors@@QAEXM@Z @ 906 NONAME ABSENT ; void QDeclarativeAnchors::setRightMargin(float)
+ ?className@QMetaObjectBuilder@@QBE?AVQByteArray@@XZ @ 907 NONAME ABSENT ; class QByteArray QMetaObjectBuilder::className(void) const
??0QDeclarativeState@@QAE@PAVQObject@@@Z @ 908 NONAME ; QDeclarativeState::QDeclarativeState(class QObject *)
- ?contexts@QDeclarativeDebugContextReference@@QBE?AV?$QList@VQDeclarativeDebugContextReference@@@@XZ @ 909 NONAME ; class QList<class QDeclarativeDebugContextReference> QDeclarativeDebugContextReference::contexts(void) const
+ ?contexts@QDeclarativeDebugContextReference@@QBE?AV?$QList@VQDeclarativeDebugContextReference@@@@XZ @ 909 NONAME ABSENT ; class QList<class QDeclarativeDebugContextReference> QDeclarativeDebugContextReference::contexts(void) const
?keyReleaseEvent@QDeclarativeItem@@MAEXPAVQKeyEvent@@@Z @ 910 NONAME ; void QDeclarativeItem::keyReleaseEvent(class QKeyEvent *)
- ?qt_metacall@QDeclarativeAnchors@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 911 NONAME ; int QDeclarativeAnchors::qt_metacall(enum QMetaObject::Call, int, void * *)
- ??0QDeclarativeAnchors@@QAE@PAVQGraphicsObject@@PAVQObject@@@Z @ 912 NONAME ; QDeclarativeAnchors::QDeclarativeAnchors(class QGraphicsObject *, class QObject *)
+ ?qt_metacall@QDeclarativeAnchors@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 911 NONAME ABSENT ; int QDeclarativeAnchors::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ??0QDeclarativeAnchors@@QAE@PAVQGraphicsObject@@PAVQObject@@@Z @ 912 NONAME ABSENT ; QDeclarativeAnchors::QDeclarativeAnchors(class QGraphicsObject *, class QObject *)
??4QDeclarativeScriptString@@QAEAAV0@ABV0@@Z @ 913 NONAME ; class QDeclarativeScriptString & QDeclarativeScriptString::operator=(class QDeclarativeScriptString const &)
- ??6@YAAAVQDataStream@@AAV0@ABUQDeclarativeObjectProperty@QDeclarativeEngineDebugServer@@@Z @ 914 NONAME ; class QDataStream & operator<<(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectProperty const &)
- ?hasNotifySignal@QMetaPropertyBuilder@@QBE_NXZ @ 915 NONAME ; bool QMetaPropertyBuilder::hasNotifySignal(void) const
- ??4QDeclarativeDomImport@@QAEAAV0@ABV0@@Z @ 916 NONAME ; class QDeclarativeDomImport & QDeclarativeDomImport::operator=(class QDeclarativeDomImport const &)
- ?resetFill@QDeclarativeAnchors@@QAEXXZ @ 917 NONAME ; void QDeclarativeAnchors::resetFill(void)
+ ??6@YAAAVQDataStream@@AAV0@ABUQDeclarativeObjectProperty@QDeclarativeEngineDebugServer@@@Z @ 914 NONAME ABSENT ; class QDataStream & operator<<(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectProperty const &)
+ ?hasNotifySignal@QMetaPropertyBuilder@@QBE_NXZ @ 915 NONAME ABSENT ; bool QMetaPropertyBuilder::hasNotifySignal(void) const
+ ??4QDeclarativeDomImport@@QAEAAV0@ABV0@@Z @ 916 NONAME ABSENT ; class QDeclarativeDomImport & QDeclarativeDomImport::operator=(class QDeclarativeDomImport const &)
+ ?resetFill@QDeclarativeAnchors@@QAEXXZ @ 917 NONAME ABSENT ; void QDeclarativeAnchors::resetFill(void)
??6QDeclarativeInfo@@QAEAAV0@_K@Z @ 918 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned long long)
?d_func@QDeclarativeComponent@@ABEPBVQDeclarativeComponentPrivate@@XZ @ 919 NONAME ; class QDeclarativeComponentPrivate const * QDeclarativeComponent::d_func(void) const
- ??0QDeclarativeBehavior@@QAE@PAVQObject@@@Z @ 920 NONAME ; QDeclarativeBehavior::QDeclarativeBehavior(class QObject *)
- ?length@QDeclarativeDomValue@@QBEHXZ @ 921 NONAME ; int QDeclarativeDomValue::length(void) const
- ?trUtf8@QDeclarativeBinding@@SA?AVQString@@PBD0H@Z @ 922 NONAME ; class QString QDeclarativeBinding::trUtf8(char const *, char const *, int)
- ??0QDeclarativeType@@AAE@HABURegisterInterface@QDeclarativePrivate@@@Z @ 923 NONAME ; QDeclarativeType::QDeclarativeType(int, struct QDeclarativePrivate::RegisterInterface const &)
+ ??0QDeclarativeBehavior@@QAE@PAVQObject@@@Z @ 920 NONAME ABSENT ; QDeclarativeBehavior::QDeclarativeBehavior(class QObject *)
+ ?length@QDeclarativeDomValue@@QBEHXZ @ 921 NONAME ABSENT ; int QDeclarativeDomValue::length(void) const
+ ?trUtf8@QDeclarativeBinding@@SA?AVQString@@PBD0H@Z @ 922 NONAME ABSENT ; class QString QDeclarativeBinding::trUtf8(char const *, char const *, int)
+ ??0QDeclarativeType@@AAE@HABURegisterInterface@QDeclarativePrivate@@@Z @ 923 NONAME ABSENT ; QDeclarativeType::QDeclarativeType(int, struct QDeclarativePrivate::RegisterInterface const &)
?scopeObject@QDeclarativeScriptString@@QBEPAVQObject@@XZ @ 924 NONAME ; class QObject * QDeclarativeScriptString::scopeObject(void) const
?left@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 925 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::left(void) const
- ??1QDeclarativeDebuggerStatus@@UAE@XZ @ 926 NONAME ; QDeclarativeDebuggerStatus::~QDeclarativeDebuggerStatus(void)
+ ??1QDeclarativeDebuggerStatus@@UAE@XZ @ 926 NONAME ABSENT ; QDeclarativeDebuggerStatus::~QDeclarativeDebuggerStatus(void)
??6QDeclarativeInfo@@QAEAAV0@ABVQLatin1String@@@Z @ 927 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QLatin1String const &)
?at@QDeclarativeListReference@@QBEPAVQObject@@H@Z @ 928 NONAME ; class QObject * QDeclarativeListReference::at(int) const
- ?metaObject@QDeclarativeDebugWatch@@UBEPBUQMetaObject@@XZ @ 929 NONAME ; struct QMetaObject const * QDeclarativeDebugWatch::metaObject(void) const
- ?qt_metacast@QListModelInterface@@UAEPAXPBD@Z @ 930 NONAME ; void * QListModelInterface::qt_metacast(char const *)
- ?deserialize@QMetaObjectBuilder@@QAEXAAVQDataStream@@ABV?$QMap@VQByteArray@@PB$$CBUQMetaObject@@@@@Z @ 931 NONAME ; void QMetaObjectBuilder::deserialize(class QDataStream &, class QMap<class QByteArray, struct QMetaObject const *> const &)
+ ?metaObject@QDeclarativeDebugWatch@@UBEPBUQMetaObject@@XZ @ 929 NONAME ABSENT ; struct QMetaObject const * QDeclarativeDebugWatch::metaObject(void) const
+ ?qt_metacast@QListModelInterface@@UAEPAXPBD@Z @ 930 NONAME ABSENT ; void * QListModelInterface::qt_metacast(char const *)
+ ?deserialize@QMetaObjectBuilder@@QAEXAAVQDataStream@@ABV?$QMap@VQByteArray@@PB$$CBUQMetaObject@@@@@Z @ 931 NONAME ABSENT ; void QMetaObjectBuilder::deserialize(class QDataStream &, class QMap<class QByteArray, struct QMetaObject const *> const &)
?canClear@QDeclarativeListReference@@QBE_NXZ @ 932 NONAME ; bool QDeclarativeListReference::canClear(void) const
??4QDeclarativeCustomParserProperty@@QAEAAV0@ABV0@@Z @ 933 NONAME ; class QDeclarativeCustomParserProperty & QDeclarativeCustomParserProperty::operator=(class QDeclarativeCustomParserProperty const &)
- ?parameterNames@QMetaMethodBuilder@@QBE?AV?$QList@VQByteArray@@@@XZ @ 934 NONAME ; class QList<class QByteArray> QMetaMethodBuilder::parameterNames(void) const
- ?get@QDeclarativeListModel@@QBE?AVQScriptValue@@H@Z @ 935 NONAME ; class QScriptValue QDeclarativeListModel::get(int) const
- ?createSize@QDeclarativeType@@QBEHXZ @ 936 NONAME ; int QDeclarativeType::createSize(void) const
+ ?parameterNames@QMetaMethodBuilder@@QBE?AV?$QList@VQByteArray@@@@XZ @ 934 NONAME ABSENT ; class QList<class QByteArray> QMetaMethodBuilder::parameterNames(void) const
+ ?get@QDeclarativeListModel@@QBE?AVQScriptValue@@H@Z @ 935 NONAME ABSENT ; class QScriptValue QDeclarativeListModel::get(int) const
+ ?createSize@QDeclarativeType@@QBEHXZ @ 936 NONAME ABSENT ; int QDeclarativeType::createSize(void) const
?rootContext@QDeclarativeEngine@@QBEPAVQDeclarativeContext@@XZ @ 937 NONAME ; class QDeclarativeContext * QDeclarativeEngine::rootContext(void) const
- ?isValueSource@QDeclarativeDomValue@@QBE_NXZ @ 938 NONAME ; bool QDeclarativeDomValue::isValueSource(void) const
+ ?isValueSource@QDeclarativeDomValue@@QBE_NXZ @ 938 NONAME ABSENT ; bool QDeclarativeDomValue::isValueSource(void) const
?isWritable@QDeclarativeProperty@@QBE_NXZ @ 939 NONAME ; bool QDeclarativeProperty::isWritable(void) const
?setKeepMouseGrab@QDeclarativeItem@@QAEX_N@Z @ 940 NONAME ; void QDeclarativeItem::setKeepMouseGrab(bool)
- ??0QDeclarativeDebugContextReference@@QAE@XZ @ 941 NONAME ; QDeclarativeDebugContextReference::QDeclarativeDebugContextReference(void)
- ?setParameterNames@QMetaMethodBuilder@@QAEXABV?$QList@VQByteArray@@@@@Z @ 942 NONAME ; void QMetaMethodBuilder::setParameterNames(class QList<class QByteArray> const &)
- ?getStaticMetaObject@QDeclarativeDebugRootContextQuery@@SAABUQMetaObject@@XZ @ 943 NONAME ; struct QMetaObject const & QDeclarativeDebugRootContextQuery::getStaticMetaObject(void)
- ?textChanged@QDeclarativeText@@IAEXABVQString@@@Z @ 944 NONAME ; void QDeclarativeText::textChanged(class QString const &)
+ ??0QDeclarativeDebugContextReference@@QAE@XZ @ 941 NONAME ABSENT ; QDeclarativeDebugContextReference::QDeclarativeDebugContextReference(void)
+ ?setParameterNames@QMetaMethodBuilder@@QAEXABV?$QList@VQByteArray@@@@@Z @ 942 NONAME ABSENT ; void QMetaMethodBuilder::setParameterNames(class QList<class QByteArray> const &)
+ ?getStaticMetaObject@QDeclarativeDebugRootContextQuery@@SAABUQMetaObject@@XZ @ 943 NONAME ABSENT ; struct QMetaObject const & QDeclarativeDebugRootContextQuery::getStaticMetaObject(void)
+ ?textChanged@QDeclarativeText@@IAEXABVQString@@@Z @ 944 NONAME ABSENT ; void QDeclarativeText::textChanged(class QString const &)
?trUtf8@QDeclarativeItem@@SA?AVQString@@PBD0@Z @ 945 NONAME ; class QString QDeclarativeItem::trUtf8(char const *, char const *)
??0QDeclarativeCustomParserProperty@@QAE@ABV0@@Z @ 946 NONAME ; QDeclarativeCustomParserProperty::QDeclarativeCustomParserProperty(class QDeclarativeCustomParserProperty const &)
?getStaticMetaObject@QDeclarativeComponent@@SAABUQMetaObject@@XZ @ 947 NONAME ; struct QMetaObject const & QDeclarativeComponent::getStaticMetaObject(void)
?parentItem@QDeclarativeItem@@QBEPAV1@XZ @ 948 NONAME ; class QDeclarativeItem * QDeclarativeItem::parentItem(void) const
- ?value@QMetaEnumBuilder@@QBEHH@Z @ 949 NONAME ; int QMetaEnumBuilder::value(int) const
+ ?value@QMetaEnumBuilder@@QBEHH@Z @ 949 NONAME ABSENT ; int QMetaEnumBuilder::value(int) const
??_EQDeclarativeExpression@@UAE@I@Z @ 950 NONAME ; QDeclarativeExpression::~QDeclarativeExpression(unsigned int)
- ?load@QDeclarativeDomDocument@@QAE_NPAVQDeclarativeEngine@@ABVQByteArray@@ABVQUrl@@@Z @ 951 NONAME ; bool QDeclarativeDomDocument::load(class QDeclarativeEngine *, class QByteArray const &, class QUrl const &)
+ ?load@QDeclarativeDomDocument@@QAE_NPAVQDeclarativeEngine@@ABVQByteArray@@ABVQUrl@@@Z @ 951 NONAME ABSENT ; bool QDeclarativeDomDocument::load(class QDeclarativeEngine *, class QByteArray const &, class QUrl const &)
?staticMetaObject@QDeclarativeStateGroup@@2UQMetaObject@@B @ 952 NONAME ; struct QMetaObject const QDeclarativeStateGroup::staticMetaObject
?tr@QDeclarativePropertyMap@@SA?AVQString@@PBD0@Z @ 953 NONAME ; class QString QDeclarativePropertyMap::tr(char const *, char const *)
- ?verticalCenterChanged@QDeclarativeAnchors@@IAEXXZ @ 954 NONAME ; void QDeclarativeAnchors::verticalCenterChanged(void)
- ?isScriptable@QMetaPropertyBuilder@@QBE_NXZ @ 955 NONAME ; bool QMetaPropertyBuilder::isScriptable(void) const
- ?typeCategory@QDeclarativeMetaType@@SA?AW4TypeCategory@1@H@Z @ 956 NONAME ; enum QDeclarativeMetaType::TypeCategory QDeclarativeMetaType::typeCategory(int)
- ?findSignalByName@QDeclarativePropertyPrivate@@SA?AVQMetaMethod@@PBUQMetaObject@@ABVQByteArray@@@Z @ 957 NONAME ; class QMetaMethod QDeclarativePropertyPrivate::findSignalByName(struct QMetaObject const *, class QByteArray const &)
- ?length@QDeclarativeDomDynamicProperty@@QBEHXZ @ 958 NONAME ; int QDeclarativeDomDynamicProperty::length(void) const
- ?property@QDeclarativeBinding@@QBE?AVQDeclarativeProperty@@XZ @ 959 NONAME ; class QDeclarativeProperty QDeclarativeBinding::property(void) const
- ??0QDeclarativeDomValueBinding@@QAE@XZ @ 960 NONAME ; QDeclarativeDomValueBinding::QDeclarativeDomValueBinding(void)
+ ?verticalCenterChanged@QDeclarativeAnchors@@IAEXXZ @ 954 NONAME ABSENT ; void QDeclarativeAnchors::verticalCenterChanged(void)
+ ?isScriptable@QMetaPropertyBuilder@@QBE_NXZ @ 955 NONAME ABSENT ; bool QMetaPropertyBuilder::isScriptable(void) const
+ ?typeCategory@QDeclarativeMetaType@@SA?AW4TypeCategory@1@H@Z @ 956 NONAME ABSENT ; enum QDeclarativeMetaType::TypeCategory QDeclarativeMetaType::typeCategory(int)
+ ?findSignalByName@QDeclarativePropertyPrivate@@SA?AVQMetaMethod@@PBUQMetaObject@@ABVQByteArray@@@Z @ 957 NONAME ABSENT ; class QMetaMethod QDeclarativePropertyPrivate::findSignalByName(struct QMetaObject const *, class QByteArray const &)
+ ?length@QDeclarativeDomDynamicProperty@@QBEHXZ @ 958 NONAME ABSENT ; int QDeclarativeDomDynamicProperty::length(void) const
+ ?property@QDeclarativeBinding@@QBE?AVQDeclarativeProperty@@XZ @ 959 NONAME ABSENT ; class QDeclarativeProperty QDeclarativeBinding::property(void) const
+ ??0QDeclarativeDomValueBinding@@QAE@XZ @ 960 NONAME ABSENT ; QDeclarativeDomValueBinding::QDeclarativeDomValueBinding(void)
?addImportPath@QDeclarativeEngine@@QAEXABVQString@@@Z @ 961 NONAME ; void QDeclarativeEngine::addImportPath(class QString const &)
?engine@QDeclarativeContext@@QBEPAVQDeclarativeEngine@@XZ @ 962 NONAME ; class QDeclarativeEngine * QDeclarativeContext::engine(void) const
- ?length@QDeclarativeDomObject@@QBEHXZ @ 963 NONAME ; int QDeclarativeDomObject::length(void) const
- ?setBaselineOffset@QDeclarativeAnchors@@QAEXM@Z @ 964 NONAME ; void QDeclarativeAnchors::setBaselineOffset(float)
+ ?length@QDeclarativeDomObject@@QBEHXZ @ 963 NONAME ABSENT ; int QDeclarativeDomObject::length(void) const
+ ?setBaselineOffset@QDeclarativeAnchors@@QAEXM@Z @ 964 NONAME ABSENT ; void QDeclarativeAnchors::setBaselineOffset(float)
?append@QDeclarativeListReference@@QBE_NPAVQObject@@@Z @ 965 NONAME ; bool QDeclarativeListReference::append(class QObject *) const
- ?d_func@QDeclarativeEngineDebug@@AAEPAVQDeclarativeEngineDebugPrivate@@XZ @ 966 NONAME ; class QDeclarativeEngineDebugPrivate * QDeclarativeEngineDebug::d_func(void)
+ ?d_func@QDeclarativeEngineDebug@@AAEPAVQDeclarativeEngineDebugPrivate@@XZ @ 966 NONAME ABSENT ; class QDeclarativeEngineDebugPrivate * QDeclarativeEngineDebug::d_func(void)
??1QDeclarativeNetworkAccessManagerFactory@@UAE@XZ @ 967 NONAME ; QDeclarativeNetworkAccessManagerFactory::~QDeclarativeNetworkAccessManagerFactory(void)
- ?textFormatChanged@QDeclarativeText@@IAEXW4TextFormat@1@@Z @ 968 NONAME ; void QDeclarativeText::textFormatChanged(enum QDeclarativeText::TextFormat)
+ ?textFormatChanged@QDeclarativeText@@IAEXW4TextFormat@1@@Z @ 968 NONAME ABSENT ; void QDeclarativeText::textFormatChanged(enum QDeclarativeText::TextFormat)
?removeState@QDeclarativeStateGroup@@AAEXPAVQDeclarativeState@@@Z @ 969 NONAME ; void QDeclarativeStateGroup::removeState(class QDeclarativeState *)
- ?qmlTypeName@QDeclarativeType@@QBE?AVQByteArray@@XZ @ 970 NONAME ; class QByteArray QDeclarativeType::qmlTypeName(void) const
+ ?qmlTypeName@QDeclarativeType@@QBE?AVQByteArray@@XZ @ 970 NONAME ABSENT ; class QByteArray QDeclarativeType::qmlTypeName(void) const
?tr@QDeclarativeComponent@@SA?AVQString@@PBD0@Z @ 971 NONAME ; class QString QDeclarativeComponent::tr(char const *, char const *)
?isProperty@QDeclarativeProperty@@QBE_NXZ @ 972 NONAME ; bool QDeclarativeProperty::isProperty(void) const
?states@QDeclarativeStateGroup@@QBE?AV?$QList@PAVQDeclarativeState@@@@XZ @ 973 NONAME ; class QList<class QDeclarativeState *> QDeclarativeStateGroup::states(void) const
- ??1QDeclarativeDebugExpressionQuery@@UAE@XZ @ 974 NONAME ; QDeclarativeDebugExpressionQuery::~QDeclarativeDebugExpressionQuery(void)
- ?isValid@QDeclarativeDomObject@@QBE_NXZ @ 975 NONAME ; bool QDeclarativeDomObject::isValid(void) const
- ?staticMetaObject@QDeclarativeAnchors@@2UQMetaObject@@B @ 976 NONAME ; struct QMetaObject const QDeclarativeAnchors::staticMetaObject
- ??_EQDeclarativePen@@UAE@I@Z @ 977 NONAME ; QDeclarativePen::~QDeclarativePen(unsigned int)
- ??0QDeclarativeDomProperty@@QAE@ABV0@@Z @ 978 NONAME ; QDeclarativeDomProperty::QDeclarativeDomProperty(class QDeclarativeDomProperty const &)
+ ??1QDeclarativeDebugExpressionQuery@@UAE@XZ @ 974 NONAME ABSENT ; QDeclarativeDebugExpressionQuery::~QDeclarativeDebugExpressionQuery(void)
+ ?isValid@QDeclarativeDomObject@@QBE_NXZ @ 975 NONAME ABSENT ; bool QDeclarativeDomObject::isValid(void) const
+ ?staticMetaObject@QDeclarativeAnchors@@2UQMetaObject@@B @ 976 NONAME ABSENT ; struct QMetaObject const QDeclarativeAnchors::staticMetaObject
+ ??_EQDeclarativePen@@UAE@I@Z @ 977 NONAME ABSENT ; QDeclarativePen::~QDeclarativePen(unsigned int)
+ ??0QDeclarativeDomProperty@@QAE@ABV0@@Z @ 978 NONAME ABSENT ; QDeclarativeDomProperty::QDeclarativeDomProperty(class QDeclarativeDomProperty const &)
?_states@QDeclarativeItemPrivate@@QAEPAVQDeclarativeStateGroup@@XZ @ 979 NONAME ; class QDeclarativeStateGroup * QDeclarativeItemPrivate::_states(void)
- ?verticalAlignmentChanged@QDeclarativeText@@IAEXW4VAlignment@1@@Z @ 980 NONAME ; void QDeclarativeText::verticalAlignmentChanged(enum QDeclarativeText::VAlignment)
- ?typeId@QDeclarativeType@@QBEHXZ @ 981 NONAME ; int QDeclarativeType::typeId(void) const
- ?marginsChanged@QDeclarativeAnchors@@IAEXXZ @ 982 NONAME ; void QDeclarativeAnchors::marginsChanged(void)
- ?setValue@QDeclarativeOpenMetaObject@@QAEXHABVQVariant@@@Z @ 983 NONAME ; void QDeclarativeOpenMetaObject::setValue(int, class QVariant const &)
+ ?verticalAlignmentChanged@QDeclarativeText@@IAEXW4VAlignment@1@@Z @ 980 NONAME ABSENT ; void QDeclarativeText::verticalAlignmentChanged(enum QDeclarativeText::VAlignment)
+ ?typeId@QDeclarativeType@@QBEHXZ @ 981 NONAME ABSENT ; int QDeclarativeType::typeId(void) const
+ ?marginsChanged@QDeclarativeAnchors@@IAEXXZ @ 982 NONAME ABSENT ; void QDeclarativeAnchors::marginsChanged(void)
+ ?setValue@QDeclarativeOpenMetaObject@@QAEXHABVQVariant@@@Z @ 983 NONAME ABSENT ; void QDeclarativeOpenMetaObject::setValue(int, class QVariant const &)
?parentProperty@QDeclarativeItemPrivate@@SAXPAVQObject@@PAXPAVQDeclarativeNotifierEndpoint@@@Z @ 984 NONAME ; void QDeclarativeItemPrivate::parentProperty(class QObject *, void *, class QDeclarativeNotifierEndpoint *)
- ??4QDeclarativeDebugContextReference@@QAEAAV0@ABV0@@Z @ 985 NONAME ; class QDeclarativeDebugContextReference & QDeclarativeDebugContextReference::operator=(class QDeclarativeDebugContextReference const &)
- ?isModule@QDeclarativeMetaType@@SA_NABVQByteArray@@HH@Z @ 986 NONAME ; bool QDeclarativeMetaType::isModule(class QByteArray const &, int, int)
- ?parentFunctions@QDeclarativeMetaType@@SA?AV?$QList@P6A?AW4AutoParentResult@QDeclarativePrivate@@PAVQObject@@0@Z@@XZ @ 987 NONAME ; class QList<enum QDeclarativePrivate::AutoParentResult (*)(class QObject *, class QObject *)> QDeclarativeMetaType::parentFunctions(void)
- ?metaObject@QDeclarativeDebugPropertyWatch@@UBEPBUQMetaObject@@XZ @ 988 NONAME ; struct QMetaObject const * QDeclarativeDebugPropertyWatch::metaObject(void) const
- ??0QDeclarativeRectangle@@QAE@PAVQDeclarativeItem@@@Z @ 989 NONAME ; QDeclarativeRectangle::QDeclarativeRectangle(class QDeclarativeItem *)
+ ??4QDeclarativeDebugContextReference@@QAEAAV0@ABV0@@Z @ 985 NONAME ABSENT ; class QDeclarativeDebugContextReference & QDeclarativeDebugContextReference::operator=(class QDeclarativeDebugContextReference const &)
+ ?isModule@QDeclarativeMetaType@@SA_NABVQByteArray@@HH@Z @ 986 NONAME ABSENT ; bool QDeclarativeMetaType::isModule(class QByteArray const &, int, int)
+ ?parentFunctions@QDeclarativeMetaType@@SA?AV?$QList@P6A?AW4AutoParentResult@QDeclarativePrivate@@PAVQObject@@0@Z@@XZ @ 987 NONAME ABSENT ; class QList<enum QDeclarativePrivate::AutoParentResult (*)(class QObject *, class QObject *)> QDeclarativeMetaType::parentFunctions(void)
+ ?metaObject@QDeclarativeDebugPropertyWatch@@UBEPBUQMetaObject@@XZ @ 988 NONAME ABSENT ; struct QMetaObject const * QDeclarativeDebugPropertyWatch::metaObject(void) const
+ ??0QDeclarativeRectangle@@QAE@PAVQDeclarativeItem@@@Z @ 989 NONAME ABSENT ; QDeclarativeRectangle::QDeclarativeRectangle(class QDeclarativeItem *)
?setOutputWarningsToStandardError@QDeclarativeEngine@@QAEX_N@Z @ 990 NONAME ; void QDeclarativeEngine::setOutputWarningsToStandardError(bool)
- ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@0@Z @ 991 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QByteArray const &, class QByteArray const &)
- ?enumerator@QMetaObjectBuilder@@QBE?AVQMetaEnumBuilder@@H@Z @ 992 NONAME ; class QMetaEnumBuilder QMetaObjectBuilder::enumerator(int) const
- ?fromRelocatableData@QMetaObjectBuilder@@SAXPAUQMetaObject@@PBU2@ABVQByteArray@@@Z @ 993 NONAME ; void QMetaObjectBuilder::fromRelocatableData(struct QMetaObject *, struct QMetaObject const *, class QByteArray const &)
- ?gridRight@QDeclarativeGridScaledImage@@QBEHXZ @ 994 NONAME ; int QDeclarativeGridScaledImage::gridRight(void) const
- ?isAlias@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 995 NONAME ; bool QDeclarativeDomDynamicProperty::isAlias(void) const
+ ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@0@Z @ 991 NONAME ABSENT ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QByteArray const &, class QByteArray const &)
+ ?enumerator@QMetaObjectBuilder@@QBE?AVQMetaEnumBuilder@@H@Z @ 992 NONAME ABSENT ; class QMetaEnumBuilder QMetaObjectBuilder::enumerator(int) const
+ ?fromRelocatableData@QMetaObjectBuilder@@SAXPAUQMetaObject@@PBU2@ABVQByteArray@@@Z @ 993 NONAME ABSENT ; void QMetaObjectBuilder::fromRelocatableData(struct QMetaObject *, struct QMetaObject const *, class QByteArray const &)
+ ?gridRight@QDeclarativeGridScaledImage@@QBEHXZ @ 994 NONAME ABSENT ; int QDeclarativeGridScaledImage::gridRight(void) const
+ ?isAlias@QDeclarativeDomDynamicProperty@@QBE_NXZ @ 995 NONAME ABSENT ; bool QDeclarativeDomDynamicProperty::isAlias(void) const
?d_func@QDeclarativeContext@@ABEPBVQDeclarativeContextPrivate@@XZ @ 996 NONAME ; class QDeclarativeContextPrivate const * QDeclarativeContext::d_func(void) const
- ?getStaticMetaObject@QDeclarativeDebugEnginesQuery@@SAABUQMetaObject@@XZ @ 997 NONAME ; struct QMetaObject const & QDeclarativeDebugEnginesQuery::getStaticMetaObject(void)
+ ?getStaticMetaObject@QDeclarativeDebugEnginesQuery@@SAABUQMetaObject@@XZ @ 997 NONAME ABSENT ; struct QMetaObject const & QDeclarativeDebugEnginesQuery::getStaticMetaObject(void)
?tr@QDeclarativeItem@@SA?AVQString@@PBD0H@Z @ 998 NONAME ; class QString QDeclarativeItem::tr(char const *, char const *, int)
- ?staticMetaObject@QDeclarativeDebugPropertyWatch@@2UQMetaObject@@B @ 999 NONAME ; struct QMetaObject const QDeclarativeDebugPropertyWatch::staticMetaObject
+ ?staticMetaObject@QDeclarativeDebugPropertyWatch@@2UQMetaObject@@B @ 999 NONAME ABSENT ; struct QMetaObject const QDeclarativeDebugPropertyWatch::staticMetaObject
?setDescription@QDeclarativeError@@QAEXABVQString@@@Z @ 1000 NONAME ; void QDeclarativeError::setDescription(class QString const &)
??0QDeclarativeExpression@@AAE@PAVQDeclarativeContextData@@PAVQObject@@ABVQString@@@Z @ 1001 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QObject *, class QString const &)
- ??1QDeclarativeOpenMetaObjectType@@UAE@XZ @ 1002 NONAME ; QDeclarativeOpenMetaObjectType::~QDeclarativeOpenMetaObjectType(void)
+ ??1QDeclarativeOpenMetaObjectType@@UAE@XZ @ 1002 NONAME ABSENT ; QDeclarativeOpenMetaObjectType::~QDeclarativeOpenMetaObjectType(void)
?setReversible@QDeclarativeTransition@@QAEX_N@Z @ 1003 NONAME ; void QDeclarativeTransition::setReversible(bool)
- ?notifySignal@QMetaPropertyBuilder@@QBE?AVQMetaMethodBuilder@@XZ @ 1004 NONAME ; class QMetaMethodBuilder QMetaPropertyBuilder::notifySignal(void) const
- ??0QDeclarativeDomList@@QAE@XZ @ 1005 NONAME ; QDeclarativeDomList::QDeclarativeDomList(void)
+ ?notifySignal@QMetaPropertyBuilder@@QBE?AVQMetaMethodBuilder@@XZ @ 1004 NONAME ABSENT ; class QMetaMethodBuilder QMetaPropertyBuilder::notifySignal(void) const
+ ??0QDeclarativeDomList@@QAE@XZ @ 1005 NONAME ABSENT ; QDeclarativeDomList::QDeclarativeDomList(void)
?hasActiveFocus@QDeclarativeItem@@QBE_NXZ @ 1006 NONAME ; bool QDeclarativeItem::hasActiveFocus(void) const
- ?indexOfSignal@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1007 NONAME ; int QMetaObjectBuilder::indexOfSignal(class QByteArray const &)
+ ?indexOfSignal@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1007 NONAME ABSENT ; int QMetaObjectBuilder::indexOfSignal(class QByteArray const &)
?toState@QDeclarativeTransition@@QBE?AVQString@@XZ @ 1008 NONAME ; class QString QDeclarativeTransition::toState(void) const
- ??0QDeclarativeDomDocument@@QAE@XZ @ 1009 NONAME ; QDeclarativeDomDocument::QDeclarativeDomDocument(void)
+ ??0QDeclarativeDomDocument@@QAE@XZ @ 1009 NONAME ABSENT ; QDeclarativeDomDocument::QDeclarativeDomDocument(void)
?setWhen@QDeclarativeState@@QAEXPAVQDeclarativeBinding@@@Z @ 1010 NONAME ; void QDeclarativeState::setWhen(class QDeclarativeBinding *)
?isWhenKnown@QDeclarativeState@@QBE_NXZ @ 1011 NONAME ; bool QDeclarativeState::isWhenKnown(void) const
- ?agent@QDeclarativeListModel@@QAEPAVQDeclarativeListModelWorkerAgent@@XZ @ 1012 NONAME ; class QDeclarativeListModelWorkerAgent * QDeclarativeListModel::agent(void)
+ ?agent@QDeclarativeListModel@@QAEPAVQDeclarativeListModelWorkerAgent@@XZ @ 1012 NONAME ABSENT ; class QDeclarativeListModelWorkerAgent * QDeclarativeListModel::agent(void)
?engine@QDeclarativeExpression@@QBEPAVQDeclarativeEngine@@XZ @ 1013 NONAME ; class QDeclarativeEngine * QDeclarativeExpression::engine(void) const
- ??_EQDeclarativeDebugWatch@@UAE@I@Z @ 1014 NONAME ; QDeclarativeDebugWatch::~QDeclarativeDebugWatch(unsigned int)
- ?isEmpty@QPacket@@QBE_NXZ @ 1015 NONAME ; bool QPacket::isEmpty(void) const
- ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@PBUQMetaObject@@@Z @ 1016 NONAME ; class QDeclarativeType * QDeclarativeMetaType::qmlType(struct QMetaObject const *)
- ?setFill@QDeclarativeAnchors@@QAEXPAVQGraphicsObject@@@Z @ 1017 NONAME ; void QDeclarativeAnchors::setFill(class QGraphicsObject *)
- ?setHAlign@QDeclarativeText@@QAEXW4HAlignment@1@@Z @ 1018 NONAME ; void QDeclarativeText::setHAlign(enum QDeclarativeText::HAlignment)
+ ??_EQDeclarativeDebugWatch@@UAE@I@Z @ 1014 NONAME ABSENT ; QDeclarativeDebugWatch::~QDeclarativeDebugWatch(unsigned int)
+ ?isEmpty@QPacket@@QBE_NXZ @ 1015 NONAME ABSENT ; bool QPacket::isEmpty(void) const
+ ?qmlType@QDeclarativeMetaType@@SAPAVQDeclarativeType@@PBUQMetaObject@@@Z @ 1016 NONAME ABSENT ; class QDeclarativeType * QDeclarativeMetaType::qmlType(struct QMetaObject const *)
+ ?setFill@QDeclarativeAnchors@@QAEXPAVQGraphicsObject@@@Z @ 1017 NONAME ABSENT ; void QDeclarativeAnchors::setFill(class QGraphicsObject *)
+ ?setHAlign@QDeclarativeText@@QAEXW4HAlignment@1@@Z @ 1018 NONAME ABSENT ; void QDeclarativeText::setHAlign(enum QDeclarativeText::HAlignment)
??0QDeclarativeScriptString@@QAE@ABV0@@Z @ 1019 NONAME ; QDeclarativeScriptString::QDeclarativeScriptString(class QDeclarativeScriptString const &)
?trUtf8@QDeclarativeTransition@@SA?AVQString@@PBD0@Z @ 1020 NONAME ; class QString QDeclarativeTransition::trUtf8(char const *, char const *)
- ?metaObject@QDeclarativeDebugRootContextQuery@@UBEPBUQMetaObject@@XZ @ 1021 NONAME ; struct QMetaObject const * QDeclarativeDebugRootContextQuery::metaObject(void) const
- ?setSignalExpression@QDeclarativePropertyPrivate@@SAPAVQDeclarativeExpression@@ABVQDeclarativeProperty@@PAV2@@Z @ 1022 NONAME ; class QDeclarativeExpression * QDeclarativePropertyPrivate::setSignalExpression(class QDeclarativeProperty const &, class QDeclarativeExpression *)
+ ?metaObject@QDeclarativeDebugRootContextQuery@@UBEPBUQMetaObject@@XZ @ 1021 NONAME ABSENT ; struct QMetaObject const * QDeclarativeDebugRootContextQuery::metaObject(void) const
+ ?setSignalExpression@QDeclarativePropertyPrivate@@SAPAVQDeclarativeExpression@@ABVQDeclarativeProperty@@PAV2@@Z @ 1022 NONAME ABSENT ; class QDeclarativeExpression * QDeclarativePropertyPrivate::setSignalExpression(class QDeclarativeProperty const &, class QDeclarativeExpression *)
?reversibleChanged@QDeclarativeTransition@@IAEXXZ @ 1023 NONAME ; void QDeclarativeTransition::reversibleChanged(void)
- ??4QDeclarativeDomValueValueSource@@QAEAAV0@ABV0@@Z @ 1024 NONAME ; class QDeclarativeDomValueValueSource & QDeclarativeDomValueValueSource::operator=(class QDeclarativeDomValueValueSource const &)
- ?name@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 1025 NONAME ; class QString QDeclarativeDebugObjectReference::name(void) const
+ ??4QDeclarativeDomValueValueSource@@QAEAAV0@ABV0@@Z @ 1024 NONAME ABSENT ; class QDeclarativeDomValueValueSource & QDeclarativeDomValueValueSource::operator=(class QDeclarativeDomValueValueSource const &)
+ ?name@QDeclarativeDebugObjectReference@@QBE?AVQString@@XZ @ 1025 NONAME ABSENT ; class QString QDeclarativeDebugObjectReference::name(void) const
?anchorLines@QDeclarativeItemPrivate@@QBEPAUAnchorLines@1@XZ @ 1026 NONAME ; struct QDeclarativeItemPrivate::AnchorLines * QDeclarativeItemPrivate::anchorLines(void) const
?qmlInfo@@YA?AVQDeclarativeInfo@@PBVQObject@@ABVQDeclarativeError@@@Z @ 1027 NONAME ; class QDeclarativeInfo qmlInfo(class QObject const *, class QDeclarativeError const &)
- ?staticMetaObject@QDeclarativeText@@2UQMetaObject@@B @ 1028 NONAME ; struct QMetaObject const QDeclarativeText::staticMetaObject
- ?color@QDeclarativeRectangle@@QBE?AVQColor@@XZ @ 1029 NONAME ; class QColor QDeclarativeRectangle::color(void) const
+ ?staticMetaObject@QDeclarativeText@@2UQMetaObject@@B @ 1028 NONAME ABSENT ; struct QMetaObject const QDeclarativeText::staticMetaObject
+ ?color@QDeclarativeRectangle@@QBE?AVQColor@@XZ @ 1029 NONAME ABSENT ; class QColor QDeclarativeRectangle::color(void) const
?isEnabled@QDeclarativeDebugClient@@QBE_NXZ @ 1030 NONAME ABSENT ; bool QDeclarativeDebugClient::isEnabled(void) const
- ?send@QPacketProtocol@@QAEXABVQPacket@@@Z @ 1031 NONAME ; void QPacketProtocol::send(class QPacket const &)
+ ?send@QPacketProtocol@@QAEXABVQPacket@@@Z @ 1031 NONAME ABSENT ; void QPacketProtocol::send(class QPacket const &)
?width@QDeclarativePixmap@@QBEHXZ @ 1032 NONAME ; int QDeclarativePixmap::width(void) const
?error@QDeclarativeCustomParser@@IAEXABVQDeclarativeCustomParserNode@@ABVQString@@@Z @ 1033 NONAME ; void QDeclarativeCustomParser::error(class QDeclarativeCustomParserNode const &, class QString const &)
- ?defaultProperty@QDeclarativeMetaType@@SA?AVQMetaProperty@@PBUQMetaObject@@@Z @ 1034 NONAME ; class QMetaProperty QDeclarativeMetaType::defaultProperty(struct QMetaObject const *)
+ ?defaultProperty@QDeclarativeMetaType@@SA?AVQMetaProperty@@PBUQMetaObject@@@Z @ 1034 NONAME ABSENT ; class QMetaProperty QDeclarativeMetaType::defaultProperty(struct QMetaObject const *)
?isComponentComplete@QDeclarativeItem@@IBE_NXZ @ 1035 NONAME ; bool QDeclarativeItem::isComponentComplete(void) const
- ?type@QMetaPropertyBuilder@@QBE?AVQByteArray@@XZ @ 1036 NONAME ; class QByteArray QMetaPropertyBuilder::type(void) const
- ?setProperty@QDeclarativeListModel@@QAEXHABVQString@@ABVQVariant@@@Z @ 1037 NONAME ; void QDeclarativeListModel::setProperty(int, class QString const &, class QVariant const &)
- ?rootContext@QDeclarativeDebugRootContextQuery@@QBE?AVQDeclarativeDebugContextReference@@XZ @ 1038 NONAME ; class QDeclarativeDebugContextReference QDeclarativeDebugRootContextQuery::rootContext(void) const
+ ?type@QMetaPropertyBuilder@@QBE?AVQByteArray@@XZ @ 1036 NONAME ABSENT ; class QByteArray QMetaPropertyBuilder::type(void) const
+ ?setProperty@QDeclarativeListModel@@QAEXHABVQString@@ABVQVariant@@@Z @ 1037 NONAME ABSENT ; void QDeclarativeListModel::setProperty(int, class QString const &, class QVariant const &)
+ ?rootContext@QDeclarativeDebugRootContextQuery@@QBE?AVQDeclarativeDebugContextReference@@XZ @ 1038 NONAME ABSENT ; class QDeclarativeDebugContextReference QDeclarativeDebugRootContextQuery::rootContext(void) const
?contextForObject@QDeclarativeEngine@@SAPAVQDeclarativeContext@@PBVQObject@@@Z @ 1039 NONAME ; class QDeclarativeContext * QDeclarativeEngine::contextForObject(class QObject const *)
- ?addProperty@QMetaObjectBuilder@@QAE?AVQMetaPropertyBuilder@@ABVQMetaProperty@@@Z @ 1040 NONAME ; class QMetaPropertyBuilder QMetaObjectBuilder::addProperty(class QMetaProperty const &)
- ?isQObject@QDeclarativeMetaType@@SA_NH@Z @ 1041 NONAME ; bool QDeclarativeMetaType::isQObject(int)
- ?trUtf8@QDeclarativeAnchors@@SA?AVQString@@PBD0@Z @ 1042 NONAME ; class QString QDeclarativeAnchors::trUtf8(char const *, char const *)
- ?getStaticMetaObject@QDeclarativeValueType@@SAABUQMetaObject@@XZ @ 1043 NONAME ; struct QMetaObject const & QDeclarativeValueType::getStaticMetaObject(void)
+ ?addProperty@QMetaObjectBuilder@@QAE?AVQMetaPropertyBuilder@@ABVQMetaProperty@@@Z @ 1040 NONAME ABSENT ; class QMetaPropertyBuilder QMetaObjectBuilder::addProperty(class QMetaProperty const &)
+ ?isQObject@QDeclarativeMetaType@@SA_NH@Z @ 1041 NONAME ABSENT ; bool QDeclarativeMetaType::isQObject(int)
+ ?trUtf8@QDeclarativeAnchors@@SA?AVQString@@PBD0@Z @ 1042 NONAME ABSENT ; class QString QDeclarativeAnchors::trUtf8(char const *, char const *)
+ ?getStaticMetaObject@QDeclarativeValueType@@SAABUQMetaObject@@XZ @ 1043 NONAME ABSENT ; struct QMetaObject const & QDeclarativeValueType::getStaticMetaObject(void)
?valueChanged@QDeclarativePropertyMap@@IAEXABVQString@@ABVQVariant@@@Z @ 1044 NONAME ; void QDeclarativePropertyMap::valueChanged(class QString const &, class QVariant const &)
- ?staticMetaObject@QPacketProtocol@@2UQMetaObject@@B @ 1045 NONAME ; struct QMetaObject const QPacketProtocol::staticMetaObject
- ?tr@QDeclarativeListModel@@SA?AVQString@@PBD0H@Z @ 1046 NONAME ; class QString QDeclarativeListModel::tr(char const *, char const *, int)
+ ?staticMetaObject@QPacketProtocol@@2UQMetaObject@@B @ 1045 NONAME ABSENT ; struct QMetaObject const QPacketProtocol::staticMetaObject
+ ?tr@QDeclarativeListModel@@SA?AVQString@@PBD0H@Z @ 1046 NONAME ABSENT ; class QString QDeclarativeListModel::tr(char const *, char const *, int)
??0QDeclarativeScriptString@@QAE@XZ @ 1047 NONAME ; QDeclarativeScriptString::QDeclarativeScriptString(void)
- ?tr@QListModelInterface@@SA?AVQString@@PBD0@Z @ 1048 NONAME ; class QString QListModelInterface::tr(char const *, char const *)
+ ?tr@QListModelInterface@@SA?AVQString@@PBD0@Z @ 1048 NONAME ABSENT ; class QString QListModelInterface::tr(char const *, char const *)
?height@QDeclarativeItemPrivate@@UBEMXZ @ 1049 NONAME ; float QDeclarativeItemPrivate::height(void) const
- ?qt_metacast@QDeclarativeDebugObjectQuery@@UAEPAXPBD@Z @ 1050 NONAME ; void * QDeclarativeDebugObjectQuery::qt_metacast(char const *)
+ ?qt_metacast@QDeclarativeDebugObjectQuery@@UAEPAXPBD@Z @ 1050 NONAME ABSENT ; void * QDeclarativeDebugObjectQuery::qt_metacast(char const *)
??0QDeclarativeImageProvider@@QAE@W4ImageType@0@@Z @ 1051 NONAME ; QDeclarativeImageProvider::QDeclarativeImageProvider(enum QDeclarativeImageProvider::ImageType)
- ?type@QDeclarativeDomValue@@QBE?AW4Type@1@XZ @ 1052 NONAME ; enum QDeclarativeDomValue::Type QDeclarativeDomValue::type(void) const
+ ?type@QDeclarativeDomValue@@QBE?AW4Type@1@XZ @ 1052 NONAME ABSENT ; enum QDeclarativeDomValue::Type QDeclarativeDomValue::type(void) const
?setPixmap@QDeclarativePixmap@@QAEXABVQPixmap@@@Z @ 1053 NONAME ; void QDeclarativePixmap::setPixmap(class QPixmap const &)
- ?staticMetacallFunction@QMetaObjectBuilder@@QBEP6AHW4Call@QMetaObject@@HPAPAX@ZXZ @ 1054 NONAME ; int (*)(enum QMetaObject::Call, int, void * *) QMetaObjectBuilder::staticMetacallFunction(void) const
+ ?staticMetacallFunction@QMetaObjectBuilder@@QBEP6AHW4Call@QMetaObject@@HPAPAX@ZXZ @ 1054 NONAME ABSENT ; int (*)(enum QMetaObject::Call, int, void * *) QMetaObjectBuilder::staticMetacallFunction(void) const
?connectFinished@QDeclarativePixmap@@QAE_NPAVQObject@@H@Z @ 1055 NONAME ; bool QDeclarativePixmap::connectFinished(class QObject *, int)
- ?setStyle@QDeclarativeText@@QAEXW4TextStyle@1@@Z @ 1056 NONAME ; void QDeclarativeText::setStyle(enum QDeclarativeText::TextStyle)
+ ?setStyle@QDeclarativeText@@QAEXW4TextStyle@1@@Z @ 1056 NONAME ABSENT ; void QDeclarativeText::setStyle(enum QDeclarativeText::TextStyle)
?staticMetaObject@QDeclarativePropertyMap@@2UQMetaObject@@B @ 1057 NONAME ; struct QMetaObject const QDeclarativePropertyMap::staticMetaObject
- ??_EQDeclarativeDebugEnginesQuery@@UAE@I@Z @ 1058 NONAME ; QDeclarativeDebugEnginesQuery::~QDeclarativeDebugEnginesQuery(unsigned int)
- ?enumeratorCount@QMetaObjectBuilder@@QBEHXZ @ 1059 NONAME ; int QMetaObjectBuilder::enumeratorCount(void) const
+ ??_EQDeclarativeDebugEnginesQuery@@UAE@I@Z @ 1058 NONAME ABSENT ; QDeclarativeDebugEnginesQuery::~QDeclarativeDebugEnginesQuery(unsigned int)
+ ?enumeratorCount@QMetaObjectBuilder@@QBEHXZ @ 1059 NONAME ABSENT ; int QMetaObjectBuilder::enumeratorCount(void) const
?isError@QDeclarativePixmap@@QBE_NXZ @ 1060 NONAME ; bool QDeclarativePixmap::isError(void) const
?setConsistentTime@QDeclarativeItemPrivate@@SAX_J@Z @ 1061 NONAME ; void QDeclarativeItemPrivate::setConsistentTime(long long)
?initializeEngine@QDeclarativeExtensionPlugin@@UAEXPAVQDeclarativeEngine@@PBD@Z @ 1062 NONAME ; void QDeclarativeExtensionPlugin::initializeEngine(class QDeclarativeEngine *, char const *)
- ?metaObject@QDeclarativeDebugQuery@@UBEPBUQMetaObject@@XZ @ 1063 NONAME ; struct QMetaObject const * QDeclarativeDebugQuery::metaObject(void) const
- ?rightMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 1064 NONAME ; void QDeclarativeAnchors::rightMarginChanged(void)
+ ?metaObject@QDeclarativeDebugQuery@@UBEPBUQMetaObject@@XZ @ 1063 NONAME ABSENT ; struct QMetaObject const * QDeclarativeDebugQuery::metaObject(void) const
+ ?rightMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 1064 NONAME ABSENT ; void QDeclarativeAnchors::rightMarginChanged(void)
??_EQDeclarativePropertyValueInterceptor@@UAE@I@Z @ 1065 NONAME ; QDeclarativePropertyValueInterceptor::~QDeclarativePropertyValueInterceptor(unsigned int)
- ?linkActivated@QDeclarativeText@@IAEXABVQString@@@Z @ 1066 NONAME ; void QDeclarativeText::linkActivated(class QString const &)
- ?canConvert@QDeclarativePropertyPrivate@@SA_NPBUQMetaObject@@0@Z @ 1067 NONAME ; bool QDeclarativePropertyPrivate::canConvert(struct QMetaObject const *, struct QMetaObject const *)
- ?trUtf8@QDeclarativeAnchors@@SA?AVQString@@PBD0H@Z @ 1068 NONAME ; class QString QDeclarativeAnchors::trUtf8(char const *, char const *, int)
- ?toComponent@QDeclarativeDomObject@@QBE?AVQDeclarativeDomComponent@@XZ @ 1069 NONAME ; class QDeclarativeDomComponent QDeclarativeDomObject::toComponent(void) const
- ?tr@QDeclarativeValueType@@SA?AVQString@@PBD0@Z @ 1070 NONAME ; class QString QDeclarativeValueType::tr(char const *, char const *)
- ?setLeft@QDeclarativeScaleGrid@@QAEXH@Z @ 1071 NONAME ; void QDeclarativeScaleGrid::setLeft(int)
- ??1QDeclarativeGridScaledImage@@QAE@XZ @ 1072 NONAME ; QDeclarativeGridScaledImage::~QDeclarativeGridScaledImage(void)
- ??0QDeclarativeGridScaledImage@@QAE@ABV0@@Z @ 1073 NONAME ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(class QDeclarativeGridScaledImage const &)
+ ?linkActivated@QDeclarativeText@@IAEXABVQString@@@Z @ 1066 NONAME ABSENT ; void QDeclarativeText::linkActivated(class QString const &)
+ ?canConvert@QDeclarativePropertyPrivate@@SA_NPBUQMetaObject@@0@Z @ 1067 NONAME ABSENT ; bool QDeclarativePropertyPrivate::canConvert(struct QMetaObject const *, struct QMetaObject const *)
+ ?trUtf8@QDeclarativeAnchors@@SA?AVQString@@PBD0H@Z @ 1068 NONAME ABSENT ; class QString QDeclarativeAnchors::trUtf8(char const *, char const *, int)
+ ?toComponent@QDeclarativeDomObject@@QBE?AVQDeclarativeDomComponent@@XZ @ 1069 NONAME ABSENT ; class QDeclarativeDomComponent QDeclarativeDomObject::toComponent(void) const
+ ?tr@QDeclarativeValueType@@SA?AVQString@@PBD0@Z @ 1070 NONAME ABSENT ; class QString QDeclarativeValueType::tr(char const *, char const *)
+ ?setLeft@QDeclarativeScaleGrid@@QAEXH@Z @ 1071 NONAME ABSENT ; void QDeclarativeScaleGrid::setLeft(int)
+ ??1QDeclarativeGridScaledImage@@QAE@XZ @ 1072 NONAME ABSENT ; QDeclarativeGridScaledImage::~QDeclarativeGridScaledImage(void)
+ ??0QDeclarativeGridScaledImage@@QAE@ABV0@@Z @ 1073 NONAME ABSENT ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(class QDeclarativeGridScaledImage const &)
?column@QDeclarativeError@@QBEHXZ @ 1074 NONAME ; int QDeclarativeError::column(void) const
?properties@QDeclarativeCustomParserNode@@QBE?AV?$QList@VQDeclarativeCustomParserProperty@@@@XZ @ 1075 NONAME ; class QList<class QDeclarativeCustomParserProperty> QDeclarativeCustomParserNode::properties(void) const
- ?qt_metacast@QDeclarativeScaleGrid@@UAEPAXPBD@Z @ 1076 NONAME ; void * QDeclarativeScaleGrid::qt_metacast(char const *)
+ ?qt_metacast@QDeclarativeScaleGrid@@UAEPAXPBD@Z @ 1076 NONAME ABSENT ; void * QDeclarativeScaleGrid::qt_metacast(char const *)
??0QDeclarativeListReference@@QAE@XZ @ 1077 NONAME ; QDeclarativeListReference::QDeclarativeListReference(void)
- ??1QDeclarativeDebugRootContextQuery@@UAE@XZ @ 1078 NONAME ; QDeclarativeDebugRootContextQuery::~QDeclarativeDebugRootContextQuery(void)
+ ??1QDeclarativeDebugRootContextQuery@@UAE@XZ @ 1078 NONAME ABSENT ; QDeclarativeDebugRootContextQuery::~QDeclarativeDebugRootContextQuery(void)
?name@QDeclarativeCustomParserNode@@QBE?AVQByteArray@@XZ @ 1079 NONAME ; class QByteArray QDeclarativeCustomParserNode::name(void) const
- ?object@QDeclarativeDomValueValueInterceptor@@QBE?AVQDeclarativeDomObject@@XZ @ 1080 NONAME ; class QDeclarativeDomObject QDeclarativeDomValueValueInterceptor::object(void) const
- ??1QDeclarativePen@@UAE@XZ @ 1081 NONAME ; QDeclarativePen::~QDeclarativePen(void)
+ ?object@QDeclarativeDomValueValueInterceptor@@QBE?AVQDeclarativeDomObject@@XZ @ 1080 NONAME ABSENT ; class QDeclarativeDomObject QDeclarativeDomValueValueInterceptor::object(void) const
+ ??1QDeclarativePen@@UAE@XZ @ 1081 NONAME ABSENT ; QDeclarativePen::~QDeclarativePen(void)
?data@QDeclarativeItemPrivate@@QAE?AV?$QDeclarativeListProperty@VQObject@@@@XZ @ 1082 NONAME ; class QDeclarativeListProperty<class QObject> QDeclarativeItemPrivate::data(void)
- ?qt_metacall@QDeclarativeBinding@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1083 NONAME ; int QDeclarativeBinding::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?qt_metacall@QDeclarativeBinding@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1083 NONAME ABSENT ; int QDeclarativeBinding::qt_metacall(enum QMetaObject::Call, int, void * *)
??1QDeclarativeEngine@@UAE@XZ @ 1084 NONAME ; QDeclarativeEngine::~QDeclarativeEngine(void)
- ?debugId@QDeclarativeDebugContextReference@@QBEHXZ @ 1085 NONAME ; int QDeclarativeDebugContextReference::debugId(void) const
- ?propertyNameParts@QDeclarativeDomProperty@@QBE?AV?$QList@VQByteArray@@@@XZ @ 1086 NONAME ; class QList<class QByteArray> QDeclarativeDomProperty::propertyNameParts(void) const
+ ?debugId@QDeclarativeDebugContextReference@@QBEHXZ @ 1085 NONAME ABSENT ; int QDeclarativeDebugContextReference::debugId(void) const
+ ?propertyNameParts@QDeclarativeDomProperty@@QBE?AV?$QList@VQByteArray@@@@XZ @ 1086 NONAME ABSENT ; class QList<class QByteArray> QDeclarativeDomProperty::propertyNameParts(void) const
?resetWidth@QDeclarativeItemPrivate@@UAEXXZ @ 1087 NONAME ; void QDeclarativeItemPrivate::resetWidth(void)
- ??AQDeclarativeOpenMetaObject@@QAEAAVQVariant@@ABVQByteArray@@@Z @ 1088 NONAME ; class QVariant & QDeclarativeOpenMetaObject::operator[](class QByteArray const &)
+ ??AQDeclarativeOpenMetaObject@@QAEAAVQVariant@@ABVQByteArray@@@Z @ 1088 NONAME ABSENT ; class QVariant & QDeclarativeOpenMetaObject::operator[](class QByteArray const &)
?bottom@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1089 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::bottom(void) const
- ?device@QPacketProtocol@@QAEPAVQIODevice@@XZ @ 1090 NONAME ; class QIODevice * QPacketProtocol::device(void)
+ ?device@QPacketProtocol@@QAEPAVQIODevice@@XZ @ 1090 NONAME ABSENT ; class QIODevice * QPacketProtocol::device(void)
?trUtf8@QDeclarativeStateGroup@@SA?AVQString@@PBD0@Z @ 1091 NONAME ; class QString QDeclarativeStateGroup::trUtf8(char const *, char const *)
- ?variantFromString@QDeclarativeStringConverters@@YA?AVQVariant@@ABVQString@@HPA_N@Z @ 1092 NONAME ; class QVariant QDeclarativeStringConverters::variantFromString(class QString const &, int, bool *)
+ ?variantFromString@QDeclarativeStringConverters@@YA?AVQVariant@@ABVQString@@HPA_N@Z @ 1092 NONAME ABSENT ; class QVariant QDeclarativeStringConverters::variantFromString(class QString const &, int, bool *)
?metaObject@QDeclarativeComponent@@UBEPBUQMetaObject@@XZ @ 1093 NONAME ; struct QMetaObject const * QDeclarativeComponent::metaObject(void) const
?qmlInfo@@YA?AVQDeclarativeInfo@@PBVQObject@@ABV?$QList@VQDeclarativeError@@@@@Z @ 1094 NONAME ; class QDeclarativeInfo qmlInfo(class QObject const *, class QList<class QDeclarativeError> const &)
?assignedValues@QDeclarativeCustomParserProperty@@QBE?AV?$QList@VQVariant@@@@XZ @ 1095 NONAME ; class QList<class QVariant> QDeclarativeCustomParserProperty::assignedValues(void) const
- ?setValue@QDeclarativeOpenMetaObject@@QAEXABVQByteArray@@ABVQVariant@@@Z @ 1096 NONAME ; void QDeclarativeOpenMetaObject::setValue(class QByteArray const &, class QVariant const &)
- ?data@QDeclarativeListModel@@UBE?AVQVariant@@HH@Z @ 1097 NONAME ; class QVariant QDeclarativeListModel::data(int, int) const
- ?setElideMode@QDeclarativeText@@QAEXW4TextElideMode@1@@Z @ 1098 NONAME ; void QDeclarativeText::setElideMode(enum QDeclarativeText::TextElideMode)
+ ?setValue@QDeclarativeOpenMetaObject@@QAEXABVQByteArray@@ABVQVariant@@@Z @ 1096 NONAME ABSENT ; void QDeclarativeOpenMetaObject::setValue(class QByteArray const &, class QVariant const &)
+ ?data@QDeclarativeListModel@@UBE?AVQVariant@@HH@Z @ 1097 NONAME ABSENT ; class QVariant QDeclarativeListModel::data(int, int) const
+ ?setElideMode@QDeclarativeText@@QAEXW4TextElideMode@1@@Z @ 1098 NONAME ABSENT ; void QDeclarativeText::setElideMode(enum QDeclarativeText::TextElideMode)
?d_func@QDeclarativePropertyMap@@ABEPBVQDeclarativePropertyMapPrivate@@XZ @ 1099 NONAME ; class QDeclarativePropertyMapPrivate const * QDeclarativePropertyMap::d_func(void) const
?consistentTime@QDeclarativeItemPrivate@@2_JA @ 1100 NONAME ; long long QDeclarativeItemPrivate::consistentTime
?setWidth@QDeclarativeItem@@QAEXM@Z @ 1101 NONAME ; void QDeclarativeItem::setWidth(float)
- ?qt_metacall@QDeclarativeDebugObjectQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1102 NONAME ; int QDeclarativeDebugObjectQuery::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?qt_metacall@QDeclarativeDebugObjectQuery@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1102 NONAME ABSENT ; int QDeclarativeDebugObjectQuery::qt_metacall(enum QMetaObject::Call, int, void * *)
?contextObject@QDeclarativeContext@@QBEPAVQObject@@XZ @ 1103 NONAME ; class QObject * QDeclarativeContext::contextObject(void) const
- ??_EQDeclarativeOpenMetaObjectType@@UAE@I@Z @ 1104 NONAME ; QDeclarativeOpenMetaObjectType::~QDeclarativeOpenMetaObjectType(unsigned int)
- ?isWritable@QMetaPropertyBuilder@@QBE_NXZ @ 1105 NONAME ; bool QMetaPropertyBuilder::isWritable(void) const
- ?sizeFFromString@QDeclarativeStringConverters@@YA?AVQSizeF@@ABVQString@@PA_N@Z @ 1106 NONAME ; class QSizeF QDeclarativeStringConverters::sizeFFromString(class QString const &, bool *)
+ ??_EQDeclarativeOpenMetaObjectType@@UAE@I@Z @ 1104 NONAME ABSENT ; QDeclarativeOpenMetaObjectType::~QDeclarativeOpenMetaObjectType(unsigned int)
+ ?isWritable@QMetaPropertyBuilder@@QBE_NXZ @ 1105 NONAME ABSENT ; bool QMetaPropertyBuilder::isWritable(void) const
+ ?sizeFFromString@QDeclarativeStringConverters@@YA?AVQSizeF@@ABVQString@@PA_N@Z @ 1106 NONAME ABSENT ; class QSizeF QDeclarativeStringConverters::sizeFFromString(class QString const &, bool *)
??0QDeclarativeProperty@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeEngine@@@Z @ 1107 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QString const &, class QDeclarativeEngine *)
- ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 1108 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QByteArray const &)
- ??0QDeclarativeDebugFileReference@@QAE@XZ @ 1109 NONAME ; QDeclarativeDebugFileReference::QDeclarativeDebugFileReference(void)
+ ?addMethod@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 1108 NONAME ABSENT ; class QMetaMethodBuilder QMetaObjectBuilder::addMethod(class QByteArray const &)
+ ??0QDeclarativeDebugFileReference@@QAE@XZ @ 1109 NONAME ABSENT ; QDeclarativeDebugFileReference::QDeclarativeDebugFileReference(void)
?mapFromItem@QDeclarativeItem@@QBE?AVQScriptValue@@ABV2@MM@Z @ 1110 NONAME ; class QScriptValue QDeclarativeItem::mapFromItem(class QScriptValue const &, float, float) const
?trUtf8@QDeclarativeStateOperation@@SA?AVQString@@PBD0H@Z @ 1111 NONAME ; class QString QDeclarativeStateOperation::trUtf8(char const *, char const *, int)
- ?tr@QPacketProtocol@@SA?AVQString@@PBD0H@Z @ 1112 NONAME ; class QString QPacketProtocol::tr(char const *, char const *, int)
- ?d_func@QDeclarativeAnchors@@ABEPBVQDeclarativeAnchorsPrivate@@XZ @ 1113 NONAME ; class QDeclarativeAnchorsPrivate const * QDeclarativeAnchors::d_func(void) const
- ?setNotifySignal@QMetaPropertyBuilder@@QAEXABVQMetaMethodBuilder@@@Z @ 1114 NONAME ; void QMetaPropertyBuilder::setNotifySignal(class QMetaMethodBuilder const &)
- ?enabled@QDeclarativeBehavior@@QBE_NXZ @ 1115 NONAME ; bool QDeclarativeBehavior::enabled(void) const
- ?initProperty@QDeclarativePropertyPrivate@@QAEXPAVQObject@@ABVQString@@@Z @ 1116 NONAME ; void QDeclarativePropertyPrivate::initProperty(class QObject *, class QString const &)
- ?isEditable@QMetaPropertyBuilder@@QBE_NXZ @ 1117 NONAME ; bool QMetaPropertyBuilder::isEditable(void) const
- ??0QDeclarativeBinding@@QAE@ABVQString@@PAVQObject@@PAVQDeclarativeContextData@@1@Z @ 1118 NONAME ; QDeclarativeBinding::QDeclarativeBinding(class QString const &, class QObject *, class QDeclarativeContextData *, class QObject *)
- ?expression@QDeclarativeDebugExpressionQuery@@QBE?AVQVariant@@XZ @ 1119 NONAME ; class QVariant QDeclarativeDebugExpressionQuery::expression(void) const
- ??4QDeclarativeDomList@@QAEAAV0@ABV0@@Z @ 1120 NONAME ; class QDeclarativeDomList & QDeclarativeDomList::operator=(class QDeclarativeDomList const &)
+ ?tr@QPacketProtocol@@SA?AVQString@@PBD0H@Z @ 1112 NONAME ABSENT ; class QString QPacketProtocol::tr(char const *, char const *, int)
+ ?d_func@QDeclarativeAnchors@@ABEPBVQDeclarativeAnchorsPrivate@@XZ @ 1113 NONAME ABSENT ; class QDeclarativeAnchorsPrivate const * QDeclarativeAnchors::d_func(void) const
+ ?setNotifySignal@QMetaPropertyBuilder@@QAEXABVQMetaMethodBuilder@@@Z @ 1114 NONAME ABSENT ; void QMetaPropertyBuilder::setNotifySignal(class QMetaMethodBuilder const &)
+ ?enabled@QDeclarativeBehavior@@QBE_NXZ @ 1115 NONAME ABSENT ; bool QDeclarativeBehavior::enabled(void) const
+ ?initProperty@QDeclarativePropertyPrivate@@QAEXPAVQObject@@ABVQString@@@Z @ 1116 NONAME ABSENT ; void QDeclarativePropertyPrivate::initProperty(class QObject *, class QString const &)
+ ?isEditable@QMetaPropertyBuilder@@QBE_NXZ @ 1117 NONAME ABSENT ; bool QMetaPropertyBuilder::isEditable(void) const
+ ??0QDeclarativeBinding@@QAE@ABVQString@@PAVQObject@@PAVQDeclarativeContextData@@1@Z @ 1118 NONAME ABSENT ; QDeclarativeBinding::QDeclarativeBinding(class QString const &, class QObject *, class QDeclarativeContextData *, class QObject *)
+ ?expression@QDeclarativeDebugExpressionQuery@@QBE?AVQVariant@@XZ @ 1119 NONAME ABSENT ; class QVariant QDeclarativeDebugExpressionQuery::expression(void) const
+ ??4QDeclarativeDomList@@QAEAAV0@ABV0@@Z @ 1120 NONAME ABSENT ; class QDeclarativeDomList & QDeclarativeDomList::operator=(class QDeclarativeDomList const &)
?qt_metacall@QDeclarativeComponent@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1121 NONAME ; int QDeclarativeComponent::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?tr@QDeclarativeDebugService@@SA?AVQString@@PBD0H@Z @ 1122 NONAME ; class QString QDeclarativeDebugService::tr(char const *, char const *, int)
+ ?tr@QDeclarativeDebugService@@SA?AVQString@@PBD0H@Z @ 1122 NONAME ABSENT ; class QString QDeclarativeDebugService::tr(char const *, char const *, int)
?staticMetaObject@QDeclarativeEngine@@2UQMetaObject@@B @ 1123 NONAME ; struct QMetaObject const QDeclarativeEngine::staticMetaObject
?staticMetaObject@QDeclarativeStateOperation@@2UQMetaObject@@B @ 1124 NONAME ; struct QMetaObject const QDeclarativeStateOperation::staticMetaObject
?actions@QDeclarativeStateOperation@@UAE?AV?$QList@VQDeclarativeAction@@@@XZ @ 1125 NONAME ; class QList<class QDeclarativeAction> QDeclarativeStateOperation::actions(void)
- ?objectClassName@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 1126 NONAME ; class QByteArray QDeclarativeDomObject::objectClassName(void) const
+ ?objectClassName@QDeclarativeDomObject@@QBE?AVQByteArray@@XZ @ 1126 NONAME ABSENT ; class QByteArray QDeclarativeDomObject::objectClassName(void) const
??8QDeclarativeProperty@@QBE_NABV0@@Z @ 1127 NONAME ; bool QDeclarativeProperty::operator==(class QDeclarativeProperty const &) const
- ??1QDeclarativeDomValue@@QAE@XZ @ 1128 NONAME ; QDeclarativeDomValue::~QDeclarativeDomValue(void)
+ ??1QDeclarativeDomValue@@QAE@XZ @ 1128 NONAME ABSENT ; QDeclarativeDomValue::~QDeclarativeDomValue(void)
??_EQDeclarativePropertyMap@@UAE@I@Z @ 1129 NONAME ; QDeclarativePropertyMap::~QDeclarativePropertyMap(unsigned int)
- ?staticMetaObject@QDeclarativeDebugRootContextQuery@@2UQMetaObject@@B @ 1130 NONAME ; struct QMetaObject const QDeclarativeDebugRootContextQuery::staticMetaObject
- ?noCreationReason@QDeclarativeType@@QBE?AVQString@@XZ @ 1131 NONAME ; class QString QDeclarativeType::noCreationReason(void) const
- ?setUrl@QDeclarativeDebugFileReference@@QAEXABVQUrl@@@Z @ 1132 NONAME ; void QDeclarativeDebugFileReference::setUrl(class QUrl const &)
+ ?staticMetaObject@QDeclarativeDebugRootContextQuery@@2UQMetaObject@@B @ 1130 NONAME ABSENT ; struct QMetaObject const QDeclarativeDebugRootContextQuery::staticMetaObject
+ ?noCreationReason@QDeclarativeType@@QBE?AVQString@@XZ @ 1131 NONAME ABSENT ; class QString QDeclarativeType::noCreationReason(void) const
+ ?setUrl@QDeclarativeDebugFileReference@@QAEXABVQUrl@@@Z @ 1132 NONAME ABSENT ; void QDeclarativeDebugFileReference::setUrl(class QUrl const &)
??1QDeclarativeCustomParserProperty@@QAE@XZ @ 1133 NONAME ; QDeclarativeCustomParserProperty::~QDeclarativeCustomParserProperty(void)
- ??1QPacketProtocol@@UAE@XZ @ 1134 NONAME ; QPacketProtocol::~QPacketProtocol(void)
- ??1QDeclarativeAbstractBinding@@MAE@XZ @ 1135 NONAME ; QDeclarativeAbstractBinding::~QDeclarativeAbstractBinding(void)
- ?indexOfEnumerator@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1136 NONAME ; int QMetaObjectBuilder::indexOfEnumerator(class QByteArray const &)
- ?qt_metacast@QDeclarativePen@@UAEPAXPBD@Z @ 1137 NONAME ; void * QDeclarativePen::qt_metacast(char const *)
- ?leftMargin@QDeclarativeAnchors@@QBEMXZ @ 1138 NONAME ; float QDeclarativeAnchors::leftMargin(void) const
+ ??1QPacketProtocol@@UAE@XZ @ 1134 NONAME ABSENT ; QPacketProtocol::~QPacketProtocol(void)
+ ??1QDeclarativeAbstractBinding@@MAE@XZ @ 1135 NONAME ABSENT ; QDeclarativeAbstractBinding::~QDeclarativeAbstractBinding(void)
+ ?indexOfEnumerator@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1136 NONAME ABSENT ; int QMetaObjectBuilder::indexOfEnumerator(class QByteArray const &)
+ ?qt_metacast@QDeclarativePen@@UAEPAXPBD@Z @ 1137 NONAME ABSENT ; void * QDeclarativePen::qt_metacast(char const *)
+ ?leftMargin@QDeclarativeAnchors@@QBEMXZ @ 1138 NONAME ABSENT ; float QDeclarativeAnchors::leftMargin(void) const
??1QDeclarativeComponent@@UAE@XZ @ 1139 NONAME ; QDeclarativeComponent::~QDeclarativeComponent(void)
??1QDeclarativeItem@@UAE@XZ @ 1140 NONAME ; QDeclarativeItem::~QDeclarativeItem(void)
- ?setEnabled@QDeclarativeAbstractBinding@@UAEX_NV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1141 NONAME ; void QDeclarativeAbstractBinding::setEnabled(bool, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
- ?staticMetaObject@QListModelInterface@@2UQMetaObject@@B @ 1142 NONAME ; struct QMetaObject const QListModelInterface::staticMetaObject
+ ?setEnabled@QDeclarativeAbstractBinding@@UAEX_NV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1141 NONAME ABSENT ; void QDeclarativeAbstractBinding::setEnabled(bool, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
+ ?staticMetaObject@QListModelInterface@@2UQMetaObject@@B @ 1142 NONAME ABSENT ; struct QMetaObject const QListModelInterface::staticMetaObject
?d_func@QDeclarativeTransition@@ABEPBVQDeclarativeTransitionPrivate@@XZ @ 1143 NONAME ; class QDeclarativeTransitionPrivate const * QDeclarativeTransition::d_func(void) const
?sourceFile@QDeclarativeExpression@@QBE?AVQString@@XZ @ 1144 NONAME ; class QString QDeclarativeExpression::sourceFile(void) const
- ??_EQDeclarativeAnchors@@UAE@I@Z @ 1145 NONAME ; QDeclarativeAnchors::~QDeclarativeAnchors(unsigned int)
- ?removeNotifySignal@QMetaPropertyBuilder@@QAEXXZ @ 1146 NONAME ; void QMetaPropertyBuilder::removeNotifySignal(void)
- ?trUtf8@QDeclarativeDebugService@@SA?AVQString@@PBD0@Z @ 1147 NONAME ; class QString QDeclarativeDebugService::trUtf8(char const *, char const *)
+ ??_EQDeclarativeAnchors@@UAE@I@Z @ 1145 NONAME ABSENT ; QDeclarativeAnchors::~QDeclarativeAnchors(unsigned int)
+ ?removeNotifySignal@QMetaPropertyBuilder@@QAEXXZ @ 1146 NONAME ABSENT ; void QMetaPropertyBuilder::removeNotifySignal(void)
+ ?trUtf8@QDeclarativeDebugService@@SA?AVQString@@PBD0@Z @ 1147 NONAME ABSENT ; class QString QDeclarativeDebugService::trUtf8(char const *, char const *)
?setImportPathList@QDeclarativeEngine@@QAEXABVQStringList@@@Z @ 1148 NONAME ; void QDeclarativeEngine::setImportPathList(class QStringList const &)
?enabledChanged@QDeclarativeDebugService@@MAEX_N@Z @ 1149 NONAME ABSENT ; void QDeclarativeDebugService::enabledChanged(bool)
- ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 1150 NONAME ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugObjectReference const &, class QObject *)
+ ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 1150 NONAME ABSENT ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugObjectReference const &, class QObject *)
?asAST@Variant@QDeclarativeParser@@QBEPAVNode@AST@QDeclarativeJS@@XZ @ 1151 NONAME ; class QDeclarativeJS::AST::Node * QDeclarativeParser::Variant::asAST(void) const
- ?indexOfClassInfo@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1152 NONAME ; int QMetaObjectBuilder::indexOfClassInfo(class QByteArray const &)
- ??0QDeclarativeDomImport@@QAE@ABV0@@Z @ 1153 NONAME ; QDeclarativeDomImport::QDeclarativeDomImport(class QDeclarativeDomImport const &)
- ?width@QDeclarativePen@@QBEHXZ @ 1154 NONAME ; int QDeclarativePen::width(void) const
+ ?indexOfClassInfo@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1152 NONAME ABSENT ; int QMetaObjectBuilder::indexOfClassInfo(class QByteArray const &)
+ ??0QDeclarativeDomImport@@QAE@ABV0@@Z @ 1153 NONAME ABSENT ; QDeclarativeDomImport::QDeclarativeDomImport(class QDeclarativeDomImport const &)
+ ?width@QDeclarativePen@@QBEHXZ @ 1154 NONAME ABSENT ; int QDeclarativePen::width(void) const
?d_func@QDeclarativeStateGroup@@AAEPAVQDeclarativeStateGroupPrivate@@XZ @ 1155 NONAME ; class QDeclarativeStateGroupPrivate * QDeclarativeStateGroup::d_func(void)
??6QDeclarativeInfo@@QAEAAV0@P6AAAVQTextStream@@AAV1@@Z@Z @ 1156 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QTextStream & (*)(class QTextStream &))
- ?trUtf8@QDeclarativeEngineDebug@@SA?AVQString@@PBD0@Z @ 1157 NONAME ; class QString QDeclarativeEngineDebug::trUtf8(char const *, char const *)
- ?type@QDeclarativeOpenMetaObject@@QBEPAVQDeclarativeOpenMetaObjectType@@XZ @ 1158 NONAME ; class QDeclarativeOpenMetaObjectType * QDeclarativeOpenMetaObject::type(void) const
+ ?trUtf8@QDeclarativeEngineDebug@@SA?AVQString@@PBD0@Z @ 1157 NONAME ABSENT ; class QString QDeclarativeEngineDebug::trUtf8(char const *, char const *)
+ ?type@QDeclarativeOpenMetaObject@@QBEPAVQDeclarativeOpenMetaObjectType@@XZ @ 1158 NONAME ABSENT ; class QDeclarativeOpenMetaObjectType * QDeclarativeOpenMetaObject::type(void) const
?tr@QDeclarativeExpression@@SA?AVQString@@PBD0@Z @ 1159 NONAME ; class QString QDeclarativeExpression::tr(char const *, char const *)
- ??0QDeclarativeDomValueValueInterceptor@@QAE@XZ @ 1160 NONAME ; QDeclarativeDomValueValueInterceptor::QDeclarativeDomValueValueInterceptor(void)
- ??1QDeclarativeDebugPropertyWatch@@UAE@XZ @ 1161 NONAME ; QDeclarativeDebugPropertyWatch::~QDeclarativeDebugPropertyWatch(void)
+ ??0QDeclarativeDomValueValueInterceptor@@QAE@XZ @ 1160 NONAME ABSENT ; QDeclarativeDomValueValueInterceptor::QDeclarativeDomValueValueInterceptor(void)
+ ??1QDeclarativeDebugPropertyWatch@@UAE@XZ @ 1161 NONAME ABSENT ; QDeclarativeDebugPropertyWatch::~QDeclarativeDebugPropertyWatch(void)
?evaluate@QDeclarativeExpression@@QAE?AVQVariant@@PA_N@Z @ 1162 NONAME ; class QVariant QDeclarativeExpression::evaluate(bool *)
- ?isDefaultProperty@QDeclarativeDomProperty@@QBE_NXZ @ 1163 NONAME ; bool QDeclarativeDomProperty::isDefaultProperty(void) const
- ??0QDeclarativeAction@@QAE@PAVQObject@@ABVQString@@ABVQVariant@@@Z @ 1164 NONAME ; QDeclarativeAction::QDeclarativeAction(class QObject *, class QString const &, class QVariant const &)
- ?metaObject@QDeclarativeRectangle@@UBEPBUQMetaObject@@XZ @ 1165 NONAME ; struct QMetaObject const * QDeclarativeRectangle::metaObject(void) const
- ?removeRelatedMetaObject@QMetaObjectBuilder@@QAEXH@Z @ 1166 NONAME ; void QMetaObjectBuilder::removeRelatedMetaObject(int)
+ ?isDefaultProperty@QDeclarativeDomProperty@@QBE_NXZ @ 1163 NONAME ABSENT ; bool QDeclarativeDomProperty::isDefaultProperty(void) const
+ ??0QDeclarativeAction@@QAE@PAVQObject@@ABVQString@@ABVQVariant@@@Z @ 1164 NONAME ABSENT ; QDeclarativeAction::QDeclarativeAction(class QObject *, class QString const &, class QVariant const &)
+ ?metaObject@QDeclarativeRectangle@@UBEPBUQMetaObject@@XZ @ 1165 NONAME ABSENT ; struct QMetaObject const * QDeclarativeRectangle::metaObject(void) const
+ ?removeRelatedMetaObject@QMetaObjectBuilder@@QAEXH@Z @ 1166 NONAME ABSENT ; void QMetaObjectBuilder::removeRelatedMetaObject(int)
??0QDeclarativeError@@QAE@XZ @ 1167 NONAME ; QDeclarativeError::QDeclarativeError(void)
- ?hasValue@QDeclarativeOpenMetaObject@@QBE_NH@Z @ 1168 NONAME ; bool QDeclarativeOpenMetaObject::hasValue(int) const
+ ?hasValue@QDeclarativeOpenMetaObject@@QBE_NH@Z @ 1168 NONAME ABSENT ; bool QDeclarativeOpenMetaObject::hasValue(int) const
?object@QDeclarativeProperty@@QBEPAVQObject@@XZ @ 1169 NONAME ; class QObject * QDeclarativeProperty::object(void) const
?stateGroup@QDeclarativeState@@QBEPAVQDeclarativeStateGroup@@XZ @ 1170 NONAME ; class QDeclarativeStateGroup * QDeclarativeState::stateGroup(void) const
?connectNotifySignal@QDeclarativeProperty@@QBE_NPAVQObject@@H@Z @ 1171 NONAME ; bool QDeclarativeProperty::connectNotifySignal(class QObject *, int) const
?focusChanged@QDeclarativeItemPrivate@@UAEX_N@Z @ 1172 NONAME ; void QDeclarativeItemPrivate::focusChanged(bool)
- ?contextDebugId@QDeclarativeDebugObjectReference@@QBEHXZ @ 1173 NONAME ; int QDeclarativeDebugObjectReference::contextDebugId(void) const
- ?url@QDeclarativeDebugFileReference@@QBE?AVQUrl@@XZ @ 1174 NONAME ; class QUrl QDeclarativeDebugFileReference::url(void) const
- ?paint@QDeclarativeRectangle@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1175 NONAME ; void QDeclarativeRectangle::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *)
+ ?contextDebugId@QDeclarativeDebugObjectReference@@QBEHXZ @ 1173 NONAME ABSENT ; int QDeclarativeDebugObjectReference::contextDebugId(void) const
+ ?url@QDeclarativeDebugFileReference@@QBE?AVQUrl@@XZ @ 1174 NONAME ABSENT ; class QUrl QDeclarativeDebugFileReference::url(void) const
+ ?paint@QDeclarativeRectangle@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1175 NONAME ABSENT ; void QDeclarativeRectangle::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *)
??6QDeclarativeState@@QAEAAV0@PAVQDeclarativeStateOperation@@@Z @ 1176 NONAME ; class QDeclarativeState & QDeclarativeState::operator<<(class QDeclarativeStateOperation *)
- ?destroy@QDeclarativeAbstractBinding@@UAEXXZ @ 1177 NONAME ; void QDeclarativeAbstractBinding::destroy(void)
- ?qt_metacast@QDeclarativeDebugService@@UAEPAXPBD@Z @ 1178 NONAME ; void * QDeclarativeDebugService::qt_metacast(char const *)
- ?qt_metacast@QDeclarativeValueType@@UAEPAXPBD@Z @ 1179 NONAME ; void * QDeclarativeValueType::qt_metacast(char const *)
+ ?destroy@QDeclarativeAbstractBinding@@UAEXXZ @ 1177 NONAME ABSENT ; void QDeclarativeAbstractBinding::destroy(void)
+ ?qt_metacast@QDeclarativeDebugService@@UAEPAXPBD@Z @ 1178 NONAME ABSENT ; void * QDeclarativeDebugService::qt_metacast(char const *)
+ ?qt_metacast@QDeclarativeValueType@@UAEPAXPBD@Z @ 1179 NONAME ABSENT ; void * QDeclarativeValueType::qt_metacast(char const *)
?childAt@QDeclarativeItem@@QBEPAV1@MM@Z @ 1180 NONAME ; class QDeclarativeItem * QDeclarativeItem::childAt(float, float) const
- ?paintedWidth@QDeclarativeText@@QBEMXZ @ 1181 NONAME ; float QDeclarativeText::paintedWidth(void) const
- ?tr@QDeclarativeBinding@@SA?AVQString@@PBD0@Z @ 1182 NONAME ; class QString QDeclarativeBinding::tr(char const *, char const *)
+ ?paintedWidth@QDeclarativeText@@QBEMXZ @ 1181 NONAME ABSENT ; float QDeclarativeText::paintedWidth(void) const
+ ?tr@QDeclarativeBinding@@SA?AVQString@@PBD0@Z @ 1182 NONAME ABSENT ; class QString QDeclarativeBinding::tr(char const *, char const *)
?clip@QDeclarativeItem@@QBE_NXZ @ 1183 NONAME ; bool QDeclarativeItem::clip(void) const
- ??0QDeclarativeValueTypeFactory@@QAE@XZ @ 1184 NONAME ; QDeclarativeValueTypeFactory::QDeclarativeValueTypeFactory(void)
+ ??0QDeclarativeValueTypeFactory@@QAE@XZ @ 1184 NONAME ABSENT ; QDeclarativeValueTypeFactory::QDeclarativeValueTypeFactory(void)
??0QDeclarativeComponent@@QAE@PAVQDeclarativeEngine@@ABVQUrl@@PAVQObject@@@Z @ 1185 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeEngine *, class QUrl const &, class QObject *)
- ?literal@QDeclarativeDomValueLiteral@@QBE?AVQString@@XZ @ 1186 NONAME ; class QString QDeclarativeDomValueLiteral::literal(void) const
- ??_EQDeclarativeEngineDebug@@UAE@I@Z @ 1187 NONAME ; QDeclarativeEngineDebug::~QDeclarativeEngineDebug(unsigned int)
- ?bottom@QDeclarativeScaleGrid@@QBEHXZ @ 1188 NONAME ; int QDeclarativeScaleGrid::bottom(void) const
+ ?literal@QDeclarativeDomValueLiteral@@QBE?AVQString@@XZ @ 1186 NONAME ABSENT ; class QString QDeclarativeDomValueLiteral::literal(void) const
+ ??_EQDeclarativeEngineDebug@@UAE@I@Z @ 1187 NONAME ABSENT ; QDeclarativeEngineDebug::~QDeclarativeEngineDebug(unsigned int)
+ ?bottom@QDeclarativeScaleGrid@@QBEHXZ @ 1188 NONAME ABSENT ; int QDeclarativeScaleGrid::bottom(void) const
?d_func@QDeclarativePropertyMap@@AAEPAVQDeclarativePropertyMapPrivate@@XZ @ 1189 NONAME ; class QDeclarativePropertyMapPrivate * QDeclarativePropertyMap::d_func(void)
?trUtf8@QDeclarativeView@@SA?AVQString@@PBD0@Z @ 1190 NONAME ; class QString QDeclarativeView::trUtf8(char const *, char const *)
?rect@QDeclarativePixmap@@QBE?AVQRect@@XZ @ 1191 NONAME ; class QRect QDeclarativePixmap::rect(void) const
??0QDeclarativeTransition@@QAE@PAVQObject@@@Z @ 1192 NONAME ; QDeclarativeTransition::QDeclarativeTransition(class QObject *)
- ?horizontalCenter@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1193 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::horizontalCenter(void) const
+ ?horizontalCenter@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1193 NONAME ABSENT ; class QDeclarativeAnchorLine QDeclarativeAnchors::horizontalCenter(void) const
?setObjectOwnership@QDeclarativeEngine@@SAXPAVQObject@@W4ObjectOwnership@1@@Z @ 1194 NONAME ; void QDeclarativeEngine::setObjectOwnership(class QObject *, enum QDeclarativeEngine::ObjectOwnership)
?tr@QDeclarativeContext@@SA?AVQString@@PBD0H@Z @ 1195 NONAME ; class QString QDeclarativeContext::tr(char const *, char const *, int)
- ?metaCall@QDeclarativeOpenMetaObject@@MAEHW4Call@QMetaObject@@HPAPAX@Z @ 1196 NONAME ; int QDeclarativeOpenMetaObject::metaCall(enum QMetaObject::Call, int, void * *)
- ??_EQDeclarativeText@@UAE@I@Z @ 1197 NONAME ; QDeclarativeText::~QDeclarativeText(unsigned int)
- ?setLeftMargin@QDeclarativeAnchors@@QAEXM@Z @ 1198 NONAME ; void QDeclarativeAnchors::setLeftMargin(float)
+ ?metaCall@QDeclarativeOpenMetaObject@@MAEHW4Call@QMetaObject@@HPAPAX@Z @ 1196 NONAME ABSENT ; int QDeclarativeOpenMetaObject::metaCall(enum QMetaObject::Call, int, void * *)
+ ??_EQDeclarativeText@@UAE@I@Z @ 1197 NONAME ABSENT ; QDeclarativeText::~QDeclarativeText(unsigned int)
+ ?setLeftMargin@QDeclarativeAnchors@@QAEXM@Z @ 1198 NONAME ABSENT ; void QDeclarativeAnchors::setLeftMargin(float)
?metaObject@QDeclarativeStateGroup@@UBEPBUQMetaObject@@XZ @ 1199 NONAME ; struct QMetaObject const * QDeclarativeStateGroup::metaObject(void) const
- ?expression@QDeclarativeAbstractBinding@@UBE?AVQString@@XZ @ 1200 NONAME ; class QString QDeclarativeAbstractBinding::expression(void) const
+ ?expression@QDeclarativeAbstractBinding@@UBE?AVQString@@XZ @ 1200 NONAME ABSENT ; class QString QDeclarativeAbstractBinding::expression(void) const
??6QDeclarativeInfo@@QAEAAV0@N@Z @ 1201 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(double)
- ?setAnimation@QDeclarativeBehavior@@QAEXPAVQDeclarativeAbstractAnimation@@@Z @ 1202 NONAME ; void QDeclarativeBehavior::setAnimation(class QDeclarativeAbstractAnimation *)
- ?properties@QDeclarativeDebugObjectReference@@QBE?AV?$QList@VQDeclarativeDebugPropertyReference@@@@XZ @ 1203 NONAME ; class QList<class QDeclarativeDebugPropertyReference> QDeclarativeDebugObjectReference::properties(void) const
+ ?setAnimation@QDeclarativeBehavior@@QAEXPAVQDeclarativeAbstractAnimation@@@Z @ 1202 NONAME ABSENT ; void QDeclarativeBehavior::setAnimation(class QDeclarativeAbstractAnimation *)
+ ?properties@QDeclarativeDebugObjectReference@@QBE?AV?$QList@VQDeclarativeDebugPropertyReference@@@@XZ @ 1203 NONAME ABSENT ; class QList<class QDeclarativeDebugPropertyReference> QDeclarativeDebugObjectReference::properties(void) const
?trUtf8@QDeclarativePixmap@@SA?AVQString@@PBD0@Z @ 1204 NONAME ; class QString QDeclarativePixmap::trUtf8(char const *, char const *)
- ?trUtf8@QDeclarativeDebugClient@@SA?AVQString@@PBD0@Z @ 1205 NONAME ; class QString QDeclarativeDebugClient::trUtf8(char const *, char const *)
+ ?trUtf8@QDeclarativeDebugClient@@SA?AVQString@@PBD0@Z @ 1205 NONAME ABSENT ; class QString QDeclarativeDebugClient::trUtf8(char const *, char const *)
?context@QDeclarativeExpression@@QBEPAVQDeclarativeContext@@XZ @ 1206 NONAME ; class QDeclarativeContext * QDeclarativeExpression::context(void) const
- ?qt_metacast@QDeclarativeBehavior@@UAEPAXPBD@Z @ 1207 NONAME ; void * QDeclarativeBehavior::qt_metacast(char const *)
- ?objectTypeMinorVersion@QDeclarativeDomObject@@QBEHXZ @ 1208 NONAME ; int QDeclarativeDomObject::objectTypeMinorVersion(void) const
+ ?qt_metacast@QDeclarativeBehavior@@UAEPAXPBD@Z @ 1207 NONAME ABSENT ; void * QDeclarativeBehavior::qt_metacast(char const *)
+ ?objectTypeMinorVersion@QDeclarativeDomObject@@QBEHXZ @ 1208 NONAME ABSENT ; int QDeclarativeDomObject::objectTypeMinorVersion(void) const
??0QDeclarativePropertyValueInterceptor@@QAE@XZ @ 1209 NONAME ; QDeclarativePropertyValueInterceptor::QDeclarativePropertyValueInterceptor(void)
?isValid@QDeclarativeError@@QBE_NXZ @ 1210 NONAME ; bool QDeclarativeError::isValid(void) const
- ??0QMetaMethodBuilder@@QAE@XZ @ 1211 NONAME ; QMetaMethodBuilder::QMetaMethodBuilder(void)
+ ??0QMetaMethodBuilder@@QAE@XZ @ 1211 NONAME ABSENT ; QMetaMethodBuilder::QMetaMethodBuilder(void)
?completed@QDeclarativeState@@IAEXXZ @ 1212 NONAME ; void QDeclarativeState::completed(void)
- ?radiusChanged@QDeclarativeRectangle@@IAEXXZ @ 1213 NONAME ; void QDeclarativeRectangle::radiusChanged(void)
+ ?radiusChanged@QDeclarativeRectangle@@IAEXXZ @ 1213 NONAME ABSENT ; void QDeclarativeRectangle::radiusChanged(void)
?getStaticMetaObject@QDeclarativeExpression@@SAABUQMetaObject@@XZ @ 1214 NONAME ; struct QMetaObject const & QDeclarativeExpression::getStaticMetaObject(void)
- ?gridLeft@QDeclarativeGridScaledImage@@QBEHXZ @ 1215 NONAME ; int QDeclarativeGridScaledImage::gridLeft(void) const
- ?setWritable@QMetaPropertyBuilder@@QAEX_N@Z @ 1216 NONAME ; void QMetaPropertyBuilder::setWritable(bool)
+ ?gridLeft@QDeclarativeGridScaledImage@@QBEHXZ @ 1215 NONAME ABSENT ; int QDeclarativeGridScaledImage::gridLeft(void) const
+ ?setWritable@QMetaPropertyBuilder@@QAEX_N@Z @ 1216 NONAME ABSENT ; void QMetaPropertyBuilder::setWritable(bool)
?qt_metacast@QDeclarativeStateGroup@@UAEPAXPBD@Z @ 1217 NONAME ; void * QDeclarativeStateGroup::qt_metacast(char const *)
- ?defaultMethod@QDeclarativeMetaType@@SA?AVQMetaMethod@@PAVQObject@@@Z @ 1218 NONAME ; class QMetaMethod QDeclarativeMetaType::defaultMethod(class QObject *)
- ?qt_metacast@QDeclarativeEngineDebug@@UAEPAXPBD@Z @ 1219 NONAME ; void * QDeclarativeEngineDebug::qt_metacast(char const *)
+ ?defaultMethod@QDeclarativeMetaType@@SA?AVQMetaMethod@@PAVQObject@@@Z @ 1218 NONAME ABSENT ; class QMetaMethod QDeclarativeMetaType::defaultMethod(class QObject *)
+ ?qt_metacast@QDeclarativeEngineDebug@@UAEPAXPBD@Z @ 1219 NONAME ABSENT ; void * QDeclarativeEngineDebug::qt_metacast(char const *)
?staticMetaObject@QDeclarativeExpression@@2UQMetaObject@@B @ 1220 NONAME ; struct QMetaObject const QDeclarativeExpression::staticMetaObject
?statusChanged@QDeclarativeComponent@@IAEXW4Status@1@@Z @ 1221 NONAME ; void QDeclarativeComponent::statusChanged(enum QDeclarativeComponent::Status)
- ?setTarget@QDeclarativeBinding@@QAEXABVQDeclarativeProperty@@@Z @ 1222 NONAME ; void QDeclarativeBinding::setTarget(class QDeclarativeProperty const &)
+ ?setTarget@QDeclarativeBinding@@QAEXABVQDeclarativeProperty@@@Z @ 1222 NONAME ABSENT ; void QDeclarativeBinding::setTarget(class QDeclarativeProperty const &)
?imageProvider@QDeclarativeEngine@@QBEPAVQDeclarativeImageProvider@@ABVQString@@@Z @ 1223 NONAME ; class QDeclarativeImageProvider * QDeclarativeEngine::imageProvider(class QString const &) const
- ?packetsAvailable@QPacketProtocol@@QBE_JXZ @ 1224 NONAME ; long long QPacketProtocol::packetsAvailable(void) const
- ?state@QDeclarativeDebugWatch@@QBE?AW4State@1@XZ @ 1225 NONAME ; enum QDeclarativeDebugWatch::State QDeclarativeDebugWatch::state(void) const
- ?attachedPropertiesFuncById@QDeclarativeMetaType@@SAP6APAVQObject@@PAV2@@ZH@Z @ 1226 NONAME ; class QObject * (*)(class QObject *) QDeclarativeMetaType::attachedPropertiesFuncById(int)
- ?resetBaseline@QDeclarativeAnchors@@QAEXXZ @ 1227 NONAME ; void QDeclarativeAnchors::resetBaseline(void)
- ?name@QDeclarativeDebugClient@@QBE?AVQString@@XZ @ 1228 NONAME ; class QString QDeclarativeDebugClient::name(void) const
- ?propertyValueInterceptorCast@QDeclarativeType@@QBEHXZ @ 1229 NONAME ; int QDeclarativeType::propertyValueInterceptorCast(void) const
+ ?packetsAvailable@QPacketProtocol@@QBE_JXZ @ 1224 NONAME ABSENT ; long long QPacketProtocol::packetsAvailable(void) const
+ ?state@QDeclarativeDebugWatch@@QBE?AW4State@1@XZ @ 1225 NONAME ABSENT ; enum QDeclarativeDebugWatch::State QDeclarativeDebugWatch::state(void) const
+ ?attachedPropertiesFuncById@QDeclarativeMetaType@@SAP6APAVQObject@@PAV2@@ZH@Z @ 1226 NONAME ABSENT ; class QObject * (*)(class QObject *) QDeclarativeMetaType::attachedPropertiesFuncById(int)
+ ?resetBaseline@QDeclarativeAnchors@@QAEXXZ @ 1227 NONAME ABSENT ; void QDeclarativeAnchors::resetBaseline(void)
+ ?name@QDeclarativeDebugClient@@QBE?AVQString@@XZ @ 1228 NONAME ABSENT ; class QString QDeclarativeDebugClient::name(void) const
+ ?propertyValueInterceptorCast@QDeclarativeType@@QBEHXZ @ 1229 NONAME ABSENT ; int QDeclarativeType::propertyValueInterceptorCast(void) const
?setData@QDeclarativeComponent@@QAEXABVQByteArray@@ABVQUrl@@@Z @ 1230 NONAME ; void QDeclarativeComponent::setData(class QByteArray const &, class QUrl const &)
- ??4QDeclarativeDomValue@@QAEAAV0@ABV0@@Z @ 1231 NONAME ; class QDeclarativeDomValue & QDeclarativeDomValue::operator=(class QDeclarativeDomValue const &)
- ?toString@QDeclarativeListModel@@UBE?AVQString@@H@Z @ 1232 NONAME ; class QString QDeclarativeListModel::toString(int) const
+ ??4QDeclarativeDomValue@@QAEAAV0@ABV0@@Z @ 1231 NONAME ABSENT ; class QDeclarativeDomValue & QDeclarativeDomValue::operator=(class QDeclarativeDomValue const &)
+ ?toString@QDeclarativeListModel@@UBE?AVQString@@H@Z @ 1232 NONAME ABSENT ; class QString QDeclarativeListModel::toString(int) const
?resetWidth@QDeclarativeItem@@QAEXXZ @ 1233 NONAME ; void QDeclarativeItem::resetWidth(void)
??0QDeclarativeProperty@@QAE@ABV0@@Z @ 1234 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QDeclarativeProperty const &)
- ?text@QDeclarativeText@@QBE?AVQString@@XZ @ 1235 NONAME ; class QString QDeclarativeText::text(void) const
- ??1QDeclarativeDebugObjectQuery@@UAE@XZ @ 1236 NONAME ; QDeclarativeDebugObjectQuery::~QDeclarativeDebugObjectQuery(void)
- ?count@QDeclarativeOpenMetaObject@@QBEHXZ @ 1237 NONAME ; int QDeclarativeOpenMetaObject::count(void) const
- ?isFlag@QMetaEnumBuilder@@QBE_NXZ @ 1238 NONAME ; bool QMetaEnumBuilder::isFlag(void) const
- ?bindingIndex@QDeclarativePropertyPrivate@@SAHABVQDeclarativeProperty@@@Z @ 1239 NONAME ; int QDeclarativePropertyPrivate::bindingIndex(class QDeclarativeProperty const &)
- ??0QDeclarativeDomValueBinding@@QAE@ABV0@@Z @ 1240 NONAME ; QDeclarativeDomValueBinding::QDeclarativeDomValueBinding(class QDeclarativeDomValueBinding const &)
- ?trUtf8@QDeclarativeRectangle@@SA?AVQString@@PBD0@Z @ 1241 NONAME ; class QString QDeclarativeRectangle::trUtf8(char const *, char const *)
- ?classInfoName@QMetaObjectBuilder@@QBE?AVQByteArray@@H@Z @ 1242 NONAME ; class QByteArray QMetaObjectBuilder::classInfoName(int) const
- ?metaObject@QDeclarativeDebugObjectQuery@@UBEPBUQMetaObject@@XZ @ 1243 NONAME ; struct QMetaObject const * QDeclarativeDebugObjectQuery::metaObject(void) const
- ??4QDeclarativeDomDynamicProperty@@QAEAAV0@ABV0@@Z @ 1244 NONAME ; class QDeclarativeDomDynamicProperty & QDeclarativeDomDynamicProperty::operator=(class QDeclarativeDomDynamicProperty const &)
- ??_EQDeclarativeDebugEngineReference@@QAE@I@Z @ 1245 NONAME ; QDeclarativeDebugEngineReference::~QDeclarativeDebugEngineReference(unsigned int)
- ?usedAnchors@QDeclarativeAnchors@@QBE?AV?$QFlags@W4Anchor@QDeclarativeAnchors@@@@XZ @ 1246 NONAME ; class QFlags<enum QDeclarativeAnchors::Anchor> QDeclarativeAnchors::usedAnchors(void) const
+ ?text@QDeclarativeText@@QBE?AVQString@@XZ @ 1235 NONAME ABSENT ; class QString QDeclarativeText::text(void) const
+ ??1QDeclarativeDebugObjectQuery@@UAE@XZ @ 1236 NONAME ABSENT ; QDeclarativeDebugObjectQuery::~QDeclarativeDebugObjectQuery(void)
+ ?count@QDeclarativeOpenMetaObject@@QBEHXZ @ 1237 NONAME ABSENT ; int QDeclarativeOpenMetaObject::count(void) const
+ ?isFlag@QMetaEnumBuilder@@QBE_NXZ @ 1238 NONAME ABSENT ; bool QMetaEnumBuilder::isFlag(void) const
+ ?bindingIndex@QDeclarativePropertyPrivate@@SAHABVQDeclarativeProperty@@@Z @ 1239 NONAME ABSENT ; int QDeclarativePropertyPrivate::bindingIndex(class QDeclarativeProperty const &)
+ ??0QDeclarativeDomValueBinding@@QAE@ABV0@@Z @ 1240 NONAME ABSENT ; QDeclarativeDomValueBinding::QDeclarativeDomValueBinding(class QDeclarativeDomValueBinding const &)
+ ?trUtf8@QDeclarativeRectangle@@SA?AVQString@@PBD0@Z @ 1241 NONAME ABSENT ; class QString QDeclarativeRectangle::trUtf8(char const *, char const *)
+ ?classInfoName@QMetaObjectBuilder@@QBE?AVQByteArray@@H@Z @ 1242 NONAME ABSENT ; class QByteArray QMetaObjectBuilder::classInfoName(int) const
+ ?metaObject@QDeclarativeDebugObjectQuery@@UBEPBUQMetaObject@@XZ @ 1243 NONAME ABSENT ; struct QMetaObject const * QDeclarativeDebugObjectQuery::metaObject(void) const
+ ??4QDeclarativeDomDynamicProperty@@QAEAAV0@ABV0@@Z @ 1244 NONAME ABSENT ; class QDeclarativeDomDynamicProperty & QDeclarativeDomDynamicProperty::operator=(class QDeclarativeDomDynamicProperty const &)
+ ??_EQDeclarativeDebugEngineReference@@QAE@I@Z @ 1245 NONAME ABSENT ; QDeclarativeDebugEngineReference::~QDeclarativeDebugEngineReference(unsigned int)
+ ?usedAnchors@QDeclarativeAnchors@@QBE?AV?$QFlags@W4Anchor@QDeclarativeAnchors@@@@XZ @ 1246 NONAME ABSENT ; class QFlags<enum QDeclarativeAnchors::Anchor> QDeclarativeAnchors::usedAnchors(void) const
?baseline@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1247 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::baseline(void) const
- ?clear@QDeclarativeListModel@@QAEXXZ @ 1248 NONAME ; void QDeclarativeListModel::clear(void)
- ??0QDeclarativeDebugObjectExpressionWatch@@QAE@PAVQObject@@@Z @ 1249 NONAME ; QDeclarativeDebugObjectExpressionWatch::QDeclarativeDebugObjectExpressionWatch(class QObject *)
- ??4QDeclarativeDomProperty@@QAEAAV0@ABV0@@Z @ 1250 NONAME ; class QDeclarativeDomProperty & QDeclarativeDomProperty::operator=(class QDeclarativeDomProperty const &)
+ ?clear@QDeclarativeListModel@@QAEXXZ @ 1248 NONAME ABSENT ; void QDeclarativeListModel::clear(void)
+ ??0QDeclarativeDebugObjectExpressionWatch@@QAE@PAVQObject@@@Z @ 1249 NONAME ABSENT ; QDeclarativeDebugObjectExpressionWatch::QDeclarativeDebugObjectExpressionWatch(class QObject *)
+ ??4QDeclarativeDomProperty@@QAEAAV0@ABV0@@Z @ 1250 NONAME ABSENT ; class QDeclarativeDomProperty & QDeclarativeDomProperty::operator=(class QDeclarativeDomProperty const &)
?write@QDeclarativeProperty@@SA_NPAVQObject@@ABVQString@@ABVQVariant@@@Z @ 1251 NONAME ; bool QDeclarativeProperty::write(class QObject *, class QString const &, class QVariant const &)
?trUtf8@QDeclarativeContext@@SA?AVQString@@PBD0@Z @ 1252 NONAME ; class QString QDeclarativeContext::trUtf8(char const *, char const *)
- ?borderChanged@QDeclarativeScaleGrid@@IAEXXZ @ 1253 NONAME ; void QDeclarativeScaleGrid::borderChanged(void)
- ??1QDeclarativeRectangle@@UAE@XZ @ 1254 NONAME ; QDeclarativeRectangle::~QDeclarativeRectangle(void)
+ ?borderChanged@QDeclarativeScaleGrid@@IAEXXZ @ 1253 NONAME ABSENT ; void QDeclarativeScaleGrid::borderChanged(void)
+ ??1QDeclarativeRectangle@@UAE@XZ @ 1254 NONAME ABSENT ; QDeclarativeRectangle::~QDeclarativeRectangle(void)
?count@QDeclarativePropertyMap@@QBEHXZ @ 1255 NONAME ; int QDeclarativePropertyMap::count(void) const
- ?setReturnType@QMetaMethodBuilder@@QAEXABVQByteArray@@@Z @ 1256 NONAME ; void QMetaMethodBuilder::setReturnType(class QByteArray const &)
+ ?setReturnType@QMetaMethodBuilder@@QAEXABVQByteArray@@@Z @ 1256 NONAME ABSENT ; void QMetaMethodBuilder::setReturnType(class QByteArray const &)
??0QDeclarativePropertyValueSource@@QAE@XZ @ 1257 NONAME ; QDeclarativePropertyValueSource::QDeclarativePropertyValueSource(void)
- ?tr@QDeclarativePen@@SA?AVQString@@PBD0H@Z @ 1258 NONAME ; class QString QDeclarativePen::tr(char const *, char const *, int)
- ?toLiteral@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueLiteral@@XZ @ 1259 NONAME ; class QDeclarativeDomValueLiteral QDeclarativeDomValue::toLiteral(void) const
- ??0QDeclarativeOpenMetaObject@@QAE@PAVQObject@@_N@Z @ 1260 NONAME ; QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(class QObject *, bool)
+ ?tr@QDeclarativePen@@SA?AVQString@@PBD0H@Z @ 1258 NONAME ABSENT ; class QString QDeclarativePen::tr(char const *, char const *, int)
+ ?toLiteral@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueLiteral@@XZ @ 1259 NONAME ABSENT ; class QDeclarativeDomValueLiteral QDeclarativeDomValue::toLiteral(void) const
+ ??0QDeclarativeOpenMetaObject@@QAE@PAVQObject@@_N@Z @ 1260 NONAME ABSENT ; QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(class QObject *, bool)
?url@QDeclarativeComponent@@QBE?AVQUrl@@XZ @ 1261 NONAME ; class QUrl QDeclarativeComponent::url(void) const
?componentComplete@QDeclarativeStateGroup@@UAEXXZ @ 1262 NONAME ; void QDeclarativeStateGroup::componentComplete(void)
- ?setMargins@QDeclarativeAnchors@@QAEXM@Z @ 1263 NONAME ; void QDeclarativeAnchors::setMargins(float)
+ ?setMargins@QDeclarativeAnchors@@QAEXM@Z @ 1263 NONAME ABSENT ; void QDeclarativeAnchors::setMargins(float)
?qt_metacall@QDeclarativeView@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1264 NONAME ; int QDeclarativeView::qt_metacall(enum QMetaObject::Call, int, void * *)
?state@QDeclarativeStateGroup@@QBE?AVQString@@XZ @ 1265 NONAME ; class QString QDeclarativeStateGroup::state(void) const
- ??0QDeclarativeDomComponent@@QAE@ABV0@@Z @ 1266 NONAME ; QDeclarativeDomComponent::QDeclarativeDomComponent(class QDeclarativeDomComponent const &)
- ?queryAvailableEngines@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugEnginesQuery@@PAVQObject@@@Z @ 1267 NONAME ; class QDeclarativeDebugEnginesQuery * QDeclarativeEngineDebug::queryAvailableEngines(class QObject *)
+ ??0QDeclarativeDomComponent@@QAE@ABV0@@Z @ 1266 NONAME ABSENT ; QDeclarativeDomComponent::QDeclarativeDomComponent(class QDeclarativeDomComponent const &)
+ ?queryAvailableEngines@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugEnginesQuery@@PAVQObject@@@Z @ 1267 NONAME ABSENT ; class QDeclarativeDebugEnginesQuery * QDeclarativeEngineDebug::queryAvailableEngines(class QObject *)
??_EQDeclarativeItemPrivate@@UAE@I@Z @ 1268 NONAME ; QDeclarativeItemPrivate::~QDeclarativeItemPrivate(unsigned int)
- ?expression@QDeclarativeBinding@@UBE?AVQString@@XZ @ 1269 NONAME ; class QString QDeclarativeBinding::expression(void) const
- ?position@QDeclarativeDomProperty@@QBEHXZ @ 1270 NONAME ; int QDeclarativeDomProperty::position(void) const
- ?registerValueTypes@QDeclarativeValueTypeFactory@@SAXXZ @ 1271 NONAME ; void QDeclarativeValueTypeFactory::registerValueTypes(void)
- ?dynamicProperties@QDeclarativeDomObject@@QBE?AV?$QList@VQDeclarativeDomDynamicProperty@@@@XZ @ 1272 NONAME ; class QList<class QDeclarativeDomDynamicProperty> QDeclarativeDomObject::dynamicProperties(void) const
- ?attachedPropertiesFunction@QDeclarativeType@@QBEP6APAVQObject@@PAV2@@ZXZ @ 1273 NONAME ; class QObject * (*)(class QObject *) QDeclarativeType::attachedPropertiesFunction(void) const
+ ?expression@QDeclarativeBinding@@UBE?AVQString@@XZ @ 1269 NONAME ABSENT ; class QString QDeclarativeBinding::expression(void) const
+ ?position@QDeclarativeDomProperty@@QBEHXZ @ 1270 NONAME ABSENT ; int QDeclarativeDomProperty::position(void) const
+ ?registerValueTypes@QDeclarativeValueTypeFactory@@SAXXZ @ 1271 NONAME ABSENT ; void QDeclarativeValueTypeFactory::registerValueTypes(void)
+ ?dynamicProperties@QDeclarativeDomObject@@QBE?AV?$QList@VQDeclarativeDomDynamicProperty@@@@XZ @ 1272 NONAME ABSENT ; class QList<class QDeclarativeDomDynamicProperty> QDeclarativeDomObject::dynamicProperties(void) const
+ ?attachedPropertiesFunction@QDeclarativeType@@QBEP6APAVQObject@@PAV2@@ZXZ @ 1273 NONAME ABSENT ; class QObject * (*)(class QObject *) QDeclarativeType::attachedPropertiesFunction(void) const
??1QDeclarativePropertyMap@@UAE@XZ @ 1274 NONAME ; QDeclarativePropertyMap::~QDeclarativePropertyMap(void)
??_EQDeclarativeExtensionInterface@@UAE@I@Z @ 1275 NONAME ; QDeclarativeExtensionInterface::~QDeclarativeExtensionInterface(unsigned int)
??0Variant@QDeclarativeParser@@QAE@NABVQString@@@Z @ 1276 NONAME ; QDeclarativeParser::Variant::Variant(double, class QString const &)
??6QDeclarativeInfo@@QAEAAV0@VQBool@@@Z @ 1277 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QBool)
- ?setBinding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@PAVQObject@@HHPAV2@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1278 NONAME ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::setBinding(class QObject *, int, int, class QDeclarativeAbstractBinding *, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
- ?qt_metacast@QDeclarativeDebugExpressionQuery@@UAEPAXPBD@Z @ 1279 NONAME ; void * QDeclarativeDebugExpressionQuery::qt_metacast(char const *)
+ ?setBinding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@PAVQObject@@HHPAV2@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1278 NONAME ABSENT ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::setBinding(class QObject *, int, int, class QDeclarativeAbstractBinding *, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
+ ?qt_metacast@QDeclarativeDebugExpressionQuery@@UAEPAXPBD@Z @ 1279 NONAME ABSENT ; void * QDeclarativeDebugExpressionQuery::qt_metacast(char const *)
?contextProperty@QDeclarativeContext@@QBE?AVQVariant@@ABVQString@@@Z @ 1280 NONAME ; class QVariant QDeclarativeContext::contextProperty(class QString const &) const
?verticalCenter@QDeclarativeItemPrivate@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1281 NONAME ; class QDeclarativeAnchorLine QDeclarativeItemPrivate::verticalCenter(void) const
- ?metaObject@QDeclarativeScaleGrid@@UBEPBUQMetaObject@@XZ @ 1282 NONAME ; struct QMetaObject const * QDeclarativeScaleGrid::metaObject(void) const
+ ?metaObject@QDeclarativeScaleGrid@@UBEPBUQMetaObject@@XZ @ 1282 NONAME ABSENT ; struct QMetaObject const * QDeclarativeScaleGrid::metaObject(void) const
?qmlContext@@YAPAVQDeclarativeContext@@PBVQObject@@@Z @ 1283 NONAME ; class QDeclarativeContext * qmlContext(class QObject const *)
- ?setMethodBody@QDeclarativeEngineDebug@@QAE_NHABVQString@@0@Z @ 1284 NONAME ; bool QDeclarativeEngineDebug::setMethodBody(int, class QString const &, class QString const &)
+ ?setMethodBody@QDeclarativeEngineDebug@@QAE_NHABVQString@@0@Z @ 1284 NONAME ABSENT ; bool QDeclarativeEngineDebug::setMethodBody(int, class QString const &, class QString const &)
?transform_count@QDeclarativeItemPrivate@@SAHPAV?$QDeclarativeListProperty@VQGraphicsTransform@@@@@Z @ 1285 NONAME ; int QDeclarativeItemPrivate::transform_count(class QDeclarativeListProperty<class QGraphicsTransform> *)
- ?tr@QListModelInterface@@SA?AVQString@@PBD0H@Z @ 1286 NONAME ; class QString QListModelInterface::tr(char const *, char const *, int)
- ??1QDeclarativeDebugFileReference@@QAE@XZ @ 1287 NONAME ; QDeclarativeDebugFileReference::~QDeclarativeDebugFileReference(void)
- ?style@QDeclarativeText@@QBE?AW4TextStyle@1@XZ @ 1288 NONAME ; enum QDeclarativeText::TextStyle QDeclarativeText::style(void) const
- ??0QDeclarativeAbstractBinding@@QAE@XZ @ 1289 NONAME ; QDeclarativeAbstractBinding::QDeclarativeAbstractBinding(void)
- ?staticMetaObject@QDeclarativeDebugEnginesQuery@@2UQMetaObject@@B @ 1290 NONAME ; struct QMetaObject const QDeclarativeDebugEnginesQuery::staticMetaObject
+ ?tr@QListModelInterface@@SA?AVQString@@PBD0H@Z @ 1286 NONAME ABSENT ; class QString QListModelInterface::tr(char const *, char const *, int)
+ ??1QDeclarativeDebugFileReference@@QAE@XZ @ 1287 NONAME ABSENT ; QDeclarativeDebugFileReference::~QDeclarativeDebugFileReference(void)
+ ?style@QDeclarativeText@@QBE?AW4TextStyle@1@XZ @ 1288 NONAME ABSENT ; enum QDeclarativeText::TextStyle QDeclarativeText::style(void) const
+ ??0QDeclarativeAbstractBinding@@QAE@XZ @ 1289 NONAME ABSENT ; QDeclarativeAbstractBinding::QDeclarativeAbstractBinding(void)
+ ?staticMetaObject@QDeclarativeDebugEnginesQuery@@2UQMetaObject@@B @ 1290 NONAME ABSENT ; struct QMetaObject const QDeclarativeDebugEnginesQuery::staticMetaObject
?tr@QDeclarativePixmap@@SA?AVQString@@PBD0@Z @ 1291 NONAME ; class QString QDeclarativePixmap::tr(char const *, char const *)
?isError@QDeclarativeComponent@@QBE_NXZ @ 1292 NONAME ; bool QDeclarativeComponent::isError(void) const
?qt_metacall@QDeclarativeTransition@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1293 NONAME ; int QDeclarativeTransition::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?type@QDeclarativeDomImport@@QBE?AW4Type@1@XZ @ 1294 NONAME ; enum QDeclarativeDomImport::Type QDeclarativeDomImport::type(void) const
- ??1QDeclarativeDebugConnection@@UAE@XZ @ 1295 NONAME ; QDeclarativeDebugConnection::~QDeclarativeDebugConnection(void)
- ?value@QDeclarativeOpenMetaObject@@QBE?AVQVariant@@H@Z @ 1296 NONAME ; class QVariant QDeclarativeOpenMetaObject::value(int) const
- ?tr@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0H@Z @ 1297 NONAME ; class QString QDeclarativeDebugRootContextQuery::tr(char const *, char const *, int)
+ ?type@QDeclarativeDomImport@@QBE?AW4Type@1@XZ @ 1294 NONAME ABSENT ; enum QDeclarativeDomImport::Type QDeclarativeDomImport::type(void) const
+ ??1QDeclarativeDebugConnection@@UAE@XZ @ 1295 NONAME ABSENT ; QDeclarativeDebugConnection::~QDeclarativeDebugConnection(void)
+ ?value@QDeclarativeOpenMetaObject@@QBE?AVQVariant@@H@Z @ 1296 NONAME ABSENT ; class QVariant QDeclarativeOpenMetaObject::value(int) const
+ ?tr@QDeclarativeDebugRootContextQuery@@SA?AVQString@@PBD0H@Z @ 1297 NONAME ABSENT ; class QString QDeclarativeDebugRootContextQuery::tr(char const *, char const *, int)
?setFromState@QDeclarativeTransition@@QAEXABVQString@@@Z @ 1298 NONAME ; void QDeclarativeTransition::setFromState(class QString const &)
- ?metaObject@QDeclarativeDebugService@@UBEPBUQMetaObject@@XZ @ 1299 NONAME ; struct QMetaObject const * QDeclarativeDebugService::metaObject(void) const
- ?state@QDeclarativeDebugQuery@@QBE?AW4State@1@XZ @ 1300 NONAME ; enum QDeclarativeDebugQuery::State QDeclarativeDebugQuery::state(void) const
- ?setBottom@QDeclarativeScaleGrid@@QAEXH@Z @ 1301 NONAME ; void QDeclarativeScaleGrid::setBottom(int)
- ?topMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 1302 NONAME ; void QDeclarativeAnchors::topMarginChanged(void)
+ ?metaObject@QDeclarativeDebugService@@UBEPBUQMetaObject@@XZ @ 1299 NONAME ABSENT ; struct QMetaObject const * QDeclarativeDebugService::metaObject(void) const
+ ?state@QDeclarativeDebugQuery@@QBE?AW4State@1@XZ @ 1300 NONAME ABSENT ; enum QDeclarativeDebugQuery::State QDeclarativeDebugQuery::state(void) const
+ ?setBottom@QDeclarativeScaleGrid@@QAEXH@Z @ 1301 NONAME ABSENT ; void QDeclarativeScaleGrid::setBottom(int)
+ ?topMarginChanged@QDeclarativeAnchors@@IAEXXZ @ 1302 NONAME ABSENT ; void QDeclarativeAnchors::topMarginChanged(void)
?itemChange@QDeclarativeItem@@MAE?AVQVariant@@W4GraphicsItemChange@QGraphicsItem@@ABV2@@Z @ 1303 NONAME ; class QVariant QDeclarativeItem::itemChange(enum QGraphicsItem::GraphicsItemChange, class QVariant const &)
- ?position@QDeclarativeDomObject@@QBEHXZ @ 1304 NONAME ; int QDeclarativeDomObject::position(void) const
- ?update@QDeclarativeBinding@@UAEXV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1305 NONAME ; void QDeclarativeBinding::update(class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
- ?tr@QDeclarativeBehavior@@SA?AVQString@@PBD0@Z @ 1306 NONAME ; class QString QDeclarativeBehavior::tr(char const *, char const *)
- ?isDebuggingEnabled@QDeclarativeDebugService@@SA_NXZ @ 1307 NONAME ; bool QDeclarativeDebugService::isDebuggingEnabled(void)
- ?tr@QDeclarativeText@@SA?AVQString@@PBD0H@Z @ 1308 NONAME ; class QString QDeclarativeText::tr(char const *, char const *, int)
+ ?position@QDeclarativeDomObject@@QBEHXZ @ 1304 NONAME ABSENT ; int QDeclarativeDomObject::position(void) const
+ ?update@QDeclarativeBinding@@UAEXV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1305 NONAME ABSENT ; void QDeclarativeBinding::update(class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
+ ?tr@QDeclarativeBehavior@@SA?AVQString@@PBD0@Z @ 1306 NONAME ABSENT ; class QString QDeclarativeBehavior::tr(char const *, char const *)
+ ?isDebuggingEnabled@QDeclarativeDebugService@@SA_NXZ @ 1307 NONAME ABSENT ; bool QDeclarativeDebugService::isDebuggingEnabled(void)
+ ?tr@QDeclarativeText@@SA?AVQString@@PBD0H@Z @ 1308 NONAME ABSENT ; class QString QDeclarativeText::tr(char const *, char const *, int)
?reset@QDeclarativeProperty@@QBE_NXZ @ 1309 NONAME ; bool QDeclarativeProperty::reset(void) const
- ?objectDebugId@QDeclarativeDebugWatch@@QBEHXZ @ 1310 NONAME ; int QDeclarativeDebugWatch::objectDebugId(void) const
+ ?objectDebugId@QDeclarativeDebugWatch@@QBEHXZ @ 1310 NONAME ABSENT ; int QDeclarativeDebugWatch::objectDebugId(void) const
?width@QDeclarativeItemPrivate@@UBEMXZ @ 1311 NONAME ; float QDeclarativeItemPrivate::width(void) const
- ?d_func@QMetaMethodBuilder@@ABEPAVQMetaMethodBuilderPrivate@@XZ @ 1312 NONAME ; class QMetaMethodBuilderPrivate * QMetaMethodBuilder::d_func(void) const
+ ?d_func@QMetaMethodBuilder@@ABEPAVQMetaMethodBuilderPrivate@@XZ @ 1312 NONAME ABSENT ; class QMetaMethodBuilderPrivate * QMetaMethodBuilder::d_func(void) const
?isScript@Variant@QDeclarativeParser@@QBE_NXZ @ 1313 NONAME ; bool QDeclarativeParser::Variant::isScript(void) const
?classBegin@QDeclarativeStateGroup@@UAEXXZ @ 1314 NONAME ; void QDeclarativeStateGroup::classBegin(void)
- ?qt_metacast@QDeclarativeRectangle@@UAEPAXPBD@Z @ 1315 NONAME ; void * QDeclarativeRectangle::qt_metacast(char const *)
+ ?qt_metacast@QDeclarativeRectangle@@UAEPAXPBD@Z @ 1315 NONAME ABSENT ; void * QDeclarativeRectangle::qt_metacast(char const *)
?qt_metacast@QDeclarativeExpression@@UAEPAXPBD@Z @ 1316 NONAME ; void * QDeclarativeExpression::qt_metacast(char const *)
- ?indexOfProperty@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1317 NONAME ; int QMetaObjectBuilder::indexOfProperty(class QByteArray const &)
- ?vAlign@QDeclarativeText@@QBE?AW4VAlignment@1@XZ @ 1318 NONAME ; enum QDeclarativeText::VAlignment QDeclarativeText::vAlign(void) const
- ?addEnumerator@QMetaObjectBuilder@@QAE?AVQMetaEnumBuilder@@ABVQByteArray@@@Z @ 1319 NONAME ; class QMetaEnumBuilder QMetaObjectBuilder::addEnumerator(class QByteArray const &)
+ ?indexOfProperty@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1317 NONAME ABSENT ; int QMetaObjectBuilder::indexOfProperty(class QByteArray const &)
+ ?vAlign@QDeclarativeText@@QBE?AW4VAlignment@1@XZ @ 1318 NONAME ABSENT ; enum QDeclarativeText::VAlignment QDeclarativeText::vAlign(void) const
+ ?addEnumerator@QMetaObjectBuilder@@QAE?AVQMetaEnumBuilder@@ABVQByteArray@@@Z @ 1319 NONAME ABSENT ; class QMetaEnumBuilder QMetaObjectBuilder::addEnumerator(class QByteArray const &)
??1QDeclarativeError@@QAE@XZ @ 1320 NONAME ; QDeclarativeError::~QDeclarativeError(void)
?property@QDeclarativeProperty@@QBE?AVQMetaProperty@@XZ @ 1321 NONAME ; class QMetaProperty QDeclarativeProperty::property(void) const
- ?tr@QDeclarativeText@@SA?AVQString@@PBD0@Z @ 1322 NONAME ; class QString QDeclarativeText::tr(char const *, char const *)
+ ?tr@QDeclarativeText@@SA?AVQString@@PBD0@Z @ 1322 NONAME ABSENT ; class QString QDeclarativeText::tr(char const *, char const *)
?write@QDeclarativeProperty@@SA_NPAVQObject@@ABVQString@@ABVQVariant@@PAVQDeclarativeContext@@@Z @ 1323 NONAME ; bool QDeclarativeProperty::write(class QObject *, class QString const &, class QVariant const &, class QDeclarativeContext *)
- ??0QDeclarativeGridScaledImage@@QAE@XZ @ 1324 NONAME ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(void)
- ?setText@QDeclarativeText@@QAEXABVQString@@@Z @ 1325 NONAME ; void QDeclarativeText::setText(class QString const &)
- ?setBaseline@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 1326 NONAME ; void QDeclarativeAnchors::setBaseline(class QDeclarativeAnchorLine const &)
- ?resetCenterIn@QDeclarativeAnchors@@QAEXXZ @ 1327 NONAME ; void QDeclarativeAnchors::resetCenterIn(void)
- ?pixmapUrl@QDeclarativeGridScaledImage@@QBE?AVQString@@XZ @ 1328 NONAME ; class QString QDeclarativeGridScaledImage::pixmapUrl(void) const
- ?name@QDeclarativeOpenMetaObject@@QBE?AVQByteArray@@H@Z @ 1329 NONAME ; class QByteArray QDeclarativeOpenMetaObject::name(int) const
- ?trUtf8@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0@Z @ 1330 NONAME ; class QString QDeclarativeDebugObjectQuery::trUtf8(char const *, char const *)
+ ??0QDeclarativeGridScaledImage@@QAE@XZ @ 1324 NONAME ABSENT ; QDeclarativeGridScaledImage::QDeclarativeGridScaledImage(void)
+ ?setText@QDeclarativeText@@QAEXABVQString@@@Z @ 1325 NONAME ABSENT ; void QDeclarativeText::setText(class QString const &)
+ ?setBaseline@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 1326 NONAME ABSENT ; void QDeclarativeAnchors::setBaseline(class QDeclarativeAnchorLine const &)
+ ?resetCenterIn@QDeclarativeAnchors@@QAEXXZ @ 1327 NONAME ABSENT ; void QDeclarativeAnchors::resetCenterIn(void)
+ ?pixmapUrl@QDeclarativeGridScaledImage@@QBE?AVQString@@XZ @ 1328 NONAME ABSENT ; class QString QDeclarativeGridScaledImage::pixmapUrl(void) const
+ ?name@QDeclarativeOpenMetaObject@@QBE?AVQByteArray@@H@Z @ 1329 NONAME ABSENT ; class QByteArray QDeclarativeOpenMetaObject::name(int) const
+ ?trUtf8@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0@Z @ 1330 NONAME ABSENT ; class QString QDeclarativeDebugObjectQuery::trUtf8(char const *, char const *)
?qt_metacall@QDeclarativeEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1331 NONAME ; int QDeclarativeEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?getStaticMetaObject@QDeclarativeAnchors@@SAABUQMetaObject@@XZ @ 1332 NONAME ; struct QMetaObject const & QDeclarativeAnchors::getStaticMetaObject(void)
+ ?getStaticMetaObject@QDeclarativeAnchors@@SAABUQMetaObject@@XZ @ 1332 NONAME ABSENT ; struct QMetaObject const & QDeclarativeAnchors::getStaticMetaObject(void)
??0QDeclarativeProperty@@QAE@PAVQObject@@ABVQString@@@Z @ 1333 NONAME ; QDeclarativeProperty::QDeclarativeProperty(class QObject *, class QString const &)
?trUtf8@QDeclarativeState@@SA?AVQString@@PBD0@Z @ 1334 NONAME ; class QString QDeclarativeState::trUtf8(char const *, char const *)
- ?setStaticMetacallFunction@QMetaObjectBuilder@@QAEXP6AHW4Call@QMetaObject@@HPAPAX@Z@Z @ 1335 NONAME ; void QMetaObjectBuilder::setStaticMetacallFunction(int (*)(enum QMetaObject::Call, int, void * *))
- ?properties@QDeclarativeDomObject@@QBE?AV?$QList@VQDeclarativeDomProperty@@@@XZ @ 1336 NONAME ; class QList<class QDeclarativeDomProperty> QDeclarativeDomObject::properties(void) const
+ ?setStaticMetacallFunction@QMetaObjectBuilder@@QAEXP6AHW4Call@QMetaObject@@HPAPAX@Z@Z @ 1335 NONAME ABSENT ; void QMetaObjectBuilder::setStaticMetacallFunction(int (*)(enum QMetaObject::Call, int, void * *))
+ ?properties@QDeclarativeDomObject@@QBE?AV?$QList@VQDeclarativeDomProperty@@@@XZ @ 1336 NONAME ABSENT ; class QList<class QDeclarativeDomProperty> QDeclarativeDomObject::properties(void) const
??0QDeclarativeExpression@@QAE@PAVQDeclarativeContext@@PAVQObject@@ABVQString@@1@Z @ 1337 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContext *, class QObject *, class QString const &, class QObject *)
?tr@QDeclarativeTransition@@SA?AVQString@@PBD0H@Z @ 1338 NONAME ; class QString QDeclarativeTransition::tr(char const *, char const *, int)
- ?dateTimeFromString@QDeclarativeStringConverters@@YA?AVQDateTime@@ABVQString@@PA_N@Z @ 1339 NONAME ; class QDateTime QDeclarativeStringConverters::dateTimeFromString(class QString const &, bool *)
+ ?dateTimeFromString@QDeclarativeStringConverters@@YA?AVQDateTime@@ABVQString@@PA_N@Z @ 1339 NONAME ABSENT ; class QDateTime QDeclarativeStringConverters::dateTimeFromString(class QString const &, bool *)
?implicitWidth@QDeclarativeItem@@QBEMXZ @ 1340 NONAME ; float QDeclarativeItem::implicitWidth(void) const
?metaObject@QDeclarativeContext@@UBEPBUQMetaObject@@XZ @ 1341 NONAME ; struct QMetaObject const * QDeclarativeContext::metaObject(void) const
??0QDeclarativeContext@@AAE@PAVQDeclarativeContextData@@@Z @ 1342 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeContextData *)
- ?maximumPacketSize@QPacketProtocol@@QBEHXZ @ 1343 NONAME ; int QPacketProtocol::maximumPacketSize(void) const
- ??_EQDeclarativeDebuggerStatus@@UAE@I@Z @ 1344 NONAME ; QDeclarativeDebuggerStatus::~QDeclarativeDebuggerStatus(unsigned int)
+ ?maximumPacketSize@QPacketProtocol@@QBEHXZ @ 1343 NONAME ABSENT ; int QPacketProtocol::maximumPacketSize(void) const
+ ??_EQDeclarativeDebuggerStatus@@UAE@I@Z @ 1344 NONAME ABSENT ; QDeclarativeDebuggerStatus::~QDeclarativeDebuggerStatus(unsigned int)
?error@QDeclarativeCustomParser@@IAEXABVQString@@@Z @ 1345 NONAME ; void QDeclarativeCustomParser::error(class QString const &)
- ?messageReceived@QDeclarativeDebugService@@MAEXABVQByteArray@@@Z @ 1346 NONAME ; void QDeclarativeDebugService::messageReceived(class QByteArray const &)
+ ?messageReceived@QDeclarativeDebugService@@MAEXABVQByteArray@@@Z @ 1346 NONAME ABSENT ; void QDeclarativeDebugService::messageReceived(class QByteArray const &)
??0QDeclarativeParserStatus@@QAE@XZ @ 1347 NONAME ; QDeclarativeParserStatus::QDeclarativeParserStatus(void)
?isNumber@Variant@QDeclarativeParser@@QBE_NXZ @ 1348 NONAME ; bool QDeclarativeParser::Variant::isNumber(void) const
- ?getStaticMetaObject@QDeclarativeEngineDebug@@SAABUQMetaObject@@XZ @ 1349 NONAME ; struct QMetaObject const & QDeclarativeEngineDebug::getStaticMetaObject(void)
+ ?getStaticMetaObject@QDeclarativeEngineDebug@@SAABUQMetaObject@@XZ @ 1349 NONAME ABSENT ; struct QMetaObject const & QDeclarativeEngineDebug::getStaticMetaObject(void)
??_EQDeclarativeEngine@@UAE@I@Z @ 1350 NONAME ; QDeclarativeEngine::~QDeclarativeEngine(unsigned int)
?isNull@QDeclarativePixmap@@QBE_NXZ @ 1351 NONAME ; bool QDeclarativePixmap::isNull(void) const
??1QDeclarativeCustomParserNode@@QAE@XZ @ 1352 NONAME ; QDeclarativeCustomParserNode::~QDeclarativeCustomParserNode(void)
- ??1QDeclarativeAction@@QAE@XZ @ 1353 NONAME ; QDeclarativeAction::~QDeclarativeAction(void)
- ?resourcesLoading@QDeclarativeText@@QBEHXZ @ 1354 NONAME ; int QDeclarativeText::resourcesLoading(void) const
+ ??1QDeclarativeAction@@QAE@XZ @ 1353 NONAME ABSENT ; QDeclarativeAction::~QDeclarativeAction(void)
+ ?resourcesLoading@QDeclarativeText@@QBEHXZ @ 1354 NONAME ABSENT ; int QDeclarativeText::resourcesLoading(void) const
?isBoolean@Variant@QDeclarativeParser@@QBE_NXZ @ 1355 NONAME ; bool QDeclarativeParser::Variant::isBoolean(void) const
- ??0QDeclarativeAction@@QAE@XZ @ 1356 NONAME ; QDeclarativeAction::QDeclarativeAction(void)
- ?signalOffset@QDeclarativeOpenMetaObjectType@@QBEHXZ @ 1357 NONAME ; int QDeclarativeOpenMetaObjectType::signalOffset(void) const
- ?index@QMetaEnumBuilder@@QBEHXZ @ 1358 NONAME ; int QMetaEnumBuilder::index(void) const
- ?setResettable@QMetaPropertyBuilder@@QAEX_N@Z @ 1359 NONAME ; void QMetaPropertyBuilder::setResettable(bool)
+ ??0QDeclarativeAction@@QAE@XZ @ 1356 NONAME ABSENT ; QDeclarativeAction::QDeclarativeAction(void)
+ ?signalOffset@QDeclarativeOpenMetaObjectType@@QBEHXZ @ 1357 NONAME ABSENT ; int QDeclarativeOpenMetaObjectType::signalOffset(void) const
+ ?index@QMetaEnumBuilder@@QBEHXZ @ 1358 NONAME ABSENT ; int QMetaEnumBuilder::index(void) const
+ ?setResettable@QMetaPropertyBuilder@@QAEX_N@Z @ 1359 NONAME ABSENT ; void QMetaPropertyBuilder::setResettable(bool)
??0QDeclarativeError@@QAE@ABV0@@Z @ 1360 NONAME ; QDeclarativeError::QDeclarativeError(class QDeclarativeError const &)
- ?classInfoCount@QMetaObjectBuilder@@QBEHXZ @ 1361 NONAME ; int QMetaObjectBuilder::classInfoCount(void) const
- ?isObject@QDeclarativeDomValue@@QBE_NXZ @ 1362 NONAME ; bool QDeclarativeDomValue::isObject(void) const
- ?left@QDeclarativeScaleGrid@@QBEHXZ @ 1363 NONAME ; int QDeclarativeScaleGrid::left(void) const
- ?qt_metacast@QDeclarativeDebugEnginesQuery@@UAEPAXPBD@Z @ 1364 NONAME ; void * QDeclarativeDebugEnginesQuery::qt_metacast(char const *)
+ ?classInfoCount@QMetaObjectBuilder@@QBEHXZ @ 1361 NONAME ABSENT ; int QMetaObjectBuilder::classInfoCount(void) const
+ ?isObject@QDeclarativeDomValue@@QBE_NXZ @ 1362 NONAME ABSENT ; bool QDeclarativeDomValue::isObject(void) const
+ ?left@QDeclarativeScaleGrid@@QBEHXZ @ 1363 NONAME ABSENT ; int QDeclarativeScaleGrid::left(void) const
+ ?qt_metacast@QDeclarativeDebugEnginesQuery@@UAEPAXPBD@Z @ 1364 NONAME ABSENT ; void * QDeclarativeDebugEnginesQuery::qt_metacast(char const *)
?d_func@QDeclarativeView@@AAEPAVQDeclarativeViewPrivate@@XZ @ 1365 NONAME ; class QDeclarativeViewPrivate * QDeclarativeView::d_func(void)
- ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugPropertyWatch@@ABVQDeclarativeDebugPropertyReference@@PAVQObject@@@Z @ 1366 NONAME ; class QDeclarativeDebugPropertyWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugPropertyReference const &, class QObject *)
+ ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugPropertyWatch@@ABVQDeclarativeDebugPropertyReference@@PAVQObject@@@Z @ 1366 NONAME ABSENT ; class QDeclarativeDebugPropertyWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugPropertyReference const &, class QObject *)
?stateChanged@QDeclarativeStateGroup@@IAEXABVQString@@@Z @ 1367 NONAME ; void QDeclarativeStateGroup::stateChanged(class QString const &)
- ??0QDeclarativeDomValueValueSource@@QAE@XZ @ 1368 NONAME ; QDeclarativeDomValueValueSource::QDeclarativeDomValueValueSource(void)
- ?customStringConverter@QDeclarativeMetaType@@SAP6A?AVQVariant@@ABVQString@@@ZH@Z @ 1369 NONAME ; class QVariant (*)(class QString const &) QDeclarativeMetaType::customStringConverter(int)
- ?baselineOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 1370 NONAME ; void QDeclarativeAnchors::baselineOffsetChanged(void)
+ ??0QDeclarativeDomValueValueSource@@QAE@XZ @ 1368 NONAME ABSENT ; QDeclarativeDomValueValueSource::QDeclarativeDomValueValueSource(void)
+ ?customStringConverter@QDeclarativeMetaType@@SAP6A?AVQVariant@@ABVQString@@@ZH@Z @ 1369 NONAME ABSENT ; class QVariant (*)(class QString const &) QDeclarativeMetaType::customStringConverter(int)
+ ?baselineOffsetChanged@QDeclarativeAnchors@@IAEXXZ @ 1370 NONAME ABSENT ; void QDeclarativeAnchors::baselineOffsetChanged(void)
?tr@QDeclarativeView@@SA?AVQString@@PBD0H@Z @ 1371 NONAME ; class QString QDeclarativeView::tr(char const *, char const *, int)
- ??4QDeclarativeDebugFileReference@@QAEAAV0@ABV0@@Z @ 1372 NONAME ; class QDeclarativeDebugFileReference & QDeclarativeDebugFileReference::operator=(class QDeclarativeDebugFileReference const &)
+ ??4QDeclarativeDebugFileReference@@QAEAAV0@ABV0@@Z @ 1372 NONAME ABSENT ; class QDeclarativeDebugFileReference & QDeclarativeDebugFileReference::operator=(class QDeclarativeDebugFileReference const &)
?eventFilter@QDeclarativeView@@MAE_NPAVQObject@@PAVQEvent@@@Z @ 1373 NONAME ; bool QDeclarativeView::eventFilter(class QObject *, class QEvent *)
??1QDeclarativeView@@UAE@XZ @ 1374 NONAME ; QDeclarativeView::~QDeclarativeView(void)
- ?verticalCenter@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1375 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::verticalCenter(void) const
- ?setIsFlag@QMetaEnumBuilder@@QAEX_N@Z @ 1376 NONAME ; void QMetaEnumBuilder::setIsFlag(bool)
- ?trUtf8@QDeclarativeDebugConnection@@SA?AVQString@@PBD0H@Z @ 1377 NONAME ; class QString QDeclarativeDebugConnection::trUtf8(char const *, char const *, int)
- ?majorVersion@QDeclarativeType@@QBEHXZ @ 1378 NONAME ; int QDeclarativeType::majorVersion(void) const
- ?trUtf8@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0@Z @ 1379 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::trUtf8(char const *, char const *)
+ ?verticalCenter@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1375 NONAME ABSENT ; class QDeclarativeAnchorLine QDeclarativeAnchors::verticalCenter(void) const
+ ?setIsFlag@QMetaEnumBuilder@@QAEX_N@Z @ 1376 NONAME ABSENT ; void QMetaEnumBuilder::setIsFlag(bool)
+ ?trUtf8@QDeclarativeDebugConnection@@SA?AVQString@@PBD0H@Z @ 1377 NONAME ABSENT ; class QString QDeclarativeDebugConnection::trUtf8(char const *, char const *, int)
+ ?majorVersion@QDeclarativeType@@QBEHXZ @ 1378 NONAME ABSENT ; int QDeclarativeType::majorVersion(void) const
+ ?trUtf8@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0@Z @ 1379 NONAME ABSENT ; class QString QDeclarativeDebugObjectExpressionWatch::trUtf8(char const *, char const *)
?baseUrl@QDeclarativeEngine@@QBE?AVQUrl@@XZ @ 1380 NONAME ; class QUrl QDeclarativeEngine::baseUrl(void) const
??6QDeclarativeInfo@@QAEAAV0@PBX@Z @ 1381 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(void const *)
- ?setTop@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 1382 NONAME ; void QDeclarativeAnchors::setTop(class QDeclarativeAnchorLine const &)
- ?setEnabled@QDeclarativeBinding@@UAEX_NV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1383 NONAME ; void QDeclarativeBinding::setEnabled(bool, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
+ ?setTop@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 1382 NONAME ABSENT ; void QDeclarativeAnchors::setTop(class QDeclarativeAnchorLine const &)
+ ?setEnabled@QDeclarativeBinding@@UAEX_NV?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1383 NONAME ABSENT ; void QDeclarativeBinding::setEnabled(bool, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
??_EQDeclarativeNetworkAccessManagerFactory@@UAE@I@Z @ 1384 NONAME ; QDeclarativeNetworkAccessManagerFactory::~QDeclarativeNetworkAccessManagerFactory(unsigned int)
- ?qmlTypes@QDeclarativeMetaType@@SA?AV?$QList@PAVQDeclarativeType@@@@XZ @ 1385 NONAME ; class QList<class QDeclarativeType *> QDeclarativeMetaType::qmlTypes(void)
- ?valueTypeCoreIndex@QDeclarativePropertyPrivate@@SAHABVQDeclarativeProperty@@@Z @ 1386 NONAME ; int QDeclarativePropertyPrivate::valueTypeCoreIndex(class QDeclarativeProperty const &)
- ?writeEnumProperty@QDeclarativePropertyPrivate@@SA_NABVQMetaProperty@@HPAVQObject@@ABVQVariant@@H@Z @ 1387 NONAME ; bool QDeclarativePropertyPrivate::writeEnumProperty(class QMetaProperty const &, int, class QObject *, class QVariant const &, int)
+ ?qmlTypes@QDeclarativeMetaType@@SA?AV?$QList@PAVQDeclarativeType@@@@XZ @ 1385 NONAME ABSENT ; class QList<class QDeclarativeType *> QDeclarativeMetaType::qmlTypes(void)
+ ?valueTypeCoreIndex@QDeclarativePropertyPrivate@@SAHABVQDeclarativeProperty@@@Z @ 1386 NONAME ABSENT ; int QDeclarativePropertyPrivate::valueTypeCoreIndex(class QDeclarativeProperty const &)
+ ?writeEnumProperty@QDeclarativePropertyPrivate@@SA_NABVQMetaProperty@@HPAVQObject@@ABVQVariant@@H@Z @ 1387 NONAME ABSENT ; bool QDeclarativePropertyPrivate::writeEnumProperty(class QMetaProperty const &, int, class QObject *, class QVariant const &, int)
?setEnabled@QDeclarativeDebugClient@@QAEX_N@Z @ 1388 NONAME ABSENT ; void QDeclarativeDebugClient::setEnabled(bool)
- ??1QMetaObjectBuilder@@UAE@XZ @ 1389 NONAME ; QMetaObjectBuilder::~QMetaObjectBuilder(void)
+ ??1QMetaObjectBuilder@@UAE@XZ @ 1389 NONAME ABSENT ; QMetaObjectBuilder::~QMetaObjectBuilder(void)
?tr@QDeclarativeStateOperation@@SA?AVQString@@PBD0@Z @ 1390 NONAME ; class QString QDeclarativeStateOperation::tr(char const *, char const *)
- ?clear@QPacket@@QAEXXZ @ 1391 NONAME ; void QPacket::clear(void)
- ?getStaticMetaObject@QDeclarativeDebugClient@@SAABUQMetaObject@@XZ @ 1392 NONAME ; struct QMetaObject const & QDeclarativeDebugClient::getStaticMetaObject(void)
- ??0QDeclarativeDomList@@QAE@ABV0@@Z @ 1393 NONAME ; QDeclarativeDomList::QDeclarativeDomList(class QDeclarativeDomList const &)
- ?gridTop@QDeclarativeGridScaledImage@@QBEHXZ @ 1394 NONAME ; int QDeclarativeGridScaledImage::gridTop(void) const
+ ?clear@QPacket@@QAEXXZ @ 1391 NONAME ABSENT ; void QPacket::clear(void)
+ ?getStaticMetaObject@QDeclarativeDebugClient@@SAABUQMetaObject@@XZ @ 1392 NONAME ABSENT ; struct QMetaObject const & QDeclarativeDebugClient::getStaticMetaObject(void)
+ ??0QDeclarativeDomList@@QAE@ABV0@@Z @ 1393 NONAME ABSENT ; QDeclarativeDomList::QDeclarativeDomList(class QDeclarativeDomList const &)
+ ?gridTop@QDeclarativeGridScaledImage@@QBEHXZ @ 1394 NONAME ABSENT ; int QDeclarativeGridScaledImage::gridTop(void) const
?setUrl@QDeclarativeError@@QAEXABVQUrl@@@Z @ 1395 NONAME ; void QDeclarativeError::setUrl(class QUrl const &)
- ?setMaximumPacketSize@QPacketProtocol@@QAEHH@Z @ 1396 NONAME ; int QPacketProtocol::setMaximumPacketSize(int)
- ??_EQDeclarativeAction@@QAE@I@Z @ 1397 NONAME ; QDeclarativeAction::~QDeclarativeAction(unsigned int)
- ?trUtf8@QDeclarativeDebugWatch@@SA?AVQString@@PBD0@Z @ 1398 NONAME ; class QString QDeclarativeDebugWatch::trUtf8(char const *, char const *)
+ ?setMaximumPacketSize@QPacketProtocol@@QAEHH@Z @ 1396 NONAME ABSENT ; int QPacketProtocol::setMaximumPacketSize(int)
+ ??_EQDeclarativeAction@@QAE@I@Z @ 1397 NONAME ABSENT ; QDeclarativeAction::~QDeclarativeAction(unsigned int)
+ ?trUtf8@QDeclarativeDebugWatch@@SA?AVQString@@PBD0@Z @ 1398 NONAME ABSENT ; class QString QDeclarativeDebugWatch::trUtf8(char const *, char const *)
?read@QDeclarativeProperty@@SA?AVQVariant@@PAVQObject@@ABVQString@@@Z @ 1399 NONAME ; class QVariant QDeclarativeProperty::read(class QObject *, class QString const &)
?widthValid@QDeclarativeItem@@IBE_NXZ @ 1400 NONAME ; bool QDeclarativeItem::widthValid(void) const
?staticMetaObject@QDeclarativeState@@2UQMetaObject@@B @ 1401 NONAME ; struct QMetaObject const QDeclarativeState::staticMetaObject
- ?setAccess@QMetaMethodBuilder@@QAEXW4Access@QMetaMethod@@@Z @ 1402 NONAME ; void QMetaMethodBuilder::setAccess(enum QMetaMethod::Access)
- ??0QDeclarativeAction@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@ABVQVariant@@@Z @ 1403 NONAME ; QDeclarativeAction::QDeclarativeAction(class QObject *, class QString const &, class QDeclarativeContext *, class QVariant const &)
- ?staticMetaObject@QDeclarativeDebugClient@@2UQMetaObject@@B @ 1404 NONAME ; struct QMetaObject const QDeclarativeDebugClient::staticMetaObject
- ?trUtf8@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0@Z @ 1405 NONAME ; class QString QDeclarativeDebugEnginesQuery::trUtf8(char const *, char const *)
+ ?setAccess@QMetaMethodBuilder@@QAEXW4Access@QMetaMethod@@@Z @ 1402 NONAME ABSENT ; void QMetaMethodBuilder::setAccess(enum QMetaMethod::Access)
+ ??0QDeclarativeAction@@QAE@PAVQObject@@ABVQString@@PAVQDeclarativeContext@@ABVQVariant@@@Z @ 1403 NONAME ABSENT ; QDeclarativeAction::QDeclarativeAction(class QObject *, class QString const &, class QDeclarativeContext *, class QVariant const &)
+ ?staticMetaObject@QDeclarativeDebugClient@@2UQMetaObject@@B @ 1404 NONAME ABSENT ; struct QMetaObject const QDeclarativeDebugClient::staticMetaObject
+ ?trUtf8@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0@Z @ 1405 NONAME ABSENT ; class QString QDeclarativeDebugEnginesQuery::trUtf8(char const *, char const *)
?d_func@QDeclarativeExpression@@ABEPBVQDeclarativeExpressionPrivate@@XZ @ 1406 NONAME ; class QDeclarativeExpressionPrivate const * QDeclarativeExpression::d_func(void) const
- ??1QDeclarativeValueType@@UAE@XZ @ 1407 NONAME ; QDeclarativeValueType::~QDeclarativeValueType(void)
+ ??1QDeclarativeValueType@@UAE@XZ @ 1407 NONAME ABSENT ; QDeclarativeValueType::~QDeclarativeValueType(void)
?setBaseUrl@QDeclarativeContext@@QAEXABVQUrl@@@Z @ 1408 NONAME ; void QDeclarativeContext::setBaseUrl(class QUrl const &)
- ??_EQDeclarativeAbstractBinding@@UAE@I@Z @ 1409 NONAME ; QDeclarativeAbstractBinding::~QDeclarativeAbstractBinding(unsigned int)
- ?queryExpressionResult@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugExpressionQuery@@HABVQString@@PAVQObject@@@Z @ 1410 NONAME ; class QDeclarativeDebugExpressionQuery * QDeclarativeEngineDebug::queryExpressionResult(int, class QString const &, class QObject *)
- ?indexOfMethod@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1411 NONAME ; int QMetaObjectBuilder::indexOfMethod(class QByteArray const &)
- ?setCached@QDeclarativeOpenMetaObject@@QAEX_N@Z @ 1412 NONAME ; void QDeclarativeOpenMetaObject::setCached(bool)
- ?length@QDeclarativeDomList@@QBEHXZ @ 1413 NONAME ; int QDeclarativeDomList::length(void) const
- ?horizontalTileRule@QDeclarativeGridScaledImage@@QBE?AW4TileMode@QDeclarativeBorderImage@@XZ @ 1414 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::horizontalTileRule(void) const
+ ??_EQDeclarativeAbstractBinding@@UAE@I@Z @ 1409 NONAME ABSENT ; QDeclarativeAbstractBinding::~QDeclarativeAbstractBinding(unsigned int)
+ ?queryExpressionResult@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugExpressionQuery@@HABVQString@@PAVQObject@@@Z @ 1410 NONAME ABSENT ; class QDeclarativeDebugExpressionQuery * QDeclarativeEngineDebug::queryExpressionResult(int, class QString const &, class QObject *)
+ ?indexOfMethod@QMetaObjectBuilder@@QAEHABVQByteArray@@@Z @ 1411 NONAME ABSENT ; int QMetaObjectBuilder::indexOfMethod(class QByteArray const &)
+ ?setCached@QDeclarativeOpenMetaObject@@QAEX_N@Z @ 1412 NONAME ABSENT ; void QDeclarativeOpenMetaObject::setCached(bool)
+ ?length@QDeclarativeDomList@@QBEHXZ @ 1413 NONAME ABSENT ; int QDeclarativeDomList::length(void) const
+ ?horizontalTileRule@QDeclarativeGridScaledImage@@QBE?AW4TileMode@QDeclarativeBorderImage@@XZ @ 1414 NONAME ABSENT ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::horizontalTileRule(void) const
??0QDeclarativeCustomParserProperty@@QAE@XZ @ 1415 NONAME ; QDeclarativeCustomParserProperty::QDeclarativeCustomParserProperty(void)
- ??1QDeclarativeEngineDebug@@UAE@XZ @ 1416 NONAME ; QDeclarativeEngineDebug::~QDeclarativeEngineDebug(void)
- ?qt_metacall@QDeclarativeEngineDebug@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1417 NONAME ; int QDeclarativeEngineDebug::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ??1QDeclarativeEngineDebug@@UAE@XZ @ 1416 NONAME ABSENT ; QDeclarativeEngineDebug::~QDeclarativeEngineDebug(void)
+ ?qt_metacall@QDeclarativeEngineDebug@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1417 NONAME ABSENT ; int QDeclarativeEngineDebug::qt_metacall(enum QMetaObject::Call, int, void * *)
?q_func@QDeclarativeItemPrivate@@ABEPBVQDeclarativeItem@@XZ @ 1418 NONAME ; class QDeclarativeItem const * QDeclarativeItemPrivate::q_func(void) const
- ?customParser@QDeclarativeType@@QBEPAVQDeclarativeCustomParser@@XZ @ 1419 NONAME ; class QDeclarativeCustomParser * QDeclarativeType::customParser(void) const
+ ?customParser@QDeclarativeType@@QBEPAVQDeclarativeCustomParser@@XZ @ 1419 NONAME ABSENT ; class QDeclarativeCustomParser * QDeclarativeType::customParser(void) const
?setSourceLocation@QDeclarativeExpression@@QAEXABVQString@@H@Z @ 1420 NONAME ; void QDeclarativeExpression::setSourceLocation(class QString const &, int)
- ?equal@QDeclarativePropertyPrivate@@SA_NPBUQMetaObject@@0@Z @ 1421 NONAME ; bool QDeclarativePropertyPrivate::equal(struct QMetaObject const *, struct QMetaObject const *)
+ ?equal@QDeclarativePropertyPrivate@@SA_NPBUQMetaObject@@0@Z @ 1421 NONAME ABSENT ; bool QDeclarativePropertyPrivate::equal(struct QMetaObject const *, struct QMetaObject const *)
??_EQDeclarativeExtensionPlugin@@UAE@I@Z @ 1422 NONAME ; QDeclarativeExtensionPlugin::~QDeclarativeExtensionPlugin(unsigned int)
- ?write@QDeclarativePropertyPrivate@@SA_NPAVQObject@@ABUData@QDeclarativePropertyCache@@ABVQVariant@@PAVQDeclarativeContextData@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1423 NONAME ; bool QDeclarativePropertyPrivate::write(class QObject *, struct QDeclarativePropertyCache::Data const &, class QVariant const &, class QDeclarativeContextData *, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
- ?debugId@QDeclarativeDebugEngineReference@@QBEHXZ @ 1424 NONAME ; int QDeclarativeDebugEngineReference::debugId(void) const
- ?metaObject@QDeclarativeDebugEnginesQuery@@UBEPBUQMetaObject@@XZ @ 1425 NONAME ; struct QMetaObject const * QDeclarativeDebugEnginesQuery::metaObject(void) const
- ??_EQDeclarativeScaleGrid@@UAE@I@Z @ 1426 NONAME ; QDeclarativeScaleGrid::~QDeclarativeScaleGrid(unsigned int)
- ??1QDeclarativeDebugPropertyReference@@QAE@XZ @ 1427 NONAME ; QDeclarativeDebugPropertyReference::~QDeclarativeDebugPropertyReference(void)
- ?componentComplete@QDeclarativeAnchors@@QAEXXZ @ 1428 NONAME ; void QDeclarativeAnchors::componentComplete(void)
- ??1QDeclarativeDomObject@@QAE@XZ @ 1429 NONAME ; QDeclarativeDomObject::~QDeclarativeDomObject(void)
- ?expression@QDeclarativeDebugObjectExpressionWatch@@QBE?AVQString@@XZ @ 1430 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::expression(void) const
- ?metaObject@QListModelInterface@@UBEPBUQMetaObject@@XZ @ 1431 NONAME ; struct QMetaObject const * QListModelInterface::metaObject(void) const
- ?key@QMetaEnumBuilder@@QBE?AVQByteArray@@H@Z @ 1432 NONAME ; class QByteArray QMetaEnumBuilder::key(int) const
- ?d_func@QMetaEnumBuilder@@ABEPAVQMetaEnumBuilderPrivate@@XZ @ 1433 NONAME ; class QMetaEnumBuilderPrivate * QMetaEnumBuilder::d_func(void) const
+ ?write@QDeclarativePropertyPrivate@@SA_NPAVQObject@@ABUData@QDeclarativePropertyCache@@ABVQVariant@@PAVQDeclarativeContextData@@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1423 NONAME ABSENT ; bool QDeclarativePropertyPrivate::write(class QObject *, struct QDeclarativePropertyCache::Data const &, class QVariant const &, class QDeclarativeContextData *, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
+ ?debugId@QDeclarativeDebugEngineReference@@QBEHXZ @ 1424 NONAME ABSENT ; int QDeclarativeDebugEngineReference::debugId(void) const
+ ?metaObject@QDeclarativeDebugEnginesQuery@@UBEPBUQMetaObject@@XZ @ 1425 NONAME ABSENT ; struct QMetaObject const * QDeclarativeDebugEnginesQuery::metaObject(void) const
+ ??_EQDeclarativeScaleGrid@@UAE@I@Z @ 1426 NONAME ABSENT ; QDeclarativeScaleGrid::~QDeclarativeScaleGrid(unsigned int)
+ ??1QDeclarativeDebugPropertyReference@@QAE@XZ @ 1427 NONAME ABSENT ; QDeclarativeDebugPropertyReference::~QDeclarativeDebugPropertyReference(void)
+ ?componentComplete@QDeclarativeAnchors@@QAEXXZ @ 1428 NONAME ABSENT ; void QDeclarativeAnchors::componentComplete(void)
+ ??1QDeclarativeDomObject@@QAE@XZ @ 1429 NONAME ABSENT ; QDeclarativeDomObject::~QDeclarativeDomObject(void)
+ ?expression@QDeclarativeDebugObjectExpressionWatch@@QBE?AVQString@@XZ @ 1430 NONAME ABSENT ; class QString QDeclarativeDebugObjectExpressionWatch::expression(void) const
+ ?metaObject@QListModelInterface@@UBEPBUQMetaObject@@XZ @ 1431 NONAME ABSENT ; struct QMetaObject const * QListModelInterface::metaObject(void) const
+ ?key@QMetaEnumBuilder@@QBE?AVQByteArray@@H@Z @ 1432 NONAME ABSENT ; class QByteArray QMetaEnumBuilder::key(int) const
+ ?d_func@QMetaEnumBuilder@@ABEPAVQMetaEnumBuilderPrivate@@XZ @ 1433 NONAME ABSENT ; class QMetaEnumBuilderPrivate * QMetaEnumBuilder::d_func(void) const
??6QDeclarativeInfo@@QAEAAV0@PBD@Z @ 1434 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(char const *)
?d_func@QDeclarativeState@@AAEPAVQDeclarativeStatePrivate@@XZ @ 1435 NONAME ; class QDeclarativeStatePrivate * QDeclarativeState::d_func(void)
- ??0QDeclarativeDebugEnginesQuery@@AAE@PAVQObject@@@Z @ 1436 NONAME ; QDeclarativeDebugEnginesQuery::QDeclarativeDebugEnginesQuery(class QObject *)
- ?bottomChanged@QDeclarativeAnchors@@IAEXXZ @ 1437 NONAME ; void QDeclarativeAnchors::bottomChanged(void)
- ?qListTypeId@QDeclarativeType@@QBEHXZ @ 1438 NONAME ; int QDeclarativeType::qListTypeId(void) const
- ?setSelectedState@QDeclarativeDebuggerStatus@@UAEX_N@Z @ 1439 NONAME ; void QDeclarativeDebuggerStatus::setSelectedState(bool)
- ?staticMetaObject@QDeclarativeEngineDebug@@2UQMetaObject@@B @ 1440 NONAME ; struct QMetaObject const QDeclarativeEngineDebug::staticMetaObject
+ ??0QDeclarativeDebugEnginesQuery@@AAE@PAVQObject@@@Z @ 1436 NONAME ABSENT ; QDeclarativeDebugEnginesQuery::QDeclarativeDebugEnginesQuery(class QObject *)
+ ?bottomChanged@QDeclarativeAnchors@@IAEXXZ @ 1437 NONAME ABSENT ; void QDeclarativeAnchors::bottomChanged(void)
+ ?qListTypeId@QDeclarativeType@@QBEHXZ @ 1438 NONAME ABSENT ; int QDeclarativeType::qListTypeId(void) const
+ ?setSelectedState@QDeclarativeDebuggerStatus@@UAEX_N@Z @ 1439 NONAME ABSENT ; void QDeclarativeDebuggerStatus::setSelectedState(bool)
+ ?staticMetaObject@QDeclarativeEngineDebug@@2UQMetaObject@@B @ 1440 NONAME ABSENT ; struct QMetaObject const QDeclarativeEngineDebug::staticMetaObject
?setExtends@QDeclarativeState@@QAEXABVQString@@@Z @ 1441 NONAME ; void QDeclarativeState::setExtends(class QString const &)
??4QDeclarativeError@@QAEAAV0@ABV0@@Z @ 1442 NONAME ; class QDeclarativeError & QDeclarativeError::operator=(class QDeclarativeError const &)
- ?tr@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0H@Z @ 1443 NONAME ; class QString QDeclarativeDebugEnginesQuery::tr(char const *, char const *, int)
+ ?tr@QDeclarativeDebugEnginesQuery@@SA?AVQString@@PBD0H@Z @ 1443 NONAME ABSENT ; class QString QDeclarativeDebugEnginesQuery::tr(char const *, char const *, int)
?d_func@QDeclarativeTransition@@AAEPAVQDeclarativeTransitionPrivate@@XZ @ 1444 NONAME ; class QDeclarativeTransitionPrivate * QDeclarativeTransition::d_func(void)
- ?propertyWritten@QDeclarativeOpenMetaObject@@MAEXH@Z @ 1445 NONAME ; void QDeclarativeOpenMetaObject::propertyWritten(int)
- ?trUtf8@QListModelInterface@@SA?AVQString@@PBD0@Z @ 1446 NONAME ; class QString QListModelInterface::trUtf8(char const *, char const *)
- ?setColumnNumber@QDeclarativeDebugFileReference@@QAEXH@Z @ 1447 NONAME ; void QDeclarativeDebugFileReference::setColumnNumber(int)
- ?drawRect@QDeclarativeRectangle@@AAEXAAVQPainter@@@Z @ 1448 NONAME ; void QDeclarativeRectangle::drawRect(class QPainter &)
+ ?propertyWritten@QDeclarativeOpenMetaObject@@MAEXH@Z @ 1445 NONAME ABSENT ; void QDeclarativeOpenMetaObject::propertyWritten(int)
+ ?trUtf8@QListModelInterface@@SA?AVQString@@PBD0@Z @ 1446 NONAME ABSENT ; class QString QListModelInterface::trUtf8(char const *, char const *)
+ ?setColumnNumber@QDeclarativeDebugFileReference@@QAEXH@Z @ 1447 NONAME ABSENT ; void QDeclarativeDebugFileReference::setColumnNumber(int)
+ ?drawRect@QDeclarativeRectangle@@AAEXAAVQPainter@@@Z @ 1448 NONAME ABSENT ; void QDeclarativeRectangle::drawRect(class QPainter &)
?read@QDeclarativeProperty@@QBE?AVQVariant@@XZ @ 1449 NONAME ; class QVariant QDeclarativeProperty::read(void) const
?isEmpty@QDeclarativePropertyMap@@QBE_NXZ @ 1450 NONAME ; bool QDeclarativePropertyMap::isEmpty(void) const
- ??6@YAAAVQDataStream@@AAV0@ABUQDeclarativeObjectData@QDeclarativeEngineDebugServer@@@Z @ 1451 NONAME ; class QDataStream & operator<<(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectData const &)
- ?trUtf8@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0H@Z @ 1452 NONAME ; class QString QDeclarativeDebugObjectQuery::trUtf8(char const *, char const *, int)
- ??0QDeclarativeBinding@@QAE@ABVQString@@PAVQObject@@PAVQDeclarativeContext@@1@Z @ 1453 NONAME ; QDeclarativeBinding::QDeclarativeBinding(class QString const &, class QObject *, class QDeclarativeContext *, class QObject *)
+ ??6@YAAAVQDataStream@@AAV0@ABUQDeclarativeObjectData@QDeclarativeEngineDebugServer@@@Z @ 1451 NONAME ABSENT ; class QDataStream & operator<<(class QDataStream &, struct QDeclarativeEngineDebugServer::QDeclarativeObjectData const &)
+ ?trUtf8@QDeclarativeDebugObjectQuery@@SA?AVQString@@PBD0H@Z @ 1452 NONAME ABSENT ; class QString QDeclarativeDebugObjectQuery::trUtf8(char const *, char const *, int)
+ ??0QDeclarativeBinding@@QAE@ABVQString@@PAVQObject@@PAVQDeclarativeContext@@1@Z @ 1453 NONAME ABSENT ; QDeclarativeBinding::QDeclarativeBinding(class QString const &, class QObject *, class QDeclarativeContext *, class QObject *)
?tr@QDeclarativeItem@@SA?AVQString@@PBD0@Z @ 1454 NONAME ; class QString QDeclarativeItem::tr(char const *, char const *)
??6QDeclarativeInfo@@QAEAAV0@G@Z @ 1455 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned short)
??0QDeclarativeStateOperation@@IAE@AAVQObjectPrivate@@PAVQObject@@@Z @ 1456 NONAME ; QDeclarativeStateOperation::QDeclarativeStateOperation(class QObjectPrivate &, class QObject *)
?notifyOnValueChanged@QDeclarativeExpression@@QBE_NXZ @ 1457 NONAME ; bool QDeclarativeExpression::notifyOnValueChanged(void) const
?keyPressPreHandler@QDeclarativeItem@@IAEXPAVQKeyEvent@@@Z @ 1458 NONAME ; void QDeclarativeItem::keyPressPreHandler(class QKeyEvent *)
?trUtf8@QDeclarativeItem@@SA?AVQString@@PBD0H@Z @ 1459 NONAME ; class QString QDeclarativeItem::trUtf8(char const *, char const *, int)
- ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugFileReference@@PAVQObject@@@Z @ 1460 NONAME ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugFileReference const &, class QObject *)
- ?paintedHeight@QDeclarativeText@@QBEMXZ @ 1461 NONAME ; float QDeclarativeText::paintedHeight(void) const
+ ?addWatch@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugWatch@@ABVQDeclarativeDebugFileReference@@PAVQObject@@@Z @ 1460 NONAME ABSENT ; class QDeclarativeDebugWatch * QDeclarativeEngineDebug::addWatch(class QDeclarativeDebugFileReference const &, class QObject *)
+ ?paintedHeight@QDeclarativeText@@QBEMXZ @ 1461 NONAME ABSENT ; float QDeclarativeText::paintedHeight(void) const
?tr@QDeclarativeTransition@@SA?AVQString@@PBD0@Z @ 1462 NONAME ; class QString QDeclarativeTransition::tr(char const *, char const *)
?transform@QDeclarativeItem@@QAE?AV?$QDeclarativeListProperty@VQGraphicsTransform@@@@XZ @ 1463 NONAME ; class QDeclarativeListProperty<class QGraphicsTransform> QDeclarativeItem::transform(void)
- ?leftChanged@QDeclarativeAnchors@@IAEXXZ @ 1464 NONAME ; void QDeclarativeAnchors::leftChanged(void)
- ?topChanged@QDeclarativeAnchors@@IAEXXZ @ 1465 NONAME ; void QDeclarativeAnchors::topChanged(void)
- ??0QMetaObjectBuilder@@QAE@XZ @ 1466 NONAME ; QMetaObjectBuilder::QMetaObjectBuilder(void)
+ ?leftChanged@QDeclarativeAnchors@@IAEXXZ @ 1464 NONAME ABSENT ; void QDeclarativeAnchors::leftChanged(void)
+ ?topChanged@QDeclarativeAnchors@@IAEXXZ @ 1465 NONAME ABSENT ; void QDeclarativeAnchors::topChanged(void)
+ ??0QMetaObjectBuilder@@QAE@XZ @ 1466 NONAME ABSENT ; QMetaObjectBuilder::QMetaObjectBuilder(void)
?asBoolean@Variant@QDeclarativeParser@@QBE_NXZ @ 1467 NONAME ; bool QDeclarativeParser::Variant::asBoolean(void) const
- ?removeEnumerator@QMetaObjectBuilder@@QAEXH@Z @ 1468 NONAME ; void QMetaObjectBuilder::removeEnumerator(int)
- ?url@QDeclarativeDomObject@@QBE?AVQUrl@@XZ @ 1469 NONAME ; class QUrl QDeclarativeDomObject::url(void) const
- ?getStaticMetaObject@QDeclarativeScaleGrid@@SAABUQMetaObject@@XZ @ 1470 NONAME ; struct QMetaObject const & QDeclarativeScaleGrid::getStaticMetaObject(void)
- ?signalExpression@QDeclarativePropertyPrivate@@SAPAVQDeclarativeExpression@@ABVQDeclarativeProperty@@@Z @ 1471 NONAME ; class QDeclarativeExpression * QDeclarativePropertyPrivate::signalExpression(class QDeclarativeProperty const &)
+ ?removeEnumerator@QMetaObjectBuilder@@QAEXH@Z @ 1468 NONAME ABSENT ; void QMetaObjectBuilder::removeEnumerator(int)
+ ?url@QDeclarativeDomObject@@QBE?AVQUrl@@XZ @ 1469 NONAME ABSENT ; class QUrl QDeclarativeDomObject::url(void) const
+ ?getStaticMetaObject@QDeclarativeScaleGrid@@SAABUQMetaObject@@XZ @ 1470 NONAME ABSENT ; struct QMetaObject const & QDeclarativeScaleGrid::getStaticMetaObject(void)
+ ?signalExpression@QDeclarativePropertyPrivate@@SAPAVQDeclarativeExpression@@ABVQDeclarativeProperty@@@Z @ 1471 NONAME ABSENT ; class QDeclarativeExpression * QDeclarativePropertyPrivate::signalExpression(class QDeclarativeProperty const &)
?networkAccessManagerFactory@QDeclarativeEngine@@QBEPAVQDeclarativeNetworkAccessManagerFactory@@XZ @ 1472 NONAME ; class QDeclarativeNetworkAccessManagerFactory * QDeclarativeEngine::networkAccessManagerFactory(void) const
?isStringList@Variant@QDeclarativeParser@@QBE_NXZ @ 1473 NONAME ; bool QDeclarativeParser::Variant::isStringList(void) const
- ?packetWritten@QPacketProtocol@@IAEXXZ @ 1474 NONAME ; void QPacketProtocol::packetWritten(void)
- ?getStaticMetaObject@QDeclarativeDebugObjectQuery@@SAABUQMetaObject@@XZ @ 1475 NONAME ; struct QMetaObject const & QDeclarativeDebugObjectQuery::getStaticMetaObject(void)
+ ?packetWritten@QPacketProtocol@@IAEXXZ @ 1474 NONAME ABSENT ; void QPacketProtocol::packetWritten(void)
+ ?getStaticMetaObject@QDeclarativeDebugObjectQuery@@SAABUQMetaObject@@XZ @ 1475 NONAME ABSENT ; struct QMetaObject const & QDeclarativeDebugObjectQuery::getStaticMetaObject(void)
?isSignalProperty@QDeclarativeProperty@@QBE_NXZ @ 1476 NONAME ; bool QDeclarativeProperty::isSignalProperty(void) const
- ?d_func@QDeclarativeDebugService@@AAEPAVQDeclarativeDebugServicePrivate@@XZ @ 1477 NONAME ; class QDeclarativeDebugServicePrivate * QDeclarativeDebugService::d_func(void)
- ?qmlTypeNames@QDeclarativeMetaType@@SA?AV?$QList@VQByteArray@@@@XZ @ 1478 NONAME ; class QList<class QByteArray> QDeclarativeMetaType::qmlTypeNames(void)
+ ?d_func@QDeclarativeDebugService@@AAEPAVQDeclarativeDebugServicePrivate@@XZ @ 1477 NONAME ABSENT ; class QDeclarativeDebugServicePrivate * QDeclarativeDebugService::d_func(void)
+ ?qmlTypeNames@QDeclarativeMetaType@@SA?AV?$QList@VQByteArray@@@@XZ @ 1478 NONAME ABSENT ; class QList<class QByteArray> QDeclarativeMetaType::qmlTypeNames(void)
?componentComplete@QDeclarativeItem@@MAEXXZ @ 1479 NONAME ; void QDeclarativeItem::componentComplete(void)
?creationContext@QDeclarativeComponent@@QBEPAVQDeclarativeContext@@XZ @ 1480 NONAME ; class QDeclarativeContext * QDeclarativeComponent::creationContext(void) const
- ?enabledChanged@QDeclarativeBehavior@@IAEXXZ @ 1481 NONAME ; void QDeclarativeBehavior::enabledChanged(void)
+ ?enabledChanged@QDeclarativeBehavior@@IAEXXZ @ 1481 NONAME ABSENT ; void QDeclarativeBehavior::enabledChanged(void)
?staticMetaObject@QDeclarativeTransition@@2UQMetaObject@@B @ 1482 NONAME ; struct QMetaObject const QDeclarativeTransition::staticMetaObject
??0QDeclarativeInfo@@AAE@PAVQDeclarativeInfoPrivate@@@Z @ 1483 NONAME ; QDeclarativeInfo::QDeclarativeInfo(class QDeclarativeInfoPrivate *)
- ?name@QDeclarativeDebugContextReference@@QBE?AVQString@@XZ @ 1484 NONAME ; class QString QDeclarativeDebugContextReference::name(void) const
- ?propertyIndex@QDeclarativeBinding@@UAEHXZ @ 1485 NONAME ; int QDeclarativeBinding::propertyIndex(void)
- ?tr@QDeclarativeDebugWatch@@SA?AVQString@@PBD0H@Z @ 1486 NONAME ; class QString QDeclarativeDebugWatch::tr(char const *, char const *, int)
+ ?name@QDeclarativeDebugContextReference@@QBE?AVQString@@XZ @ 1484 NONAME ABSENT ; class QString QDeclarativeDebugContextReference::name(void) const
+ ?propertyIndex@QDeclarativeBinding@@UAEHXZ @ 1485 NONAME ABSENT ; int QDeclarativeBinding::propertyIndex(void)
+ ?tr@QDeclarativeDebugWatch@@SA?AVQString@@PBD0H@Z @ 1486 NONAME ABSENT ; class QString QDeclarativeDebugWatch::tr(char const *, char const *, int)
?qt_metacast@QDeclarativePropertyMap@@UAEPAXPBD@Z @ 1487 NONAME ; void * QDeclarativePropertyMap::qt_metacast(char const *)
- ?classBegin@QDeclarativeAnchors@@QAEXXZ @ 1488 NONAME ; void QDeclarativeAnchors::classBegin(void)
- ?color@QDeclarativeText@@QBE?AVQColor@@XZ @ 1489 NONAME ; class QColor QDeclarativeText::color(void) const
- ?metaObject@QPacketProtocol@@UBEPBUQMetaObject@@XZ @ 1490 NONAME ; struct QMetaObject const * QPacketProtocol::metaObject(void) const
- ??4QDeclarativeGridScaledImage@@QAEAAV0@ABV0@@Z @ 1491 NONAME ; class QDeclarativeGridScaledImage & QDeclarativeGridScaledImage::operator=(class QDeclarativeGridScaledImage const &)
- ?tr@QDeclarativeScaleGrid@@SA?AVQString@@PBD0@Z @ 1492 NONAME ; class QString QDeclarativeScaleGrid::tr(char const *, char const *)
+ ?classBegin@QDeclarativeAnchors@@QAEXXZ @ 1488 NONAME ABSENT ; void QDeclarativeAnchors::classBegin(void)
+ ?color@QDeclarativeText@@QBE?AVQColor@@XZ @ 1489 NONAME ABSENT ; class QColor QDeclarativeText::color(void) const
+ ?metaObject@QPacketProtocol@@UBEPBUQMetaObject@@XZ @ 1490 NONAME ABSENT ; struct QMetaObject const * QPacketProtocol::metaObject(void) const
+ ??4QDeclarativeGridScaledImage@@QAEAAV0@ABV0@@Z @ 1491 NONAME ABSENT ; class QDeclarativeGridScaledImage & QDeclarativeGridScaledImage::operator=(class QDeclarativeGridScaledImage const &)
+ ?tr@QDeclarativeScaleGrid@@SA?AVQString@@PBD0@Z @ 1492 NONAME ABSENT ; class QString QDeclarativeScaleGrid::tr(char const *, char const *)
??1QDeclarativeScriptString@@QAE@XZ @ 1493 NONAME ; QDeclarativeScriptString::~QDeclarativeScriptString(void)
??1QDeclarativePropertyValueSource@@UAE@XZ @ 1494 NONAME ; QDeclarativePropertyValueSource::~QDeclarativePropertyValueSource(void)
- ?position@QDeclarativeDomList@@QBEHXZ @ 1495 NONAME ; int QDeclarativeDomList::position(void) const
- ?toQObject@QDeclarativeMetaType@@SAPAVQObject@@ABVQVariant@@PA_N@Z @ 1496 NONAME ; class QObject * QDeclarativeMetaType::toQObject(class QVariant const &, bool *)
+ ?position@QDeclarativeDomList@@QBEHXZ @ 1495 NONAME ABSENT ; int QDeclarativeDomList::position(void) const
+ ?toQObject@QDeclarativeMetaType@@SAPAVQObject@@ABVQVariant@@PA_N@Z @ 1496 NONAME ABSENT ; class QObject * QDeclarativeMetaType::toQObject(class QVariant const &, bool *)
??_EQDeclarativeItem@@UAE@I@Z @ 1497 NONAME ; QDeclarativeItem::~QDeclarativeItem(unsigned int)
?getStaticMetaObject@QDeclarativeContext@@SAABUQMetaObject@@XZ @ 1498 NONAME ; struct QMetaObject const & QDeclarativeContext::getStaticMetaObject(void)
- ?metaObject@QDeclarativeListModel@@UBEPBUQMetaObject@@XZ @ 1499 NONAME ; struct QMetaObject const * QDeclarativeListModel::metaObject(void) const
+ ?metaObject@QDeclarativeListModel@@UBEPBUQMetaObject@@XZ @ 1499 NONAME ABSENT ; struct QMetaObject const * QDeclarativeListModel::metaObject(void) const
?transformChanged@QDeclarativeItemPrivate@@UAEXXZ @ 1500 NONAME ; void QDeclarativeItemPrivate::transformChanged(void)
- ?remove@QDeclarativeListModel@@QAEXH@Z @ 1501 NONAME ; void QDeclarativeListModel::remove(int)
+ ?remove@QDeclarativeListModel@@QAEXH@Z @ 1501 NONAME ABSENT ; void QDeclarativeListModel::remove(int)
?setResizeMode@QDeclarativeView@@QAEXW4ResizeMode@1@@Z @ 1502 NONAME ; void QDeclarativeView::setResizeMode(enum QDeclarativeView::ResizeMode)
- ?left@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1503 NONAME ; class QDeclarativeAnchorLine QDeclarativeAnchors::left(void) const
- ?flags@QMetaObjectBuilder@@QBE?AV?$QFlags@W4MetaObjectFlag@QMetaObjectBuilder@@@@XZ @ 1504 NONAME ; class QFlags<enum QMetaObjectBuilder::MetaObjectFlag> QMetaObjectBuilder::flags(void) const
+ ?left@QDeclarativeAnchors@@QBE?AVQDeclarativeAnchorLine@@XZ @ 1503 NONAME ABSENT ; class QDeclarativeAnchorLine QDeclarativeAnchors::left(void) const
+ ?flags@QMetaObjectBuilder@@QBE?AV?$QFlags@W4MetaObjectFlag@QMetaObjectBuilder@@@@XZ @ 1504 NONAME ABSENT ; class QFlags<enum QMetaObjectBuilder::MetaObjectFlag> QMetaObjectBuilder::flags(void) const
??0QDeclarativeItem@@IAE@AAVQDeclarativeItemPrivate@@PAV0@@Z @ 1505 NONAME ; QDeclarativeItem::QDeclarativeItem(class QDeclarativeItemPrivate &, class QDeclarativeItem *)
??0QDeclarativeContext@@QAE@PAV0@PAVQObject@@@Z @ 1506 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeContext *, class QObject *)
- ?trUtf8@QDeclarativeDebugConnection@@SA?AVQString@@PBD0@Z @ 1507 NONAME ; class QString QDeclarativeDebugConnection::trUtf8(char const *, char const *)
- ??1QDeclarativeDebugEnginesQuery@@UAE@XZ @ 1508 NONAME ; QDeclarativeDebugEnginesQuery::~QDeclarativeDebugEnginesQuery(void)
+ ?trUtf8@QDeclarativeDebugConnection@@SA?AVQString@@PBD0@Z @ 1507 NONAME ABSENT ; class QString QDeclarativeDebugConnection::trUtf8(char const *, char const *)
+ ??1QDeclarativeDebugEnginesQuery@@UAE@XZ @ 1508 NONAME ABSENT ; QDeclarativeDebugEnginesQuery::~QDeclarativeDebugEnginesQuery(void)
?getStaticMetaObject@QDeclarativeTransition@@SAABUQMetaObject@@XZ @ 1509 NONAME ; struct QMetaObject const & QDeclarativeTransition::getStaticMetaObject(void)
- ?trUtf8@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0H@Z @ 1510 NONAME ; class QString QDeclarativeDebugObjectExpressionWatch::trUtf8(char const *, char const *, int)
+ ?trUtf8@QDeclarativeDebugObjectExpressionWatch@@SA?AVQString@@PBD0H@Z @ 1510 NONAME ABSENT ; class QString QDeclarativeDebugObjectExpressionWatch::trUtf8(char const *, char const *, int)
?metaObject@QDeclarativePropertyMap@@UBEPBUQMetaObject@@XZ @ 1511 NONAME ; struct QMetaObject const * QDeclarativePropertyMap::metaObject(void) const
- ?componentRoot@QDeclarativeDomComponent@@QBE?AVQDeclarativeDomObject@@XZ @ 1512 NONAME ; class QDeclarativeDomObject QDeclarativeDomComponent::componentRoot(void) const
- ?metaObject@QDeclarativeDebugConnection@@UBEPBUQMetaObject@@XZ @ 1513 NONAME ; struct QMetaObject const * QDeclarativeDebugConnection::metaObject(void) const
- ?setTag@QMetaMethodBuilder@@QAEXABVQByteArray@@@Z @ 1514 NONAME ; void QMetaMethodBuilder::setTag(class QByteArray const &)
- ?objects@QDeclarativeDebugContextReference@@QBE?AV?$QList@VQDeclarativeDebugObjectReference@@@@XZ @ 1515 NONAME ; class QList<class QDeclarativeDebugObjectReference> QDeclarativeDebugContextReference::objects(void) const
+ ?componentRoot@QDeclarativeDomComponent@@QBE?AVQDeclarativeDomObject@@XZ @ 1512 NONAME ABSENT ; class QDeclarativeDomObject QDeclarativeDomComponent::componentRoot(void) const
+ ?metaObject@QDeclarativeDebugConnection@@UBEPBUQMetaObject@@XZ @ 1513 NONAME ABSENT ; struct QMetaObject const * QDeclarativeDebugConnection::metaObject(void) const
+ ?setTag@QMetaMethodBuilder@@QAEXABVQByteArray@@@Z @ 1514 NONAME ABSENT ; void QMetaMethodBuilder::setTag(class QByteArray const &)
+ ?objects@QDeclarativeDebugContextReference@@QBE?AV?$QList@VQDeclarativeDebugObjectReference@@@@XZ @ 1515 NONAME ABSENT ; class QList<class QDeclarativeDebugObjectReference> QDeclarativeDebugContextReference::objects(void) const
??4Variant@QDeclarativeParser@@QAEAAV01@ABV01@@Z @ 1516 NONAME ; class QDeclarativeParser::Variant & QDeclarativeParser::Variant::operator=(class QDeclarativeParser::Variant const &)
?tr@QDeclarativeStateGroup@@SA?AVQString@@PBD0@Z @ 1517 NONAME ; class QString QDeclarativeStateGroup::tr(char const *, char const *)
?setScopeObject@QDeclarativeScriptString@@QAEXPAVQObject@@@Z @ 1518 NONAME ; void QDeclarativeScriptString::setScopeObject(class QObject *)
- ??1QDeclarativeBinding@@MAE@XZ @ 1519 NONAME ; QDeclarativeBinding::~QDeclarativeBinding(void)
+ ??1QDeclarativeBinding@@MAE@XZ @ 1519 NONAME ABSENT ; QDeclarativeBinding::~QDeclarativeBinding(void)
?importPlugin@QDeclarativeEngine@@QAE_NABVQString@@0PAV2@@Z @ 1520 NONAME ; bool QDeclarativeEngine::importPlugin(class QString const &, class QString const &, class QString *)
- ?setBottomMargin@QDeclarativeAnchors@@QAEXM@Z @ 1521 NONAME ; void QDeclarativeAnchors::setBottomMargin(float)
+ ?setBottomMargin@QDeclarativeAnchors@@QAEXM@Z @ 1521 NONAME ABSENT ; void QDeclarativeAnchors::setBottomMargin(float)
?geometryChanged@QDeclarativeItem@@MAEXABVQRectF@@0@Z @ 1522 NONAME ; void QDeclarativeItem::geometryChanged(class QRectF const &, class QRectF const &)
- ?toValueSource@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueValueSource@@XZ @ 1523 NONAME ; class QDeclarativeDomValueValueSource QDeclarativeDomValue::toValueSource(void) const
- ?hAlign@QDeclarativeText@@QBE?AW4HAlignment@1@XZ @ 1524 NONAME ; enum QDeclarativeText::HAlignment QDeclarativeText::hAlign(void) const
+ ?toValueSource@QDeclarativeDomValue@@QBE?AVQDeclarativeDomValueValueSource@@XZ @ 1523 NONAME ABSENT ; class QDeclarativeDomValueValueSource QDeclarativeDomValue::toValueSource(void) const
+ ?hAlign@QDeclarativeText@@QBE?AW4HAlignment@1@XZ @ 1524 NONAME ABSENT ; enum QDeclarativeText::HAlignment QDeclarativeText::hAlign(void) const
?when@QDeclarativeState@@QBEPAVQDeclarativeBinding@@XZ @ 1525 NONAME ; class QDeclarativeBinding * QDeclarativeState::when(void) const
?setRootObject@QDeclarativeView@@MAEXPAVQObject@@@Z @ 1526 NONAME ; void QDeclarativeView::setRootObject(class QObject *)
- ?resetBottom@QDeclarativeAnchors@@QAEXXZ @ 1527 NONAME ; void QDeclarativeAnchors::resetBottom(void)
+ ?resetBottom@QDeclarativeAnchors@@QAEXXZ @ 1527 NONAME ABSENT ; void QDeclarativeAnchors::resetBottom(void)
?qt_metacall@QDeclarativePropertyMap@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1528 NONAME ; int QDeclarativePropertyMap::qt_metacall(enum QMetaObject::Call, int, void * *)
- ??0QDeclarativeDebugEngineReference@@QAE@ABV0@@Z @ 1529 NONAME ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(class QDeclarativeDebugEngineReference const &)
- ?objectDebugId@QDeclarativeDebugPropertyReference@@QBEHXZ @ 1530 NONAME ; int QDeclarativeDebugPropertyReference::objectDebugId(void) const
- ?trUtf8@QDeclarativeDebugQuery@@SA?AVQString@@PBD0@Z @ 1531 NONAME ; class QString QDeclarativeDebugQuery::trUtf8(char const *, char const *)
- ??AQDeclarativeValueTypeFactory@@QBEPAVQDeclarativeValueType@@H@Z @ 1532 NONAME ; class QDeclarativeValueType * QDeclarativeValueTypeFactory::operator[](int) const
+ ??0QDeclarativeDebugEngineReference@@QAE@ABV0@@Z @ 1529 NONAME ABSENT ; QDeclarativeDebugEngineReference::QDeclarativeDebugEngineReference(class QDeclarativeDebugEngineReference const &)
+ ?objectDebugId@QDeclarativeDebugPropertyReference@@QBEHXZ @ 1530 NONAME ABSENT ; int QDeclarativeDebugPropertyReference::objectDebugId(void) const
+ ?trUtf8@QDeclarativeDebugQuery@@SA?AVQString@@PBD0@Z @ 1531 NONAME ABSENT ; class QString QDeclarativeDebugQuery::trUtf8(char const *, char const *)
+ ??AQDeclarativeValueTypeFactory@@QBEPAVQDeclarativeValueType@@H@Z @ 1532 NONAME ABSENT ; class QDeclarativeValueType * QDeclarativeValueTypeFactory::operator[](int) const
?siblingOrderChange@QDeclarativeItemPrivate@@UAEXXZ @ 1533 NONAME ; void QDeclarativeItemPrivate::siblingOrderChange(void)
??1QDeclarativeState@@UAE@XZ @ 1534 NONAME ; QDeclarativeState::~QDeclarativeState(void)
- ?paint@QDeclarativeText@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1535 NONAME ; void QDeclarativeText::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *)
+ ?paint@QDeclarativeText@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 1535 NONAME ABSENT ; void QDeclarativeText::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *)
??1QDeclarativeStateGroup@@UAE@XZ @ 1536 NONAME ; QDeclarativeStateGroup::~QDeclarativeStateGroup(void)
- ?setEditable@QMetaPropertyBuilder@@QAEX_N@Z @ 1537 NONAME ; void QMetaPropertyBuilder::setEditable(bool)
- ?setBinding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@ABVQDeclarativeProperty@@PAV2@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1538 NONAME ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::setBinding(class QDeclarativeProperty const &, class QDeclarativeAbstractBinding *, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
- ?trUtf8@QDeclarativeBinding@@SA?AVQString@@PBD0@Z @ 1539 NONAME ; class QString QDeclarativeBinding::trUtf8(char const *, char const *)
+ ?setEditable@QMetaPropertyBuilder@@QAEX_N@Z @ 1537 NONAME ABSENT ; void QMetaPropertyBuilder::setEditable(bool)
+ ?setBinding@QDeclarativePropertyPrivate@@SAPAVQDeclarativeAbstractBinding@@ABVQDeclarativeProperty@@PAV2@V?$QFlags@W4WriteFlag@QDeclarativePropertyPrivate@@@@@Z @ 1538 NONAME ABSENT ; class QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::setBinding(class QDeclarativeProperty const &, class QDeclarativeAbstractBinding *, class QFlags<enum QDeclarativePropertyPrivate::WriteFlag>)
+ ?trUtf8@QDeclarativeBinding@@SA?AVQString@@PBD0@Z @ 1539 NONAME ABSENT ; class QString QDeclarativeBinding::trUtf8(char const *, char const *)
?requestSize@QDeclarativePixmap@@QBEABVQSize@@XZ @ 1540 NONAME ; class QSize const & QDeclarativePixmap::requestSize(void) const
?progress@QDeclarativeComponent@@QBEMXZ @ 1541 NONAME ; float QDeclarativeComponent::progress(void) const
?d_func@QDeclarativeState@@ABEPBVQDeclarativeStatePrivate@@XZ @ 1542 NONAME ; class QDeclarativeStatePrivate const * QDeclarativeState::d_func(void) const
- ??0QListModelInterface@@QAE@PAVQObject@@@Z @ 1543 NONAME ; QListModelInterface::QListModelInterface(class QObject *)
- ?pointFFromString@QDeclarativeStringConverters@@YA?AVQPointF@@ABVQString@@PA_N@Z @ 1544 NONAME ; class QPointF QDeclarativeStringConverters::pointFFromString(class QString const &, bool *)
- ?propertyCreated@QDeclarativeOpenMetaObject@@MAEXHAAVQMetaPropertyBuilder@@@Z @ 1545 NONAME ; void QDeclarativeOpenMetaObject::propertyCreated(int, class QMetaPropertyBuilder &)
+ ??0QListModelInterface@@QAE@PAVQObject@@@Z @ 1543 NONAME ABSENT ; QListModelInterface::QListModelInterface(class QObject *)
+ ?pointFFromString@QDeclarativeStringConverters@@YA?AVQPointF@@ABVQString@@PA_N@Z @ 1544 NONAME ABSENT ; class QPointF QDeclarativeStringConverters::pointFFromString(class QString const &, bool *)
+ ?propertyCreated@QDeclarativeOpenMetaObject@@MAEXHAAVQMetaPropertyBuilder@@@Z @ 1545 NONAME ABSENT ; void QDeclarativeOpenMetaObject::propertyCreated(int, class QMetaPropertyBuilder &)
?d_func@QDeclarativeView@@ABEPBVQDeclarativeViewPrivate@@XZ @ 1546 NONAME ; class QDeclarativeViewPrivate const * QDeclarativeView::d_func(void) const
?rootObject@QDeclarativeView@@QBEPAVQGraphicsObject@@XZ @ 1547 NONAME ; class QGraphicsObject * QDeclarativeView::rootObject(void) const
- ?tr@QDeclarativeBinding@@SA?AVQString@@PBD0H@Z @ 1548 NONAME ; class QString QDeclarativeBinding::tr(char const *, char const *, int)
- ?queryObjectRecursive@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectQuery@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 1549 NONAME ; class QDeclarativeDebugObjectQuery * QDeclarativeEngineDebug::queryObjectRecursive(class QDeclarativeDebugObjectReference const &, class QObject *)
+ ?tr@QDeclarativeBinding@@SA?AVQString@@PBD0H@Z @ 1548 NONAME ABSENT ; class QString QDeclarativeBinding::tr(char const *, char const *, int)
+ ?queryObjectRecursive@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectQuery@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 1549 NONAME ABSENT ; class QDeclarativeDebugObjectQuery * QDeclarativeEngineDebug::queryObjectRecursive(class QDeclarativeDebugObjectReference const &, class QObject *)
?prepare@QDeclarativeTransition@@QAEXAAV?$QList@VQDeclarativeAction@@@@AAV?$QList@VQDeclarativeProperty@@@@PAVQDeclarativeTransitionManager@@@Z @ 1550 NONAME ; void QDeclarativeTransition::prepare(class QList<class QDeclarativeAction> &, class QList<class QDeclarativeProperty> &, class QDeclarativeTransitionManager *)
??6QDeclarativeInfo@@QAEAAV0@ABVQUrl@@@Z @ 1551 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QUrl const &)
?scopeObject@QDeclarativeExpression@@QBEPAVQObject@@XZ @ 1552 NONAME ; class QObject * QDeclarativeExpression::scopeObject(void) const
?isValid@QDeclarativeContext@@QBE_NXZ @ 1553 NONAME ; bool QDeclarativeContext::isValid(void) const
- ?trUtf8@QDeclarativeValueType@@SA?AVQString@@PBD0H@Z @ 1554 NONAME ; class QString QDeclarativeValueType::trUtf8(char const *, char const *, int)
+ ?trUtf8@QDeclarativeValueType@@SA?AVQString@@PBD0H@Z @ 1554 NONAME ABSENT ; class QString QDeclarativeValueType::trUtf8(char const *, char const *, int)
?qmlAttachedPropertiesObjectById@@YAPAVQObject@@HPBV1@_N@Z @ 1555 NONAME ; class QObject * qmlAttachedPropertiesObjectById(int, class QObject const *, bool)
- ?constructorCount@QMetaObjectBuilder@@QBEHXZ @ 1556 NONAME ; int QMetaObjectBuilder::constructorCount(void) const
- ??0QDeclarativeDomValueValueInterceptor@@QAE@ABV0@@Z @ 1557 NONAME ; QDeclarativeDomValueValueInterceptor::QDeclarativeDomValueValueInterceptor(class QDeclarativeDomValueValueInterceptor const &)
- ?object@QDeclarativeDebugObjectQuery@@QBE?AVQDeclarativeDebugObjectReference@@XZ @ 1558 NONAME ; class QDeclarativeDebugObjectReference QDeclarativeDebugObjectQuery::object(void) const
- ??0QMetaPropertyBuilder@@QAE@XZ @ 1559 NONAME ; QMetaPropertyBuilder::QMetaPropertyBuilder(void)
- ?toMetaObject@QMetaObjectBuilder@@QBEPAUQMetaObject@@XZ @ 1560 NONAME ; struct QMetaObject * QMetaObjectBuilder::toMetaObject(void) const
+ ?constructorCount@QMetaObjectBuilder@@QBEHXZ @ 1556 NONAME ABSENT ; int QMetaObjectBuilder::constructorCount(void) const
+ ??0QDeclarativeDomValueValueInterceptor@@QAE@ABV0@@Z @ 1557 NONAME ABSENT ; QDeclarativeDomValueValueInterceptor::QDeclarativeDomValueValueInterceptor(class QDeclarativeDomValueValueInterceptor const &)
+ ?object@QDeclarativeDebugObjectQuery@@QBE?AVQDeclarativeDebugObjectReference@@XZ @ 1558 NONAME ABSENT ; class QDeclarativeDebugObjectReference QDeclarativeDebugObjectQuery::object(void) const
+ ??0QMetaPropertyBuilder@@QAE@XZ @ 1559 NONAME ABSENT ; QMetaPropertyBuilder::QMetaPropertyBuilder(void)
+ ?toMetaObject@QMetaObjectBuilder@@QBEPAUQMetaObject@@XZ @ 1560 NONAME ABSENT ; struct QMetaObject * QMetaObjectBuilder::toMetaObject(void) const
?d_func@QDeclarativeEngine@@AAEPAVQDeclarativeEnginePrivate@@XZ @ 1561 NONAME ; class QDeclarativeEnginePrivate * QDeclarativeEngine::d_func(void)
- ?staticMetaObject@QDeclarativeRectangle@@2UQMetaObject@@B @ 1562 NONAME ; struct QMetaObject const QDeclarativeRectangle::staticMetaObject
- ?addSignal@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 1563 NONAME ; class QMetaMethodBuilder QMetaObjectBuilder::addSignal(class QByteArray const &)
+ ?staticMetaObject@QDeclarativeRectangle@@2UQMetaObject@@B @ 1562 NONAME ABSENT ; struct QMetaObject const QDeclarativeRectangle::staticMetaObject
+ ?addSignal@QMetaObjectBuilder@@QAE?AVQMetaMethodBuilder@@ABVQByteArray@@@Z @ 1563 NONAME ABSENT ; class QMetaMethodBuilder QMetaObjectBuilder::addSignal(class QByteArray const &)
?getStaticMetaObject@QDeclarativeStateGroup@@SAABUQMetaObject@@XZ @ 1564 NONAME ; struct QMetaObject const & QDeclarativeStateGroup::getStaticMetaObject(void)
?childrenRectChanged@QDeclarativeItem@@IAEXABVQRectF@@@Z @ 1565 NONAME ; void QDeclarativeItem::childrenRectChanged(class QRectF const &)
?isDesignable@QDeclarativeProperty@@QBE_NXZ @ 1566 NONAME ; bool QDeclarativeProperty::isDesignable(void) const
- ?propertyTypeCategory@QDeclarativePropertyPrivate@@QBE?AW4PropertyTypeCategory@QDeclarativeProperty@@XZ @ 1567 NONAME ; enum QDeclarativeProperty::PropertyTypeCategory QDeclarativePropertyPrivate::propertyTypeCategory(void) const
+ ?propertyTypeCategory@QDeclarativePropertyPrivate@@QBE?AW4PropertyTypeCategory@QDeclarativeProperty@@XZ @ 1567 NONAME ABSENT ; enum QDeclarativeProperty::PropertyTypeCategory QDeclarativePropertyPrivate::propertyTypeCategory(void) const
?setSize@QDeclarativeItem@@QAEXABVQSizeF@@@Z @ 1568 NONAME ; void QDeclarativeItem::setSize(class QSizeF const &)
- ?generateRoundedRect@QDeclarativeRectangle@@AAEXXZ @ 1569 NONAME ; void QDeclarativeRectangle::generateRoundedRect(void)
+ ?generateRoundedRect@QDeclarativeRectangle@@AAEXXZ @ 1569 NONAME ABSENT ; void QDeclarativeRectangle::generateRoundedRect(void)
??0QDeclarativePixmap@@QAE@PAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@@Z @ 1570 NONAME ; QDeclarativePixmap::QDeclarativePixmap(class QDeclarativeEngine *, class QUrl const &, class QSize const &)
- ?tr@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0@Z @ 1571 NONAME ; class QString QDeclarativeDebugPropertyWatch::tr(char const *, char const *)
+ ?tr@QDeclarativeDebugPropertyWatch@@SA?AVQString@@PBD0@Z @ 1571 NONAME ABSENT ; class QString QDeclarativeDebugPropertyWatch::tr(char const *, char const *)
?propertyTypeCategory@QDeclarativeProperty@@QBE?AW4PropertyTypeCategory@1@XZ @ 1572 NONAME ; enum QDeclarativeProperty::PropertyTypeCategory QDeclarativeProperty::propertyTypeCategory(void) const
- ??0QPacketAutoSend@@AAE@PAVQPacketProtocol@@@Z @ 1573 NONAME ; QPacketAutoSend::QPacketAutoSend(class QPacketProtocol *)
- ?keyCount@QMetaEnumBuilder@@QBEHXZ @ 1574 NONAME ; int QMetaEnumBuilder::keyCount(void) const
- ??1QDeclarativeDomProperty@@QAE@XZ @ 1575 NONAME ; QDeclarativeDomProperty::~QDeclarativeDomProperty(void)
+ ??0QPacketAutoSend@@AAE@PAVQPacketProtocol@@@Z @ 1573 NONAME ABSENT ; QPacketAutoSend::QPacketAutoSend(class QPacketProtocol *)
+ ?keyCount@QMetaEnumBuilder@@QBEHXZ @ 1574 NONAME ABSENT ; int QMetaEnumBuilder::keyCount(void) const
+ ??1QDeclarativeDomProperty@@QAE@XZ @ 1575 NONAME ABSENT ; QDeclarativeDomProperty::~QDeclarativeDomProperty(void)
?url@QDeclarativePixmap@@QBEABVQUrl@@XZ @ 1576 NONAME ; class QUrl const & QDeclarativePixmap::url(void) const
- ?sendMessage@QDeclarativeDebugService@@QAEXABVQByteArray@@@Z @ 1577 NONAME ; void QDeclarativeDebugService::sendMessage(class QByteArray const &)
+ ?sendMessage@QDeclarativeDebugService@@QAEXABVQByteArray@@@Z @ 1577 NONAME ABSENT ; void QDeclarativeDebugService::sendMessage(class QByteArray const &)
?context@QDeclarativeScriptString@@QBEPAVQDeclarativeContext@@XZ @ 1578 NONAME ; class QDeclarativeContext * QDeclarativeScriptString::context(void) const
- ?queryObject@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectQuery@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 1579 NONAME ; class QDeclarativeDebugObjectQuery * QDeclarativeEngineDebug::queryObject(class QDeclarativeDebugObjectReference const &, class QObject *)
+ ?queryObject@QDeclarativeEngineDebug@@QAEPAVQDeclarativeDebugObjectQuery@@ABVQDeclarativeDebugObjectReference@@PAVQObject@@@Z @ 1579 NONAME ABSENT ; class QDeclarativeDebugObjectQuery * QDeclarativeEngineDebug::queryObject(class QDeclarativeDebugObjectReference const &, class QObject *)
?tr@QDeclarativePropertyMap@@SA?AVQString@@PBD0H@Z @ 1580 NONAME ; class QString QDeclarativePropertyMap::tr(char const *, char const *, int)
?setNotifyOnValueChanged@QDeclarativeExpression@@QAEX_N@Z @ 1581 NONAME ; void QDeclarativeExpression::setNotifyOnValueChanged(bool)
??0QDeclarativeExpression@@IAE@PAVQDeclarativeContextData@@PAVQObject@@ABVQString@@AAVQDeclarativeExpressionPrivate@@@Z @ 1582 NONAME ; QDeclarativeExpression::QDeclarativeExpression(class QDeclarativeContextData *, class QObject *, class QString const &, class QDeclarativeExpressionPrivate &)
- ?fillChanged@QDeclarativeAnchors@@IAEXXZ @ 1583 NONAME ; void QDeclarativeAnchors::fillChanged(void)
+ ?fillChanged@QDeclarativeAnchors@@IAEXXZ @ 1583 NONAME ABSENT ; void QDeclarativeAnchors::fillChanged(void)
?resources_append@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQObject@@@@PAVQObject@@@Z @ 1584 NONAME ; void QDeclarativeItemPrivate::resources_append(class QDeclarativeListProperty<class QObject> *, class QObject *)
??0QDeclarativeComponent@@IAE@AAVQDeclarativeComponentPrivate@@PAVQObject@@@Z @ 1585 NONAME ; QDeclarativeComponent::QDeclarativeComponent(class QDeclarativeComponentPrivate &, class QObject *)
?height@QDeclarativeItem@@QBEMXZ @ 1586 NONAME ; float QDeclarativeItem::height(void) const
- ?minorVersion@QDeclarativeType@@QBEHXZ @ 1587 NONAME ; int QDeclarativeType::minorVersion(void) const
- ?qt_metacall@QDeclarativeText@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1588 NONAME ; int QDeclarativeText::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?isConnected@QDeclarativeDebugConnection@@QBE_NXZ @ 1589 NONAME ; bool QDeclarativeDebugConnection::isConnected(void) const
+ ?minorVersion@QDeclarativeType@@QBEHXZ @ 1587 NONAME ABSENT ; int QDeclarativeType::minorVersion(void) const
+ ?qt_metacall@QDeclarativeText@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1588 NONAME ABSENT ; int QDeclarativeText::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?isConnected@QDeclarativeDebugConnection@@QBE_NXZ @ 1589 NONAME ABSENT ; bool QDeclarativeDebugConnection::isConnected(void) const
??6QDeclarativeInfo@@QAEAAV0@I@Z @ 1590 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(unsigned int)
?setNetworkAccessManagerFactory@QDeclarativeEngine@@QAEXPAVQDeclarativeNetworkAccessManagerFactory@@@Z @ 1591 NONAME ; void QDeclarativeEngine::setNetworkAccessManagerFactory(class QDeclarativeNetworkAccessManagerFactory *)
- ?tr@QDeclarativeDebugQuery@@SA?AVQString@@PBD0H@Z @ 1592 NONAME ; class QString QDeclarativeDebugQuery::tr(char const *, char const *, int)
+ ?tr@QDeclarativeDebugQuery@@SA?AVQString@@PBD0H@Z @ 1592 NONAME ABSENT ; class QString QDeclarativeDebugQuery::tr(char const *, char const *, int)
??AQDeclarativePropertyMap@@QAEAAVQVariant@@ABVQString@@@Z @ 1593 NONAME ; class QVariant & QDeclarativePropertyMap::operator[](class QString const &)
??0Variant@QDeclarativeParser@@QAE@_N@Z @ 1594 NONAME ; QDeclarativeParser::Variant::Variant(bool)
?trUtf8@QDeclarativeState@@SA?AVQString@@PBD0H@Z @ 1595 NONAME ; class QString QDeclarativeState::trUtf8(char const *, char const *, int)
??0QDeclarativeStateGroup@@QAE@PAVQObject@@@Z @ 1596 NONAME ; QDeclarativeStateGroup::QDeclarativeStateGroup(class QObject *)
?count@QDeclarativeListReference@@QBEHXZ @ 1597 NONAME ; int QDeclarativeListReference::count(void) const
?location@QDeclarativeCustomParserProperty@@QBE?AULocation@QDeclarativeParser@@XZ @ 1598 NONAME ; struct QDeclarativeParser::Location QDeclarativeCustomParserProperty::location(void) const
- ?metaObject@QDeclarativePen@@UBEPBUQMetaObject@@XZ @ 1599 NONAME ; struct QMetaObject const * QDeclarativePen::metaObject(void) const
+ ?metaObject@QDeclarativePen@@UBEPBUQMetaObject@@XZ @ 1599 NONAME ABSENT ; struct QMetaObject const * QDeclarativePen::metaObject(void) const
?url@QDeclarativeError@@QBE?AVQUrl@@XZ @ 1600 NONAME ; class QUrl QDeclarativeError::url(void) const
- ?isBinding@QDeclarativeDomValue@@QBE_NXZ @ 1601 NONAME ; bool QDeclarativeDomValue::isBinding(void) const
+ ?isBinding@QDeclarativeDomValue@@QBE_NXZ @ 1601 NONAME ABSENT ; bool QDeclarativeDomValue::isBinding(void) const
?name@QDeclarativeProperty@@QBE?AVQString@@XZ @ 1602 NONAME ; class QString QDeclarativeProperty::name(void) const
?asString@Variant@QDeclarativeParser@@QBE?AVQString@@XZ @ 1603 NONAME ; class QString QDeclarativeParser::Variant::asString(void) const
?trUtf8@QDeclarativeExtensionPlugin@@SA?AVQString@@PBD0@Z @ 1604 NONAME ; class QString QDeclarativeExtensionPlugin::trUtf8(char const *, char const *)
- ?sendMessage@QDeclarativeDebugClient@@QAEXABVQByteArray@@@Z @ 1605 NONAME ; void QDeclarativeDebugClient::sendMessage(class QByteArray const &)
+ ?sendMessage@QDeclarativeDebugClient@@QAEXABVQByteArray@@@Z @ 1605 NONAME ABSENT ; void QDeclarativeDebugClient::sendMessage(class QByteArray const &)
?canAppend@QDeclarativeListReference@@QBE_NXZ @ 1606 NONAME ; bool QDeclarativeListReference::canAppend(void) const
??_EQDeclarativeComponent@@UAE@I@Z @ 1607 NONAME ; QDeclarativeComponent::~QDeclarativeComponent(unsigned int)
?get@QDeclarativeItemPrivate@@SAPAV1@PAVQDeclarativeItem@@@Z @ 1608 NONAME ; class QDeclarativeItemPrivate * QDeclarativeItemPrivate::get(class QDeclarativeItem *)
?staticMetaObject@QDeclarativeView@@2UQMetaObject@@B @ 1609 NONAME ; struct QMetaObject const QDeclarativeView::staticMetaObject
- ?objectToString@QDeclarativeDebugService@@SA?AVQString@@PAVQObject@@@Z @ 1610 NONAME ; class QString QDeclarativeDebugService::objectToString(class QObject *)
- ?defaultValue@QDeclarativeDomDynamicProperty@@QBE?AVQDeclarativeDomProperty@@XZ @ 1611 NONAME ; class QDeclarativeDomProperty QDeclarativeDomDynamicProperty::defaultValue(void) const
- ?relatedMetaObject@QMetaObjectBuilder@@QBEPBUQMetaObject@@H@Z @ 1612 NONAME ; struct QMetaObject const * QMetaObjectBuilder::relatedMetaObject(int) const
- ?addKey@QMetaEnumBuilder@@QAEHABVQByteArray@@H@Z @ 1613 NONAME ; int QMetaEnumBuilder::addKey(class QByteArray const &, int)
+ ?objectToString@QDeclarativeDebugService@@SA?AVQString@@PAVQObject@@@Z @ 1610 NONAME ABSENT ; class QString QDeclarativeDebugService::objectToString(class QObject *)
+ ?defaultValue@QDeclarativeDomDynamicProperty@@QBE?AVQDeclarativeDomProperty@@XZ @ 1611 NONAME ABSENT ; class QDeclarativeDomProperty QDeclarativeDomDynamicProperty::defaultValue(void) const
+ ?relatedMetaObject@QMetaObjectBuilder@@QBEPBUQMetaObject@@H@Z @ 1612 NONAME ABSENT ; struct QMetaObject const * QMetaObjectBuilder::relatedMetaObject(int) const
+ ?addKey@QMetaEnumBuilder@@QAEHABVQByteArray@@H@Z @ 1613 NONAME ABSENT ; int QMetaEnumBuilder::addKey(class QByteArray const &, int)
?setPosHelper@QDeclarativeItemPrivate@@UAEXABVQPointF@@@Z @ 1614 NONAME ; void QDeclarativeItemPrivate::setPosHelper(class QPointF const &)
- ?attributes@QMetaMethodBuilder@@QBEHXZ @ 1615 NONAME ; int QMetaMethodBuilder::attributes(void) const
- ?lineNumber@QDeclarativeDebugFileReference@@QBEHXZ @ 1616 NONAME ; int QDeclarativeDebugFileReference::lineNumber(void) const
- ?setTop@QDeclarativeScaleGrid@@QAEXH@Z @ 1617 NONAME ; void QDeclarativeScaleGrid::setTop(int)
+ ?attributes@QMetaMethodBuilder@@QBEHXZ @ 1615 NONAME ABSENT ; int QMetaMethodBuilder::attributes(void) const
+ ?lineNumber@QDeclarativeDebugFileReference@@QBEHXZ @ 1616 NONAME ABSENT ; int QDeclarativeDebugFileReference::lineNumber(void) const
+ ?setTop@QDeclarativeScaleGrid@@QAEXH@Z @ 1617 NONAME ABSENT ; void QDeclarativeScaleGrid::setTop(int)
?metaObject@QDeclarativeItem@@UBEPBUQMetaObject@@XZ @ 1618 NONAME ; struct QMetaObject const * QDeclarativeItem::metaObject(void) const
- ?clear@QDeclarativeAbstractBinding@@IAEXXZ @ 1619 NONAME ; void QDeclarativeAbstractBinding::clear(void)
+ ?clear@QDeclarativeAbstractBinding@@IAEXXZ @ 1619 NONAME ABSENT ; void QDeclarativeAbstractBinding::clear(void)
?start@QDeclarativeItemPrivate@@SAXAAVQElapsedTimer@@@Z @ 1620 NONAME ; void QDeclarativeItemPrivate::start(class QElapsedTimer &)
?load@QDeclarativePixmap@@QAEXPAVQDeclarativeEngine@@ABVQUrl@@ABVQSize@@_N@Z @ 1621 NONAME ; void QDeclarativePixmap::load(class QDeclarativeEngine *, class QUrl const &, class QSize const &, bool)
- ?stringToRule@QDeclarativeGridScaledImage@@CA?AW4TileMode@QDeclarativeBorderImage@@ABVQString@@@Z @ 1622 NONAME ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::stringToRule(class QString const &)
- ?setHorizontalCenter@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 1623 NONAME ; void QDeclarativeAnchors::setHorizontalCenter(class QDeclarativeAnchorLine const &)
+ ?stringToRule@QDeclarativeGridScaledImage@@CA?AW4TileMode@QDeclarativeBorderImage@@ABVQString@@@Z @ 1622 NONAME ABSENT ; enum QDeclarativeBorderImage::TileMode QDeclarativeGridScaledImage::stringToRule(class QString const &)
+ ?setHorizontalCenter@QDeclarativeAnchors@@QAEXABVQDeclarativeAnchorLine@@@Z @ 1623 NONAME ABSENT ; void QDeclarativeAnchors::setHorizontalCenter(class QDeclarativeAnchorLine const &)
?setFocus@QDeclarativeItem@@QAEX_N@Z @ 1624 NONAME ; void QDeclarativeItem::setFocus(bool)
?connectNotifySignal@QDeclarativeProperty@@QBE_NPAVQObject@@PBD@Z @ 1625 NONAME ; bool QDeclarativeProperty::connectNotifySignal(class QObject *, char const *) const
??4QDeclarativeProperty@@QAEAAV0@ABV0@@Z @ 1626 NONAME ; class QDeclarativeProperty & QDeclarativeProperty::operator=(class QDeclarativeProperty const &)
- ?messageReceived@QDeclarativeDebugClient@@MAEXABVQByteArray@@@Z @ 1627 NONAME ; void QDeclarativeDebugClient::messageReceived(class QByteArray const &)
+ ?messageReceived@QDeclarativeDebugClient@@MAEXABVQByteArray@@@Z @ 1627 NONAME ABSENT ; void QDeclarativeDebugClient::messageReceived(class QByteArray const &)
?setImplicitWidth@QDeclarativeItem@@IAEXM@Z @ 1628 NONAME ; void QDeclarativeItem::setImplicitWidth(float)
- ?isInterface@QDeclarativeType@@QBE_NXZ @ 1629 NONAME ; bool QDeclarativeType::isInterface(void) const
+ ?isInterface@QDeclarativeType@@QBE_NXZ @ 1629 NONAME ABSENT ; bool QDeclarativeType::isInterface(void) const
??0QDeclarativeContext@@AAE@PAVQDeclarativeEngine@@_N@Z @ 1630 NONAME ; QDeclarativeContext::QDeclarativeContext(class QDeclarativeEngine *, bool)
- ?initialValue@QDeclarativeOpenMetaObject@@UAE?AVQVariant@@H@Z @ 1631 NONAME ; class QVariant QDeclarativeOpenMetaObject::initialValue(int)
+ ?initialValue@QDeclarativeOpenMetaObject@@UAE?AVQVariant@@H@Z @ 1631 NONAME ABSENT ; class QVariant QDeclarativeOpenMetaObject::initialValue(int)
?tr@QDeclarativeView@@SA?AVQString@@PBD0@Z @ 1632 NONAME ; class QString QDeclarativeView::tr(char const *, char const *)
- ?qt_metacall@QPacketProtocol@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1633 NONAME ; int QPacketProtocol::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?qt_metacall@QPacketProtocol@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1633 NONAME ABSENT ; int QPacketProtocol::qt_metacall(enum QMetaObject::Call, int, void * *)
??0QDeclarativeItem@@QAE@PAV0@@Z @ 1634 NONAME ; QDeclarativeItem::QDeclarativeItem(class QDeclarativeItem *)
- ?hasDebuggingClient@QDeclarativeDebugService@@SA_NXZ @ 1635 NONAME ; bool QDeclarativeDebugService::hasDebuggingClient(void)
+ ?hasDebuggingClient@QDeclarativeDebugService@@SA_NXZ @ 1635 NONAME ABSENT ; bool QDeclarativeDebugService::hasDebuggingClient(void)
?staticMetaObject@QDeclarativeContext@@2UQMetaObject@@B @ 1636 NONAME ; struct QMetaObject const QDeclarativeContext::staticMetaObject
?setContextForObject@QDeclarativeEngine@@SAXPAVQObject@@PAVQDeclarativeContext@@@Z @ 1637 NONAME ; void QDeclarativeEngine::setContextForObject(class QObject *, class QDeclarativeContext *)
?baselineOffsetChanged@QDeclarativeItem@@IAEXM@Z @ 1638 NONAME ; void QDeclarativeItem::baselineOffsetChanged(float)
??6QDeclarativeInfo@@QAEAAV0@VQChar@@@Z @ 1639 NONAME ; class QDeclarativeInfo & QDeclarativeInfo::operator<<(class QChar)
- ?newObjects@QDeclarativeEngineDebug@@IAEXXZ @ 1640 NONAME ; void QDeclarativeEngineDebug::newObjects(void)
- ?qt_metacast@QDeclarativePropertyChanges@@UAEPAXPBD@Z @ 1641 NONAME ; void * QDeclarativePropertyChanges::qt_metacast(char const *)
- ?actions@QDeclarativePropertyChanges@@UAE?AV?$QList@VQDeclarativeAction@@@@XZ @ 1642 NONAME ; class QList<class QDeclarativeAction> QDeclarativePropertyChanges::actions(void)
- ??1QDeclarativePropertyChanges@@UAE@XZ @ 1643 NONAME ; QDeclarativePropertyChanges::~QDeclarativePropertyChanges(void)
- ??_EQDeclarativePropertyChanges@@UAE@I@Z @ 1644 NONAME ; QDeclarativePropertyChanges::~QDeclarativePropertyChanges(unsigned int)
- ?setObject@QDeclarativePropertyChanges@@QAEXPAVQObject@@@Z @ 1645 NONAME ; void QDeclarativePropertyChanges::setObject(class QObject *)
- ?staticMetaObject@QDeclarativePropertyChanges@@2UQMetaObject@@B @ 1646 NONAME ; struct QMetaObject const QDeclarativePropertyChanges::staticMetaObject
+ ?newObjects@QDeclarativeEngineDebug@@IAEXXZ @ 1640 NONAME ABSENT ; void QDeclarativeEngineDebug::newObjects(void)
+ ?qt_metacast@QDeclarativePropertyChanges@@UAEPAXPBD@Z @ 1641 NONAME ABSENT ; void * QDeclarativePropertyChanges::qt_metacast(char const *)
+ ?actions@QDeclarativePropertyChanges@@UAE?AV?$QList@VQDeclarativeAction@@@@XZ @ 1642 NONAME ABSENT ; class QList<class QDeclarativeAction> QDeclarativePropertyChanges::actions(void)
+ ??1QDeclarativePropertyChanges@@UAE@XZ @ 1643 NONAME ABSENT ; QDeclarativePropertyChanges::~QDeclarativePropertyChanges(void)
+ ??_EQDeclarativePropertyChanges@@UAE@I@Z @ 1644 NONAME ABSENT ; QDeclarativePropertyChanges::~QDeclarativePropertyChanges(unsigned int)
+ ?setObject@QDeclarativePropertyChanges@@QAEXPAVQObject@@@Z @ 1645 NONAME ABSENT ; void QDeclarativePropertyChanges::setObject(class QObject *)
+ ?staticMetaObject@QDeclarativePropertyChanges@@2UQMetaObject@@B @ 1646 NONAME ABSENT ; struct QMetaObject const QDeclarativePropertyChanges::staticMetaObject
?removeEntryFromRevertList@QDeclarativeState@@QAE_NPAVQObject@@ABVQByteArray@@@Z @ 1647 NONAME ; bool QDeclarativeState::removeEntryFromRevertList(class QObject *, class QByteArray const &)
- ?restoreEntryValues@QDeclarativePropertyChanges@@QBE_NXZ @ 1648 NONAME ; bool QDeclarativePropertyChanges::restoreEntryValues(void) const
- ?setRestoreEntryValues@QDeclarativePropertyChanges@@QAEX_N@Z @ 1649 NONAME ; void QDeclarativePropertyChanges::setRestoreEntryValues(bool)
- ?changeValue@QDeclarativePropertyChanges@@QAEXABVQByteArray@@ABVQVariant@@@Z @ 1650 NONAME ; void QDeclarativePropertyChanges::changeValue(class QByteArray const &, class QVariant const &)
- ?metaObject@QDeclarativePropertyChanges@@UBEPBUQMetaObject@@XZ @ 1651 NONAME ; struct QMetaObject const * QDeclarativePropertyChanges::metaObject(void) const
+ ?restoreEntryValues@QDeclarativePropertyChanges@@QBE_NXZ @ 1648 NONAME ABSENT ; bool QDeclarativePropertyChanges::restoreEntryValues(void) const
+ ?setRestoreEntryValues@QDeclarativePropertyChanges@@QAEX_N@Z @ 1649 NONAME ABSENT ; void QDeclarativePropertyChanges::setRestoreEntryValues(bool)
+ ?changeValue@QDeclarativePropertyChanges@@QAEXABVQByteArray@@ABVQVariant@@@Z @ 1650 NONAME ABSENT ; void QDeclarativePropertyChanges::changeValue(class QByteArray const &, class QVariant const &)
+ ?metaObject@QDeclarativePropertyChanges@@UBEPBUQMetaObject@@XZ @ 1651 NONAME ABSENT ; struct QMetaObject const * QDeclarativePropertyChanges::metaObject(void) const
?data_clear@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQObject@@@@@Z @ 1652 NONAME ; void QDeclarativeItemPrivate::data_clear(class QDeclarativeListProperty<class QObject> *)
?containsPropertyInRevertList@QDeclarativeState@@QBE_NPAVQObject@@ABVQByteArray@@@Z @ 1653 NONAME ; bool QDeclarativeState::containsPropertyInRevertList(class QObject *, class QByteArray const &) const
- ?containsValue@QDeclarativePropertyChanges@@QBE_NABVQByteArray@@@Z @ 1654 NONAME ; bool QDeclarativePropertyChanges::containsValue(class QByteArray const &) const
+ ?containsValue@QDeclarativePropertyChanges@@QBE_NABVQByteArray@@@Z @ 1654 NONAME ABSENT ; bool QDeclarativePropertyChanges::containsValue(class QByteArray const &) const
?bindingInRevertList@QDeclarativeState@@QBEPAVQDeclarativeAbstractBinding@@PAVQObject@@ABVQByteArray@@@Z @ 1655 NONAME ; class QDeclarativeAbstractBinding * QDeclarativeState::bindingInRevertList(class QObject *, class QByteArray const &) const
- ?d_func@QDeclarativePropertyChanges@@ABEPBVQDeclarativePropertyChangesPrivate@@XZ @ 1656 NONAME ; class QDeclarativePropertyChangesPrivate const * QDeclarativePropertyChanges::d_func(void) const
- ?containsProperty@QDeclarativePropertyChanges@@QBE_NABVQByteArray@@@Z @ 1657 NONAME ; bool QDeclarativePropertyChanges::containsProperty(class QByteArray const &) const
- ?trUtf8@QDeclarativePropertyChanges@@SA?AVQString@@PBD0H@Z @ 1658 NONAME ; class QString QDeclarativePropertyChanges::trUtf8(char const *, char const *, int)
- ?property@QDeclarativePropertyChanges@@QBE?AVQVariant@@ABVQByteArray@@@Z @ 1659 NONAME ; class QVariant QDeclarativePropertyChanges::property(class QByteArray const &) const
- ?containsExpression@QDeclarativePropertyChanges@@QBE_NABVQByteArray@@@Z @ 1660 NONAME ; bool QDeclarativePropertyChanges::containsExpression(class QByteArray const &) const
+ ?d_func@QDeclarativePropertyChanges@@ABEPBVQDeclarativePropertyChangesPrivate@@XZ @ 1656 NONAME ABSENT ; class QDeclarativePropertyChangesPrivate const * QDeclarativePropertyChanges::d_func(void) const
+ ?containsProperty@QDeclarativePropertyChanges@@QBE_NABVQByteArray@@@Z @ 1657 NONAME ABSENT ; bool QDeclarativePropertyChanges::containsProperty(class QByteArray const &) const
+ ?trUtf8@QDeclarativePropertyChanges@@SA?AVQString@@PBD0H@Z @ 1658 NONAME ABSENT ; class QString QDeclarativePropertyChanges::trUtf8(char const *, char const *, int)
+ ?property@QDeclarativePropertyChanges@@QBE?AVQVariant@@ABVQByteArray@@@Z @ 1659 NONAME ABSENT ; class QVariant QDeclarativePropertyChanges::property(class QByteArray const &) const
+ ?containsExpression@QDeclarativePropertyChanges@@QBE_NABVQByteArray@@@Z @ 1660 NONAME ABSENT ; bool QDeclarativePropertyChanges::containsExpression(class QByteArray const &) const
?d_func@QDeclarativeStateOperation@@ABEPBVQDeclarativeStateOperationPrivate@@XZ @ 1661 NONAME ; class QDeclarativeStateOperationPrivate const * QDeclarativeStateOperation::d_func(void) const
- ?d_func@QDeclarativePropertyChanges@@AAEPAVQDeclarativePropertyChangesPrivate@@XZ @ 1662 NONAME ; class QDeclarativePropertyChangesPrivate * QDeclarativePropertyChanges::d_func(void)
+ ?d_func@QDeclarativePropertyChanges@@AAEPAVQDeclarativePropertyChangesPrivate@@XZ @ 1662 NONAME ABSENT ; class QDeclarativePropertyChangesPrivate * QDeclarativePropertyChanges::d_func(void)
?state@QDeclarativeStateOperation@@QBEPAVQDeclarativeState@@XZ @ 1663 NONAME ; class QDeclarativeState * QDeclarativeStateOperation::state(void) const
- ?value@QDeclarativePropertyChanges@@QBE?AVQVariant@@ABVQByteArray@@@Z @ 1664 NONAME ; class QVariant QDeclarativePropertyChanges::value(class QByteArray const &) const
- ?qt_metacall@QDeclarativePropertyChanges@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1665 NONAME ; int QDeclarativePropertyChanges::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?trUtf8@QDeclarativePropertyChanges@@SA?AVQString@@PBD0@Z @ 1666 NONAME ; class QString QDeclarativePropertyChanges::trUtf8(char const *, char const *)
- ?attachToState@QDeclarativePropertyChanges@@QAEXXZ @ 1667 NONAME ; void QDeclarativePropertyChanges::attachToState(void)
- ?changeExpression@QDeclarativePropertyChanges@@QAEXABVQByteArray@@ABVQString@@@Z @ 1668 NONAME ; void QDeclarativePropertyChanges::changeExpression(class QByteArray const &, class QString const &)
+ ?value@QDeclarativePropertyChanges@@QBE?AVQVariant@@ABVQByteArray@@@Z @ 1664 NONAME ABSENT ; class QVariant QDeclarativePropertyChanges::value(class QByteArray const &) const
+ ?qt_metacall@QDeclarativePropertyChanges@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1665 NONAME ABSENT ; int QDeclarativePropertyChanges::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?trUtf8@QDeclarativePropertyChanges@@SA?AVQString@@PBD0@Z @ 1666 NONAME ABSENT ; class QString QDeclarativePropertyChanges::trUtf8(char const *, char const *)
+ ?attachToState@QDeclarativePropertyChanges@@QAEXXZ @ 1667 NONAME ABSENT ; void QDeclarativePropertyChanges::attachToState(void)
+ ?changeExpression@QDeclarativePropertyChanges@@QAEXABVQByteArray@@ABVQString@@@Z @ 1668 NONAME ABSENT ; void QDeclarativePropertyChanges::changeExpression(class QByteArray const &, class QString const &)
?addEntryToRevertList@QDeclarativeState@@QAEXABVQDeclarativeAction@@@Z @ 1669 NONAME ; void QDeclarativeState::addEntryToRevertList(class QDeclarativeAction const &)
- ??0QDeclarativePropertyChanges@@QAE@XZ @ 1670 NONAME ; QDeclarativePropertyChanges::QDeclarativePropertyChanges(void)
+ ??0QDeclarativePropertyChanges@@QAE@XZ @ 1670 NONAME ABSENT ; QDeclarativePropertyChanges::QDeclarativePropertyChanges(void)
?resources_clear@QDeclarativeItemPrivate@@SAXPAV?$QDeclarativeListProperty@VQObject@@@@@Z @ 1671 NONAME ; void QDeclarativeItemPrivate::resources_clear(class QDeclarativeListProperty<class QObject> *)
- ?isExplicit@QDeclarativePropertyChanges@@QBE_NXZ @ 1672 NONAME ; bool QDeclarativePropertyChanges::isExplicit(void) const
+ ?isExplicit@QDeclarativePropertyChanges@@QBE_NXZ @ 1672 NONAME ABSENT ; bool QDeclarativePropertyChanges::isExplicit(void) const
?setState@QDeclarativeStateOperation@@QAEXPAVQDeclarativeState@@@Z @ 1673 NONAME ; void QDeclarativeStateOperation::setState(class QDeclarativeState *)
- ?detachFromState@QDeclarativePropertyChanges@@QAEXXZ @ 1674 NONAME ; void QDeclarativePropertyChanges::detachFromState(void)
- ?tr@QDeclarativePropertyChanges@@SA?AVQString@@PBD0H@Z @ 1675 NONAME ; class QString QDeclarativePropertyChanges::tr(char const *, char const *, int)
+ ?detachFromState@QDeclarativePropertyChanges@@QAEXXZ @ 1674 NONAME ABSENT ; void QDeclarativePropertyChanges::detachFromState(void)
+ ?tr@QDeclarativePropertyChanges@@SA?AVQString@@PBD0H@Z @ 1675 NONAME ABSENT ; class QString QDeclarativePropertyChanges::tr(char const *, char const *, int)
?addEntriesToRevertList@QDeclarativeState@@QAEXABV?$QList@VQDeclarativeAction@@@@@Z @ 1676 NONAME ; void QDeclarativeState::addEntriesToRevertList(class QList<class QDeclarativeAction> const &)
- ?expression@QDeclarativePropertyChanges@@QBE?AVQString@@ABVQByteArray@@@Z @ 1677 NONAME ; class QString QDeclarativePropertyChanges::expression(class QByteArray const &) const
- ?object@QDeclarativePropertyChanges@@QBEPAVQObject@@XZ @ 1678 NONAME ; class QObject * QDeclarativePropertyChanges::object(void) const
+ ?expression@QDeclarativePropertyChanges@@QBE?AVQString@@ABVQByteArray@@@Z @ 1677 NONAME ABSENT ; class QString QDeclarativePropertyChanges::expression(class QByteArray const &) const
+ ?object@QDeclarativePropertyChanges@@QBEPAVQObject@@XZ @ 1678 NONAME ABSENT ; class QObject * QDeclarativePropertyChanges::object(void) const
?valueInRevertList@QDeclarativeState@@QBE?AVQVariant@@PAVQObject@@ABVQByteArray@@@Z @ 1679 NONAME ; class QVariant QDeclarativeState::valueInRevertList(class QObject *, class QByteArray const &) const
?removeAllEntriesFromRevertList@QDeclarativeState@@QAEXPAVQObject@@@Z @ 1680 NONAME ; void QDeclarativeState::removeAllEntriesFromRevertList(class QObject *)
?d_func@QDeclarativeStateOperation@@AAEPAVQDeclarativeStateOperationPrivate@@XZ @ 1681 NONAME ; class QDeclarativeStateOperationPrivate * QDeclarativeStateOperation::d_func(void)
?changeValueInRevertList@QDeclarativeState@@QAE_NPAVQObject@@ABVQByteArray@@ABVQVariant@@@Z @ 1682 NONAME ; bool QDeclarativeState::changeValueInRevertList(class QObject *, class QByteArray const &, class QVariant const &)
- ?setIsExplicit@QDeclarativePropertyChanges@@QAEX_N@Z @ 1683 NONAME ; void QDeclarativePropertyChanges::setIsExplicit(bool)
+ ?setIsExplicit@QDeclarativePropertyChanges@@QAEX_N@Z @ 1683 NONAME ABSENT ; void QDeclarativePropertyChanges::setIsExplicit(bool)
?isStateActive@QDeclarativeState@@QBE_NXZ @ 1684 NONAME ; bool QDeclarativeState::isStateActive(void) const
?data_count@QDeclarativeItemPrivate@@SAHPAV?$QDeclarativeListProperty@VQObject@@@@@Z @ 1685 NONAME ; int QDeclarativeItemPrivate::data_count(class QDeclarativeListProperty<class QObject> *)
- ?removeProperty@QDeclarativePropertyChanges@@QAEXABVQByteArray@@@Z @ 1686 NONAME ; void QDeclarativePropertyChanges::removeProperty(class QByteArray const &)
+ ?removeProperty@QDeclarativePropertyChanges@@QAEXABVQByteArray@@@Z @ 1686 NONAME ABSENT ; void QDeclarativePropertyChanges::removeProperty(class QByteArray const &)
?data_at@QDeclarativeItemPrivate@@SAPAVQObject@@PAV?$QDeclarativeListProperty@VQObject@@@@H@Z @ 1687 NONAME ; class QObject * QDeclarativeItemPrivate::data_at(class QDeclarativeListProperty<class QObject> *, int)
- ?tr@QDeclarativePropertyChanges@@SA?AVQString@@PBD0@Z @ 1688 NONAME ; class QString QDeclarativePropertyChanges::tr(char const *, char const *)
+ ?tr@QDeclarativePropertyChanges@@SA?AVQString@@PBD0@Z @ 1688 NONAME ABSENT ; class QString QDeclarativePropertyChanges::tr(char const *, char const *)
?changeBindingInRevertList@QDeclarativeState@@QAE_NPAVQObject@@ABVQByteArray@@PAVQDeclarativeAbstractBinding@@@Z @ 1689 NONAME ; bool QDeclarativeState::changeBindingInRevertList(class QObject *, class QByteArray const &, class QDeclarativeAbstractBinding *)
- ?getStaticMetaObject@QDeclarativePropertyChanges@@SAABUQMetaObject@@XZ @ 1690 NONAME ; struct QMetaObject const & QDeclarativePropertyChanges::getStaticMetaObject(void)
+ ?getStaticMetaObject@QDeclarativePropertyChanges@@SAABUQMetaObject@@XZ @ 1690 NONAME ABSENT ; struct QMetaObject const & QDeclarativePropertyChanges::getStaticMetaObject(void)
?weakPointer@QDeclarativeAbstractBinding@@QAE?AV?$QWeakPointer@VQDeclarativeAbstractBinding@@@@XZ @ 1691 NONAME ABSENT ; class QWeakPointer<class QDeclarativeAbstractBinding> QDeclarativeAbstractBinding::weakPointer(void)
- ?getStaticMetaObject@QDeclarativeScriptAction@@SAABUQMetaObject@@XZ @ 1692 NONAME ; struct QMetaObject const & QDeclarativeScriptAction::getStaticMetaObject(void)
- ?qt_metacall@QDeclarativeScriptAction@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1693 NONAME ; int QDeclarativeScriptAction::qt_metacall(enum QMetaObject::Call, int, void * *)
- ??1QDeclarativeScriptAction@@UAE@XZ @ 1694 NONAME ; QDeclarativeScriptAction::~QDeclarativeScriptAction(void)
- ?stateChangeScriptName@QDeclarativeScriptAction@@QBE?AVQString@@XZ @ 1695 NONAME ; class QString QDeclarativeScriptAction::stateChangeScriptName(void) const
- ?script@QDeclarativeScriptAction@@QBE?AVQDeclarativeScriptString@@XZ @ 1696 NONAME ; class QDeclarativeScriptString QDeclarativeScriptAction::script(void) const
- ?qt_metacast@QDeclarativeScriptAction@@UAEPAXPBD@Z @ 1697 NONAME ; void * QDeclarativeScriptAction::qt_metacast(char const *)
- ?tr@QDeclarativeScriptAction@@SA?AVQString@@PBD0@Z @ 1698 NONAME ; class QString QDeclarativeScriptAction::tr(char const *, char const *)
- ?setStateChangeScriptName@QDeclarativeScriptAction@@QAEXABVQString@@@Z @ 1699 NONAME ; void QDeclarativeScriptAction::setStateChangeScriptName(class QString const &)
- ??_EQDeclarativeScriptAction@@UAE@I@Z @ 1700 NONAME ; QDeclarativeScriptAction::~QDeclarativeScriptAction(unsigned int)
- ?d_func@QDeclarativeScriptAction@@ABEPBVQDeclarativeScriptActionPrivate@@XZ @ 1701 NONAME ; class QDeclarativeScriptActionPrivate const * QDeclarativeScriptAction::d_func(void) const
- ?weakPointer@QDeclarativeAbstractBinding@@AAE?AV?$QWeakPointer@VQDeclarativeAbstractBinding@@@@XZ @ 1702 NONAME ; class QWeakPointer<class QDeclarativeAbstractBinding> QDeclarativeAbstractBinding::weakPointer(void)
- ?trUtf8@QDeclarativeScriptAction@@SA?AVQString@@PBD0H@Z @ 1703 NONAME ; class QString QDeclarativeScriptAction::trUtf8(char const *, char const *, int)
- ?trUtf8@QDeclarativeScriptAction@@SA?AVQString@@PBD0@Z @ 1704 NONAME ; class QString QDeclarativeScriptAction::trUtf8(char const *, char const *)
- ?qtAnimation@QDeclarativeScriptAction@@MAEPAVQAbstractAnimation@@XZ @ 1705 NONAME ; class QAbstractAnimation * QDeclarativeScriptAction::qtAnimation(void)
- ??0QDeclarativeScriptAction@@QAE@PAVQObject@@@Z @ 1706 NONAME ; QDeclarativeScriptAction::QDeclarativeScriptAction(class QObject *)
- ?tr@QDeclarativeScriptAction@@SA?AVQString@@PBD0H@Z @ 1707 NONAME ; class QString QDeclarativeScriptAction::tr(char const *, char const *, int)
- ?d_func@QDeclarativeScriptAction@@AAEPAVQDeclarativeScriptActionPrivate@@XZ @ 1708 NONAME ; class QDeclarativeScriptActionPrivate * QDeclarativeScriptAction::d_func(void)
- ?transition@QDeclarativeScriptAction@@MAEXAAV?$QList@VQDeclarativeAction@@@@AAV?$QList@VQDeclarativeProperty@@@@W4TransitionDirection@QDeclarativeAbstractAnimation@@@Z @ 1709 NONAME ; void QDeclarativeScriptAction::transition(class QList<class QDeclarativeAction> &, class QList<class QDeclarativeProperty> &, enum QDeclarativeAbstractAnimation::TransitionDirection)
- ?staticMetaObject@QDeclarativeScriptAction@@2UQMetaObject@@B @ 1710 NONAME ; struct QMetaObject const QDeclarativeScriptAction::staticMetaObject
- ?setScript@QDeclarativeScriptAction@@QAEXABVQDeclarativeScriptString@@@Z @ 1711 NONAME ; void QDeclarativeScriptAction::setScript(class QDeclarativeScriptString const &)
- ?metaObject@QDeclarativeScriptAction@@UBEPBUQMetaObject@@XZ @ 1712 NONAME ; struct QMetaObject const * QDeclarativeScriptAction::metaObject(void) const
- ?getPointer@QDeclarativeAbstractBinding@@SA?AV?$QWeakPointer@VQDeclarativeAbstractBinding@@@@PAV1@@Z @ 1713 NONAME ; class QWeakPointer<class QDeclarativeAbstractBinding> QDeclarativeAbstractBinding::getPointer(class QDeclarativeAbstractBinding *)
- ??0QDeclarativeListModel@@AAE@PBV0@PAVQDeclarativeListModelWorkerAgent@@@Z @ 1714 NONAME ; QDeclarativeListModel::QDeclarativeListModel(class QDeclarativeListModel const *, class QDeclarativeListModelWorkerAgent *)
- ?inWorkerThread@QDeclarativeListModel@@ABE_NXZ @ 1715 NONAME ; bool QDeclarativeListModel::inWorkerThread(void) const
- ?canMove@QDeclarativeListModel@@ABE_NHHH@Z @ 1716 NONAME ; bool QDeclarativeListModel::canMove(int, int, int) const
- ?getScriptEngine@QDeclarativeDebugHelper@@SAPAVQScriptEngine@@PAVQDeclarativeEngine@@@Z @ 1717 NONAME ; class QScriptEngine * QDeclarativeDebugHelper::getScriptEngine(class QDeclarativeEngine *)
- ?setAnimationSlowDownFactor@QDeclarativeDebugHelper@@SAXM@Z @ 1718 NONAME ; void QDeclarativeDebugHelper::setAnimationSlowDownFactor(float)
- ?add@QDeclarativeBasePositioner@@QBEPAVQDeclarativeTransition@@XZ @ 1719 NONAME ; class QDeclarativeTransition * QDeclarativeBasePositioner::add(void) const
- ?setLoops@QDeclarativeAbstractAnimation@@QAEXH@Z @ 1720 NONAME ; void QDeclarativeAbstractAnimation::setLoops(int)
- ?trUtf8@QDeclarativeAbstractAnimation@@SA?AVQString@@PBD0@Z @ 1721 NONAME ; class QString QDeclarativeAbstractAnimation::trUtf8(char const *, char const *)
- ?tr@QDeclarativeBasePositioner@@SA?AVQString@@PBD0@Z @ 1722 NONAME ; class QString QDeclarativeBasePositioner::tr(char const *, char const *)
- ?staticMetaObject@QDeclarativeAbstractAnimation@@2UQMetaObject@@B @ 1723 NONAME ; struct QMetaObject const QDeclarativeAbstractAnimation::staticMetaObject
- ?setMove@QDeclarativeBasePositioner@@QAEXPAVQDeclarativeTransition@@@Z @ 1724 NONAME ; void QDeclarativeBasePositioner::setMove(class QDeclarativeTransition *)
- ?setRunning@QDeclarativeTimer@@QAEX_N@Z @ 1725 NONAME ; void QDeclarativeTimer::setRunning(bool)
- ?tr@QDeclarativeTimer@@SA?AVQString@@PBD0@Z @ 1726 NONAME ; class QString QDeclarativeTimer::tr(char const *, char const *)
- ?qt_metacall@QDeclarativeTimer@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1727 NONAME ; int QDeclarativeTimer::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?setPaused@QDeclarativeAbstractAnimation@@QAEX_N@Z @ 1728 NONAME ; void QDeclarativeAbstractAnimation::setPaused(bool)
- ?d_func@QDeclarativeBasePositioner@@ABEPBVQDeclarativeBasePositionerPrivate@@XZ @ 1729 NONAME ; class QDeclarativeBasePositionerPrivate const * QDeclarativeBasePositioner::d_func(void) const
- ?setRepeating@QDeclarativeTimer@@QAEX_N@Z @ 1730 NONAME ; void QDeclarativeTimer::setRepeating(bool)
- ?interval@QDeclarativeTimer@@QBEHXZ @ 1731 NONAME ; int QDeclarativeTimer::interval(void) const
- ?start@QDeclarativeTimer@@QAEXXZ @ 1732 NONAME ; void QDeclarativeTimer::start(void)
- ?transition@QDeclarativeAbstractAnimation@@UAEXAAV?$QList@VQDeclarativeAction@@@@AAV?$QList@VQDeclarativeProperty@@@@W4TransitionDirection@1@@Z @ 1733 NONAME ; void QDeclarativeAbstractAnimation::transition(class QList<class QDeclarativeAction> &, class QList<class QDeclarativeProperty> &, enum QDeclarativeAbstractAnimation::TransitionDirection)
- ?componentComplete@QDeclarativeAbstractAnimation@@UAEXXZ @ 1734 NONAME ; void QDeclarativeAbstractAnimation::componentComplete(void)
- ?statusChanged@QDeclarativeDebugService@@MAEXW4Status@1@@Z @ 1735 NONAME ; void QDeclarativeDebugService::statusChanged(enum QDeclarativeDebugService::Status)
- ?runningChanged@QDeclarativeAbstractAnimation@@IAEX_N@Z @ 1736 NONAME ; void QDeclarativeAbstractAnimation::runningChanged(bool)
- ?trUtf8@QDeclarativeAbstractAnimation@@SA?AVQString@@PBD0H@Z @ 1737 NONAME ; class QString QDeclarativeAbstractAnimation::trUtf8(char const *, char const *, int)
- ??_EQDeclarativeBasePositioner@@UAE@I@Z @ 1738 NONAME ; QDeclarativeBasePositioner::~QDeclarativeBasePositioner(unsigned int)
- ?metaObject@QDeclarativeTimer@@UBEPBUQMetaObject@@XZ @ 1739 NONAME ; struct QMetaObject const * QDeclarativeTimer::metaObject(void) const
- ?setGroup@QDeclarativeAbstractAnimation@@QAEXPAVQDeclarativeAnimationGroup@@@Z @ 1740 NONAME ; void QDeclarativeAbstractAnimation::setGroup(class QDeclarativeAnimationGroup *)
- ?isRepeating@QDeclarativeTimer@@QBE_NXZ @ 1741 NONAME ; bool QDeclarativeTimer::isRepeating(void) const
- ?setTriggeredOnStart@QDeclarativeTimer@@QAEX_N@Z @ 1742 NONAME ; void QDeclarativeTimer::setTriggeredOnStart(bool)
- ?currentTime@QDeclarativeAbstractAnimation@@QAEHXZ @ 1743 NONAME ; int QDeclarativeAbstractAnimation::currentTime(void)
- ?status@QDeclarativeEngineDebug@@QBE?AW4Status@1@XZ @ 1744 NONAME ; enum QDeclarativeEngineDebug::Status QDeclarativeEngineDebug::status(void) const
- ??1QDeclarativeAbstractAnimation@@UAE@XZ @ 1745 NONAME ; QDeclarativeAbstractAnimation::~QDeclarativeAbstractAnimation(void)
- ?triggered@QDeclarativeTimer@@IAEXXZ @ 1746 NONAME ; void QDeclarativeTimer::triggered(void)
- ?getStaticMetaObject@QDeclarativeBasePositioner@@SAABUQMetaObject@@XZ @ 1747 NONAME ; struct QMetaObject const & QDeclarativeBasePositioner::getStaticMetaObject(void)
- ?finished@QDeclarativeTimer@@AAEXXZ @ 1748 NONAME ; void QDeclarativeTimer::finished(void)
- ?pausedChanged@QDeclarativeAbstractAnimation@@IAEX_N@Z @ 1749 NONAME ; void QDeclarativeAbstractAnimation::pausedChanged(bool)
- ?complete@QDeclarativeAbstractAnimation@@QAEXXZ @ 1750 NONAME ; void QDeclarativeAbstractAnimation::complete(void)
- ?setRunning@QDeclarativeAbstractAnimation@@QAEX_N@Z @ 1751 NONAME ; void QDeclarativeAbstractAnimation::setRunning(bool)
- ?trUtf8@QDeclarativeBasePositioner@@SA?AVQString@@PBD0H@Z @ 1752 NONAME ; class QString QDeclarativeBasePositioner::trUtf8(char const *, char const *, int)
- ?trUtf8@QDeclarativeBasePositioner@@SA?AVQString@@PBD0@Z @ 1753 NONAME ; class QString QDeclarativeBasePositioner::trUtf8(char const *, char const *)
- ?completed@QDeclarativeAbstractAnimation@@IAEXXZ @ 1754 NONAME ; void QDeclarativeAbstractAnimation::completed(void)
- ?trUtf8@QDeclarativeTimer@@SA?AVQString@@PBD0@Z @ 1755 NONAME ; class QString QDeclarativeTimer::trUtf8(char const *, char const *)
- ?loopCountChanged@QDeclarativeAbstractAnimation@@IAEXH@Z @ 1756 NONAME ; void QDeclarativeAbstractAnimation::loopCountChanged(int)
- ?repeatChanged@QDeclarativeTimer@@IAEXXZ @ 1757 NONAME ; void QDeclarativeTimer::repeatChanged(void)
- ?setDisableUserControl@QDeclarativeAbstractAnimation@@QAEXXZ @ 1758 NONAME ; void QDeclarativeAbstractAnimation::setDisableUserControl(void)
- ?componentComplete@QDeclarativeBasePositioner@@MAEXXZ @ 1759 NONAME ; void QDeclarativeBasePositioner::componentComplete(void)
- ?setDefaultTarget@QDeclarativeAbstractAnimation@@QAEXABVQDeclarativeProperty@@@Z @ 1760 NONAME ; void QDeclarativeAbstractAnimation::setDefaultTarget(class QDeclarativeProperty const &)
- ?staticMetaObject@QDeclarativeBasePositioner@@2UQMetaObject@@B @ 1761 NONAME ; struct QMetaObject const QDeclarativeBasePositioner::staticMetaObject
- ?triggeredOnStart@QDeclarativeTimer@@QBE_NXZ @ 1762 NONAME ; bool QDeclarativeTimer::triggeredOnStart(void) const
- ?notifyRunningChanged@QDeclarativeAbstractAnimation@@AAEX_N@Z @ 1763 NONAME ; void QDeclarativeAbstractAnimation::notifyRunningChanged(bool)
- ?statusChanged@QDeclarativeDebugClient@@MAEXW4Status@1@@Z @ 1764 NONAME ; void QDeclarativeDebugClient::statusChanged(enum QDeclarativeDebugClient::Status)
- ??0QDeclarativeBasePositioner@@IAE@AAVQDeclarativeBasePositionerPrivate@@W4PositionerType@0@PAVQDeclarativeItem@@@Z @ 1765 NONAME ; QDeclarativeBasePositioner::QDeclarativeBasePositioner(class QDeclarativeBasePositionerPrivate &, enum QDeclarativeBasePositioner::PositionerType, class QDeclarativeItem *)
- ?componentComplete@QDeclarativeTimer@@MAEXXZ @ 1766 NONAME ; void QDeclarativeTimer::componentComplete(void)
- ?tr@QDeclarativeAbstractAnimation@@SA?AVQString@@PBD0@Z @ 1767 NONAME ; class QString QDeclarativeAbstractAnimation::tr(char const *, char const *)
- ?isRunning@QDeclarativeAbstractAnimation@@QBE_NXZ @ 1768 NONAME ; bool QDeclarativeAbstractAnimation::isRunning(void) const
- ?d_func@QDeclarativeAbstractAnimation@@ABEPBVQDeclarativeAbstractAnimationPrivate@@XZ @ 1769 NONAME ; class QDeclarativeAbstractAnimationPrivate const * QDeclarativeAbstractAnimation::d_func(void) const
- ??_EQDeclarativeAbstractAnimation@@UAE@I@Z @ 1770 NONAME ; QDeclarativeAbstractAnimation::~QDeclarativeAbstractAnimation(unsigned int)
- ??0QDeclarativeBasePositioner@@QAE@W4PositionerType@0@PAVQDeclarativeItem@@@Z @ 1771 NONAME ; QDeclarativeBasePositioner::QDeclarativeBasePositioner(enum QDeclarativeBasePositioner::PositionerType, class QDeclarativeItem *)
- ?qt_metacall@QDeclarativeBasePositioner@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1772 NONAME ; int QDeclarativeBasePositioner::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?status@QDeclarativeDebugClient@@QBE?AW4Status@1@XZ @ 1773 NONAME ; enum QDeclarativeDebugClient::Status QDeclarativeDebugClient::status(void) const
- ?prePositioning@QDeclarativeBasePositioner@@IAEXXZ @ 1774 NONAME ; void QDeclarativeBasePositioner::prePositioning(void)
- ?finishApplyTransitions@QDeclarativeBasePositioner@@IAEXXZ @ 1775 NONAME ; void QDeclarativeBasePositioner::finishApplyTransitions(void)
- ?d_func@QDeclarativeAbstractAnimation@@AAEPAVQDeclarativeAbstractAnimationPrivate@@XZ @ 1776 NONAME ; class QDeclarativeAbstractAnimationPrivate * QDeclarativeAbstractAnimation::d_func(void)
- ?componentFinalized@QDeclarativeAbstractAnimation@@AAEXXZ @ 1777 NONAME ; void QDeclarativeAbstractAnimation::componentFinalized(void)
- ??_EQDeclarativeTimer@@UAE@I@Z @ 1778 NONAME ; QDeclarativeTimer::~QDeclarativeTimer(unsigned int)
- ?pause@QDeclarativeAbstractAnimation@@QAEXXZ @ 1779 NONAME ; void QDeclarativeAbstractAnimation::pause(void)
- ?stop@QDeclarativeTimer@@QAEXXZ @ 1780 NONAME ; void QDeclarativeTimer::stop(void)
- ?timelineComplete@QDeclarativeAbstractAnimation@@AAEXXZ @ 1781 NONAME ; void QDeclarativeAbstractAnimation::timelineComplete(void)
- ?d_func@QDeclarativeBasePositioner@@AAEPAVQDeclarativeBasePositionerPrivate@@XZ @ 1782 NONAME ; class QDeclarativeBasePositionerPrivate * QDeclarativeBasePositioner::d_func(void)
- ?setAlwaysRunToEnd@QDeclarativeAbstractAnimation@@QAEX_N@Z @ 1783 NONAME ; void QDeclarativeAbstractAnimation::setAlwaysRunToEnd(bool)
- ?classBegin@QDeclarativeAbstractAnimation@@UAEXXZ @ 1784 NONAME ; void QDeclarativeAbstractAnimation::classBegin(void)
- ?d_func@QDeclarativeTimer@@AAEPAVQDeclarativeTimerPrivate@@XZ @ 1785 NONAME ; class QDeclarativeTimerPrivate * QDeclarativeTimer::d_func(void)
- ?spacing@QDeclarativeBasePositioner@@QBEHXZ @ 1786 NONAME ; int QDeclarativeBasePositioner::spacing(void) const
- ??0QDeclarativeAbstractAnimation@@QAE@PAVQObject@@@Z @ 1787 NONAME ; QDeclarativeAbstractAnimation::QDeclarativeAbstractAnimation(class QObject *)
- ?metaObject@QDeclarativeAbstractAnimation@@UBEPBUQMetaObject@@XZ @ 1788 NONAME ; struct QMetaObject const * QDeclarativeAbstractAnimation::metaObject(void) const
- ?tr@QDeclarativeAbstractAnimation@@SA?AVQString@@PBD0H@Z @ 1789 NONAME ; class QString QDeclarativeAbstractAnimation::tr(char const *, char const *, int)
- ?started@QDeclarativeAbstractAnimation@@IAEXXZ @ 1790 NONAME ; void QDeclarativeAbstractAnimation::started(void)
- ?setInterval@QDeclarativeTimer@@QAEXH@Z @ 1791 NONAME ; void QDeclarativeTimer::setInterval(int)
- ?statusChanged@QDeclarativeEngineDebug@@IAEXW4Status@1@@Z @ 1792 NONAME ; void QDeclarativeEngineDebug::statusChanged(enum QDeclarativeEngineDebug::Status)
- ?d_func@QDeclarativeTimer@@ABEPBVQDeclarativeTimerPrivate@@XZ @ 1793 NONAME ; class QDeclarativeTimerPrivate const * QDeclarativeTimer::d_func(void) const
- ?setSpacing@QDeclarativeBasePositioner@@QAEXH@Z @ 1794 NONAME ; void QDeclarativeBasePositioner::setSpacing(int)
- ?staticMetaObject@QDeclarativeTimer@@2UQMetaObject@@B @ 1795 NONAME ; struct QMetaObject const QDeclarativeTimer::staticMetaObject
- ?positionY@QDeclarativeBasePositioner@@IAEXHABVPositionedItem@1@@Z @ 1796 NONAME ; void QDeclarativeBasePositioner::positionY(int, class QDeclarativeBasePositioner::PositionedItem const &)
- ?qt_metacast@QDeclarativeAbstractAnimation@@UAEPAXPBD@Z @ 1797 NONAME ; void * QDeclarativeAbstractAnimation::qt_metacast(char const *)
- ?setAdd@QDeclarativeBasePositioner@@QAEXPAVQDeclarativeTransition@@@Z @ 1798 NONAME ; void QDeclarativeBasePositioner::setAdd(class QDeclarativeTransition *)
- ?setCurrentTime@QDeclarativeAbstractAnimation@@QAEXH@Z @ 1799 NONAME ; void QDeclarativeAbstractAnimation::setCurrentTime(int)
- ?attachedPropertiesId@QDeclarativeType@@QBEHXZ @ 1800 NONAME ; int QDeclarativeType::attachedPropertiesId(void) const
- ?positionX@QDeclarativeBasePositioner@@IAEXHABVPositionedItem@1@@Z @ 1801 NONAME ; void QDeclarativeBasePositioner::positionX(int, class QDeclarativeBasePositioner::PositionedItem const &)
- ?restart@QDeclarativeAbstractAnimation@@QAEXXZ @ 1802 NONAME ; void QDeclarativeAbstractAnimation::restart(void)
- ?itemChange@QDeclarativeBasePositioner@@MAE?AVQVariant@@W4GraphicsItemChange@QGraphicsItem@@ABV2@@Z @ 1803 NONAME ; class QVariant QDeclarativeBasePositioner::itemChange(enum QGraphicsItem::GraphicsItemChange, class QVariant const &)
- ??0QDeclarativeAbstractAnimation@@IAE@AAVQDeclarativeAbstractAnimationPrivate@@PAVQObject@@@Z @ 1804 NONAME ; QDeclarativeAbstractAnimation::QDeclarativeAbstractAnimation(class QDeclarativeAbstractAnimationPrivate &, class QObject *)
- ?resume@QDeclarativeAbstractAnimation@@QAEXXZ @ 1805 NONAME ; void QDeclarativeAbstractAnimation::resume(void)
- ?runningChanged@QDeclarativeTimer@@IAEXXZ @ 1806 NONAME ; void QDeclarativeTimer::runningChanged(void)
- ?ticked@QDeclarativeTimer@@AAEXXZ @ 1807 NONAME ; void QDeclarativeTimer::ticked(void)
- ?graphicsWidgetGeometryChanged@QDeclarativeBasePositioner@@IAEXXZ @ 1808 NONAME ; void QDeclarativeBasePositioner::graphicsWidgetGeometryChanged(void)
- ?trUtf8@QDeclarativeTimer@@SA?AVQString@@PBD0H@Z @ 1809 NONAME ; class QString QDeclarativeTimer::trUtf8(char const *, char const *, int)
- ??0QDeclarativeTimer@@QAE@PAVQObject@@@Z @ 1810 NONAME ; QDeclarativeTimer::QDeclarativeTimer(class QObject *)
- ?loops@QDeclarativeAbstractAnimation@@QBEHXZ @ 1811 NONAME ; int QDeclarativeAbstractAnimation::loops(void) const
- ?setTarget@QDeclarativeAbstractAnimation@@EAEXABVQDeclarativeProperty@@@Z @ 1812 NONAME ; void QDeclarativeAbstractAnimation::setTarget(class QDeclarativeProperty const &)
- ?alwaysRunToEnd@QDeclarativeAbstractAnimation@@QBE_NXZ @ 1813 NONAME ; bool QDeclarativeAbstractAnimation::alwaysRunToEnd(void) const
- ?tr@QDeclarativeTimer@@SA?AVQString@@PBD0H@Z @ 1814 NONAME ; class QString QDeclarativeTimer::tr(char const *, char const *, int)
- ?status@QDeclarativeDebugService@@QBE?AW4Status@1@XZ @ 1815 NONAME ; enum QDeclarativeDebugService::Status QDeclarativeDebugService::status(void) const
- ?intervalChanged@QDeclarativeTimer@@IAEXXZ @ 1816 NONAME ; void QDeclarativeTimer::intervalChanged(void)
- ?isPaused@QDeclarativeAbstractAnimation@@QBE_NXZ @ 1817 NONAME ; bool QDeclarativeAbstractAnimation::isPaused(void) const
- ?getStaticMetaObject@QDeclarativeAbstractAnimation@@SAABUQMetaObject@@XZ @ 1818 NONAME ; struct QMetaObject const & QDeclarativeAbstractAnimation::getStaticMetaObject(void)
- ?group@QDeclarativeAbstractAnimation@@QBEPAVQDeclarativeAnimationGroup@@XZ @ 1819 NONAME ; class QDeclarativeAnimationGroup * QDeclarativeAbstractAnimation::group(void) const
- ?classBegin@QDeclarativeTimer@@MAEXXZ @ 1820 NONAME ; void QDeclarativeTimer::classBegin(void)
- ?restart@QDeclarativeTimer@@QAEXXZ @ 1821 NONAME ; void QDeclarativeTimer::restart(void)
- ?move@QDeclarativeBasePositioner@@QBEPAVQDeclarativeTransition@@XZ @ 1822 NONAME ; class QDeclarativeTransition * QDeclarativeBasePositioner::move(void) const
- ?spacingChanged@QDeclarativeBasePositioner@@IAEXXZ @ 1823 NONAME ; void QDeclarativeBasePositioner::spacingChanged(void)
- ?qt_metacast@QDeclarativeBasePositioner@@UAEPAXPBD@Z @ 1824 NONAME ; void * QDeclarativeBasePositioner::qt_metacast(char const *)
- ??1QDeclarativeTimer@@UAE@XZ @ 1825 NONAME ; QDeclarativeTimer::~QDeclarativeTimer(void)
- ?getStaticMetaObject@QDeclarativeTimer@@SAABUQMetaObject@@XZ @ 1826 NONAME ; struct QMetaObject const & QDeclarativeTimer::getStaticMetaObject(void)
- ?tr@QDeclarativeBasePositioner@@SA?AVQString@@PBD0H@Z @ 1827 NONAME ; class QString QDeclarativeBasePositioner::tr(char const *, char const *, int)
- ??1QDeclarativeBasePositioner@@UAE@XZ @ 1828 NONAME ; QDeclarativeBasePositioner::~QDeclarativeBasePositioner(void)
- ?moveChanged@QDeclarativeBasePositioner@@IAEXXZ @ 1829 NONAME ; void QDeclarativeBasePositioner::moveChanged(void)
- ?qt_metacast@QDeclarativeTimer@@UAEPAXPBD@Z @ 1830 NONAME ; void * QDeclarativeTimer::qt_metacast(char const *)
- ?metaObject@QDeclarativeBasePositioner@@UBEPBUQMetaObject@@XZ @ 1831 NONAME ; struct QMetaObject const * QDeclarativeBasePositioner::metaObject(void) const
- ?alwaysRunToEndChanged@QDeclarativeAbstractAnimation@@IAEX_N@Z @ 1832 NONAME ; void QDeclarativeAbstractAnimation::alwaysRunToEndChanged(bool)
- ?triggeredOnStartChanged@QDeclarativeTimer@@IAEXXZ @ 1833 NONAME ; void QDeclarativeTimer::triggeredOnStartChanged(void)
- ?isRunning@QDeclarativeTimer@@QBE_NXZ @ 1834 NONAME ; bool QDeclarativeTimer::isRunning(void) const
- ?update@QDeclarativeTimer@@AAEXXZ @ 1835 NONAME ; void QDeclarativeTimer::update(void)
- ?stop@QDeclarativeAbstractAnimation@@QAEXXZ @ 1836 NONAME ; void QDeclarativeAbstractAnimation::stop(void)
- ?addChanged@QDeclarativeBasePositioner@@IAEXXZ @ 1837 NONAME ; void QDeclarativeBasePositioner::addChanged(void)
- ?start@QDeclarativeAbstractAnimation@@QAEXXZ @ 1838 NONAME ; void QDeclarativeAbstractAnimation::start(void)
- ?qt_metacall@QDeclarativeAbstractAnimation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1839 NONAME ; int QDeclarativeAbstractAnimation::qt_metacall(enum QMetaObject::Call, int, void * *)
- ?connect@QDeclarativePropertyPrivate@@SA_NPBVQObject@@H0HHPAH@Z @ 1840 NONAME ; bool QDeclarativePropertyPrivate::connect(class QObject const *, int, class QObject const *, int, int, int *)
+ ?getStaticMetaObject@QDeclarativeScriptAction@@SAABUQMetaObject@@XZ @ 1692 NONAME ABSENT ; struct QMetaObject const & QDeclarativeScriptAction::getStaticMetaObject(void)
+ ?qt_metacall@QDeclarativeScriptAction@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1693 NONAME ABSENT ; int QDeclarativeScriptAction::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ??1QDeclarativeScriptAction@@UAE@XZ @ 1694 NONAME ABSENT ; QDeclarativeScriptAction::~QDeclarativeScriptAction(void)
+ ?stateChangeScriptName@QDeclarativeScriptAction@@QBE?AVQString@@XZ @ 1695 NONAME ABSENT ; class QString QDeclarativeScriptAction::stateChangeScriptName(void) const
+ ?script@QDeclarativeScriptAction@@QBE?AVQDeclarativeScriptString@@XZ @ 1696 NONAME ABSENT ; class QDeclarativeScriptString QDeclarativeScriptAction::script(void) const
+ ?qt_metacast@QDeclarativeScriptAction@@UAEPAXPBD@Z @ 1697 NONAME ABSENT ; void * QDeclarativeScriptAction::qt_metacast(char const *)
+ ?tr@QDeclarativeScriptAction@@SA?AVQString@@PBD0@Z @ 1698 NONAME ABSENT ; class QString QDeclarativeScriptAction::tr(char const *, char const *)
+ ?setStateChangeScriptName@QDeclarativeScriptAction@@QAEXABVQString@@@Z @ 1699 NONAME ABSENT ; void QDeclarativeScriptAction::setStateChangeScriptName(class QString const &)
+ ??_EQDeclarativeScriptAction@@UAE@I@Z @ 1700 NONAME ABSENT ; QDeclarativeScriptAction::~QDeclarativeScriptAction(unsigned int)
+ ?d_func@QDeclarativeScriptAction@@ABEPBVQDeclarativeScriptActionPrivate@@XZ @ 1701 NONAME ABSENT ; class QDeclarativeScriptActionPrivate const * QDeclarativeScriptAction::d_func(void) const
+ ?weakPointer@QDeclarativeAbstractBinding@@AAE?AV?$QWeakPointer@VQDeclarativeAbstractBinding@@@@XZ @ 1702 NONAME ABSENT ; class QWeakPointer<class QDeclarativeAbstractBinding> QDeclarativeAbstractBinding::weakPointer(void)
+ ?trUtf8@QDeclarativeScriptAction@@SA?AVQString@@PBD0H@Z @ 1703 NONAME ABSENT ; class QString QDeclarativeScriptAction::trUtf8(char const *, char const *, int)
+ ?trUtf8@QDeclarativeScriptAction@@SA?AVQString@@PBD0@Z @ 1704 NONAME ABSENT ; class QString QDeclarativeScriptAction::trUtf8(char const *, char const *)
+ ?qtAnimation@QDeclarativeScriptAction@@MAEPAVQAbstractAnimation@@XZ @ 1705 NONAME ABSENT ; class QAbstractAnimation * QDeclarativeScriptAction::qtAnimation(void)
+ ??0QDeclarativeScriptAction@@QAE@PAVQObject@@@Z @ 1706 NONAME ABSENT ; QDeclarativeScriptAction::QDeclarativeScriptAction(class QObject *)
+ ?tr@QDeclarativeScriptAction@@SA?AVQString@@PBD0H@Z @ 1707 NONAME ABSENT ; class QString QDeclarativeScriptAction::tr(char const *, char const *, int)
+ ?d_func@QDeclarativeScriptAction@@AAEPAVQDeclarativeScriptActionPrivate@@XZ @ 1708 NONAME ABSENT ; class QDeclarativeScriptActionPrivate * QDeclarativeScriptAction::d_func(void)
+ ?transition@QDeclarativeScriptAction@@MAEXAAV?$QList@VQDeclarativeAction@@@@AAV?$QList@VQDeclarativeProperty@@@@W4TransitionDirection@QDeclarativeAbstractAnimation@@@Z @ 1709 NONAME ABSENT ; void QDeclarativeScriptAction::transition(class QList<class QDeclarativeAction> &, class QList<class QDeclarativeProperty> &, enum QDeclarativeAbstractAnimation::TransitionDirection)
+ ?staticMetaObject@QDeclarativeScriptAction@@2UQMetaObject@@B @ 1710 NONAME ABSENT ; struct QMetaObject const QDeclarativeScriptAction::staticMetaObject
+ ?setScript@QDeclarativeScriptAction@@QAEXABVQDeclarativeScriptString@@@Z @ 1711 NONAME ABSENT ; void QDeclarativeScriptAction::setScript(class QDeclarativeScriptString const &)
+ ?metaObject@QDeclarativeScriptAction@@UBEPBUQMetaObject@@XZ @ 1712 NONAME ABSENT ; struct QMetaObject const * QDeclarativeScriptAction::metaObject(void) const
+ ?getPointer@QDeclarativeAbstractBinding@@SA?AV?$QWeakPointer@VQDeclarativeAbstractBinding@@@@PAV1@@Z @ 1713 NONAME ABSENT ; class QWeakPointer<class QDeclarativeAbstractBinding> QDeclarativeAbstractBinding::getPointer(class QDeclarativeAbstractBinding *)
+ ??0QDeclarativeListModel@@AAE@PBV0@PAVQDeclarativeListModelWorkerAgent@@@Z @ 1714 NONAME ABSENT ; QDeclarativeListModel::QDeclarativeListModel(class QDeclarativeListModel const *, class QDeclarativeListModelWorkerAgent *)
+ ?inWorkerThread@QDeclarativeListModel@@ABE_NXZ @ 1715 NONAME ABSENT ; bool QDeclarativeListModel::inWorkerThread(void) const
+ ?canMove@QDeclarativeListModel@@ABE_NHHH@Z @ 1716 NONAME ABSENT ; bool QDeclarativeListModel::canMove(int, int, int) const
+ ?getScriptEngine@QDeclarativeDebugHelper@@SAPAVQScriptEngine@@PAVQDeclarativeEngine@@@Z @ 1717 NONAME ABSENT ; class QScriptEngine * QDeclarativeDebugHelper::getScriptEngine(class QDeclarativeEngine *)
+ ?setAnimationSlowDownFactor@QDeclarativeDebugHelper@@SAXM@Z @ 1718 NONAME ABSENT ; void QDeclarativeDebugHelper::setAnimationSlowDownFactor(float)
+ ?add@QDeclarativeBasePositioner@@QBEPAVQDeclarativeTransition@@XZ @ 1719 NONAME ABSENT ; class QDeclarativeTransition * QDeclarativeBasePositioner::add(void) const
+ ?setLoops@QDeclarativeAbstractAnimation@@QAEXH@Z @ 1720 NONAME ABSENT ; void QDeclarativeAbstractAnimation::setLoops(int)
+ ?trUtf8@QDeclarativeAbstractAnimation@@SA?AVQString@@PBD0@Z @ 1721 NONAME ABSENT ; class QString QDeclarativeAbstractAnimation::trUtf8(char const *, char const *)
+ ?tr@QDeclarativeBasePositioner@@SA?AVQString@@PBD0@Z @ 1722 NONAME ABSENT ; class QString QDeclarativeBasePositioner::tr(char const *, char const *)
+ ?staticMetaObject@QDeclarativeAbstractAnimation@@2UQMetaObject@@B @ 1723 NONAME ABSENT ; struct QMetaObject const QDeclarativeAbstractAnimation::staticMetaObject
+ ?setMove@QDeclarativeBasePositioner@@QAEXPAVQDeclarativeTransition@@@Z @ 1724 NONAME ABSENT ; void QDeclarativeBasePositioner::setMove(class QDeclarativeTransition *)
+ ?setRunning@QDeclarativeTimer@@QAEX_N@Z @ 1725 NONAME ABSENT ; void QDeclarativeTimer::setRunning(bool)
+ ?tr@QDeclarativeTimer@@SA?AVQString@@PBD0@Z @ 1726 NONAME ABSENT ; class QString QDeclarativeTimer::tr(char const *, char const *)
+ ?qt_metacall@QDeclarativeTimer@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1727 NONAME ABSENT ; int QDeclarativeTimer::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?setPaused@QDeclarativeAbstractAnimation@@QAEX_N@Z @ 1728 NONAME ABSENT ; void QDeclarativeAbstractAnimation::setPaused(bool)
+ ?d_func@QDeclarativeBasePositioner@@ABEPBVQDeclarativeBasePositionerPrivate@@XZ @ 1729 NONAME ABSENT ; class QDeclarativeBasePositionerPrivate const * QDeclarativeBasePositioner::d_func(void) const
+ ?setRepeating@QDeclarativeTimer@@QAEX_N@Z @ 1730 NONAME ABSENT ; void QDeclarativeTimer::setRepeating(bool)
+ ?interval@QDeclarativeTimer@@QBEHXZ @ 1731 NONAME ABSENT ; int QDeclarativeTimer::interval(void) const
+ ?start@QDeclarativeTimer@@QAEXXZ @ 1732 NONAME ABSENT ; void QDeclarativeTimer::start(void)
+ ?transition@QDeclarativeAbstractAnimation@@UAEXAAV?$QList@VQDeclarativeAction@@@@AAV?$QList@VQDeclarativeProperty@@@@W4TransitionDirection@1@@Z @ 1733 NONAME ABSENT ; void QDeclarativeAbstractAnimation::transition(class QList<class QDeclarativeAction> &, class QList<class QDeclarativeProperty> &, enum QDeclarativeAbstractAnimation::TransitionDirection)
+ ?componentComplete@QDeclarativeAbstractAnimation@@UAEXXZ @ 1734 NONAME ABSENT ; void QDeclarativeAbstractAnimation::componentComplete(void)
+ ?statusChanged@QDeclarativeDebugService@@MAEXW4Status@1@@Z @ 1735 NONAME ABSENT ; void QDeclarativeDebugService::statusChanged(enum QDeclarativeDebugService::Status)
+ ?runningChanged@QDeclarativeAbstractAnimation@@IAEX_N@Z @ 1736 NONAME ABSENT ; void QDeclarativeAbstractAnimation::runningChanged(bool)
+ ?trUtf8@QDeclarativeAbstractAnimation@@SA?AVQString@@PBD0H@Z @ 1737 NONAME ABSENT ; class QString QDeclarativeAbstractAnimation::trUtf8(char const *, char const *, int)
+ ??_EQDeclarativeBasePositioner@@UAE@I@Z @ 1738 NONAME ABSENT ; QDeclarativeBasePositioner::~QDeclarativeBasePositioner(unsigned int)
+ ?metaObject@QDeclarativeTimer@@UBEPBUQMetaObject@@XZ @ 1739 NONAME ABSENT ; struct QMetaObject const * QDeclarativeTimer::metaObject(void) const
+ ?setGroup@QDeclarativeAbstractAnimation@@QAEXPAVQDeclarativeAnimationGroup@@@Z @ 1740 NONAME ABSENT ; void QDeclarativeAbstractAnimation::setGroup(class QDeclarativeAnimationGroup *)
+ ?isRepeating@QDeclarativeTimer@@QBE_NXZ @ 1741 NONAME ABSENT ; bool QDeclarativeTimer::isRepeating(void) const
+ ?setTriggeredOnStart@QDeclarativeTimer@@QAEX_N@Z @ 1742 NONAME ABSENT ; void QDeclarativeTimer::setTriggeredOnStart(bool)
+ ?currentTime@QDeclarativeAbstractAnimation@@QAEHXZ @ 1743 NONAME ABSENT ; int QDeclarativeAbstractAnimation::currentTime(void)
+ ?status@QDeclarativeEngineDebug@@QBE?AW4Status@1@XZ @ 1744 NONAME ABSENT ; enum QDeclarativeEngineDebug::Status QDeclarativeEngineDebug::status(void) const
+ ??1QDeclarativeAbstractAnimation@@UAE@XZ @ 1745 NONAME ABSENT ; QDeclarativeAbstractAnimation::~QDeclarativeAbstractAnimation(void)
+ ?triggered@QDeclarativeTimer@@IAEXXZ @ 1746 NONAME ABSENT ; void QDeclarativeTimer::triggered(void)
+ ?getStaticMetaObject@QDeclarativeBasePositioner@@SAABUQMetaObject@@XZ @ 1747 NONAME ABSENT ; struct QMetaObject const & QDeclarativeBasePositioner::getStaticMetaObject(void)
+ ?finished@QDeclarativeTimer@@AAEXXZ @ 1748 NONAME ABSENT ; void QDeclarativeTimer::finished(void)
+ ?pausedChanged@QDeclarativeAbstractAnimation@@IAEX_N@Z @ 1749 NONAME ABSENT ; void QDeclarativeAbstractAnimation::pausedChanged(bool)
+ ?complete@QDeclarativeAbstractAnimation@@QAEXXZ @ 1750 NONAME ABSENT ; void QDeclarativeAbstractAnimation::complete(void)
+ ?setRunning@QDeclarativeAbstractAnimation@@QAEX_N@Z @ 1751 NONAME ABSENT ; void QDeclarativeAbstractAnimation::setRunning(bool)
+ ?trUtf8@QDeclarativeBasePositioner@@SA?AVQString@@PBD0H@Z @ 1752 NONAME ABSENT ; class QString QDeclarativeBasePositioner::trUtf8(char const *, char const *, int)
+ ?trUtf8@QDeclarativeBasePositioner@@SA?AVQString@@PBD0@Z @ 1753 NONAME ABSENT ; class QString QDeclarativeBasePositioner::trUtf8(char const *, char const *)
+ ?completed@QDeclarativeAbstractAnimation@@IAEXXZ @ 1754 NONAME ABSENT ; void QDeclarativeAbstractAnimation::completed(void)
+ ?trUtf8@QDeclarativeTimer@@SA?AVQString@@PBD0@Z @ 1755 NONAME ABSENT ; class QString QDeclarativeTimer::trUtf8(char const *, char const *)
+ ?loopCountChanged@QDeclarativeAbstractAnimation@@IAEXH@Z @ 1756 NONAME ABSENT ; void QDeclarativeAbstractAnimation::loopCountChanged(int)
+ ?repeatChanged@QDeclarativeTimer@@IAEXXZ @ 1757 NONAME ABSENT ; void QDeclarativeTimer::repeatChanged(void)
+ ?setDisableUserControl@QDeclarativeAbstractAnimation@@QAEXXZ @ 1758 NONAME ABSENT ; void QDeclarativeAbstractAnimation::setDisableUserControl(void)
+ ?componentComplete@QDeclarativeBasePositioner@@MAEXXZ @ 1759 NONAME ABSENT ; void QDeclarativeBasePositioner::componentComplete(void)
+ ?setDefaultTarget@QDeclarativeAbstractAnimation@@QAEXABVQDeclarativeProperty@@@Z @ 1760 NONAME ABSENT ; void QDeclarativeAbstractAnimation::setDefaultTarget(class QDeclarativeProperty const &)
+ ?staticMetaObject@QDeclarativeBasePositioner@@2UQMetaObject@@B @ 1761 NONAME ABSENT ; struct QMetaObject const QDeclarativeBasePositioner::staticMetaObject
+ ?triggeredOnStart@QDeclarativeTimer@@QBE_NXZ @ 1762 NONAME ABSENT ; bool QDeclarativeTimer::triggeredOnStart(void) const
+ ?notifyRunningChanged@QDeclarativeAbstractAnimation@@AAEX_N@Z @ 1763 NONAME ABSENT ; void QDeclarativeAbstractAnimation::notifyRunningChanged(bool)
+ ?statusChanged@QDeclarativeDebugClient@@MAEXW4Status@1@@Z @ 1764 NONAME ABSENT ; void QDeclarativeDebugClient::statusChanged(enum QDeclarativeDebugClient::Status)
+ ??0QDeclarativeBasePositioner@@IAE@AAVQDeclarativeBasePositionerPrivate@@W4PositionerType@0@PAVQDeclarativeItem@@@Z @ 1765 NONAME ABSENT ; QDeclarativeBasePositioner::QDeclarativeBasePositioner(class QDeclarativeBasePositionerPrivate &, enum QDeclarativeBasePositioner::PositionerType, class QDeclarativeItem *)
+ ?componentComplete@QDeclarativeTimer@@MAEXXZ @ 1766 NONAME ABSENT ; void QDeclarativeTimer::componentComplete(void)
+ ?tr@QDeclarativeAbstractAnimation@@SA?AVQString@@PBD0@Z @ 1767 NONAME ABSENT ; class QString QDeclarativeAbstractAnimation::tr(char const *, char const *)
+ ?isRunning@QDeclarativeAbstractAnimation@@QBE_NXZ @ 1768 NONAME ABSENT ; bool QDeclarativeAbstractAnimation::isRunning(void) const
+ ?d_func@QDeclarativeAbstractAnimation@@ABEPBVQDeclarativeAbstractAnimationPrivate@@XZ @ 1769 NONAME ABSENT ; class QDeclarativeAbstractAnimationPrivate const * QDeclarativeAbstractAnimation::d_func(void) const
+ ??_EQDeclarativeAbstractAnimation@@UAE@I@Z @ 1770 NONAME ABSENT ; QDeclarativeAbstractAnimation::~QDeclarativeAbstractAnimation(unsigned int)
+ ??0QDeclarativeBasePositioner@@QAE@W4PositionerType@0@PAVQDeclarativeItem@@@Z @ 1771 NONAME ABSENT ; QDeclarativeBasePositioner::QDeclarativeBasePositioner(enum QDeclarativeBasePositioner::PositionerType, class QDeclarativeItem *)
+ ?qt_metacall@QDeclarativeBasePositioner@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 1772 NONAME ABSENT ; int QDeclarativeBasePositioner::qt_metacall(enum QMetaObject::Call, int, void * *)
+ ?status@QDeclarativeDebugClient@@QBE?AW4Status@1@XZ @ 1773 NONAME ABSENT ; enum QDeclarativeDebugClient::Status QDeclarativeDebugClient::status(void) const
+ ?prePositioning@QDeclarativeBasePositioner@@IAEXXZ @ 1774 NONAME ABSENT ; void QDeclarativeBasePositioner::prePositioning(void)
+ ?finishApplyTransitions@QDeclarativeBasePositioner@@IAEXXZ @ 1775 NONAME ABSENT ; void QDeclarativeBasePositioner::finishApplyTransitions(void)
+ ?d_func@QDeclarativeAbstractAnimation@@AAEPAVQDeclarativeAbstractAnimationPrivate@@XZ @ 1776 NONAME ABSENT ; class QDeclarativeAbstractAnimationPrivate * QDeclarativeAbstractAnimation::d_func(void)
+ ?componentFinalized@QDeclarativeAbstractAnimation@@AAEXXZ @ 1777 NONAME ABSENT ; void QDeclarativeAbstractAnimation::componentFinalized(void)
+ ??_EQDeclarativeTimer@@UAE@I@Z @ 1778 NONAME ABSENT ; QDeclarativeTimer::~QDeclarativeTimer(unsigned int)
+ ?pause@QDeclarativeAbstractAnimation@@QAEXXZ @ 1779 NONAME ABSENT ; void QDeclarativeAbstractAnimation::pause(void)
+ ?stop@QDeclarativeTimer@@QAEXXZ @ 1780 NONAME ABSENT ; void QDeclarativeTimer::stop(void)
+ ?timelineComplete@QDeclarativeAbstractAnimation@@AAEXXZ @ 1781 NONAME ABSENT ; void QDeclarativeAbstractAnimation::timelineComplete(void)
+ ?d_func@QDeclarativeBasePositioner@@AAEPAVQDeclarativeBasePositionerPrivate@@XZ @ 1782 NONAME ABSENT ; class QDeclarativeBasePositionerPrivate * QDeclarativeBasePositioner::d_func(void)
+ ?setAlwaysRunToEnd@QDeclarativeAbstractAnimation@@QAEX_N@Z @ 1783 NONAME ABSENT ; void QDeclarativeAbstractAnimation::setAlwaysRunToEnd(bool)
+ ?classBegin@QDeclarativeAbstractAnimation@@UAEXXZ @ 1784 NONAME ABSENT ; void QDeclarativeAbstractAnimation::classBegin(void)
+ ?d_func@QDeclarativeTimer@@AAEPAVQDeclarativeTimerPrivate@@XZ @ 1785 NONAME ABSENT ; class QDeclarativeTimerPrivate * QDeclarativeTimer::d_func(void)
+ ?spacing@QDeclarativeBasePositioner@@QBEHXZ @ 1786 NONAME ABSENT ; int QDeclarativeBasePositioner::spacing(void) const
+ ??0QDeclarativeAbstractAnimation@@QAE@PAVQObject@@@Z @ 1787 NONAME ABSENT ; QDeclarativeAbstractAnimation::QDeclarativeAbstractAnimation(class QObject *)
+ ?metaObject@QDeclarativeAbstractAnimation@@UBEPBUQMetaObject@@XZ @ 1788 NONAME ABSENT ; struct QMetaObject const * QDeclarativeAbstractAnimation::metaObject(void) const
+ ?tr@QDeclarativeAbstractAnimation@@SA?AVQString@@PBD0H@Z @ 1789 NONAME ABSENT ; class QString QDeclarativeAbstractAnimation::tr(char const *, char const *, int)
+ ?started@QDeclarativeAbstractAnimation@@IAEXXZ @ 1790 NONAME ABSENT ; void QDeclarativeAbstractAnimation::started(void)
+ ?setInterval@QDeclarativeTimer@@QAEXH@Z @ 1791 NONAME ABSENT ; void QDeclarativeTimer::setInterval(int)
+ ?statusChanged@QDeclarativeEngineDebug@@IAEXW4Status@1@@Z @ 1792 NONAME ABSENT ; void QDeclarativeEngineDebug::statusChanged(enum QDeclarativeEngineDebug::Status)
+ ?d_func@QDeclarativeTimer@@ABEPBVQDeclarativeTimerPrivate@@XZ @ 1793 NONAME ABSENT ; class QDeclarativeTimerPrivate const * QDeclarativeTimer::d_func(void) const
+ ?setSpacing@QDeclarativeBasePositioner@@QAEXH@Z @ 1794 NONAME ABSENT ; void QDeclarativeBasePositioner::setSpacing(int)
+ ?staticMetaObject@QDeclarativeTimer@@2UQMetaObject@@B @ 1795 NONAME ABSENT ; struct QMetaObject const QDeclarativeTimer::staticMetaObject
+ ?positionY@QDeclarativeBasePositioner@@IAEXHABVPositionedItem@1@@Z @ 1796 NONAME ABSENT ; void QDeclarativeBasePositioner::positionY(int, class QDeclarativeBasePositioner::PositionedItem const &)
+ ?qt_metacast@QDeclarativeAbstractAnimation@@UAEPAXPBD@Z @ 1797 NONAME ABSENT ; void * QDeclarativeAbstractAnimation::qt_metacast(char const *)
+ ?setAdd@QDeclarativeBasePositioner@@QAEXPAVQDeclarativeTransition@@@Z @ 1798 NONAME ABSENT ; void QDeclarativeBasePositioner::setAdd(class QDeclarativeTransition *)
+ ?setCurrentTime@QDeclarativeAbstractAnimation@@QAEXH@Z @ 1799 NONAME ABSENT ; void QDeclarativeAbstractAnimation::setCurrentTime(int)
+ ?attachedPropertiesId@QDeclarativeType@@QBEHXZ @ 1800 NONAME ABSENT ; int QDeclarativeType::attachedPropertiesId(void) const
+ ?positionX@QDeclarativeBasePositioner@@IAEXHABVPositionedItem@1@@Z @ 1801 NONAME ABSENT ; void QDeclarativeBasePositioner::positionX(int, class QDeclarativeBasePositioner::PositionedItem const &)
+ ?restart@QDeclarativeAbstractAnimation@@QAEXXZ @ 1802 NONAME ABSENT ; void QDeclarativeAbstractAnimation::restart(void)
+ ?itemChange@QDeclarativeBasePositioner@@MAE?AVQVariant@@W4GraphicsItemChange@QGraphicsItem@@ABV2@@Z @ 1803 NONAME ABSENT ; class QVariant QDeclarativeBasePositioner::itemChange(enum QGraphicsItem::GraphicsItemChange, class QVariant const &)
+ ??0QDeclarativeAbstractAnimation@@IAE@AAVQDeclarativeAbstractAnimationPrivate@@PAVQObject@@@Z @ 1804 NONAME ABSENT ; QDeclarativeAbstractAnimation::QDeclarativeAbstractAnimation(class QDeclarativeAbstractAnimationPrivate &, class QObject *)
+ ?resume@QDeclarativeAbstractAnimation@@QAEXXZ @ 1805 NONAME ABSENT ; void QDeclarativeAbstractAnimation::resume(void)
+ ?runningChanged@QDeclarativeTimer@@IAEXXZ @ 1806 NONAME ABSENT ; void QDeclarativeTimer::runningChanged(void)
+ ?ticked@QDeclarativeTimer@@AAEXXZ @ 1807 NONAME ABSENT ; void QDeclarativeTimer::ticked(void)
+ ?graphicsWidgetGeometryChanged@QDeclarativeBasePositioner@@IAEXXZ @ 1808 NONAME ABSENT ; void QDeclarativeBasePositioner::graphicsWidgetGeometryChanged(void)
+ ?trUtf8@QDeclarativeTimer@@SA?AVQString@@PBD0H@Z @ 1809 NONAME ABSENT ; class QString QDeclarativeTimer::trUtf8(char const *, char const *, int)
+ ??0QDeclarativeTimer@@QAE@PAVQObject@@@Z @ 1810 NONAME ABSENT ; QDeclarativeTimer::QDeclarativeTimer(class QObject *)
+ ?loops@QDeclarativeAbstractAnimation@@QBEHXZ @ 1811 NONAME ABSENT ; int QDeclarativeAbstractAnimation::loops(void) const
+ ?setTarget@QDeclarativeAbstractAnimation@@EAEXABVQDeclarativeProperty@@@Z @ 1812 NONAME ABSENT ; void QDeclarativeAbstractAnimation::setTarget(class QDeclarativeProperty const &)
+ ?alwaysRunToEnd@QDeclarativeAbstractAnimation@@QBE_NXZ @ 1813 NONAME ABSENT ; bool QDeclarativeAbstractAnimation::alwaysRunToEnd(void) const
+ ?tr@QDeclarativeTimer@@SA?AVQString@@PBD0H@Z @ 1814 NONAME ABSENT ; class QString QDeclarativeTimer::tr(char const *, char const *, int)
+ ?status@QDeclarativeDebugService@@QBE?AW4Status@1@XZ @ 1815 NONAME ABSENT ; enum QDeclarativeDebugService::Status QDeclarativeDebugService::status(void) const
+ ?intervalChanged@QDeclarativeTimer@@IAEXXZ @ 1816 NONAME ABSENT ; void QDeclarativeTimer::intervalChanged(void)
+ ?isPaused@QDeclarativeAbstractAnimation@@QBE_NXZ @ 1817 NONAME ABSENT ; bool QDeclarativeAbstractAnimation::isPaused(void) const
+ ?getStaticMetaObject@QDeclarativeAbstractAnimation@@SAABUQMetaObject@@XZ @ 1818 NONAME ABSENT ; struct QMetaObject const & QDeclarativeAbstractAnimation::getStaticMetaObject(void)
+ ?group@QDeclarativeAbstractAnimation@@QBEPAVQDeclarativeAnimationGroup@@XZ @ 1819 NONAME ABSENT ; class QDeclarativeAnimationGroup * QDeclarativeAbstractAnimation::group(void) const
+ ?classBegin@QDeclarativeTimer@@MAEXXZ @ 1820 NONAME ABSENT ; void QDeclarativeTimer::classBegin(void)
+ ?restart@QDeclarativeTimer@@QAEXXZ @ 1821 NONAME ABSENT ; void QDeclarativeTimer::restart(void)
+ ?move@QDeclarativeBasePositioner@@QBEPAVQDeclarativeTransition@@XZ @ 1822 NONAME ABSENT ; class QDeclarativeTransition * QDeclarativeBasePositioner::move(void) const
+ ?spacingChanged@QDeclarativeBasePositioner@@IAEXXZ @ 1823 NONAME ABSENT ; void QDeclarativeBasePositioner::spacingChanged(void)
+ ?qt_metacast@QDeclarativeBasePositioner@@UAEPAXPBD@Z @ 1824 NONAME ABSENT ; void * QDeclarativeBasePositioner::qt_metacast(char const *)
+ ??1QDeclarativeTimer@@UAE@XZ @ 1825 NONAME ABSENT ; QDeclarativeTimer::~QDeclarativeTimer(void)
+ ?getStaticMetaObject@QDeclarativeTimer@@SAABUQMetaObject@@XZ @ 1826 NONAME ABSENT ; struct QMetaObject const & QDeclarativeTimer::getStaticMetaObject(void)
+ ?tr@QDeclarativeBasePositioner@@SA?AVQString@@PBD0H@Z @ 1827 NONAME ABSENT ; class QString QDeclarativeBasePositioner::tr(char const *, char const *, int)
+ ??1QDeclarativeBasePositioner@@UAE@XZ @ 1828 NONAME ABSENT ; QDeclarativeBasePositioner::~QDeclarativeBasePositioner(void)
+ ?moveChanged@QDeclarativeBasePositioner@@IAEXXZ @ 1829 NONAME ABSENT ; void QDeclarativeBasePositioner::moveChanged(void)
+ ?qt_metacast@QDeclarativeTimer@@UAEPAXPBD@Z @ 1830 NONAME ABSENT ; void * QDeclarativeTimer::qt_metacast(char const *)
+ ?metaObject@QDeclarativeBasePositioner@@UBEPBUQMetaObject@@XZ @ 1831 NONAME ABSENT ; struct QMetaObject const * QDeclarativeBasePositioner::metaObject(void) const
+ ?alwaysRunToEndChanged@QDeclarativeAbstractAnimation@@IAEX_N@Z @ 1832 NONAME ABSENT ; void QDeclarativeAbstractAnimation::alwaysRunToEndChanged(bool)
+ ?triggeredOnStartChanged@QDeclarativeTimer@@IAEXXZ @ 1833 NONAME ABSENT ; void QDeclarativeTimer::triggeredOnStartChanged(void)
+ ?isRunning@QDeclarativeTimer@@QBE_NXZ @ 1834 NONAME ABSENT ; bool QDeclarativeTimer::isRunning(void) const
+ ?update@QDeclarativeTimer@@AAEXXZ @ 1835 NONAME ABSENT ; void QDeclarativeTimer::update(void)
+ ?stop@QDeclarativeAbstractAnimation@@QAEXXZ @ 1836 NONAME ABSENT ; void QDeclarativeAbstractAnimation::stop(void)
+ ?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 * *)
+ ?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/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def
index 7cc27528f2..6a33fc331e 100644
--- a/src/s60installs/bwins/QtGuiu.def
+++ b/src/s60installs/bwins/QtGuiu.def
@@ -12852,7 +12852,7 @@ EXPORTS
?drawStaticText@QPainter@@QAEXABVQPointF@@ABVQStaticText@@@Z @ 12851 NONAME ; void QPainter::drawStaticText(class QPointF const &, class QStaticText const &)
?updateAll@QGraphicsViewPrivate@@QAEXXZ @ 12852 NONAME ; void QGraphicsViewPrivate::updateAll(void)
?updateMicroFocus@QGraphicsItem@@IAEXXZ @ 12853 NONAME ; void QGraphicsItem::updateMicroFocus(void)
- ?populate@QTextureGlyphCache@@QAEXPAVQFontEngine@@HPBIPBUQFixedPoint@@@Z @ 12854 NONAME ; void QTextureGlyphCache::populate(class QFontEngine *, int, unsigned int const *, struct QFixedPoint const *)
+ ?populate@QTextureGlyphCache@@QAEXPAVQFontEngine@@HPBIPBUQFixedPoint@@@Z @ 12854 NONAME ABSENT ; void QTextureGlyphCache::populate(class QFontEngine *, int, unsigned int const *, struct QFixedPoint const *)
?hasPartialUpdateSupport@QWindowSurface@@QBE_NXZ @ 12855 NONAME ; bool QWindowSurface::hasPartialUpdateSupport(void) const
?scroll@QRuntimePixmapData@@UAE_NHHABVQRect@@@Z @ 12856 NONAME ; bool QRuntimePixmapData::scroll(int, int, class QRect const &)
?qt_draw_glyphs@@YAXPAVQPainter@@PBIPBVQPointF@@H@Z @ 12857 NONAME ; void qt_draw_glyphs(class QPainter *, unsigned int const *, class QPointF const *, int)
@@ -12890,10 +12890,19 @@ EXPORTS
?lastRightBearing@QFontEngine@@IAE?AUQFixed@@ABUQGlyphLayout@@_N@Z @ 12889 NONAME ; struct QFixed QFontEngine::lastRightBearing(struct QGlyphLayout const &, bool)
?childrenBoundingRectHelper@QGraphicsItemPrivate@@QAEXPAVQTransform@@PAVQRectF@@PAVQGraphicsItem@@@Z @ 12890 NONAME ; void QGraphicsItemPrivate::childrenBoundingRectHelper(class QTransform *, class QRectF *, class QGraphicsItem *)
?setTimeout@QTapAndHoldGesture@@SAXH@Z @ 12891 NONAME ; void QTapAndHoldGesture::setTimeout(int)
- ?qmljsDebugArguments@QApplicationPrivate@@2VQString@@A @ 12892 NONAME ; class QString QApplicationPrivate::qmljsDebugArguments
+ ?qmljsDebugArguments@QApplicationPrivate@@2VQString@@A @ 12892 NONAME ABSENT ; class QString QApplicationPrivate::qmljsDebugArguments
?effectiveBoundingRect@QGraphicsItemPrivate@@QBE?AVQRectF@@PAVQGraphicsItem@@@Z @ 12893 NONAME ; class QRectF QGraphicsItemPrivate::effectiveBoundingRect(class QGraphicsItem *) const
?maxTextureHeight@QTextureGlyphCache@@UBEHXZ @ 12894 NONAME ; int QTextureGlyphCache::maxTextureHeight(void) const
?maxTextureWidth@QTextureGlyphCache@@UBEHXZ @ 12895 NONAME ; int QTextureGlyphCache::maxTextureWidth(void) const
- ?convertToPostscriptFontFamilyName@QFontEngine@@SA?AVQByteArray@@ABV2@@Z @ 12896 NONAME ; class QByteArray QFontEngine::convertToPostscriptFontFamilyName(class QByteArray const &)
- ?lastResortFont@QFont@@QBE?AVQString@@XZ @ 12897 NONAME ; class QString QFont::lastResortFont(void) const
+ ?qmljs_debug_arguments@QApplicationPrivate@@2VQString@@A @ 12896 NONAME ; class QString QApplicationPrivate::qmljs_debug_arguments
+ ?qmljsDebugArgumentsString@QApplicationPrivate@@SA?AVQString@@XZ @ 12897 NONAME ; class QString QApplicationPrivate::qmljsDebugArgumentsString(void)
+ ?convertToPostscriptFontFamilyName@QFontEngine@@SA?AVQByteArray@@ABV2@@Z @ 12898 NONAME ; class QByteArray QFontEngine::convertToPostscriptFontFamilyName(class QByteArray const &)
+ ?lastResortFont@QFont@@QBE?AVQString@@XZ @ 12899 NONAME ; class QString QFont::lastResortFont(void) const
+ ?setFontEngine@QStaticTextItem@@QAEXPAVQFontEngine@@@Z @ 12900 NONAME ; void QStaticTextItem::setFontEngine(class QFontEngine *)
+ ??0QStaticTextItem@@QAE@ABV0@@Z @ 12901 NONAME ; QStaticTextItem::QStaticTextItem(class QStaticTextItem const &)
+ ??4QStaticTextItem@@QAEXABV0@@Z @ 12902 NONAME ; void QStaticTextItem::operator=(class QStaticTextItem const &)
+ ?fontEngine@QStaticTextItem@@QBEPAVQFontEngine@@XZ @ 12903 NONAME ; class QFontEngine * QStaticTextItem::fontEngine(void) const
+ ?reactivateDeferredActiveObjects@QEventDispatcherS60@@UAEXXZ @ 12904 NONAME ; void QEventDispatcherS60::reactivateDeferredActiveObjects(void)
+ ?userData@QStaticTextItem@@QBEPAVQStaticTextUserData@@XZ @ 12905 NONAME ; class QStaticTextUserData * QStaticTextItem::userData(void) const
+ ?populate@QTextureGlyphCache@@QAE_NPAVQFontEngine@@HPBIPBUQFixedPoint@@@Z @ 12906 NONAME ; bool QTextureGlyphCache::populate(class QFontEngine *, int, unsigned int const *, struct QFixedPoint const *)
diff --git a/src/s60installs/bwins/QtOpenGLu.def b/src/s60installs/bwins/QtOpenGLu.def
index fa340e4e44..620fcb9b72 100644
--- a/src/s60installs/bwins/QtOpenGLu.def
+++ b/src/s60installs/bwins/QtOpenGLu.def
@@ -8,7 +8,7 @@ EXPORTS
?d_func@QGLShader@@AAEPAVQGLShaderPrivate@@XZ @ 7 NONAME ; class QGLShaderPrivate * QGLShader::d_func(void)
?bindToDynamicTexture@QGLPixelBuffer@@QAE_NI@Z @ 8 NONAME ; bool QGLPixelBuffer::bindToDynamicTexture(unsigned int)
??0QGLWidget@@QAE@PAVQGLContext@@PAVQWidget@@PBV0@V?$QFlags@W4WindowType@Qt@@@@@Z @ 9 NONAME ; QGLWidget::QGLWidget(class QGLContext *, class QWidget *, class QGLWidget const *, class QFlags<enum Qt::WindowType>)
- ??_EQGLFormat@@QAE@I@Z @ 10 NONAME ; QGLFormat::~QGLFormat(unsigned int)
+ ??_EQGLFormat@@QAE@I@Z @ 10 NONAME ABSENT ; QGLFormat::~QGLFormat(unsigned int)
?drawPixmapFragments@QGL2PaintEngineEx@@UAEXPBVPixmapFragment@QPainter@@HABVQPixmap@@V?$QFlags@W4PixmapFragmentHint@QPainter@@@@@Z @ 11 NONAME ; void QGL2PaintEngineEx::drawPixmapFragments(class QPainter::PixmapFragment const *, int, class QPixmap const &, class QFlags<enum QPainter::PixmapFragmentHint>)
?paintEngine@QGLWidget@@UBEPAVQPaintEngine@@XZ @ 12 NONAME ; class QPaintEngine * QGLWidget::paintEngine(void) const
?setPreferredPaintEngine@QGL@@YAXW4Type@QPaintEngine@@@Z @ 13 NONAME ; void QGL::setPreferredPaintEngine(enum QPaintEngine::Type)
@@ -107,7 +107,7 @@ EXPORTS
??0QGLContext@@QAE@ABVQGLFormat@@@Z @ 106 NONAME ; QGLContext::QGLContext(class QGLFormat const &)
?geometryOutputVertexCount@QGLShaderProgram@@QBEHXZ @ 107 NONAME ; int QGLShaderProgram::geometryOutputVertexCount(void) const
?setAccum@QGLFormat@@QAEX_N@Z @ 108 NONAME ; void QGLFormat::setAccum(bool)
- ??0QGLSignalProxy@@QAE@XZ @ 109 NONAME ; QGLSignalProxy::QGLSignalProxy(void)
+ ??0QGLSignalProxy@@QAE@XZ @ 109 NONAME ABSENT ; QGLSignalProxy::QGLSignalProxy(void)
?isUninitialized@QGLPixmapData@@ABE_NXZ @ 110 NONAME ; bool QGLPixmapData::isUninitialized(void) const
??0QGLFramebufferObjectFormat@@QAE@XZ @ 111 NONAME ; QGLFramebufferObjectFormat::QGLFramebufferObjectFormat(void)
??8@YA_NABVQGLFormat@@0@Z @ 112 NONAME ; bool operator==(class QGLFormat const &, class QGLFormat const &)
@@ -496,7 +496,7 @@ EXPORTS
?setUniformValue@QGLShaderProgram@@QAEXPBDABVQSize@@@Z @ 495 NONAME ; void QGLShaderProgram::setUniformValue(char const *, class QSize const &)
?convertToGLFormat@QGLWidget@@SA?AVQImage@@ABV2@@Z @ 496 NONAME ; class QImage QGLWidget::convertToGLFormat(class QImage const &)
?staticMetaObject@QGLTextureGlyphCache@@2UQMetaObject@@B @ 497 NONAME ; struct QMetaObject const QGLTextureGlyphCache::staticMetaObject
- ??_EQGLContextResource@@QAE@I@Z @ 498 NONAME ; QGLContextResource::~QGLContextResource(unsigned int)
+ ??_EQGLContextResource@@QAE@I@Z @ 498 NONAME ABSENT ; QGLContextResource::~QGLContextResource(unsigned int)
?handle@QGLColormap@@IAEKXZ @ 499 NONAME ; unsigned long QGLColormap::handle(void)
?isCreated@QGLBuffer@@QBE_NXZ @ 500 NONAME ; bool QGLBuffer::isCreated(void) const
?setColormap@QGLWidget@@QAEXABVQGLColormap@@@Z @ 501 NONAME ; void QGLWidget::setColormap(class QGLColormap const &)
@@ -698,4 +698,9 @@ EXPORTS
?setProfile@QGLFormat@@QAEXW4OpenGLContextProfile@1@@Z @ 697 NONAME ; void QGLFormat::setProfile(enum QGLFormat::OpenGLContextProfile)
?updateDynamicTexture@QGLPixelBuffer@@QBEXI@Z @ 698 NONAME ; void QGLPixelBuffer::updateDynamicTexture(unsigned int) const
?setUniformValue@QGLShaderProgram@@QAEXHH@Z @ 699 NONAME ; void QGLShaderProgram::setUniformValue(int, int)
+ ?maxTextureHeight@QGLTextureGlyphCache@@UBEHXZ @ 700 NONAME ; int QGLTextureGlyphCache::maxTextureHeight(void) const
+ ?initializeOffscreenTexture@QGLWindowSurface@@AAE_NABVQSize@@@Z @ 701 NONAME ; bool QGLWindowSurface::initializeOffscreenTexture(class QSize const &)
+ ?maxTextureWidth@QGLTextureGlyphCache@@UBEHXZ @ 702 NONAME ; int QGLTextureGlyphCache::maxTextureWidth(void) const
+ ?filterMode@QGLTextureGlyphCache@@QBE?AW4FilterMode@1@XZ @ 703 NONAME ; enum QGLTextureGlyphCache::FilterMode QGLTextureGlyphCache::filterMode(void) const
+ ?setFilterMode@QGLTextureGlyphCache@@QAEXW4FilterMode@1@@Z @ 704 NONAME ; void QGLTextureGlyphCache::setFilterMode(enum QGLTextureGlyphCache::FilterMode)
diff --git a/src/s60installs/bwins/QtOpenVGu.def b/src/s60installs/bwins/QtOpenVGu.def
index a67725ed96..87b9c7f03c 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 eb53dca3de..aefbe1f380 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 cbfafdccf2..1f690611fc 100644
--- a/src/s60installs/eabi/QtDeclarativeu.def
+++ b/src/s60installs/eabi/QtDeclarativeu.def
@@ -7,36 +7,36 @@ EXPORTS
_Z7qmlInfoPK7QObjectRK17QDeclarativeError @ 6 NONAME
_Z7qmlInfoPK7QObjectRK5QListI17QDeclarativeErrorE @ 7 NONAME
_Z9qmlEnginePK7QObject @ 8 NONAME
- _ZN15QDeclarativePen10penChangedEv @ 9 NONAME
- _ZN15QDeclarativePen11qt_metacallEN11QMetaObject4CallEiPPv @ 10 NONAME
- _ZN15QDeclarativePen11qt_metacastEPKc @ 11 NONAME
- _ZN15QDeclarativePen16staticMetaObjectE @ 12 NONAME DATA 16
- _ZN15QDeclarativePen19getStaticMetaObjectEv @ 13 NONAME
- _ZN15QDeclarativePen8setColorERK6QColor @ 14 NONAME
- _ZN15QDeclarativePen8setWidthEi @ 15 NONAME
- _ZN15QPacketAutoSendC1EP15QPacketProtocol @ 16 NONAME
- _ZN15QPacketAutoSendC2EP15QPacketProtocol @ 17 NONAME
- _ZN15QPacketAutoSendD0Ev @ 18 NONAME
- _ZN15QPacketAutoSendD1Ev @ 19 NONAME
- _ZN15QPacketAutoSendD2Ev @ 20 NONAME
- _ZN15QPacketProtocol11qt_metacallEN11QMetaObject4CallEiPPv @ 21 NONAME
- _ZN15QPacketProtocol11qt_metacastEPKc @ 22 NONAME
- _ZN15QPacketProtocol13invalidPacketEv @ 23 NONAME
- _ZN15QPacketProtocol13packetWrittenEv @ 24 NONAME
- _ZN15QPacketProtocol16staticMetaObjectE @ 25 NONAME DATA 16
- _ZN15QPacketProtocol19getStaticMetaObjectEv @ 26 NONAME
- _ZN15QPacketProtocol20setMaximumPacketSizeEi @ 27 NONAME
- _ZN15QPacketProtocol4readEv @ 28 NONAME
- _ZN15QPacketProtocol4sendERK7QPacket @ 29 NONAME
- _ZN15QPacketProtocol4sendEv @ 30 NONAME
- _ZN15QPacketProtocol5clearEv @ 31 NONAME
- _ZN15QPacketProtocol6deviceEv @ 32 NONAME
- _ZN15QPacketProtocol9readyReadEv @ 33 NONAME
- _ZN15QPacketProtocolC1EP9QIODeviceP7QObject @ 34 NONAME
- _ZN15QPacketProtocolC2EP9QIODeviceP7QObject @ 35 NONAME
- _ZN15QPacketProtocolD0Ev @ 36 NONAME
- _ZN15QPacketProtocolD1Ev @ 37 NONAME
- _ZN15QPacketProtocolD2Ev @ 38 NONAME
+ _ZN15QDeclarativePen10penChangedEv @ 9 NONAME ABSENT
+ _ZN15QDeclarativePen11qt_metacallEN11QMetaObject4CallEiPPv @ 10 NONAME ABSENT
+ _ZN15QDeclarativePen11qt_metacastEPKc @ 11 NONAME ABSENT
+ _ZN15QDeclarativePen16staticMetaObjectE @ 12 NONAME DATA 16 ABSENT
+ _ZN15QDeclarativePen19getStaticMetaObjectEv @ 13 NONAME ABSENT
+ _ZN15QDeclarativePen8setColorERK6QColor @ 14 NONAME ABSENT
+ _ZN15QDeclarativePen8setWidthEi @ 15 NONAME ABSENT
+ _ZN15QPacketAutoSendC1EP15QPacketProtocol @ 16 NONAME ABSENT
+ _ZN15QPacketAutoSendC2EP15QPacketProtocol @ 17 NONAME ABSENT
+ _ZN15QPacketAutoSendD0Ev @ 18 NONAME ABSENT
+ _ZN15QPacketAutoSendD1Ev @ 19 NONAME ABSENT
+ _ZN15QPacketAutoSendD2Ev @ 20 NONAME ABSENT
+ _ZN15QPacketProtocol11qt_metacallEN11QMetaObject4CallEiPPv @ 21 NONAME ABSENT
+ _ZN15QPacketProtocol11qt_metacastEPKc @ 22 NONAME ABSENT
+ _ZN15QPacketProtocol13invalidPacketEv @ 23 NONAME ABSENT
+ _ZN15QPacketProtocol13packetWrittenEv @ 24 NONAME ABSENT
+ _ZN15QPacketProtocol16staticMetaObjectE @ 25 NONAME DATA 16 ABSENT
+ _ZN15QPacketProtocol19getStaticMetaObjectEv @ 26 NONAME ABSENT
+ _ZN15QPacketProtocol20setMaximumPacketSizeEi @ 27 NONAME ABSENT
+ _ZN15QPacketProtocol4readEv @ 28 NONAME ABSENT
+ _ZN15QPacketProtocol4sendERK7QPacket @ 29 NONAME ABSENT
+ _ZN15QPacketProtocol4sendEv @ 30 NONAME ABSENT
+ _ZN15QPacketProtocol5clearEv @ 31 NONAME ABSENT
+ _ZN15QPacketProtocol6deviceEv @ 32 NONAME ABSENT
+ _ZN15QPacketProtocol9readyReadEv @ 33 NONAME ABSENT
+ _ZN15QPacketProtocolC1EP9QIODeviceP7QObject @ 34 NONAME ABSENT
+ _ZN15QPacketProtocolC2EP9QIODeviceP7QObject @ 35 NONAME ABSENT
+ _ZN15QPacketProtocolD0Ev @ 36 NONAME ABSENT
+ _ZN15QPacketProtocolD1Ev @ 37 NONAME ABSENT
+ _ZN15QPacketProtocolD2Ev @ 38 NONAME ABSENT
_ZN16QDeclarativeInfoC1EP23QDeclarativeInfoPrivate @ 39 NONAME
_ZN16QDeclarativeInfoC1ERKS_ @ 40 NONAME
_ZN16QDeclarativeInfoC2EP23QDeclarativeInfoPrivate @ 41 NONAME
@@ -93,48 +93,48 @@ EXPORTS
_ZN16QDeclarativeItemD0Ev @ 92 NONAME
_ZN16QDeclarativeItemD1Ev @ 93 NONAME
_ZN16QDeclarativeItemD2Ev @ 94 NONAME
- _ZN16QDeclarativeText11fontChangedERK5QFont @ 95 NONAME
- _ZN16QDeclarativeText11qt_metacallEN11QMetaObject4CallEiPPv @ 96 NONAME
- _ZN16QDeclarativeText11qt_metacastEPKc @ 97 NONAME
- _ZN16QDeclarativeText11setWrapModeENS_8WrapModeE @ 98 NONAME
- _ZN16QDeclarativeText11textChangedERK7QString @ 99 NONAME
- _ZN16QDeclarativeText12colorChangedERK6QColor @ 100 NONAME
- _ZN16QDeclarativeText12setElideModeENS_13TextElideModeE @ 101 NONAME
- _ZN16QDeclarativeText12styleChangedENS_9TextStyleE @ 102 NONAME
- _ZN16QDeclarativeText13linkActivatedERK7QString @ 103 NONAME
- _ZN16QDeclarativeText13setStyleColorERK6QColor @ 104 NONAME
- _ZN16QDeclarativeText13setTextFormatENS_10TextFormatE @ 105 NONAME
- _ZN16QDeclarativeText15geometryChangedERK6QRectFS2_ @ 106 NONAME
- _ZN16QDeclarativeText15mousePressEventEP24QGraphicsSceneMouseEvent @ 107 NONAME
- _ZN16QDeclarativeText15wrapModeChangedEv @ 108 NONAME
- _ZN16QDeclarativeText16elideModeChangedENS_13TextElideModeE @ 109 NONAME
- _ZN16QDeclarativeText16staticMetaObjectE @ 110 NONAME DATA 16
- _ZN16QDeclarativeText17componentCompleteEv @ 111 NONAME
- _ZN16QDeclarativeText17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 112 NONAME
- _ZN16QDeclarativeText17styleColorChangedERK6QColor @ 113 NONAME
- _ZN16QDeclarativeText17textFormatChangedENS_10TextFormatE @ 114 NONAME
- _ZN16QDeclarativeText18paintedSizeChangedEv @ 115 NONAME
- _ZN16QDeclarativeText19getStaticMetaObjectEv @ 116 NONAME
- _ZN16QDeclarativeText24verticalAlignmentChangedENS_10VAlignmentE @ 117 NONAME
- _ZN16QDeclarativeText26horizontalAlignmentChangedENS_10HAlignmentE @ 118 NONAME
- _ZN16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 119 NONAME
- _ZN16QDeclarativeText7setFontERK5QFont @ 120 NONAME
- _ZN16QDeclarativeText7setTextERK7QString @ 121 NONAME
- _ZN16QDeclarativeText8setColorERK6QColor @ 122 NONAME
- _ZN16QDeclarativeText8setStyleENS_9TextStyleE @ 123 NONAME
- _ZN16QDeclarativeText9setHAlignENS_10HAlignmentE @ 124 NONAME
- _ZN16QDeclarativeText9setVAlignENS_10VAlignmentE @ 125 NONAME
- _ZN16QDeclarativeTextC1EP16QDeclarativeItem @ 126 NONAME
- _ZN16QDeclarativeTextC2EP16QDeclarativeItem @ 127 NONAME
- _ZN16QDeclarativeTextD0Ev @ 128 NONAME
- _ZN16QDeclarativeTextD1Ev @ 129 NONAME
- _ZN16QDeclarativeTextD2Ev @ 130 NONAME
- _ZN16QDeclarativeTypeC1EiRKN19QDeclarativePrivate12RegisterTypeE @ 131 NONAME
- _ZN16QDeclarativeTypeC1EiRKN19QDeclarativePrivate17RegisterInterfaceE @ 132 NONAME
- _ZN16QDeclarativeTypeC2EiRKN19QDeclarativePrivate12RegisterTypeE @ 133 NONAME
- _ZN16QDeclarativeTypeC2EiRKN19QDeclarativePrivate17RegisterInterfaceE @ 134 NONAME
- _ZN16QDeclarativeTypeD1Ev @ 135 NONAME
- _ZN16QDeclarativeTypeD2Ev @ 136 NONAME
+ _ZN16QDeclarativeText11fontChangedERK5QFont @ 95 NONAME ABSENT
+ _ZN16QDeclarativeText11qt_metacallEN11QMetaObject4CallEiPPv @ 96 NONAME ABSENT
+ _ZN16QDeclarativeText11qt_metacastEPKc @ 97 NONAME ABSENT
+ _ZN16QDeclarativeText11setWrapModeENS_8WrapModeE @ 98 NONAME ABSENT
+ _ZN16QDeclarativeText11textChangedERK7QString @ 99 NONAME ABSENT
+ _ZN16QDeclarativeText12colorChangedERK6QColor @ 100 NONAME ABSENT
+ _ZN16QDeclarativeText12setElideModeENS_13TextElideModeE @ 101 NONAME ABSENT
+ _ZN16QDeclarativeText12styleChangedENS_9TextStyleE @ 102 NONAME ABSENT
+ _ZN16QDeclarativeText13linkActivatedERK7QString @ 103 NONAME ABSENT
+ _ZN16QDeclarativeText13setStyleColorERK6QColor @ 104 NONAME ABSENT
+ _ZN16QDeclarativeText13setTextFormatENS_10TextFormatE @ 105 NONAME ABSENT
+ _ZN16QDeclarativeText15geometryChangedERK6QRectFS2_ @ 106 NONAME ABSENT
+ _ZN16QDeclarativeText15mousePressEventEP24QGraphicsSceneMouseEvent @ 107 NONAME ABSENT
+ _ZN16QDeclarativeText15wrapModeChangedEv @ 108 NONAME ABSENT
+ _ZN16QDeclarativeText16elideModeChangedENS_13TextElideModeE @ 109 NONAME ABSENT
+ _ZN16QDeclarativeText16staticMetaObjectE @ 110 NONAME DATA 16 ABSENT
+ _ZN16QDeclarativeText17componentCompleteEv @ 111 NONAME ABSENT
+ _ZN16QDeclarativeText17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 112 NONAME ABSENT
+ _ZN16QDeclarativeText17styleColorChangedERK6QColor @ 113 NONAME ABSENT
+ _ZN16QDeclarativeText17textFormatChangedENS_10TextFormatE @ 114 NONAME ABSENT
+ _ZN16QDeclarativeText18paintedSizeChangedEv @ 115 NONAME ABSENT
+ _ZN16QDeclarativeText19getStaticMetaObjectEv @ 116 NONAME ABSENT
+ _ZN16QDeclarativeText24verticalAlignmentChangedENS_10VAlignmentE @ 117 NONAME ABSENT
+ _ZN16QDeclarativeText26horizontalAlignmentChangedENS_10HAlignmentE @ 118 NONAME ABSENT
+ _ZN16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 119 NONAME ABSENT
+ _ZN16QDeclarativeText7setFontERK5QFont @ 120 NONAME ABSENT
+ _ZN16QDeclarativeText7setTextERK7QString @ 121 NONAME ABSENT
+ _ZN16QDeclarativeText8setColorERK6QColor @ 122 NONAME ABSENT
+ _ZN16QDeclarativeText8setStyleENS_9TextStyleE @ 123 NONAME ABSENT
+ _ZN16QDeclarativeText9setHAlignENS_10HAlignmentE @ 124 NONAME ABSENT
+ _ZN16QDeclarativeText9setVAlignENS_10VAlignmentE @ 125 NONAME ABSENT
+ _ZN16QDeclarativeTextC1EP16QDeclarativeItem @ 126 NONAME ABSENT
+ _ZN16QDeclarativeTextC2EP16QDeclarativeItem @ 127 NONAME ABSENT
+ _ZN16QDeclarativeTextD0Ev @ 128 NONAME ABSENT
+ _ZN16QDeclarativeTextD1Ev @ 129 NONAME ABSENT
+ _ZN16QDeclarativeTextD2Ev @ 130 NONAME ABSENT
+ _ZN16QDeclarativeTypeC1EiRKN19QDeclarativePrivate12RegisterTypeE @ 131 NONAME ABSENT
+ _ZN16QDeclarativeTypeC1EiRKN19QDeclarativePrivate17RegisterInterfaceE @ 132 NONAME ABSENT
+ _ZN16QDeclarativeTypeC2EiRKN19QDeclarativePrivate12RegisterTypeE @ 133 NONAME ABSENT
+ _ZN16QDeclarativeTypeC2EiRKN19QDeclarativePrivate17RegisterInterfaceE @ 134 NONAME ABSENT
+ _ZN16QDeclarativeTypeD1Ev @ 135 NONAME ABSENT
+ _ZN16QDeclarativeTypeD2Ev @ 136 NONAME ABSENT
_ZN16QDeclarativeView10paintEventEP11QPaintEvent @ 137 NONAME
_ZN16QDeclarativeView10timerEventEP11QTimerEvent @ 138 NONAME
_ZN16QDeclarativeView11eventFilterEP7QObjectP6QEvent @ 139 NONAME
@@ -156,9 +156,9 @@ EXPORTS
_ZN16QDeclarativeViewD0Ev @ 155 NONAME
_ZN16QDeclarativeViewD1Ev @ 156 NONAME
_ZN16QDeclarativeViewD2Ev @ 157 NONAME
- _ZN16QMetaEnumBuilder6addKeyERK10QByteArrayi @ 158 NONAME
- _ZN16QMetaEnumBuilder9removeKeyEi @ 159 NONAME
- _ZN16QMetaEnumBuilder9setIsFlagEb @ 160 NONAME
+ _ZN16QMetaEnumBuilder6addKeyERK10QByteArrayi @ 158 NONAME ABSENT
+ _ZN16QMetaEnumBuilder9removeKeyEi @ 159 NONAME ABSENT
+ _ZN16QMetaEnumBuilder9setIsFlagEb @ 160 NONAME ABSENT
_ZN17QDeclarativeError14setDescriptionERK7QString @ 161 NONAME
_ZN17QDeclarativeError6setUrlERK4QUrl @ 162 NONAME
_ZN17QDeclarativeError7setLineEi @ 163 NONAME
@@ -188,13 +188,13 @@ EXPORTS
_ZN17QDeclarativeStateD1Ev @ 187 NONAME
_ZN17QDeclarativeStateD2Ev @ 188 NONAME
_ZN17QDeclarativeStatelsEP26QDeclarativeStateOperation @ 189 NONAME
- _ZN18QDeclarativeAction17deleteFromBindingEv @ 190 NONAME
- _ZN18QDeclarativeActionC1EP7QObjectRK7QStringP19QDeclarativeContextRK8QVariant @ 191 NONAME
- _ZN18QDeclarativeActionC1EP7QObjectRK7QStringRK8QVariant @ 192 NONAME
- _ZN18QDeclarativeActionC1Ev @ 193 NONAME
- _ZN18QDeclarativeActionC2EP7QObjectRK7QStringP19QDeclarativeContextRK8QVariant @ 194 NONAME
- _ZN18QDeclarativeActionC2EP7QObjectRK7QStringRK8QVariant @ 195 NONAME
- _ZN18QDeclarativeActionC2Ev @ 196 NONAME
+ _ZN18QDeclarativeAction17deleteFromBindingEv @ 190 NONAME ABSENT
+ _ZN18QDeclarativeActionC1EP7QObjectRK7QStringP19QDeclarativeContextRK8QVariant @ 191 NONAME ABSENT
+ _ZN18QDeclarativeActionC1EP7QObjectRK7QStringRK8QVariant @ 192 NONAME ABSENT
+ _ZN18QDeclarativeActionC1Ev @ 193 NONAME ABSENT
+ _ZN18QDeclarativeActionC2EP7QObjectRK7QStringP19QDeclarativeContextRK8QVariant @ 194 NONAME ABSENT
+ _ZN18QDeclarativeActionC2EP7QObjectRK7QStringRK8QVariant @ 195 NONAME ABSENT
+ _ZN18QDeclarativeActionC2Ev @ 196 NONAME ABSENT
_ZN18QDeclarativeEngine10setBaseUrlERK4QUrl @ 197 NONAME
_ZN18QDeclarativeEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 198 NONAME
_ZN18QDeclarativeEngine11qt_metacastEPKc @ 199 NONAME
@@ -254,124 +254,124 @@ EXPORTS
_ZN18QDeclarativePixmapC2Ev @ 253 NONAME
_ZN18QDeclarativePixmapD1Ev @ 254 NONAME
_ZN18QDeclarativePixmapD2Ev @ 255 NONAME
- _ZN18QMetaMethodBuilder13setAttributesEi @ 256 NONAME
- _ZN18QMetaMethodBuilder13setReturnTypeERK10QByteArray @ 257 NONAME
- _ZN18QMetaMethodBuilder17setParameterNamesERK5QListI10QByteArrayE @ 258 NONAME
- _ZN18QMetaMethodBuilder6setTagERK10QByteArray @ 259 NONAME
- _ZN18QMetaMethodBuilder9setAccessEN11QMetaMethod6AccessE @ 260 NONAME
- _ZN18QMetaObjectBuilder11addPropertyERK10QByteArrayS2_i @ 261 NONAME
- _ZN18QMetaObjectBuilder11addPropertyERK13QMetaProperty @ 262 NONAME
- _ZN18QMetaObjectBuilder11deserializeER11QDataStreamRK4QMapI10QByteArrayPK11QMetaObjectE @ 263 NONAME
- _ZN18QMetaObjectBuilder11indexOfSlotERK10QByteArray @ 264 NONAME
- _ZN18QMetaObjectBuilder12addClassInfoERK10QByteArrayS2_ @ 265 NONAME
- _ZN18QMetaObjectBuilder12removeMethodEi @ 266 NONAME
- _ZN18QMetaObjectBuilder12setClassNameERK10QByteArray @ 267 NONAME
- _ZN18QMetaObjectBuilder13addEnumeratorERK10QByteArray @ 268 NONAME
- _ZN18QMetaObjectBuilder13addEnumeratorERK9QMetaEnum @ 269 NONAME
- _ZN18QMetaObjectBuilder13addMetaObjectEPK11QMetaObject6QFlagsINS_9AddMemberEE @ 270 NONAME
- _ZN18QMetaObjectBuilder13indexOfMethodERK10QByteArray @ 271 NONAME
- _ZN18QMetaObjectBuilder13indexOfSignalERK10QByteArray @ 272 NONAME
- _ZN18QMetaObjectBuilder13setSuperClassEPK11QMetaObject @ 273 NONAME
- _ZN18QMetaObjectBuilder14addConstructorERK10QByteArray @ 274 NONAME
- _ZN18QMetaObjectBuilder14addConstructorERK11QMetaMethod @ 275 NONAME
- _ZN18QMetaObjectBuilder14removePropertyEi @ 276 NONAME
- _ZN18QMetaObjectBuilder15indexOfPropertyERK10QByteArray @ 277 NONAME
- _ZN18QMetaObjectBuilder15removeClassInfoEi @ 278 NONAME
- _ZN18QMetaObjectBuilder16indexOfClassInfoERK10QByteArray @ 279 NONAME
- _ZN18QMetaObjectBuilder16removeEnumeratorEi @ 280 NONAME
- _ZN18QMetaObjectBuilder17indexOfEnumeratorERK10QByteArray @ 281 NONAME
- _ZN18QMetaObjectBuilder17removeConstructorEi @ 282 NONAME
- _ZN18QMetaObjectBuilder18indexOfConstructorERK10QByteArray @ 283 NONAME
- _ZN18QMetaObjectBuilder19fromRelocatableDataEP11QMetaObjectPKS0_RK10QByteArray @ 284 NONAME
- _ZN18QMetaObjectBuilder20addRelatedMetaObjectERKPFRK11QMetaObjectvE @ 285 NONAME
- _ZN18QMetaObjectBuilder23removeRelatedMetaObjectEi @ 286 NONAME
- _ZN18QMetaObjectBuilder25setStaticMetacallFunctionEPFiN11QMetaObject4CallEiPPvE @ 287 NONAME
- _ZN18QMetaObjectBuilder7addSlotERK10QByteArray @ 288 NONAME
- _ZN18QMetaObjectBuilder8setFlagsE6QFlagsINS_14MetaObjectFlagEE @ 289 NONAME
- _ZN18QMetaObjectBuilder9addMethodERK10QByteArray @ 290 NONAME
- _ZN18QMetaObjectBuilder9addMethodERK10QByteArrayS2_ @ 291 NONAME
- _ZN18QMetaObjectBuilder9addMethodERK11QMetaMethod @ 292 NONAME
- _ZN18QMetaObjectBuilder9addSignalERK10QByteArray @ 293 NONAME
- _ZN18QMetaObjectBuilderC1EPK11QMetaObject6QFlagsINS_9AddMemberEE @ 294 NONAME
- _ZN18QMetaObjectBuilderC1Ev @ 295 NONAME
- _ZN18QMetaObjectBuilderC2EPK11QMetaObject6QFlagsINS_9AddMemberEE @ 296 NONAME
- _ZN18QMetaObjectBuilderC2Ev @ 297 NONAME
- _ZN18QMetaObjectBuilderD0Ev @ 298 NONAME
- _ZN18QMetaObjectBuilderD1Ev @ 299 NONAME
- _ZN18QMetaObjectBuilderD2Ev @ 300 NONAME
- _ZN19QDeclarativeAnchors10classBeginEv @ 301 NONAME
- _ZN19QDeclarativeAnchors10resetRightEv @ 302 NONAME
- _ZN19QDeclarativeAnchors10setMarginsEf @ 303 NONAME
- _ZN19QDeclarativeAnchors10topChangedEv @ 304 NONAME
- _ZN19QDeclarativeAnchors11fillChangedEv @ 305 NONAME
- _ZN19QDeclarativeAnchors11leftChangedEv @ 306 NONAME
- _ZN19QDeclarativeAnchors11qt_metacallEN11QMetaObject4CallEiPPv @ 307 NONAME
- _ZN19QDeclarativeAnchors11qt_metacastEPKc @ 308 NONAME
- _ZN19QDeclarativeAnchors11resetBottomEv @ 309 NONAME
- _ZN19QDeclarativeAnchors11setBaselineERK22QDeclarativeAnchorLine @ 310 NONAME
- _ZN19QDeclarativeAnchors11setCenterInEP15QGraphicsObject @ 311 NONAME
- _ZN19QDeclarativeAnchors12rightChangedEv @ 312 NONAME
- _ZN19QDeclarativeAnchors12setTopMarginEf @ 313 NONAME
- _ZN19QDeclarativeAnchors13bottomChangedEv @ 314 NONAME
- _ZN19QDeclarativeAnchors13resetBaselineEv @ 315 NONAME
- _ZN19QDeclarativeAnchors13resetCenterInEv @ 316 NONAME
- _ZN19QDeclarativeAnchors13setLeftMarginEf @ 317 NONAME
- _ZN19QDeclarativeAnchors14marginsChangedEv @ 318 NONAME
- _ZN19QDeclarativeAnchors14setRightMarginEf @ 319 NONAME
- _ZN19QDeclarativeAnchors15baselineChangedEv @ 320 NONAME
- _ZN19QDeclarativeAnchors15centerInChangedEv @ 321 NONAME
- _ZN19QDeclarativeAnchors15setBottomMarginEf @ 322 NONAME
- _ZN19QDeclarativeAnchors16staticMetaObjectE @ 323 NONAME DATA 16
- _ZN19QDeclarativeAnchors16topMarginChangedEv @ 324 NONAME
- _ZN19QDeclarativeAnchors17componentCompleteEv @ 325 NONAME
- _ZN19QDeclarativeAnchors17leftMarginChangedEv @ 326 NONAME
- _ZN19QDeclarativeAnchors17setBaselineOffsetEf @ 327 NONAME
- _ZN19QDeclarativeAnchors17setVerticalCenterERK22QDeclarativeAnchorLine @ 328 NONAME
- _ZN19QDeclarativeAnchors18rightMarginChangedEv @ 329 NONAME
- _ZN19QDeclarativeAnchors19bottomMarginChangedEv @ 330 NONAME
- _ZN19QDeclarativeAnchors19getStaticMetaObjectEv @ 331 NONAME
- _ZN19QDeclarativeAnchors19resetVerticalCenterEv @ 332 NONAME
- _ZN19QDeclarativeAnchors19setHorizontalCenterERK22QDeclarativeAnchorLine @ 333 NONAME
- _ZN19QDeclarativeAnchors21baselineOffsetChangedEv @ 334 NONAME
- _ZN19QDeclarativeAnchors21resetHorizontalCenterEv @ 335 NONAME
- _ZN19QDeclarativeAnchors21verticalCenterChangedEv @ 336 NONAME
- _ZN19QDeclarativeAnchors23horizontalCenterChangedEv @ 337 NONAME
- _ZN19QDeclarativeAnchors23setVerticalCenterOffsetEf @ 338 NONAME
- _ZN19QDeclarativeAnchors25setHorizontalCenterOffsetEf @ 339 NONAME
- _ZN19QDeclarativeAnchors27verticalCenterOffsetChangedEv @ 340 NONAME
- _ZN19QDeclarativeAnchors29horizontalCenterOffsetChangedEv @ 341 NONAME
- _ZN19QDeclarativeAnchors6setTopERK22QDeclarativeAnchorLine @ 342 NONAME
- _ZN19QDeclarativeAnchors7setFillEP15QGraphicsObject @ 343 NONAME
- _ZN19QDeclarativeAnchors7setLeftERK22QDeclarativeAnchorLine @ 344 NONAME
- _ZN19QDeclarativeAnchors8resetTopEv @ 345 NONAME
- _ZN19QDeclarativeAnchors8setRightERK22QDeclarativeAnchorLine @ 346 NONAME
- _ZN19QDeclarativeAnchors9resetFillEv @ 347 NONAME
- _ZN19QDeclarativeAnchors9resetLeftEv @ 348 NONAME
- _ZN19QDeclarativeAnchors9setBottomERK22QDeclarativeAnchorLine @ 349 NONAME
- _ZN19QDeclarativeAnchorsC1EP15QGraphicsObjectP7QObject @ 350 NONAME
- _ZN19QDeclarativeAnchorsC1EP7QObject @ 351 NONAME
- _ZN19QDeclarativeAnchorsC2EP15QGraphicsObjectP7QObject @ 352 NONAME
- _ZN19QDeclarativeAnchorsC2EP7QObject @ 353 NONAME
- _ZN19QDeclarativeAnchorsD0Ev @ 354 NONAME
- _ZN19QDeclarativeAnchorsD1Ev @ 355 NONAME
- _ZN19QDeclarativeAnchorsD2Ev @ 356 NONAME
- _ZN19QDeclarativeBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 357 NONAME
- _ZN19QDeclarativeBinding11qt_metacallEN11QMetaObject4CallEiPPv @ 358 NONAME
- _ZN19QDeclarativeBinding11qt_metacastEPKc @ 359 NONAME
- _ZN19QDeclarativeBinding13propertyIndexEv @ 360 NONAME
- _ZN19QDeclarativeBinding16staticMetaObjectE @ 361 NONAME DATA 16
- _ZN19QDeclarativeBinding19getStaticMetaObjectEv @ 362 NONAME
- _ZN19QDeclarativeBinding6updateE6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 363 NONAME
- _ZN19QDeclarativeBinding9setTargetERK20QDeclarativeProperty @ 364 NONAME
- _ZN19QDeclarativeBindingC1EPvP20QDeclarativeRefCountP7QObjectP23QDeclarativeContextDataRK7QStringiS4_ @ 365 NONAME
- _ZN19QDeclarativeBindingC1ERK7QStringP7QObjectP19QDeclarativeContextS4_ @ 366 NONAME
- _ZN19QDeclarativeBindingC1ERK7QStringP7QObjectP23QDeclarativeContextDataS4_ @ 367 NONAME
- _ZN19QDeclarativeBindingC2EPvP20QDeclarativeRefCountP7QObjectP23QDeclarativeContextDataRK7QStringiS4_ @ 368 NONAME
- _ZN19QDeclarativeBindingC2ERK7QStringP7QObjectP19QDeclarativeContextS4_ @ 369 NONAME
- _ZN19QDeclarativeBindingC2ERK7QStringP7QObjectP23QDeclarativeContextDataS4_ @ 370 NONAME
- _ZN19QDeclarativeBindingD0Ev @ 371 NONAME
- _ZN19QDeclarativeBindingD1Ev @ 372 NONAME
- _ZN19QDeclarativeBindingD2Ev @ 373 NONAME
+ _ZN18QMetaMethodBuilder13setAttributesEi @ 256 NONAME ABSENT
+ _ZN18QMetaMethodBuilder13setReturnTypeERK10QByteArray @ 257 NONAME ABSENT
+ _ZN18QMetaMethodBuilder17setParameterNamesERK5QListI10QByteArrayE @ 258 NONAME ABSENT
+ _ZN18QMetaMethodBuilder6setTagERK10QByteArray @ 259 NONAME ABSENT
+ _ZN18QMetaMethodBuilder9setAccessEN11QMetaMethod6AccessE @ 260 NONAME ABSENT
+ _ZN18QMetaObjectBuilder11addPropertyERK10QByteArrayS2_i @ 261 NONAME ABSENT
+ _ZN18QMetaObjectBuilder11addPropertyERK13QMetaProperty @ 262 NONAME ABSENT
+ _ZN18QMetaObjectBuilder11deserializeER11QDataStreamRK4QMapI10QByteArrayPK11QMetaObjectE @ 263 NONAME ABSENT
+ _ZN18QMetaObjectBuilder11indexOfSlotERK10QByteArray @ 264 NONAME ABSENT
+ _ZN18QMetaObjectBuilder12addClassInfoERK10QByteArrayS2_ @ 265 NONAME ABSENT
+ _ZN18QMetaObjectBuilder12removeMethodEi @ 266 NONAME ABSENT
+ _ZN18QMetaObjectBuilder12setClassNameERK10QByteArray @ 267 NONAME ABSENT
+ _ZN18QMetaObjectBuilder13addEnumeratorERK10QByteArray @ 268 NONAME ABSENT
+ _ZN18QMetaObjectBuilder13addEnumeratorERK9QMetaEnum @ 269 NONAME ABSENT
+ _ZN18QMetaObjectBuilder13addMetaObjectEPK11QMetaObject6QFlagsINS_9AddMemberEE @ 270 NONAME ABSENT
+ _ZN18QMetaObjectBuilder13indexOfMethodERK10QByteArray @ 271 NONAME ABSENT
+ _ZN18QMetaObjectBuilder13indexOfSignalERK10QByteArray @ 272 NONAME ABSENT
+ _ZN18QMetaObjectBuilder13setSuperClassEPK11QMetaObject @ 273 NONAME ABSENT
+ _ZN18QMetaObjectBuilder14addConstructorERK10QByteArray @ 274 NONAME ABSENT
+ _ZN18QMetaObjectBuilder14addConstructorERK11QMetaMethod @ 275 NONAME ABSENT
+ _ZN18QMetaObjectBuilder14removePropertyEi @ 276 NONAME ABSENT
+ _ZN18QMetaObjectBuilder15indexOfPropertyERK10QByteArray @ 277 NONAME ABSENT
+ _ZN18QMetaObjectBuilder15removeClassInfoEi @ 278 NONAME ABSENT
+ _ZN18QMetaObjectBuilder16indexOfClassInfoERK10QByteArray @ 279 NONAME ABSENT
+ _ZN18QMetaObjectBuilder16removeEnumeratorEi @ 280 NONAME ABSENT
+ _ZN18QMetaObjectBuilder17indexOfEnumeratorERK10QByteArray @ 281 NONAME ABSENT
+ _ZN18QMetaObjectBuilder17removeConstructorEi @ 282 NONAME ABSENT
+ _ZN18QMetaObjectBuilder18indexOfConstructorERK10QByteArray @ 283 NONAME ABSENT
+ _ZN18QMetaObjectBuilder19fromRelocatableDataEP11QMetaObjectPKS0_RK10QByteArray @ 284 NONAME ABSENT
+ _ZN18QMetaObjectBuilder20addRelatedMetaObjectERKPFRK11QMetaObjectvE @ 285 NONAME ABSENT
+ _ZN18QMetaObjectBuilder23removeRelatedMetaObjectEi @ 286 NONAME ABSENT
+ _ZN18QMetaObjectBuilder25setStaticMetacallFunctionEPFiN11QMetaObject4CallEiPPvE @ 287 NONAME ABSENT
+ _ZN18QMetaObjectBuilder7addSlotERK10QByteArray @ 288 NONAME ABSENT
+ _ZN18QMetaObjectBuilder8setFlagsE6QFlagsINS_14MetaObjectFlagEE @ 289 NONAME ABSENT
+ _ZN18QMetaObjectBuilder9addMethodERK10QByteArray @ 290 NONAME ABSENT
+ _ZN18QMetaObjectBuilder9addMethodERK10QByteArrayS2_ @ 291 NONAME ABSENT
+ _ZN18QMetaObjectBuilder9addMethodERK11QMetaMethod @ 292 NONAME ABSENT
+ _ZN18QMetaObjectBuilder9addSignalERK10QByteArray @ 293 NONAME ABSENT
+ _ZN18QMetaObjectBuilderC1EPK11QMetaObject6QFlagsINS_9AddMemberEE @ 294 NONAME ABSENT
+ _ZN18QMetaObjectBuilderC1Ev @ 295 NONAME ABSENT
+ _ZN18QMetaObjectBuilderC2EPK11QMetaObject6QFlagsINS_9AddMemberEE @ 296 NONAME ABSENT
+ _ZN18QMetaObjectBuilderC2Ev @ 297 NONAME ABSENT
+ _ZN18QMetaObjectBuilderD0Ev @ 298 NONAME ABSENT
+ _ZN18QMetaObjectBuilderD1Ev @ 299 NONAME ABSENT
+ _ZN18QMetaObjectBuilderD2Ev @ 300 NONAME ABSENT
+ _ZN19QDeclarativeAnchors10classBeginEv @ 301 NONAME ABSENT
+ _ZN19QDeclarativeAnchors10resetRightEv @ 302 NONAME ABSENT
+ _ZN19QDeclarativeAnchors10setMarginsEf @ 303 NONAME ABSENT
+ _ZN19QDeclarativeAnchors10topChangedEv @ 304 NONAME ABSENT
+ _ZN19QDeclarativeAnchors11fillChangedEv @ 305 NONAME ABSENT
+ _ZN19QDeclarativeAnchors11leftChangedEv @ 306 NONAME ABSENT
+ _ZN19QDeclarativeAnchors11qt_metacallEN11QMetaObject4CallEiPPv @ 307 NONAME ABSENT
+ _ZN19QDeclarativeAnchors11qt_metacastEPKc @ 308 NONAME ABSENT
+ _ZN19QDeclarativeAnchors11resetBottomEv @ 309 NONAME ABSENT
+ _ZN19QDeclarativeAnchors11setBaselineERK22QDeclarativeAnchorLine @ 310 NONAME ABSENT
+ _ZN19QDeclarativeAnchors11setCenterInEP15QGraphicsObject @ 311 NONAME ABSENT
+ _ZN19QDeclarativeAnchors12rightChangedEv @ 312 NONAME ABSENT
+ _ZN19QDeclarativeAnchors12setTopMarginEf @ 313 NONAME ABSENT
+ _ZN19QDeclarativeAnchors13bottomChangedEv @ 314 NONAME ABSENT
+ _ZN19QDeclarativeAnchors13resetBaselineEv @ 315 NONAME ABSENT
+ _ZN19QDeclarativeAnchors13resetCenterInEv @ 316 NONAME ABSENT
+ _ZN19QDeclarativeAnchors13setLeftMarginEf @ 317 NONAME ABSENT
+ _ZN19QDeclarativeAnchors14marginsChangedEv @ 318 NONAME ABSENT
+ _ZN19QDeclarativeAnchors14setRightMarginEf @ 319 NONAME ABSENT
+ _ZN19QDeclarativeAnchors15baselineChangedEv @ 320 NONAME ABSENT
+ _ZN19QDeclarativeAnchors15centerInChangedEv @ 321 NONAME ABSENT
+ _ZN19QDeclarativeAnchors15setBottomMarginEf @ 322 NONAME ABSENT
+ _ZN19QDeclarativeAnchors16staticMetaObjectE @ 323 NONAME DATA 16 ABSENT
+ _ZN19QDeclarativeAnchors16topMarginChangedEv @ 324 NONAME ABSENT
+ _ZN19QDeclarativeAnchors17componentCompleteEv @ 325 NONAME ABSENT
+ _ZN19QDeclarativeAnchors17leftMarginChangedEv @ 326 NONAME ABSENT
+ _ZN19QDeclarativeAnchors17setBaselineOffsetEf @ 327 NONAME ABSENT
+ _ZN19QDeclarativeAnchors17setVerticalCenterERK22QDeclarativeAnchorLine @ 328 NONAME ABSENT
+ _ZN19QDeclarativeAnchors18rightMarginChangedEv @ 329 NONAME ABSENT
+ _ZN19QDeclarativeAnchors19bottomMarginChangedEv @ 330 NONAME ABSENT
+ _ZN19QDeclarativeAnchors19getStaticMetaObjectEv @ 331 NONAME ABSENT
+ _ZN19QDeclarativeAnchors19resetVerticalCenterEv @ 332 NONAME ABSENT
+ _ZN19QDeclarativeAnchors19setHorizontalCenterERK22QDeclarativeAnchorLine @ 333 NONAME ABSENT
+ _ZN19QDeclarativeAnchors21baselineOffsetChangedEv @ 334 NONAME ABSENT
+ _ZN19QDeclarativeAnchors21resetHorizontalCenterEv @ 335 NONAME ABSENT
+ _ZN19QDeclarativeAnchors21verticalCenterChangedEv @ 336 NONAME ABSENT
+ _ZN19QDeclarativeAnchors23horizontalCenterChangedEv @ 337 NONAME ABSENT
+ _ZN19QDeclarativeAnchors23setVerticalCenterOffsetEf @ 338 NONAME ABSENT
+ _ZN19QDeclarativeAnchors25setHorizontalCenterOffsetEf @ 339 NONAME ABSENT
+ _ZN19QDeclarativeAnchors27verticalCenterOffsetChangedEv @ 340 NONAME ABSENT
+ _ZN19QDeclarativeAnchors29horizontalCenterOffsetChangedEv @ 341 NONAME ABSENT
+ _ZN19QDeclarativeAnchors6setTopERK22QDeclarativeAnchorLine @ 342 NONAME ABSENT
+ _ZN19QDeclarativeAnchors7setFillEP15QGraphicsObject @ 343 NONAME ABSENT
+ _ZN19QDeclarativeAnchors7setLeftERK22QDeclarativeAnchorLine @ 344 NONAME ABSENT
+ _ZN19QDeclarativeAnchors8resetTopEv @ 345 NONAME ABSENT
+ _ZN19QDeclarativeAnchors8setRightERK22QDeclarativeAnchorLine @ 346 NONAME ABSENT
+ _ZN19QDeclarativeAnchors9resetFillEv @ 347 NONAME ABSENT
+ _ZN19QDeclarativeAnchors9resetLeftEv @ 348 NONAME ABSENT
+ _ZN19QDeclarativeAnchors9setBottomERK22QDeclarativeAnchorLine @ 349 NONAME ABSENT
+ _ZN19QDeclarativeAnchorsC1EP15QGraphicsObjectP7QObject @ 350 NONAME ABSENT
+ _ZN19QDeclarativeAnchorsC1EP7QObject @ 351 NONAME ABSENT
+ _ZN19QDeclarativeAnchorsC2EP15QGraphicsObjectP7QObject @ 352 NONAME ABSENT
+ _ZN19QDeclarativeAnchorsC2EP7QObject @ 353 NONAME ABSENT
+ _ZN19QDeclarativeAnchorsD0Ev @ 354 NONAME ABSENT
+ _ZN19QDeclarativeAnchorsD1Ev @ 355 NONAME ABSENT
+ _ZN19QDeclarativeAnchorsD2Ev @ 356 NONAME ABSENT
+ _ZN19QDeclarativeBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 357 NONAME ABSENT
+ _ZN19QDeclarativeBinding11qt_metacallEN11QMetaObject4CallEiPPv @ 358 NONAME ABSENT
+ _ZN19QDeclarativeBinding11qt_metacastEPKc @ 359 NONAME ABSENT
+ _ZN19QDeclarativeBinding13propertyIndexEv @ 360 NONAME ABSENT
+ _ZN19QDeclarativeBinding16staticMetaObjectE @ 361 NONAME DATA 16 ABSENT
+ _ZN19QDeclarativeBinding19getStaticMetaObjectEv @ 362 NONAME ABSENT
+ _ZN19QDeclarativeBinding6updateE6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 363 NONAME ABSENT
+ _ZN19QDeclarativeBinding9setTargetERK20QDeclarativeProperty @ 364 NONAME ABSENT
+ _ZN19QDeclarativeBindingC1EPvP20QDeclarativeRefCountP7QObjectP23QDeclarativeContextDataRK7QStringiS4_ @ 365 NONAME ABSENT
+ _ZN19QDeclarativeBindingC1ERK7QStringP7QObjectP19QDeclarativeContextS4_ @ 366 NONAME ABSENT
+ _ZN19QDeclarativeBindingC1ERK7QStringP7QObjectP23QDeclarativeContextDataS4_ @ 367 NONAME ABSENT
+ _ZN19QDeclarativeBindingC2EPvP20QDeclarativeRefCountP7QObjectP23QDeclarativeContextDataRK7QStringiS4_ @ 368 NONAME ABSENT
+ _ZN19QDeclarativeBindingC2ERK7QStringP7QObjectP19QDeclarativeContextS4_ @ 369 NONAME ABSENT
+ _ZN19QDeclarativeBindingC2ERK7QStringP7QObjectP23QDeclarativeContextDataS4_ @ 370 NONAME ABSENT
+ _ZN19QDeclarativeBindingD0Ev @ 371 NONAME ABSENT
+ _ZN19QDeclarativeBindingD1Ev @ 372 NONAME ABSENT
+ _ZN19QDeclarativeBindingD2Ev @ 373 NONAME ABSENT
_ZN19QDeclarativeContext10setBaseUrlERK4QUrl @ 374 NONAME
_ZN19QDeclarativeContext11qt_metacallEN11QMetaObject4CallEiPPv @ 375 NONAME
_ZN19QDeclarativeContext11qt_metacastEPKc @ 376 NONAME
@@ -392,70 +392,70 @@ EXPORTS
_ZN19QDeclarativeContextD0Ev @ 391 NONAME
_ZN19QDeclarativeContextD1Ev @ 392 NONAME
_ZN19QDeclarativeContextD2Ev @ 393 NONAME
- _ZN19QDeclarativeDomListC1ERKS_ @ 394 NONAME
- _ZN19QDeclarativeDomListC1Ev @ 395 NONAME
- _ZN19QDeclarativeDomListC2ERKS_ @ 396 NONAME
- _ZN19QDeclarativeDomListC2Ev @ 397 NONAME
- _ZN19QDeclarativeDomListD1Ev @ 398 NONAME
- _ZN19QDeclarativeDomListD2Ev @ 399 NONAME
- _ZN19QDeclarativeDomListaSERKS_ @ 400 NONAME
+ _ZN19QDeclarativeDomListC1ERKS_ @ 394 NONAME ABSENT
+ _ZN19QDeclarativeDomListC1Ev @ 395 NONAME ABSENT
+ _ZN19QDeclarativeDomListC2ERKS_ @ 396 NONAME ABSENT
+ _ZN19QDeclarativeDomListC2Ev @ 397 NONAME ABSENT
+ _ZN19QDeclarativeDomListD1Ev @ 398 NONAME ABSENT
+ _ZN19QDeclarativeDomListD2Ev @ 399 NONAME ABSENT
+ _ZN19QDeclarativeDomListaSERKS_ @ 400 NONAME ABSENT
_ZN19QDeclarativePrivate11qmlregisterENS_16RegistrationTypeEPv @ 401 NONAME
_ZN19QDeclarativePrivate30qdeclarativeelement_destructorEP7QObject @ 402 NONAME
- _ZN19QListModelInterface10itemsMovedEiii @ 403 NONAME
- _ZN19QListModelInterface11qt_metacallEN11QMetaObject4CallEiPPv @ 404 NONAME
- _ZN19QListModelInterface11qt_metacastEPKc @ 405 NONAME
- _ZN19QListModelInterface12itemsChangedEiiRK5QListIiE @ 406 NONAME
- _ZN19QListModelInterface12itemsRemovedEii @ 407 NONAME
- _ZN19QListModelInterface13itemsInsertedEii @ 408 NONAME
- _ZN19QListModelInterface16staticMetaObjectE @ 409 NONAME DATA 16
- _ZN19QListModelInterface19getStaticMetaObjectEv @ 410 NONAME
- _ZN20QDeclarativeBehavior10setEnabledEb @ 411 NONAME
- _ZN20QDeclarativeBehavior11qt_metacallEN11QMetaObject4CallEiPPv @ 412 NONAME
- _ZN20QDeclarativeBehavior11qt_metacastEPKc @ 413 NONAME
- _ZN20QDeclarativeBehavior12setAnimationEP29QDeclarativeAbstractAnimation @ 414 NONAME
- _ZN20QDeclarativeBehavior14enabledChangedEv @ 415 NONAME
- _ZN20QDeclarativeBehavior16staticMetaObjectE @ 416 NONAME DATA 16
- _ZN20QDeclarativeBehavior18componentFinalizedEv @ 417 NONAME
- _ZN20QDeclarativeBehavior19getStaticMetaObjectEv @ 418 NONAME
- _ZN20QDeclarativeBehavior23qtAnimationStateChangedEN18QAbstractAnimation5StateES1_ @ 419 NONAME
- _ZN20QDeclarativeBehavior5writeERK8QVariant @ 420 NONAME
- _ZN20QDeclarativeBehavior9animationEv @ 421 NONAME
- _ZN20QDeclarativeBehavior9setTargetERK20QDeclarativeProperty @ 422 NONAME
- _ZN20QDeclarativeBehaviorC1EP7QObject @ 423 NONAME
- _ZN20QDeclarativeBehaviorC2EP7QObject @ 424 NONAME
- _ZN20QDeclarativeBehaviorD0Ev @ 425 NONAME
- _ZN20QDeclarativeBehaviorD1Ev @ 426 NONAME
- _ZN20QDeclarativeBehaviorD2Ev @ 427 NONAME
- _ZN20QDeclarativeDomValueC1ERKS_ @ 428 NONAME
- _ZN20QDeclarativeDomValueC1Ev @ 429 NONAME
- _ZN20QDeclarativeDomValueC2ERKS_ @ 430 NONAME
- _ZN20QDeclarativeDomValueC2Ev @ 431 NONAME
- _ZN20QDeclarativeDomValueD1Ev @ 432 NONAME
- _ZN20QDeclarativeDomValueD2Ev @ 433 NONAME
- _ZN20QDeclarativeDomValueaSERKS_ @ 434 NONAME
- _ZN20QDeclarativeMetaType11isInterfaceEi @ 435 NONAME
- _ZN20QDeclarativeMetaType12interfaceIIdEi @ 436 NONAME
- _ZN20QDeclarativeMetaType12qmlTypeNamesEv @ 437 NONAME
- _ZN20QDeclarativeMetaType12typeCategoryEi @ 438 NONAME
- _ZN20QDeclarativeMetaType13defaultMethodEP7QObject @ 439 NONAME
- _ZN20QDeclarativeMetaType13defaultMethodEPK11QMetaObject @ 440 NONAME
- _ZN20QDeclarativeMetaType15defaultPropertyEP7QObject @ 441 NONAME
- _ZN20QDeclarativeMetaType15defaultPropertyEPK11QMetaObject @ 442 NONAME
- _ZN20QDeclarativeMetaType15parentFunctionsEv @ 443 NONAME
- _ZN20QDeclarativeMetaType21customStringConverterEi @ 444 NONAME
- _ZN20QDeclarativeMetaType24attachedPropertiesFuncIdEPK11QMetaObject @ 445 NONAME
- _ZN20QDeclarativeMetaType26attachedPropertiesFuncByIdEi @ 446 NONAME
- _ZN20QDeclarativeMetaType29registerCustomStringConverterEiPF8QVariantRK7QStringE @ 447 NONAME
- _ZN20QDeclarativeMetaType4copyEiPvPKv @ 448 NONAME
- _ZN20QDeclarativeMetaType6isListEi @ 449 NONAME
- _ZN20QDeclarativeMetaType7qmlTypeEPK11QMetaObject @ 450 NONAME
- _ZN20QDeclarativeMetaType7qmlTypeERK10QByteArrayii @ 451 NONAME
- _ZN20QDeclarativeMetaType7qmlTypeEi @ 452 NONAME
- _ZN20QDeclarativeMetaType8isModuleERK10QByteArrayii @ 453 NONAME
- _ZN20QDeclarativeMetaType8listTypeEi @ 454 NONAME
- _ZN20QDeclarativeMetaType8qmlTypesEv @ 455 NONAME
- _ZN20QDeclarativeMetaType9isQObjectEi @ 456 NONAME
- _ZN20QDeclarativeMetaType9toQObjectERK8QVariantPb @ 457 NONAME
+ _ZN19QListModelInterface10itemsMovedEiii @ 403 NONAME ABSENT
+ _ZN19QListModelInterface11qt_metacallEN11QMetaObject4CallEiPPv @ 404 NONAME ABSENT
+ _ZN19QListModelInterface11qt_metacastEPKc @ 405 NONAME ABSENT
+ _ZN19QListModelInterface12itemsChangedEiiRK5QListIiE @ 406 NONAME ABSENT
+ _ZN19QListModelInterface12itemsRemovedEii @ 407 NONAME ABSENT
+ _ZN19QListModelInterface13itemsInsertedEii @ 408 NONAME ABSENT
+ _ZN19QListModelInterface16staticMetaObjectE @ 409 NONAME DATA 16 ABSENT
+ _ZN19QListModelInterface19getStaticMetaObjectEv @ 410 NONAME ABSENT
+ _ZN20QDeclarativeBehavior10setEnabledEb @ 411 NONAME ABSENT
+ _ZN20QDeclarativeBehavior11qt_metacallEN11QMetaObject4CallEiPPv @ 412 NONAME ABSENT
+ _ZN20QDeclarativeBehavior11qt_metacastEPKc @ 413 NONAME ABSENT
+ _ZN20QDeclarativeBehavior12setAnimationEP29QDeclarativeAbstractAnimation @ 414 NONAME ABSENT
+ _ZN20QDeclarativeBehavior14enabledChangedEv @ 415 NONAME ABSENT
+ _ZN20QDeclarativeBehavior16staticMetaObjectE @ 416 NONAME DATA 16 ABSENT
+ _ZN20QDeclarativeBehavior18componentFinalizedEv @ 417 NONAME ABSENT
+ _ZN20QDeclarativeBehavior19getStaticMetaObjectEv @ 418 NONAME ABSENT
+ _ZN20QDeclarativeBehavior23qtAnimationStateChangedEN18QAbstractAnimation5StateES1_ @ 419 NONAME ABSENT
+ _ZN20QDeclarativeBehavior5writeERK8QVariant @ 420 NONAME ABSENT
+ _ZN20QDeclarativeBehavior9animationEv @ 421 NONAME ABSENT
+ _ZN20QDeclarativeBehavior9setTargetERK20QDeclarativeProperty @ 422 NONAME ABSENT
+ _ZN20QDeclarativeBehaviorC1EP7QObject @ 423 NONAME ABSENT
+ _ZN20QDeclarativeBehaviorC2EP7QObject @ 424 NONAME ABSENT
+ _ZN20QDeclarativeBehaviorD0Ev @ 425 NONAME ABSENT
+ _ZN20QDeclarativeBehaviorD1Ev @ 426 NONAME ABSENT
+ _ZN20QDeclarativeBehaviorD2Ev @ 427 NONAME ABSENT
+ _ZN20QDeclarativeDomValueC1ERKS_ @ 428 NONAME ABSENT
+ _ZN20QDeclarativeDomValueC1Ev @ 429 NONAME ABSENT
+ _ZN20QDeclarativeDomValueC2ERKS_ @ 430 NONAME ABSENT
+ _ZN20QDeclarativeDomValueC2Ev @ 431 NONAME ABSENT
+ _ZN20QDeclarativeDomValueD1Ev @ 432 NONAME ABSENT
+ _ZN20QDeclarativeDomValueD2Ev @ 433 NONAME ABSENT
+ _ZN20QDeclarativeDomValueaSERKS_ @ 434 NONAME ABSENT
+ _ZN20QDeclarativeMetaType11isInterfaceEi @ 435 NONAME ABSENT
+ _ZN20QDeclarativeMetaType12interfaceIIdEi @ 436 NONAME ABSENT
+ _ZN20QDeclarativeMetaType12qmlTypeNamesEv @ 437 NONAME ABSENT
+ _ZN20QDeclarativeMetaType12typeCategoryEi @ 438 NONAME ABSENT
+ _ZN20QDeclarativeMetaType13defaultMethodEP7QObject @ 439 NONAME ABSENT
+ _ZN20QDeclarativeMetaType13defaultMethodEPK11QMetaObject @ 440 NONAME ABSENT
+ _ZN20QDeclarativeMetaType15defaultPropertyEP7QObject @ 441 NONAME ABSENT
+ _ZN20QDeclarativeMetaType15defaultPropertyEPK11QMetaObject @ 442 NONAME ABSENT
+ _ZN20QDeclarativeMetaType15parentFunctionsEv @ 443 NONAME ABSENT
+ _ZN20QDeclarativeMetaType21customStringConverterEi @ 444 NONAME ABSENT
+ _ZN20QDeclarativeMetaType24attachedPropertiesFuncIdEPK11QMetaObject @ 445 NONAME ABSENT
+ _ZN20QDeclarativeMetaType26attachedPropertiesFuncByIdEi @ 446 NONAME ABSENT
+ _ZN20QDeclarativeMetaType29registerCustomStringConverterEiPF8QVariantRK7QStringE @ 447 NONAME ABSENT
+ _ZN20QDeclarativeMetaType4copyEiPvPKv @ 448 NONAME ABSENT
+ _ZN20QDeclarativeMetaType6isListEi @ 449 NONAME ABSENT
+ _ZN20QDeclarativeMetaType7qmlTypeEPK11QMetaObject @ 450 NONAME ABSENT
+ _ZN20QDeclarativeMetaType7qmlTypeERK10QByteArrayii @ 451 NONAME ABSENT
+ _ZN20QDeclarativeMetaType7qmlTypeEi @ 452 NONAME ABSENT
+ _ZN20QDeclarativeMetaType8isModuleERK10QByteArrayii @ 453 NONAME ABSENT
+ _ZN20QDeclarativeMetaType8listTypeEi @ 454 NONAME ABSENT
+ _ZN20QDeclarativeMetaType8qmlTypesEv @ 455 NONAME ABSENT
+ _ZN20QDeclarativeMetaType9isQObjectEi @ 456 NONAME ABSENT
+ _ZN20QDeclarativeMetaType9toQObjectERK8QVariantPb @ 457 NONAME ABSENT
_ZN20QDeclarativeProperty4readEP7QObjectRK7QString @ 458 NONAME
_ZN20QDeclarativeProperty4readEP7QObjectRK7QStringP18QDeclarativeEngine @ 459 NONAME
_ZN20QDeclarativeProperty4readEP7QObjectRK7QStringP19QDeclarativeContext @ 460 NONAME
@@ -481,19 +481,19 @@ EXPORTS
_ZN20QDeclarativePropertyD1Ev @ 480 NONAME
_ZN20QDeclarativePropertyD2Ev @ 481 NONAME
_ZN20QDeclarativePropertyaSERKS_ @ 482 NONAME
- _ZN20QMetaPropertyBuilder10setDynamicEb @ 483 NONAME
- _ZN20QMetaPropertyBuilder11setEditableEb @ 484 NONAME
- _ZN20QMetaPropertyBuilder11setReadableEb @ 485 NONAME
- _ZN20QMetaPropertyBuilder11setWritableEb @ 486 NONAME
- _ZN20QMetaPropertyBuilder12setStdCppSetEb @ 487 NONAME
- _ZN20QMetaPropertyBuilder13setDesignableEb @ 488 NONAME
- _ZN20QMetaPropertyBuilder13setEnumOrFlagEb @ 489 NONAME
- _ZN20QMetaPropertyBuilder13setResettableEb @ 490 NONAME
- _ZN20QMetaPropertyBuilder13setScriptableEb @ 491 NONAME
- _ZN20QMetaPropertyBuilder15setNotifySignalERK18QMetaMethodBuilder @ 492 NONAME
- _ZN20QMetaPropertyBuilder18removeNotifySignalEv @ 493 NONAME
- _ZN20QMetaPropertyBuilder7setUserEb @ 494 NONAME
- _ZN20QMetaPropertyBuilder9setStoredEb @ 495 NONAME
+ _ZN20QMetaPropertyBuilder10setDynamicEb @ 483 NONAME ABSENT
+ _ZN20QMetaPropertyBuilder11setEditableEb @ 484 NONAME ABSENT
+ _ZN20QMetaPropertyBuilder11setReadableEb @ 485 NONAME ABSENT
+ _ZN20QMetaPropertyBuilder11setWritableEb @ 486 NONAME ABSENT
+ _ZN20QMetaPropertyBuilder12setStdCppSetEb @ 487 NONAME ABSENT
+ _ZN20QMetaPropertyBuilder13setDesignableEb @ 488 NONAME ABSENT
+ _ZN20QMetaPropertyBuilder13setEnumOrFlagEb @ 489 NONAME ABSENT
+ _ZN20QMetaPropertyBuilder13setResettableEb @ 490 NONAME ABSENT
+ _ZN20QMetaPropertyBuilder13setScriptableEb @ 491 NONAME ABSENT
+ _ZN20QMetaPropertyBuilder15setNotifySignalERK18QMetaMethodBuilder @ 492 NONAME ABSENT
+ _ZN20QMetaPropertyBuilder18removeNotifySignalEv @ 493 NONAME ABSENT
+ _ZN20QMetaPropertyBuilder7setUserEb @ 494 NONAME ABSENT
+ _ZN20QMetaPropertyBuilder9setStoredEb @ 495 NONAME ABSENT
_ZN21QDeclarativeComponent11beginCreateEP19QDeclarativeContext @ 496 NONAME
_ZN21QDeclarativeComponent11qt_metacallEN11QMetaObject4CallEiPPv @ 497 NONAME
_ZN21QDeclarativeComponent11qt_metacastEPKc @ 498 NONAME
@@ -522,98 +522,98 @@ EXPORTS
_ZN21QDeclarativeComponentD0Ev @ 521 NONAME
_ZN21QDeclarativeComponentD1Ev @ 522 NONAME
_ZN21QDeclarativeComponentD2Ev @ 523 NONAME
- _ZN21QDeclarativeDomImportC1ERKS_ @ 524 NONAME
- _ZN21QDeclarativeDomImportC1Ev @ 525 NONAME
- _ZN21QDeclarativeDomImportC2ERKS_ @ 526 NONAME
- _ZN21QDeclarativeDomImportC2Ev @ 527 NONAME
- _ZN21QDeclarativeDomImportD1Ev @ 528 NONAME
- _ZN21QDeclarativeDomImportD2Ev @ 529 NONAME
- _ZN21QDeclarativeDomImportaSERKS_ @ 530 NONAME
- _ZN21QDeclarativeDomObjectC1ERKS_ @ 531 NONAME
- _ZN21QDeclarativeDomObjectC1Ev @ 532 NONAME
- _ZN21QDeclarativeDomObjectC2ERKS_ @ 533 NONAME
- _ZN21QDeclarativeDomObjectC2Ev @ 534 NONAME
- _ZN21QDeclarativeDomObjectD1Ev @ 535 NONAME
- _ZN21QDeclarativeDomObjectD2Ev @ 536 NONAME
- _ZN21QDeclarativeDomObjectaSERKS_ @ 537 NONAME
- _ZN21QDeclarativeListModel11qt_metacallEN11QMetaObject4CallEiPPv @ 538 NONAME
- _ZN21QDeclarativeListModel11qt_metacastEPKc @ 539 NONAME
- _ZN21QDeclarativeListModel11setPropertyEiRK7QStringRK8QVariant @ 540 NONAME
- _ZN21QDeclarativeListModel12countChangedEv @ 541 NONAME
- _ZN21QDeclarativeListModel16staticMetaObjectE @ 542 NONAME DATA 16
- _ZN21QDeclarativeListModel19getStaticMetaObjectEv @ 543 NONAME
- _ZN21QDeclarativeListModel3setEiRK12QScriptValue @ 544 NONAME
- _ZN21QDeclarativeListModel4moveEiii @ 545 NONAME
- _ZN21QDeclarativeListModel4syncEv @ 546 NONAME
- _ZN21QDeclarativeListModel5agentEv @ 547 NONAME
- _ZN21QDeclarativeListModel5clearEv @ 548 NONAME
- _ZN21QDeclarativeListModel6appendERK12QScriptValue @ 549 NONAME
- _ZN21QDeclarativeListModel6insertEiRK12QScriptValue @ 550 NONAME
- _ZN21QDeclarativeListModel6removeEi @ 551 NONAME
- _ZN21QDeclarativeListModel7flattenEv @ 552 NONAME
- _ZN21QDeclarativeListModelC1EP7QObject @ 553 NONAME
+ _ZN21QDeclarativeDomImportC1ERKS_ @ 524 NONAME ABSENT
+ _ZN21QDeclarativeDomImportC1Ev @ 525 NONAME ABSENT
+ _ZN21QDeclarativeDomImportC2ERKS_ @ 526 NONAME ABSENT
+ _ZN21QDeclarativeDomImportC2Ev @ 527 NONAME ABSENT
+ _ZN21QDeclarativeDomImportD1Ev @ 528 NONAME ABSENT
+ _ZN21QDeclarativeDomImportD2Ev @ 529 NONAME ABSENT
+ _ZN21QDeclarativeDomImportaSERKS_ @ 530 NONAME ABSENT
+ _ZN21QDeclarativeDomObjectC1ERKS_ @ 531 NONAME ABSENT
+ _ZN21QDeclarativeDomObjectC1Ev @ 532 NONAME ABSENT
+ _ZN21QDeclarativeDomObjectC2ERKS_ @ 533 NONAME ABSENT
+ _ZN21QDeclarativeDomObjectC2Ev @ 534 NONAME ABSENT
+ _ZN21QDeclarativeDomObjectD1Ev @ 535 NONAME ABSENT
+ _ZN21QDeclarativeDomObjectD2Ev @ 536 NONAME ABSENT
+ _ZN21QDeclarativeDomObjectaSERKS_ @ 537 NONAME ABSENT
+ _ZN21QDeclarativeListModel11qt_metacallEN11QMetaObject4CallEiPPv @ 538 NONAME ABSENT
+ _ZN21QDeclarativeListModel11qt_metacastEPKc @ 539 NONAME ABSENT
+ _ZN21QDeclarativeListModel11setPropertyEiRK7QStringRK8QVariant @ 540 NONAME ABSENT
+ _ZN21QDeclarativeListModel12countChangedEv @ 541 NONAME ABSENT
+ _ZN21QDeclarativeListModel16staticMetaObjectE @ 542 NONAME DATA 16 ABSENT
+ _ZN21QDeclarativeListModel19getStaticMetaObjectEv @ 543 NONAME ABSENT
+ _ZN21QDeclarativeListModel3setEiRK12QScriptValue @ 544 NONAME ABSENT
+ _ZN21QDeclarativeListModel4moveEiii @ 545 NONAME ABSENT
+ _ZN21QDeclarativeListModel4syncEv @ 546 NONAME ABSENT
+ _ZN21QDeclarativeListModel5agentEv @ 547 NONAME ABSENT
+ _ZN21QDeclarativeListModel5clearEv @ 548 NONAME ABSENT
+ _ZN21QDeclarativeListModel6appendERK12QScriptValue @ 549 NONAME ABSENT
+ _ZN21QDeclarativeListModel6insertEiRK12QScriptValue @ 550 NONAME ABSENT
+ _ZN21QDeclarativeListModel6removeEi @ 551 NONAME ABSENT
+ _ZN21QDeclarativeListModel7flattenEv @ 552 NONAME ABSENT
+ _ZN21QDeclarativeListModelC1EP7QObject @ 553 NONAME ABSENT
_ZN21QDeclarativeListModelC1EbP7QObject @ 554 NONAME ABSENT
- _ZN21QDeclarativeListModelC2EP7QObject @ 555 NONAME
+ _ZN21QDeclarativeListModelC2EP7QObject @ 555 NONAME ABSENT
_ZN21QDeclarativeListModelC2EbP7QObject @ 556 NONAME ABSENT
- _ZN21QDeclarativeListModelD0Ev @ 557 NONAME
- _ZN21QDeclarativeListModelD1Ev @ 558 NONAME
- _ZN21QDeclarativeListModelD2Ev @ 559 NONAME
- _ZN21QDeclarativeRectangle11qt_metacallEN11QMetaObject4CallEiPPv @ 560 NONAME
- _ZN21QDeclarativeRectangle11qt_metacastEPKc @ 561 NONAME
- _ZN21QDeclarativeRectangle11setGradientEP20QDeclarativeGradient @ 562 NONAME
- _ZN21QDeclarativeRectangle12colorChangedEv @ 563 NONAME
- _ZN21QDeclarativeRectangle13radiusChangedEv @ 564 NONAME
- _ZN21QDeclarativeRectangle16staticMetaObjectE @ 565 NONAME DATA 16
- _ZN21QDeclarativeRectangle19generateRoundedRectEv @ 566 NONAME
- _ZN21QDeclarativeRectangle19getStaticMetaObjectEv @ 567 NONAME
- _ZN21QDeclarativeRectangle20generateBorderedRectEv @ 568 NONAME
- _ZN21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 569 NONAME
- _ZN21QDeclarativeRectangle6borderEv @ 570 NONAME
- _ZN21QDeclarativeRectangle8doUpdateEv @ 571 NONAME
- _ZN21QDeclarativeRectangle8drawRectER8QPainter @ 572 NONAME
- _ZN21QDeclarativeRectangle8setColorERK6QColor @ 573 NONAME
- _ZN21QDeclarativeRectangle9setRadiusEf @ 574 NONAME
- _ZN21QDeclarativeRectangleC1EP16QDeclarativeItem @ 575 NONAME
- _ZN21QDeclarativeRectangleC2EP16QDeclarativeItem @ 576 NONAME
- _ZN21QDeclarativeScaleGrid11qt_metacallEN11QMetaObject4CallEiPPv @ 577 NONAME
- _ZN21QDeclarativeScaleGrid11qt_metacastEPKc @ 578 NONAME
- _ZN21QDeclarativeScaleGrid13borderChangedEv @ 579 NONAME
- _ZN21QDeclarativeScaleGrid16staticMetaObjectE @ 580 NONAME DATA 16
- _ZN21QDeclarativeScaleGrid19getStaticMetaObjectEv @ 581 NONAME
- _ZN21QDeclarativeScaleGrid6setTopEi @ 582 NONAME
- _ZN21QDeclarativeScaleGrid7setLeftEi @ 583 NONAME
- _ZN21QDeclarativeScaleGrid8setRightEi @ 584 NONAME
- _ZN21QDeclarativeScaleGrid9setBottomEi @ 585 NONAME
- _ZN21QDeclarativeScaleGridC1EP7QObject @ 586 NONAME
- _ZN21QDeclarativeScaleGridC2EP7QObject @ 587 NONAME
- _ZN21QDeclarativeScaleGridD0Ev @ 588 NONAME
- _ZN21QDeclarativeScaleGridD1Ev @ 589 NONAME
- _ZN21QDeclarativeScaleGridD2Ev @ 590 NONAME
- _ZN21QDeclarativeValueType11qt_metacallEN11QMetaObject4CallEiPPv @ 591 NONAME
- _ZN21QDeclarativeValueType11qt_metacastEPKc @ 592 NONAME
- _ZN21QDeclarativeValueType16staticMetaObjectE @ 593 NONAME DATA 16
- _ZN21QDeclarativeValueType19getStaticMetaObjectEv @ 594 NONAME
- _ZN21QDeclarativeValueTypeC2EP7QObject @ 595 NONAME
- _ZN22QDeclarativeDebugQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 596 NONAME
- _ZN22QDeclarativeDebugQuery11qt_metacastEPKc @ 597 NONAME
- _ZN22QDeclarativeDebugQuery12stateChangedENS_5StateE @ 598 NONAME
- _ZN22QDeclarativeDebugQuery16staticMetaObjectE @ 599 NONAME DATA 16
- _ZN22QDeclarativeDebugQuery19getStaticMetaObjectEv @ 600 NONAME
- _ZN22QDeclarativeDebugQuery8setStateENS_5StateE @ 601 NONAME
- _ZN22QDeclarativeDebugQueryC1EP7QObject @ 602 NONAME
- _ZN22QDeclarativeDebugQueryC2EP7QObject @ 603 NONAME
- _ZN22QDeclarativeDebugWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 604 NONAME
- _ZN22QDeclarativeDebugWatch11qt_metacastEPKc @ 605 NONAME
- _ZN22QDeclarativeDebugWatch12stateChangedENS_5StateE @ 606 NONAME
- _ZN22QDeclarativeDebugWatch12valueChangedERK10QByteArrayRK8QVariant @ 607 NONAME
- _ZN22QDeclarativeDebugWatch16staticMetaObjectE @ 608 NONAME DATA 16
- _ZN22QDeclarativeDebugWatch19getStaticMetaObjectEv @ 609 NONAME
- _ZN22QDeclarativeDebugWatch8setStateENS_5StateE @ 610 NONAME
- _ZN22QDeclarativeDebugWatchC1EP7QObject @ 611 NONAME
- _ZN22QDeclarativeDebugWatchC2EP7QObject @ 612 NONAME
- _ZN22QDeclarativeDebugWatchD0Ev @ 613 NONAME
- _ZN22QDeclarativeDebugWatchD1Ev @ 614 NONAME
- _ZN22QDeclarativeDebugWatchD2Ev @ 615 NONAME
+ _ZN21QDeclarativeListModelD0Ev @ 557 NONAME ABSENT
+ _ZN21QDeclarativeListModelD1Ev @ 558 NONAME ABSENT
+ _ZN21QDeclarativeListModelD2Ev @ 559 NONAME ABSENT
+ _ZN21QDeclarativeRectangle11qt_metacallEN11QMetaObject4CallEiPPv @ 560 NONAME ABSENT
+ _ZN21QDeclarativeRectangle11qt_metacastEPKc @ 561 NONAME ABSENT
+ _ZN21QDeclarativeRectangle11setGradientEP20QDeclarativeGradient @ 562 NONAME ABSENT
+ _ZN21QDeclarativeRectangle12colorChangedEv @ 563 NONAME ABSENT
+ _ZN21QDeclarativeRectangle13radiusChangedEv @ 564 NONAME ABSENT
+ _ZN21QDeclarativeRectangle16staticMetaObjectE @ 565 NONAME DATA 16 ABSENT
+ _ZN21QDeclarativeRectangle19generateRoundedRectEv @ 566 NONAME ABSENT
+ _ZN21QDeclarativeRectangle19getStaticMetaObjectEv @ 567 NONAME ABSENT
+ _ZN21QDeclarativeRectangle20generateBorderedRectEv @ 568 NONAME ABSENT
+ _ZN21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 569 NONAME ABSENT
+ _ZN21QDeclarativeRectangle6borderEv @ 570 NONAME ABSENT
+ _ZN21QDeclarativeRectangle8doUpdateEv @ 571 NONAME ABSENT
+ _ZN21QDeclarativeRectangle8drawRectER8QPainter @ 572 NONAME ABSENT
+ _ZN21QDeclarativeRectangle8setColorERK6QColor @ 573 NONAME ABSENT
+ _ZN21QDeclarativeRectangle9setRadiusEf @ 574 NONAME ABSENT
+ _ZN21QDeclarativeRectangleC1EP16QDeclarativeItem @ 575 NONAME ABSENT
+ _ZN21QDeclarativeRectangleC2EP16QDeclarativeItem @ 576 NONAME ABSENT
+ _ZN21QDeclarativeScaleGrid11qt_metacallEN11QMetaObject4CallEiPPv @ 577 NONAME ABSENT
+ _ZN21QDeclarativeScaleGrid11qt_metacastEPKc @ 578 NONAME ABSENT
+ _ZN21QDeclarativeScaleGrid13borderChangedEv @ 579 NONAME ABSENT
+ _ZN21QDeclarativeScaleGrid16staticMetaObjectE @ 580 NONAME DATA 16 ABSENT
+ _ZN21QDeclarativeScaleGrid19getStaticMetaObjectEv @ 581 NONAME ABSENT
+ _ZN21QDeclarativeScaleGrid6setTopEi @ 582 NONAME ABSENT
+ _ZN21QDeclarativeScaleGrid7setLeftEi @ 583 NONAME ABSENT
+ _ZN21QDeclarativeScaleGrid8setRightEi @ 584 NONAME ABSENT
+ _ZN21QDeclarativeScaleGrid9setBottomEi @ 585 NONAME ABSENT
+ _ZN21QDeclarativeScaleGridC1EP7QObject @ 586 NONAME ABSENT
+ _ZN21QDeclarativeScaleGridC2EP7QObject @ 587 NONAME ABSENT
+ _ZN21QDeclarativeScaleGridD0Ev @ 588 NONAME ABSENT
+ _ZN21QDeclarativeScaleGridD1Ev @ 589 NONAME ABSENT
+ _ZN21QDeclarativeScaleGridD2Ev @ 590 NONAME ABSENT
+ _ZN21QDeclarativeValueType11qt_metacallEN11QMetaObject4CallEiPPv @ 591 NONAME ABSENT
+ _ZN21QDeclarativeValueType11qt_metacastEPKc @ 592 NONAME ABSENT
+ _ZN21QDeclarativeValueType16staticMetaObjectE @ 593 NONAME DATA 16 ABSENT
+ _ZN21QDeclarativeValueType19getStaticMetaObjectEv @ 594 NONAME ABSENT
+ _ZN21QDeclarativeValueTypeC2EP7QObject @ 595 NONAME ABSENT
+ _ZN22QDeclarativeDebugQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 596 NONAME ABSENT
+ _ZN22QDeclarativeDebugQuery11qt_metacastEPKc @ 597 NONAME ABSENT
+ _ZN22QDeclarativeDebugQuery12stateChangedENS_5StateE @ 598 NONAME ABSENT
+ _ZN22QDeclarativeDebugQuery16staticMetaObjectE @ 599 NONAME DATA 16 ABSENT
+ _ZN22QDeclarativeDebugQuery19getStaticMetaObjectEv @ 600 NONAME ABSENT
+ _ZN22QDeclarativeDebugQuery8setStateENS_5StateE @ 601 NONAME ABSENT
+ _ZN22QDeclarativeDebugQueryC1EP7QObject @ 602 NONAME ABSENT
+ _ZN22QDeclarativeDebugQueryC2EP7QObject @ 603 NONAME ABSENT
+ _ZN22QDeclarativeDebugWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 604 NONAME ABSENT
+ _ZN22QDeclarativeDebugWatch11qt_metacastEPKc @ 605 NONAME ABSENT
+ _ZN22QDeclarativeDebugWatch12stateChangedENS_5StateE @ 606 NONAME ABSENT
+ _ZN22QDeclarativeDebugWatch12valueChangedERK10QByteArrayRK8QVariant @ 607 NONAME ABSENT
+ _ZN22QDeclarativeDebugWatch16staticMetaObjectE @ 608 NONAME DATA 16 ABSENT
+ _ZN22QDeclarativeDebugWatch19getStaticMetaObjectEv @ 609 NONAME ABSENT
+ _ZN22QDeclarativeDebugWatch8setStateENS_5StateE @ 610 NONAME ABSENT
+ _ZN22QDeclarativeDebugWatchC1EP7QObject @ 611 NONAME ABSENT
+ _ZN22QDeclarativeDebugWatchC2EP7QObject @ 612 NONAME ABSENT
+ _ZN22QDeclarativeDebugWatchD0Ev @ 613 NONAME ABSENT
+ _ZN22QDeclarativeDebugWatchD1Ev @ 614 NONAME ABSENT
+ _ZN22QDeclarativeDebugWatchD2Ev @ 615 NONAME ABSENT
_ZN22QDeclarativeExpression10clearErrorEv @ 616 NONAME
_ZN22QDeclarativeExpression11qt_metacallEN11QMetaObject4CallEiPPv @ 617 NONAME
_ZN22QDeclarativeExpression11qt_metacastEPKc @ 618 NONAME
@@ -674,49 +674,49 @@ EXPORTS
_ZN22QDeclarativeTransitionD1Ev @ 673 NONAME
_ZN22QDeclarativeTransitionD2Ev @ 674 NONAME
_ZN23QDeclarativeDebugClient10setEnabledEb @ 675 NONAME ABSENT
- _ZN23QDeclarativeDebugClient11qt_metacallEN11QMetaObject4CallEiPPv @ 676 NONAME
- _ZN23QDeclarativeDebugClient11qt_metacastEPKc @ 677 NONAME
- _ZN23QDeclarativeDebugClient11sendMessageERK10QByteArray @ 678 NONAME
- _ZN23QDeclarativeDebugClient15messageReceivedERK10QByteArray @ 679 NONAME
- _ZN23QDeclarativeDebugClient16staticMetaObjectE @ 680 NONAME DATA 16
- _ZN23QDeclarativeDebugClient19getStaticMetaObjectEv @ 681 NONAME
- _ZN23QDeclarativeDebugClientC1ERK7QStringP27QDeclarativeDebugConnection @ 682 NONAME
- _ZN23QDeclarativeDebugClientC2ERK7QStringP27QDeclarativeDebugConnection @ 683 NONAME
- _ZN23QDeclarativeDomDocument4loadEP18QDeclarativeEngineRK10QByteArrayRK4QUrl @ 684 NONAME
- _ZN23QDeclarativeDomDocumentC1ERKS_ @ 685 NONAME
- _ZN23QDeclarativeDomDocumentC1Ev @ 686 NONAME
- _ZN23QDeclarativeDomDocumentC2ERKS_ @ 687 NONAME
- _ZN23QDeclarativeDomDocumentC2Ev @ 688 NONAME
- _ZN23QDeclarativeDomDocumentD1Ev @ 689 NONAME
- _ZN23QDeclarativeDomDocumentD2Ev @ 690 NONAME
- _ZN23QDeclarativeDomDocumentaSERKS_ @ 691 NONAME
- _ZN23QDeclarativeDomPropertyC1ERKS_ @ 692 NONAME
- _ZN23QDeclarativeDomPropertyC1Ev @ 693 NONAME
- _ZN23QDeclarativeDomPropertyC2ERKS_ @ 694 NONAME
- _ZN23QDeclarativeDomPropertyC2Ev @ 695 NONAME
- _ZN23QDeclarativeDomPropertyD1Ev @ 696 NONAME
- _ZN23QDeclarativeDomPropertyD2Ev @ 697 NONAME
- _ZN23QDeclarativeDomPropertyaSERKS_ @ 698 NONAME
- _ZN23QDeclarativeEngineDebug11qt_metacallEN11QMetaObject4CallEiPPv @ 699 NONAME
- _ZN23QDeclarativeEngineDebug11qt_metacastEPKc @ 700 NONAME
- _ZN23QDeclarativeEngineDebug11queryObjectERK32QDeclarativeDebugObjectReferenceP7QObject @ 701 NONAME
- _ZN23QDeclarativeEngineDebug11removeWatchEP22QDeclarativeDebugWatch @ 702 NONAME
- _ZN23QDeclarativeEngineDebug13setMethodBodyEiRK7QStringS2_ @ 703 NONAME
- _ZN23QDeclarativeEngineDebug16staticMetaObjectE @ 704 NONAME DATA 16
- _ZN23QDeclarativeEngineDebug17queryRootContextsERK32QDeclarativeDebugEngineReferenceP7QObject @ 705 NONAME
- _ZN23QDeclarativeEngineDebug19getStaticMetaObjectEv @ 706 NONAME
- _ZN23QDeclarativeEngineDebug19setBindingForObjectEiRK7QStringRK8QVariantb @ 707 NONAME
- _ZN23QDeclarativeEngineDebug20queryObjectRecursiveERK32QDeclarativeDebugObjectReferenceP7QObject @ 708 NONAME
- _ZN23QDeclarativeEngineDebug21queryAvailableEnginesEP7QObject @ 709 NONAME
- _ZN23QDeclarativeEngineDebug21queryExpressionResultEiRK7QStringP7QObject @ 710 NONAME
- _ZN23QDeclarativeEngineDebug21resetBindingForObjectEiRK7QString @ 711 NONAME
- _ZN23QDeclarativeEngineDebug8addWatchERK30QDeclarativeDebugFileReferenceP7QObject @ 712 NONAME
- _ZN23QDeclarativeEngineDebug8addWatchERK32QDeclarativeDebugObjectReferenceP7QObject @ 713 NONAME
- _ZN23QDeclarativeEngineDebug8addWatchERK32QDeclarativeDebugObjectReferenceRK7QStringP7QObject @ 714 NONAME
- _ZN23QDeclarativeEngineDebug8addWatchERK33QDeclarativeDebugContextReferenceRK7QStringP7QObject @ 715 NONAME
- _ZN23QDeclarativeEngineDebug8addWatchERK34QDeclarativeDebugPropertyReferenceP7QObject @ 716 NONAME
- _ZN23QDeclarativeEngineDebugC1EP27QDeclarativeDebugConnectionP7QObject @ 717 NONAME
- _ZN23QDeclarativeEngineDebugC2EP27QDeclarativeDebugConnectionP7QObject @ 718 NONAME
+ _ZN23QDeclarativeDebugClient11qt_metacallEN11QMetaObject4CallEiPPv @ 676 NONAME ABSENT
+ _ZN23QDeclarativeDebugClient11qt_metacastEPKc @ 677 NONAME ABSENT
+ _ZN23QDeclarativeDebugClient11sendMessageERK10QByteArray @ 678 NONAME ABSENT
+ _ZN23QDeclarativeDebugClient15messageReceivedERK10QByteArray @ 679 NONAME ABSENT
+ _ZN23QDeclarativeDebugClient16staticMetaObjectE @ 680 NONAME DATA 16 ABSENT
+ _ZN23QDeclarativeDebugClient19getStaticMetaObjectEv @ 681 NONAME ABSENT
+ _ZN23QDeclarativeDebugClientC1ERK7QStringP27QDeclarativeDebugConnection @ 682 NONAME ABSENT
+ _ZN23QDeclarativeDebugClientC2ERK7QStringP27QDeclarativeDebugConnection @ 683 NONAME ABSENT
+ _ZN23QDeclarativeDomDocument4loadEP18QDeclarativeEngineRK10QByteArrayRK4QUrl @ 684 NONAME ABSENT
+ _ZN23QDeclarativeDomDocumentC1ERKS_ @ 685 NONAME ABSENT
+ _ZN23QDeclarativeDomDocumentC1Ev @ 686 NONAME ABSENT
+ _ZN23QDeclarativeDomDocumentC2ERKS_ @ 687 NONAME ABSENT
+ _ZN23QDeclarativeDomDocumentC2Ev @ 688 NONAME ABSENT
+ _ZN23QDeclarativeDomDocumentD1Ev @ 689 NONAME ABSENT
+ _ZN23QDeclarativeDomDocumentD2Ev @ 690 NONAME ABSENT
+ _ZN23QDeclarativeDomDocumentaSERKS_ @ 691 NONAME ABSENT
+ _ZN23QDeclarativeDomPropertyC1ERKS_ @ 692 NONAME ABSENT
+ _ZN23QDeclarativeDomPropertyC1Ev @ 693 NONAME ABSENT
+ _ZN23QDeclarativeDomPropertyC2ERKS_ @ 694 NONAME ABSENT
+ _ZN23QDeclarativeDomPropertyC2Ev @ 695 NONAME ABSENT
+ _ZN23QDeclarativeDomPropertyD1Ev @ 696 NONAME ABSENT
+ _ZN23QDeclarativeDomPropertyD2Ev @ 697 NONAME ABSENT
+ _ZN23QDeclarativeDomPropertyaSERKS_ @ 698 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug11qt_metacallEN11QMetaObject4CallEiPPv @ 699 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug11qt_metacastEPKc @ 700 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug11queryObjectERK32QDeclarativeDebugObjectReferenceP7QObject @ 701 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug11removeWatchEP22QDeclarativeDebugWatch @ 702 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug13setMethodBodyEiRK7QStringS2_ @ 703 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug16staticMetaObjectE @ 704 NONAME DATA 16 ABSENT
+ _ZN23QDeclarativeEngineDebug17queryRootContextsERK32QDeclarativeDebugEngineReferenceP7QObject @ 705 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug19getStaticMetaObjectEv @ 706 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug19setBindingForObjectEiRK7QStringRK8QVariantb @ 707 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug20queryObjectRecursiveERK32QDeclarativeDebugObjectReferenceP7QObject @ 708 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug21queryAvailableEnginesEP7QObject @ 709 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug21queryExpressionResultEiRK7QStringP7QObject @ 710 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug21resetBindingForObjectEiRK7QString @ 711 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug8addWatchERK30QDeclarativeDebugFileReferenceP7QObject @ 712 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug8addWatchERK32QDeclarativeDebugObjectReferenceP7QObject @ 713 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug8addWatchERK32QDeclarativeDebugObjectReferenceRK7QStringP7QObject @ 714 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug8addWatchERK33QDeclarativeDebugContextReferenceRK7QStringP7QObject @ 715 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug8addWatchERK34QDeclarativeDebugPropertyReferenceP7QObject @ 716 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebugC1EP27QDeclarativeDebugConnectionP7QObject @ 717 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebugC2EP27QDeclarativeDebugConnectionP7QObject @ 718 NONAME ABSENT
_ZN23QDeclarativeItemPrivate10resetWidthEv @ 719 NONAME
_ZN23QDeclarativeItemPrivate11data_appendEP24QDeclarativeListPropertyI7QObjectEPS1_ @ 720 NONAME
_ZN23QDeclarativeItemPrivate11resetHeightEv @ 721 NONAME
@@ -761,27 +761,27 @@ EXPORTS
_ZN24QDeclarativeCustomParser5errorERK28QDeclarativeCustomParserNodeRK7QString @ 760 NONAME
_ZN24QDeclarativeCustomParser5errorERK32QDeclarativeCustomParserPropertyRK7QString @ 761 NONAME
_ZN24QDeclarativeCustomParser5errorERK7QString @ 762 NONAME
- _ZN24QDeclarativeDebugService11idForObjectEP7QObject @ 763 NONAME
- _ZN24QDeclarativeDebugService11objectForIdEi @ 764 NONAME
- _ZN24QDeclarativeDebugService11qt_metacallEN11QMetaObject4CallEiPPv @ 765 NONAME
- _ZN24QDeclarativeDebugService11qt_metacastEPKc @ 766 NONAME
- _ZN24QDeclarativeDebugService11sendMessageERK10QByteArray @ 767 NONAME
+ _ZN24QDeclarativeDebugService11idForObjectEP7QObject @ 763 NONAME ABSENT
+ _ZN24QDeclarativeDebugService11objectForIdEi @ 764 NONAME ABSENT
+ _ZN24QDeclarativeDebugService11qt_metacallEN11QMetaObject4CallEiPPv @ 765 NONAME ABSENT
+ _ZN24QDeclarativeDebugService11qt_metacastEPKc @ 766 NONAME ABSENT
+ _ZN24QDeclarativeDebugService11sendMessageERK10QByteArray @ 767 NONAME ABSENT
_ZN24QDeclarativeDebugService14enabledChangedEb @ 768 NONAME ABSENT
- _ZN24QDeclarativeDebugService14objectToStringEP7QObject @ 769 NONAME
- _ZN24QDeclarativeDebugService15messageReceivedERK10QByteArray @ 770 NONAME
- _ZN24QDeclarativeDebugService16staticMetaObjectE @ 771 NONAME DATA 16
- _ZN24QDeclarativeDebugService18hasDebuggingClientEv @ 772 NONAME
- _ZN24QDeclarativeDebugService18isDebuggingEnabledEv @ 773 NONAME
- _ZN24QDeclarativeDebugService19getStaticMetaObjectEv @ 774 NONAME
- _ZN24QDeclarativeDebugServiceC1ERK7QStringP7QObject @ 775 NONAME
- _ZN24QDeclarativeDebugServiceC2ERK7QStringP7QObject @ 776 NONAME
- _ZN24QDeclarativeDomComponentC1ERKS_ @ 777 NONAME
- _ZN24QDeclarativeDomComponentC1Ev @ 778 NONAME
- _ZN24QDeclarativeDomComponentC2ERKS_ @ 779 NONAME
- _ZN24QDeclarativeDomComponentC2Ev @ 780 NONAME
- _ZN24QDeclarativeDomComponentD1Ev @ 781 NONAME
- _ZN24QDeclarativeDomComponentD2Ev @ 782 NONAME
- _ZN24QDeclarativeDomComponentaSERKS_ @ 783 NONAME
+ _ZN24QDeclarativeDebugService14objectToStringEP7QObject @ 769 NONAME ABSENT
+ _ZN24QDeclarativeDebugService15messageReceivedERK10QByteArray @ 770 NONAME ABSENT
+ _ZN24QDeclarativeDebugService16staticMetaObjectE @ 771 NONAME DATA 16 ABSENT
+ _ZN24QDeclarativeDebugService18hasDebuggingClientEv @ 772 NONAME ABSENT
+ _ZN24QDeclarativeDebugService18isDebuggingEnabledEv @ 773 NONAME ABSENT
+ _ZN24QDeclarativeDebugService19getStaticMetaObjectEv @ 774 NONAME ABSENT
+ _ZN24QDeclarativeDebugServiceC1ERK7QStringP7QObject @ 775 NONAME ABSENT
+ _ZN24QDeclarativeDebugServiceC2ERK7QStringP7QObject @ 776 NONAME ABSENT
+ _ZN24QDeclarativeDomComponentC1ERKS_ @ 777 NONAME ABSENT
+ _ZN24QDeclarativeDomComponentC1Ev @ 778 NONAME ABSENT
+ _ZN24QDeclarativeDomComponentC2ERKS_ @ 779 NONAME ABSENT
+ _ZN24QDeclarativeDomComponentC2Ev @ 780 NONAME ABSENT
+ _ZN24QDeclarativeDomComponentD1Ev @ 781 NONAME ABSENT
+ _ZN24QDeclarativeDomComponentD2Ev @ 782 NONAME ABSENT
+ _ZN24QDeclarativeDomComponentaSERKS_ @ 783 NONAME ABSENT
_ZN24QDeclarativeParserStatusC2Ev @ 784 NONAME
_ZN24QDeclarativeParserStatusD0Ev @ 785 NONAME
_ZN24QDeclarativeParserStatusD1Ev @ 786 NONAME
@@ -812,29 +812,29 @@ EXPORTS
_ZN25QDeclarativeListReferenceD1Ev @ 811 NONAME
_ZN25QDeclarativeListReferenceD2Ev @ 812 NONAME
_ZN25QDeclarativeListReferenceaSERKS_ @ 813 NONAME
- _ZN26QDeclarativeDebuggerStatus16setSelectedStateEb @ 814 NONAME
- _ZN26QDeclarativeDebuggerStatusD0Ev @ 815 NONAME
- _ZN26QDeclarativeDebuggerStatusD1Ev @ 816 NONAME
- _ZN26QDeclarativeDebuggerStatusD2Ev @ 817 NONAME
- _ZN26QDeclarativeOpenMetaObject12initialValueEi @ 818 NONAME
- _ZN26QDeclarativeOpenMetaObject12propertyReadEi @ 819 NONAME
- _ZN26QDeclarativeOpenMetaObject13propertyWriteEi @ 820 NONAME
- _ZN26QDeclarativeOpenMetaObject14createPropertyEPKcS1_ @ 821 NONAME
- _ZN26QDeclarativeOpenMetaObject15propertyCreatedEiR20QMetaPropertyBuilder @ 822 NONAME
- _ZN26QDeclarativeOpenMetaObject15propertyWrittenEi @ 823 NONAME
- _ZN26QDeclarativeOpenMetaObject8metaCallEN11QMetaObject4CallEiPPv @ 824 NONAME
- _ZN26QDeclarativeOpenMetaObject8setValueERK10QByteArrayRK8QVariant @ 825 NONAME
- _ZN26QDeclarativeOpenMetaObject8setValueEiRK8QVariant @ 826 NONAME
- _ZN26QDeclarativeOpenMetaObject9setCachedEb @ 827 NONAME
- _ZN26QDeclarativeOpenMetaObjectC1EP7QObjectP30QDeclarativeOpenMetaObjectTypeb @ 828 NONAME
- _ZN26QDeclarativeOpenMetaObjectC1EP7QObjectb @ 829 NONAME
- _ZN26QDeclarativeOpenMetaObjectC2EP7QObjectP30QDeclarativeOpenMetaObjectTypeb @ 830 NONAME
- _ZN26QDeclarativeOpenMetaObjectC2EP7QObjectb @ 831 NONAME
- _ZN26QDeclarativeOpenMetaObjectD0Ev @ 832 NONAME
- _ZN26QDeclarativeOpenMetaObjectD1Ev @ 833 NONAME
- _ZN26QDeclarativeOpenMetaObjectD2Ev @ 834 NONAME
- _ZN26QDeclarativeOpenMetaObjectixERK10QByteArray @ 835 NONAME
- _ZN26QDeclarativeOpenMetaObjectixEi @ 836 NONAME
+ _ZN26QDeclarativeDebuggerStatus16setSelectedStateEb @ 814 NONAME ABSENT
+ _ZN26QDeclarativeDebuggerStatusD0Ev @ 815 NONAME ABSENT
+ _ZN26QDeclarativeDebuggerStatusD1Ev @ 816 NONAME ABSENT
+ _ZN26QDeclarativeDebuggerStatusD2Ev @ 817 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObject12initialValueEi @ 818 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObject12propertyReadEi @ 819 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObject13propertyWriteEi @ 820 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObject14createPropertyEPKcS1_ @ 821 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObject15propertyCreatedEiR20QMetaPropertyBuilder @ 822 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObject15propertyWrittenEi @ 823 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObject8metaCallEN11QMetaObject4CallEiPPv @ 824 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObject8setValueERK10QByteArrayRK8QVariant @ 825 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObject8setValueEiRK8QVariant @ 826 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObject9setCachedEb @ 827 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObjectC1EP7QObjectP30QDeclarativeOpenMetaObjectTypeb @ 828 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObjectC1EP7QObjectb @ 829 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObjectC2EP7QObjectP30QDeclarativeOpenMetaObjectTypeb @ 830 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObjectC2EP7QObjectb @ 831 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObjectD0Ev @ 832 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObjectD1Ev @ 833 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObjectD2Ev @ 834 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObjectixERK10QByteArray @ 835 NONAME ABSENT
+ _ZN26QDeclarativeOpenMetaObjectixEi @ 836 NONAME ABSENT
_ZN26QDeclarativeStateOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 837 NONAME
_ZN26QDeclarativeStateOperation11qt_metacastEPKc @ 838 NONAME
_ZN26QDeclarativeStateOperation16staticMetaObjectE @ 839 NONAME DATA 16
@@ -842,35 +842,35 @@ EXPORTS
_ZN26QDeclarativeStateOperation7actionsEv @ 841 NONAME
_ZN26QDeclarativeStateOperationC1ER14QObjectPrivateP7QObject @ 842 NONAME
_ZN26QDeclarativeStateOperationC2ER14QObjectPrivateP7QObject @ 843 NONAME
- _ZN27QDeclarativeAbstractBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 844 NONAME
- _ZN27QDeclarativeAbstractBinding11addToObjectEP7QObject @ 845 NONAME
- _ZN27QDeclarativeAbstractBinding16removeFromObjectEv @ 846 NONAME
- _ZN27QDeclarativeAbstractBinding5clearEv @ 847 NONAME
- _ZN27QDeclarativeAbstractBinding7destroyEv @ 848 NONAME
- _ZN27QDeclarativeAbstractBindingC2Ev @ 849 NONAME
- _ZN27QDeclarativeAbstractBindingD0Ev @ 850 NONAME
- _ZN27QDeclarativeAbstractBindingD1Ev @ 851 NONAME
- _ZN27QDeclarativeAbstractBindingD2Ev @ 852 NONAME
- _ZN27QDeclarativeDebugConnection11qt_metacallEN11QMetaObject4CallEiPPv @ 853 NONAME
- _ZN27QDeclarativeDebugConnection11qt_metacastEPKc @ 854 NONAME
- _ZN27QDeclarativeDebugConnection16staticMetaObjectE @ 855 NONAME DATA 16
- _ZN27QDeclarativeDebugConnection19getStaticMetaObjectEv @ 856 NONAME
- _ZN27QDeclarativeDebugConnectionC1EP7QObject @ 857 NONAME
- _ZN27QDeclarativeDebugConnectionC2EP7QObject @ 858 NONAME
- _ZN27QDeclarativeDomValueBindingC1ERKS_ @ 859 NONAME
- _ZN27QDeclarativeDomValueBindingC1Ev @ 860 NONAME
- _ZN27QDeclarativeDomValueBindingC2ERKS_ @ 861 NONAME
- _ZN27QDeclarativeDomValueBindingC2Ev @ 862 NONAME
- _ZN27QDeclarativeDomValueBindingD1Ev @ 863 NONAME
- _ZN27QDeclarativeDomValueBindingD2Ev @ 864 NONAME
- _ZN27QDeclarativeDomValueBindingaSERKS_ @ 865 NONAME
- _ZN27QDeclarativeDomValueLiteralC1ERKS_ @ 866 NONAME
- _ZN27QDeclarativeDomValueLiteralC1Ev @ 867 NONAME
- _ZN27QDeclarativeDomValueLiteralC2ERKS_ @ 868 NONAME
- _ZN27QDeclarativeDomValueLiteralC2Ev @ 869 NONAME
- _ZN27QDeclarativeDomValueLiteralD1Ev @ 870 NONAME
- _ZN27QDeclarativeDomValueLiteralD2Ev @ 871 NONAME
- _ZN27QDeclarativeDomValueLiteralaSERKS_ @ 872 NONAME
+ _ZN27QDeclarativeAbstractBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 844 NONAME ABSENT
+ _ZN27QDeclarativeAbstractBinding11addToObjectEP7QObject @ 845 NONAME ABSENT
+ _ZN27QDeclarativeAbstractBinding16removeFromObjectEv @ 846 NONAME ABSENT
+ _ZN27QDeclarativeAbstractBinding5clearEv @ 847 NONAME ABSENT
+ _ZN27QDeclarativeAbstractBinding7destroyEv @ 848 NONAME ABSENT
+ _ZN27QDeclarativeAbstractBindingC2Ev @ 849 NONAME ABSENT
+ _ZN27QDeclarativeAbstractBindingD0Ev @ 850 NONAME ABSENT
+ _ZN27QDeclarativeAbstractBindingD1Ev @ 851 NONAME ABSENT
+ _ZN27QDeclarativeAbstractBindingD2Ev @ 852 NONAME ABSENT
+ _ZN27QDeclarativeDebugConnection11qt_metacallEN11QMetaObject4CallEiPPv @ 853 NONAME ABSENT
+ _ZN27QDeclarativeDebugConnection11qt_metacastEPKc @ 854 NONAME ABSENT
+ _ZN27QDeclarativeDebugConnection16staticMetaObjectE @ 855 NONAME DATA 16 ABSENT
+ _ZN27QDeclarativeDebugConnection19getStaticMetaObjectEv @ 856 NONAME ABSENT
+ _ZN27QDeclarativeDebugConnectionC1EP7QObject @ 857 NONAME ABSENT
+ _ZN27QDeclarativeDebugConnectionC2EP7QObject @ 858 NONAME ABSENT
+ _ZN27QDeclarativeDomValueBindingC1ERKS_ @ 859 NONAME ABSENT
+ _ZN27QDeclarativeDomValueBindingC1Ev @ 860 NONAME ABSENT
+ _ZN27QDeclarativeDomValueBindingC2ERKS_ @ 861 NONAME ABSENT
+ _ZN27QDeclarativeDomValueBindingC2Ev @ 862 NONAME ABSENT
+ _ZN27QDeclarativeDomValueBindingD1Ev @ 863 NONAME ABSENT
+ _ZN27QDeclarativeDomValueBindingD2Ev @ 864 NONAME ABSENT
+ _ZN27QDeclarativeDomValueBindingaSERKS_ @ 865 NONAME ABSENT
+ _ZN27QDeclarativeDomValueLiteralC1ERKS_ @ 866 NONAME ABSENT
+ _ZN27QDeclarativeDomValueLiteralC1Ev @ 867 NONAME ABSENT
+ _ZN27QDeclarativeDomValueLiteralC2ERKS_ @ 868 NONAME ABSENT
+ _ZN27QDeclarativeDomValueLiteralC2Ev @ 869 NONAME ABSENT
+ _ZN27QDeclarativeDomValueLiteralD1Ev @ 870 NONAME ABSENT
+ _ZN27QDeclarativeDomValueLiteralD2Ev @ 871 NONAME ABSENT
+ _ZN27QDeclarativeDomValueLiteralaSERKS_ @ 872 NONAME ABSENT
_ZN27QDeclarativeExtensionPlugin11qt_metacallEN11QMetaObject4CallEiPPv @ 873 NONAME
_ZN27QDeclarativeExtensionPlugin11qt_metacastEPKc @ 874 NONAME
_ZN27QDeclarativeExtensionPlugin16initializeEngineEP18QDeclarativeEnginePKc @ 875 NONAME
@@ -880,35 +880,35 @@ EXPORTS
_ZN27QDeclarativeExtensionPluginD0Ev @ 879 NONAME
_ZN27QDeclarativeExtensionPluginD1Ev @ 880 NONAME
_ZN27QDeclarativeExtensionPluginD2Ev @ 881 NONAME
- _ZN27QDeclarativeGridScaledImage12stringToRuleERK7QString @ 882 NONAME
- _ZN27QDeclarativeGridScaledImageC1EP9QIODevice @ 883 NONAME
- _ZN27QDeclarativeGridScaledImageC1ERKS_ @ 884 NONAME
- _ZN27QDeclarativeGridScaledImageC1Ev @ 885 NONAME
- _ZN27QDeclarativeGridScaledImageC2EP9QIODevice @ 886 NONAME
- _ZN27QDeclarativeGridScaledImageC2ERKS_ @ 887 NONAME
- _ZN27QDeclarativeGridScaledImageC2Ev @ 888 NONAME
- _ZN27QDeclarativeGridScaledImageaSERKS_ @ 889 NONAME
- _ZN27QDeclarativePropertyPrivate10canConvertEPK11QMetaObjectS2_ @ 890 NONAME
- _ZN27QDeclarativePropertyPrivate10setBindingEP7QObjectiiP27QDeclarativeAbstractBinding6QFlagsINS_9WriteFlagEE @ 891 NONAME
- _ZN27QDeclarativePropertyPrivate10setBindingERK20QDeclarativePropertyP27QDeclarativeAbstractBinding6QFlagsINS_9WriteFlagEE @ 892 NONAME
- _ZN27QDeclarativePropertyPrivate11initDefaultEP7QObject @ 893 NONAME
- _ZN27QDeclarativePropertyPrivate12bindingIndexERK20QDeclarativeProperty @ 894 NONAME
- _ZN27QDeclarativePropertyPrivate12initPropertyEP7QObjectRK7QString @ 895 NONAME
- _ZN27QDeclarativePropertyPrivate12savePropertyEPK11QMetaObjecti @ 896 NONAME
- _ZN27QDeclarativePropertyPrivate13saveValueTypeEPK11QMetaObjectiS2_i @ 897 NONAME
- _ZN27QDeclarativePropertyPrivate16findSignalByNameEPK11QMetaObjectRK10QByteArray @ 898 NONAME
- _ZN27QDeclarativePropertyPrivate16signalExpressionERK20QDeclarativeProperty @ 899 NONAME
- _ZN27QDeclarativePropertyPrivate17readValuePropertyEv @ 900 NONAME
- _ZN27QDeclarativePropertyPrivate17writeEnumPropertyERK13QMetaPropertyiP7QObjectRK8QVarianti @ 901 NONAME
- _ZN27QDeclarativePropertyPrivate18valueTypeCoreIndexERK20QDeclarativeProperty @ 902 NONAME
- _ZN27QDeclarativePropertyPrivate18writeValuePropertyERK8QVariant6QFlagsINS_9WriteFlagEE @ 903 NONAME
- _ZN27QDeclarativePropertyPrivate19setSignalExpressionERK20QDeclarativePropertyP22QDeclarativeExpression @ 904 NONAME
- _ZN27QDeclarativePropertyPrivate20rawMetaObjectForTypeEP25QDeclarativeEnginePrivatei @ 905 NONAME
- _ZN27QDeclarativePropertyPrivate5equalEPK11QMetaObjectS2_ @ 906 NONAME
- _ZN27QDeclarativePropertyPrivate5writeEP7QObjectRKN25QDeclarativePropertyCache4DataERK8QVariantP23QDeclarativeContextData6QFlagsINS_9WriteFlagEE @ 907 NONAME
- _ZN27QDeclarativePropertyPrivate5writeERK20QDeclarativePropertyRK8QVariant6QFlagsINS_9WriteFlagEE @ 908 NONAME
- _ZN27QDeclarativePropertyPrivate7bindingERK20QDeclarativeProperty @ 909 NONAME
- _ZN27QDeclarativePropertyPrivate7restoreERK10QByteArrayP7QObjectP23QDeclarativeContextData @ 910 NONAME
+ _ZN27QDeclarativeGridScaledImage12stringToRuleERK7QString @ 882 NONAME ABSENT
+ _ZN27QDeclarativeGridScaledImageC1EP9QIODevice @ 883 NONAME ABSENT
+ _ZN27QDeclarativeGridScaledImageC1ERKS_ @ 884 NONAME ABSENT
+ _ZN27QDeclarativeGridScaledImageC1Ev @ 885 NONAME ABSENT
+ _ZN27QDeclarativeGridScaledImageC2EP9QIODevice @ 886 NONAME ABSENT
+ _ZN27QDeclarativeGridScaledImageC2ERKS_ @ 887 NONAME ABSENT
+ _ZN27QDeclarativeGridScaledImageC2Ev @ 888 NONAME ABSENT
+ _ZN27QDeclarativeGridScaledImageaSERKS_ @ 889 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate10canConvertEPK11QMetaObjectS2_ @ 890 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate10setBindingEP7QObjectiiP27QDeclarativeAbstractBinding6QFlagsINS_9WriteFlagEE @ 891 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate10setBindingERK20QDeclarativePropertyP27QDeclarativeAbstractBinding6QFlagsINS_9WriteFlagEE @ 892 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate11initDefaultEP7QObject @ 893 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate12bindingIndexERK20QDeclarativeProperty @ 894 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate12initPropertyEP7QObjectRK7QString @ 895 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate12savePropertyEPK11QMetaObjecti @ 896 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate13saveValueTypeEPK11QMetaObjectiS2_i @ 897 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate16findSignalByNameEPK11QMetaObjectRK10QByteArray @ 898 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate16signalExpressionERK20QDeclarativeProperty @ 899 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate17readValuePropertyEv @ 900 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate17writeEnumPropertyERK13QMetaPropertyiP7QObjectRK8QVarianti @ 901 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate18valueTypeCoreIndexERK20QDeclarativeProperty @ 902 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate18writeValuePropertyERK8QVariant6QFlagsINS_9WriteFlagEE @ 903 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate19setSignalExpressionERK20QDeclarativePropertyP22QDeclarativeExpression @ 904 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate20rawMetaObjectForTypeEP25QDeclarativeEnginePrivatei @ 905 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate5equalEPK11QMetaObjectS2_ @ 906 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate5writeEP7QObjectRKN25QDeclarativePropertyCache4DataERK8QVariantP23QDeclarativeContextData6QFlagsINS_9WriteFlagEE @ 907 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate5writeERK20QDeclarativePropertyRK8QVariant6QFlagsINS_9WriteFlagEE @ 908 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate7bindingERK20QDeclarativeProperty @ 909 NONAME ABSENT
+ _ZN27QDeclarativePropertyPrivate7restoreERK10QByteArrayP7QObjectP23QDeclarativeContextData @ 910 NONAME ABSENT
_ZN28QDeclarativeCustomParserNodeC1ERKS_ @ 911 NONAME
_ZN28QDeclarativeCustomParserNodeC1Ev @ 912 NONAME
_ZN28QDeclarativeCustomParserNodeC2ERKS_ @ 913 NONAME
@@ -916,76 +916,76 @@ EXPORTS
_ZN28QDeclarativeCustomParserNodeD1Ev @ 915 NONAME
_ZN28QDeclarativeCustomParserNodeD2Ev @ 916 NONAME
_ZN28QDeclarativeCustomParserNodeaSERKS_ @ 917 NONAME
- _ZN28QDeclarativeDebugObjectQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 918 NONAME
- _ZN28QDeclarativeDebugObjectQuery11qt_metacastEPKc @ 919 NONAME
- _ZN28QDeclarativeDebugObjectQuery16staticMetaObjectE @ 920 NONAME DATA 16
- _ZN28QDeclarativeDebugObjectQuery19getStaticMetaObjectEv @ 921 NONAME
- _ZN28QDeclarativeDebugObjectQueryC1EP7QObject @ 922 NONAME
- _ZN28QDeclarativeDebugObjectQueryC2EP7QObject @ 923 NONAME
- _ZN28QDeclarativeDebugObjectQueryD0Ev @ 924 NONAME
- _ZN28QDeclarativeDebugObjectQueryD1Ev @ 925 NONAME
- _ZN28QDeclarativeDebugObjectQueryD2Ev @ 926 NONAME
- _ZN28QDeclarativeStringConverters14dateFromStringERK7QStringPb @ 927 NONAME
- _ZN28QDeclarativeStringConverters14timeFromStringERK7QStringPb @ 928 NONAME
- _ZN28QDeclarativeStringConverters15colorFromStringERK7QStringPb @ 929 NONAME
- _ZN28QDeclarativeStringConverters15rectFFromStringERK7QStringPb @ 930 NONAME
- _ZN28QDeclarativeStringConverters15sizeFFromStringERK7QStringPb @ 931 NONAME
- _ZN28QDeclarativeStringConverters16pointFFromStringERK7QStringPb @ 932 NONAME
- _ZN28QDeclarativeStringConverters17variantFromStringERK7QString @ 933 NONAME
- _ZN28QDeclarativeStringConverters17variantFromStringERK7QStringiPb @ 934 NONAME
- _ZN28QDeclarativeStringConverters18dateTimeFromStringERK7QStringPb @ 935 NONAME
- _ZN28QDeclarativeStringConverters18vector3DFromStringERK7QStringPb @ 936 NONAME
- _ZN28QDeclarativeValueTypeFactory11isValueTypeEi @ 937 NONAME
- _ZN28QDeclarativeValueTypeFactory18registerValueTypesEv @ 938 NONAME
- _ZN28QDeclarativeValueTypeFactory9valueTypeEi @ 939 NONAME
- _ZN28QDeclarativeValueTypeFactoryC1Ev @ 940 NONAME
- _ZN28QDeclarativeValueTypeFactoryC2Ev @ 941 NONAME
- _ZN28QDeclarativeValueTypeFactoryD1Ev @ 942 NONAME
- _ZN28QDeclarativeValueTypeFactoryD2Ev @ 943 NONAME
- _ZN29QDeclarativeDebugEnginesQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 944 NONAME
- _ZN29QDeclarativeDebugEnginesQuery11qt_metacastEPKc @ 945 NONAME
- _ZN29QDeclarativeDebugEnginesQuery16staticMetaObjectE @ 946 NONAME DATA 16
- _ZN29QDeclarativeDebugEnginesQuery19getStaticMetaObjectEv @ 947 NONAME
- _ZN29QDeclarativeDebugEnginesQueryC1EP7QObject @ 948 NONAME
- _ZN29QDeclarativeDebugEnginesQueryC2EP7QObject @ 949 NONAME
- _ZN29QDeclarativeDebugEnginesQueryD0Ev @ 950 NONAME
- _ZN29QDeclarativeDebugEnginesQueryD1Ev @ 951 NONAME
- _ZN29QDeclarativeDebugEnginesQueryD2Ev @ 952 NONAME
- _ZN30QDeclarativeDebugFileReference13setLineNumberEi @ 953 NONAME
- _ZN30QDeclarativeDebugFileReference15setColumnNumberEi @ 954 NONAME
- _ZN30QDeclarativeDebugFileReference6setUrlERK4QUrl @ 955 NONAME
- _ZN30QDeclarativeDebugFileReferenceC1ERKS_ @ 956 NONAME
- _ZN30QDeclarativeDebugFileReferenceC1Ev @ 957 NONAME
- _ZN30QDeclarativeDebugFileReferenceC2ERKS_ @ 958 NONAME
- _ZN30QDeclarativeDebugFileReferenceC2Ev @ 959 NONAME
- _ZN30QDeclarativeDebugFileReferenceaSERKS_ @ 960 NONAME
- _ZN30QDeclarativeDebugPropertyWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 961 NONAME
- _ZN30QDeclarativeDebugPropertyWatch11qt_metacastEPKc @ 962 NONAME
- _ZN30QDeclarativeDebugPropertyWatch16staticMetaObjectE @ 963 NONAME DATA 16
- _ZN30QDeclarativeDebugPropertyWatch19getStaticMetaObjectEv @ 964 NONAME
- _ZN30QDeclarativeDebugPropertyWatchC1EP7QObject @ 965 NONAME
- _ZN30QDeclarativeDebugPropertyWatchC2EP7QObject @ 966 NONAME
- _ZN30QDeclarativeDomDynamicPropertyC1ERKS_ @ 967 NONAME
- _ZN30QDeclarativeDomDynamicPropertyC1Ev @ 968 NONAME
- _ZN30QDeclarativeDomDynamicPropertyC2ERKS_ @ 969 NONAME
- _ZN30QDeclarativeDomDynamicPropertyC2Ev @ 970 NONAME
- _ZN30QDeclarativeDomDynamicPropertyD1Ev @ 971 NONAME
- _ZN30QDeclarativeDomDynamicPropertyD2Ev @ 972 NONAME
- _ZN30QDeclarativeDomDynamicPropertyaSERKS_ @ 973 NONAME
- _ZN30QDeclarativeOpenMetaObjectType14createPropertyERK10QByteArray @ 974 NONAME
- _ZN30QDeclarativeOpenMetaObjectType15propertyCreatedEiR20QMetaPropertyBuilder @ 975 NONAME
- _ZN30QDeclarativeOpenMetaObjectTypeC1EPK11QMetaObjectP18QDeclarativeEngine @ 976 NONAME
- _ZN30QDeclarativeOpenMetaObjectTypeC2EPK11QMetaObjectP18QDeclarativeEngine @ 977 NONAME
- _ZN30QDeclarativeOpenMetaObjectTypeD0Ev @ 978 NONAME
- _ZN30QDeclarativeOpenMetaObjectTypeD1Ev @ 979 NONAME
- _ZN30QDeclarativeOpenMetaObjectTypeD2Ev @ 980 NONAME
- _ZN31QDeclarativeDomValueValueSourceC1ERKS_ @ 981 NONAME
- _ZN31QDeclarativeDomValueValueSourceC1Ev @ 982 NONAME
- _ZN31QDeclarativeDomValueValueSourceC2ERKS_ @ 983 NONAME
- _ZN31QDeclarativeDomValueValueSourceC2Ev @ 984 NONAME
- _ZN31QDeclarativeDomValueValueSourceD1Ev @ 985 NONAME
- _ZN31QDeclarativeDomValueValueSourceD2Ev @ 986 NONAME
- _ZN31QDeclarativeDomValueValueSourceaSERKS_ @ 987 NONAME
+ _ZN28QDeclarativeDebugObjectQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 918 NONAME ABSENT
+ _ZN28QDeclarativeDebugObjectQuery11qt_metacastEPKc @ 919 NONAME ABSENT
+ _ZN28QDeclarativeDebugObjectQuery16staticMetaObjectE @ 920 NONAME DATA 16 ABSENT
+ _ZN28QDeclarativeDebugObjectQuery19getStaticMetaObjectEv @ 921 NONAME ABSENT
+ _ZN28QDeclarativeDebugObjectQueryC1EP7QObject @ 922 NONAME ABSENT
+ _ZN28QDeclarativeDebugObjectQueryC2EP7QObject @ 923 NONAME ABSENT
+ _ZN28QDeclarativeDebugObjectQueryD0Ev @ 924 NONAME ABSENT
+ _ZN28QDeclarativeDebugObjectQueryD1Ev @ 925 NONAME ABSENT
+ _ZN28QDeclarativeDebugObjectQueryD2Ev @ 926 NONAME ABSENT
+ _ZN28QDeclarativeStringConverters14dateFromStringERK7QStringPb @ 927 NONAME ABSENT
+ _ZN28QDeclarativeStringConverters14timeFromStringERK7QStringPb @ 928 NONAME ABSENT
+ _ZN28QDeclarativeStringConverters15colorFromStringERK7QStringPb @ 929 NONAME ABSENT
+ _ZN28QDeclarativeStringConverters15rectFFromStringERK7QStringPb @ 930 NONAME ABSENT
+ _ZN28QDeclarativeStringConverters15sizeFFromStringERK7QStringPb @ 931 NONAME ABSENT
+ _ZN28QDeclarativeStringConverters16pointFFromStringERK7QStringPb @ 932 NONAME ABSENT
+ _ZN28QDeclarativeStringConverters17variantFromStringERK7QString @ 933 NONAME ABSENT
+ _ZN28QDeclarativeStringConverters17variantFromStringERK7QStringiPb @ 934 NONAME ABSENT
+ _ZN28QDeclarativeStringConverters18dateTimeFromStringERK7QStringPb @ 935 NONAME ABSENT
+ _ZN28QDeclarativeStringConverters18vector3DFromStringERK7QStringPb @ 936 NONAME ABSENT
+ _ZN28QDeclarativeValueTypeFactory11isValueTypeEi @ 937 NONAME ABSENT
+ _ZN28QDeclarativeValueTypeFactory18registerValueTypesEv @ 938 NONAME ABSENT
+ _ZN28QDeclarativeValueTypeFactory9valueTypeEi @ 939 NONAME ABSENT
+ _ZN28QDeclarativeValueTypeFactoryC1Ev @ 940 NONAME ABSENT
+ _ZN28QDeclarativeValueTypeFactoryC2Ev @ 941 NONAME ABSENT
+ _ZN28QDeclarativeValueTypeFactoryD1Ev @ 942 NONAME ABSENT
+ _ZN28QDeclarativeValueTypeFactoryD2Ev @ 943 NONAME ABSENT
+ _ZN29QDeclarativeDebugEnginesQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 944 NONAME ABSENT
+ _ZN29QDeclarativeDebugEnginesQuery11qt_metacastEPKc @ 945 NONAME ABSENT
+ _ZN29QDeclarativeDebugEnginesQuery16staticMetaObjectE @ 946 NONAME DATA 16 ABSENT
+ _ZN29QDeclarativeDebugEnginesQuery19getStaticMetaObjectEv @ 947 NONAME ABSENT
+ _ZN29QDeclarativeDebugEnginesQueryC1EP7QObject @ 948 NONAME ABSENT
+ _ZN29QDeclarativeDebugEnginesQueryC2EP7QObject @ 949 NONAME ABSENT
+ _ZN29QDeclarativeDebugEnginesQueryD0Ev @ 950 NONAME ABSENT
+ _ZN29QDeclarativeDebugEnginesQueryD1Ev @ 951 NONAME ABSENT
+ _ZN29QDeclarativeDebugEnginesQueryD2Ev @ 952 NONAME ABSENT
+ _ZN30QDeclarativeDebugFileReference13setLineNumberEi @ 953 NONAME ABSENT
+ _ZN30QDeclarativeDebugFileReference15setColumnNumberEi @ 954 NONAME ABSENT
+ _ZN30QDeclarativeDebugFileReference6setUrlERK4QUrl @ 955 NONAME ABSENT
+ _ZN30QDeclarativeDebugFileReferenceC1ERKS_ @ 956 NONAME ABSENT
+ _ZN30QDeclarativeDebugFileReferenceC1Ev @ 957 NONAME ABSENT
+ _ZN30QDeclarativeDebugFileReferenceC2ERKS_ @ 958 NONAME ABSENT
+ _ZN30QDeclarativeDebugFileReferenceC2Ev @ 959 NONAME ABSENT
+ _ZN30QDeclarativeDebugFileReferenceaSERKS_ @ 960 NONAME ABSENT
+ _ZN30QDeclarativeDebugPropertyWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 961 NONAME ABSENT
+ _ZN30QDeclarativeDebugPropertyWatch11qt_metacastEPKc @ 962 NONAME ABSENT
+ _ZN30QDeclarativeDebugPropertyWatch16staticMetaObjectE @ 963 NONAME DATA 16 ABSENT
+ _ZN30QDeclarativeDebugPropertyWatch19getStaticMetaObjectEv @ 964 NONAME ABSENT
+ _ZN30QDeclarativeDebugPropertyWatchC1EP7QObject @ 965 NONAME ABSENT
+ _ZN30QDeclarativeDebugPropertyWatchC2EP7QObject @ 966 NONAME ABSENT
+ _ZN30QDeclarativeDomDynamicPropertyC1ERKS_ @ 967 NONAME ABSENT
+ _ZN30QDeclarativeDomDynamicPropertyC1Ev @ 968 NONAME ABSENT
+ _ZN30QDeclarativeDomDynamicPropertyC2ERKS_ @ 969 NONAME ABSENT
+ _ZN30QDeclarativeDomDynamicPropertyC2Ev @ 970 NONAME ABSENT
+ _ZN30QDeclarativeDomDynamicPropertyD1Ev @ 971 NONAME ABSENT
+ _ZN30QDeclarativeDomDynamicPropertyD2Ev @ 972 NONAME ABSENT
+ _ZN30QDeclarativeDomDynamicPropertyaSERKS_ @ 973 NONAME ABSENT
+ _ZN30QDeclarativeOpenMetaObjectType14createPropertyERK10QByteArray @ 974 NONAME ABSENT
+ _ZN30QDeclarativeOpenMetaObjectType15propertyCreatedEiR20QMetaPropertyBuilder @ 975 NONAME ABSENT
+ _ZN30QDeclarativeOpenMetaObjectTypeC1EPK11QMetaObjectP18QDeclarativeEngine @ 976 NONAME ABSENT
+ _ZN30QDeclarativeOpenMetaObjectTypeC2EPK11QMetaObjectP18QDeclarativeEngine @ 977 NONAME ABSENT
+ _ZN30QDeclarativeOpenMetaObjectTypeD0Ev @ 978 NONAME ABSENT
+ _ZN30QDeclarativeOpenMetaObjectTypeD1Ev @ 979 NONAME ABSENT
+ _ZN30QDeclarativeOpenMetaObjectTypeD2Ev @ 980 NONAME ABSENT
+ _ZN31QDeclarativeDomValueValueSourceC1ERKS_ @ 981 NONAME ABSENT
+ _ZN31QDeclarativeDomValueValueSourceC1Ev @ 982 NONAME ABSENT
+ _ZN31QDeclarativeDomValueValueSourceC2ERKS_ @ 983 NONAME ABSENT
+ _ZN31QDeclarativeDomValueValueSourceC2Ev @ 984 NONAME ABSENT
+ _ZN31QDeclarativeDomValueValueSourceD1Ev @ 985 NONAME ABSENT
+ _ZN31QDeclarativeDomValueValueSourceD2Ev @ 986 NONAME ABSENT
+ _ZN31QDeclarativeDomValueValueSourceaSERKS_ @ 987 NONAME ABSENT
_ZN31QDeclarativePropertyValueSourceC2Ev @ 988 NONAME
_ZN31QDeclarativePropertyValueSourceD0Ev @ 989 NONAME
_ZN31QDeclarativePropertyValueSourceD1Ev @ 990 NONAME
@@ -997,82 +997,82 @@ EXPORTS
_ZN32QDeclarativeCustomParserPropertyD1Ev @ 996 NONAME
_ZN32QDeclarativeCustomParserPropertyD2Ev @ 997 NONAME
_ZN32QDeclarativeCustomParserPropertyaSERKS_ @ 998 NONAME
- _ZN32QDeclarativeDebugEngineReferenceC1ERKS_ @ 999 NONAME
- _ZN32QDeclarativeDebugEngineReferenceC1Ei @ 1000 NONAME
- _ZN32QDeclarativeDebugEngineReferenceC1Ev @ 1001 NONAME
- _ZN32QDeclarativeDebugEngineReferenceC2ERKS_ @ 1002 NONAME
- _ZN32QDeclarativeDebugEngineReferenceC2Ei @ 1003 NONAME
- _ZN32QDeclarativeDebugEngineReferenceC2Ev @ 1004 NONAME
- _ZN32QDeclarativeDebugEngineReferenceaSERKS_ @ 1005 NONAME
- _ZN32QDeclarativeDebugExpressionQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 1006 NONAME
- _ZN32QDeclarativeDebugExpressionQuery11qt_metacastEPKc @ 1007 NONAME
- _ZN32QDeclarativeDebugExpressionQuery16staticMetaObjectE @ 1008 NONAME DATA 16
- _ZN32QDeclarativeDebugExpressionQuery19getStaticMetaObjectEv @ 1009 NONAME
- _ZN32QDeclarativeDebugExpressionQueryC1EP7QObject @ 1010 NONAME
- _ZN32QDeclarativeDebugExpressionQueryC2EP7QObject @ 1011 NONAME
- _ZN32QDeclarativeDebugExpressionQueryD0Ev @ 1012 NONAME
- _ZN32QDeclarativeDebugExpressionQueryD1Ev @ 1013 NONAME
- _ZN32QDeclarativeDebugExpressionQueryD2Ev @ 1014 NONAME
- _ZN32QDeclarativeDebugObjectReferenceC1ERKS_ @ 1015 NONAME
- _ZN32QDeclarativeDebugObjectReferenceC1Ei @ 1016 NONAME
- _ZN32QDeclarativeDebugObjectReferenceC1Ev @ 1017 NONAME
- _ZN32QDeclarativeDebugObjectReferenceC2ERKS_ @ 1018 NONAME
- _ZN32QDeclarativeDebugObjectReferenceC2Ei @ 1019 NONAME
- _ZN32QDeclarativeDebugObjectReferenceC2Ev @ 1020 NONAME
- _ZN32QDeclarativeDebugObjectReferenceaSERKS_ @ 1021 NONAME
- _ZN33QDeclarativeDebugContextReferenceC1ERKS_ @ 1022 NONAME
- _ZN33QDeclarativeDebugContextReferenceC1Ev @ 1023 NONAME
- _ZN33QDeclarativeDebugContextReferenceC2ERKS_ @ 1024 NONAME
- _ZN33QDeclarativeDebugContextReferenceC2Ev @ 1025 NONAME
- _ZN33QDeclarativeDebugContextReferenceaSERKS_ @ 1026 NONAME
- _ZN33QDeclarativeDebugRootContextQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 1027 NONAME
- _ZN33QDeclarativeDebugRootContextQuery11qt_metacastEPKc @ 1028 NONAME
- _ZN33QDeclarativeDebugRootContextQuery16staticMetaObjectE @ 1029 NONAME DATA 16
- _ZN33QDeclarativeDebugRootContextQuery19getStaticMetaObjectEv @ 1030 NONAME
- _ZN33QDeclarativeDebugRootContextQueryC1EP7QObject @ 1031 NONAME
- _ZN33QDeclarativeDebugRootContextQueryC2EP7QObject @ 1032 NONAME
- _ZN33QDeclarativeDebugRootContextQueryD0Ev @ 1033 NONAME
- _ZN33QDeclarativeDebugRootContextQueryD1Ev @ 1034 NONAME
- _ZN33QDeclarativeDebugRootContextQueryD2Ev @ 1035 NONAME
- _ZN34QDeclarativeDebugPropertyReferenceC1ERKS_ @ 1036 NONAME
- _ZN34QDeclarativeDebugPropertyReferenceC1Ev @ 1037 NONAME
- _ZN34QDeclarativeDebugPropertyReferenceC2ERKS_ @ 1038 NONAME
- _ZN34QDeclarativeDebugPropertyReferenceC2Ev @ 1039 NONAME
- _ZN34QDeclarativeDebugPropertyReferenceaSERKS_ @ 1040 NONAME
- _ZN36QDeclarativeDomValueValueInterceptorC1ERKS_ @ 1041 NONAME
- _ZN36QDeclarativeDomValueValueInterceptorC1Ev @ 1042 NONAME
- _ZN36QDeclarativeDomValueValueInterceptorC2ERKS_ @ 1043 NONAME
- _ZN36QDeclarativeDomValueValueInterceptorC2Ev @ 1044 NONAME
- _ZN36QDeclarativeDomValueValueInterceptorD1Ev @ 1045 NONAME
- _ZN36QDeclarativeDomValueValueInterceptorD2Ev @ 1046 NONAME
- _ZN36QDeclarativeDomValueValueInterceptoraSERKS_ @ 1047 NONAME
+ _ZN32QDeclarativeDebugEngineReferenceC1ERKS_ @ 999 NONAME ABSENT
+ _ZN32QDeclarativeDebugEngineReferenceC1Ei @ 1000 NONAME ABSENT
+ _ZN32QDeclarativeDebugEngineReferenceC1Ev @ 1001 NONAME ABSENT
+ _ZN32QDeclarativeDebugEngineReferenceC2ERKS_ @ 1002 NONAME ABSENT
+ _ZN32QDeclarativeDebugEngineReferenceC2Ei @ 1003 NONAME ABSENT
+ _ZN32QDeclarativeDebugEngineReferenceC2Ev @ 1004 NONAME ABSENT
+ _ZN32QDeclarativeDebugEngineReferenceaSERKS_ @ 1005 NONAME ABSENT
+ _ZN32QDeclarativeDebugExpressionQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 1006 NONAME ABSENT
+ _ZN32QDeclarativeDebugExpressionQuery11qt_metacastEPKc @ 1007 NONAME ABSENT
+ _ZN32QDeclarativeDebugExpressionQuery16staticMetaObjectE @ 1008 NONAME DATA 16 ABSENT
+ _ZN32QDeclarativeDebugExpressionQuery19getStaticMetaObjectEv @ 1009 NONAME ABSENT
+ _ZN32QDeclarativeDebugExpressionQueryC1EP7QObject @ 1010 NONAME ABSENT
+ _ZN32QDeclarativeDebugExpressionQueryC2EP7QObject @ 1011 NONAME ABSENT
+ _ZN32QDeclarativeDebugExpressionQueryD0Ev @ 1012 NONAME ABSENT
+ _ZN32QDeclarativeDebugExpressionQueryD1Ev @ 1013 NONAME ABSENT
+ _ZN32QDeclarativeDebugExpressionQueryD2Ev @ 1014 NONAME ABSENT
+ _ZN32QDeclarativeDebugObjectReferenceC1ERKS_ @ 1015 NONAME ABSENT
+ _ZN32QDeclarativeDebugObjectReferenceC1Ei @ 1016 NONAME ABSENT
+ _ZN32QDeclarativeDebugObjectReferenceC1Ev @ 1017 NONAME ABSENT
+ _ZN32QDeclarativeDebugObjectReferenceC2ERKS_ @ 1018 NONAME ABSENT
+ _ZN32QDeclarativeDebugObjectReferenceC2Ei @ 1019 NONAME ABSENT
+ _ZN32QDeclarativeDebugObjectReferenceC2Ev @ 1020 NONAME ABSENT
+ _ZN32QDeclarativeDebugObjectReferenceaSERKS_ @ 1021 NONAME ABSENT
+ _ZN33QDeclarativeDebugContextReferenceC1ERKS_ @ 1022 NONAME ABSENT
+ _ZN33QDeclarativeDebugContextReferenceC1Ev @ 1023 NONAME ABSENT
+ _ZN33QDeclarativeDebugContextReferenceC2ERKS_ @ 1024 NONAME ABSENT
+ _ZN33QDeclarativeDebugContextReferenceC2Ev @ 1025 NONAME ABSENT
+ _ZN33QDeclarativeDebugContextReferenceaSERKS_ @ 1026 NONAME ABSENT
+ _ZN33QDeclarativeDebugRootContextQuery11qt_metacallEN11QMetaObject4CallEiPPv @ 1027 NONAME ABSENT
+ _ZN33QDeclarativeDebugRootContextQuery11qt_metacastEPKc @ 1028 NONAME ABSENT
+ _ZN33QDeclarativeDebugRootContextQuery16staticMetaObjectE @ 1029 NONAME DATA 16 ABSENT
+ _ZN33QDeclarativeDebugRootContextQuery19getStaticMetaObjectEv @ 1030 NONAME ABSENT
+ _ZN33QDeclarativeDebugRootContextQueryC1EP7QObject @ 1031 NONAME ABSENT
+ _ZN33QDeclarativeDebugRootContextQueryC2EP7QObject @ 1032 NONAME ABSENT
+ _ZN33QDeclarativeDebugRootContextQueryD0Ev @ 1033 NONAME ABSENT
+ _ZN33QDeclarativeDebugRootContextQueryD1Ev @ 1034 NONAME ABSENT
+ _ZN33QDeclarativeDebugRootContextQueryD2Ev @ 1035 NONAME ABSENT
+ _ZN34QDeclarativeDebugPropertyReferenceC1ERKS_ @ 1036 NONAME ABSENT
+ _ZN34QDeclarativeDebugPropertyReferenceC1Ev @ 1037 NONAME ABSENT
+ _ZN34QDeclarativeDebugPropertyReferenceC2ERKS_ @ 1038 NONAME ABSENT
+ _ZN34QDeclarativeDebugPropertyReferenceC2Ev @ 1039 NONAME ABSENT
+ _ZN34QDeclarativeDebugPropertyReferenceaSERKS_ @ 1040 NONAME ABSENT
+ _ZN36QDeclarativeDomValueValueInterceptorC1ERKS_ @ 1041 NONAME ABSENT
+ _ZN36QDeclarativeDomValueValueInterceptorC1Ev @ 1042 NONAME ABSENT
+ _ZN36QDeclarativeDomValueValueInterceptorC2ERKS_ @ 1043 NONAME ABSENT
+ _ZN36QDeclarativeDomValueValueInterceptorC2Ev @ 1044 NONAME ABSENT
+ _ZN36QDeclarativeDomValueValueInterceptorD1Ev @ 1045 NONAME ABSENT
+ _ZN36QDeclarativeDomValueValueInterceptorD2Ev @ 1046 NONAME ABSENT
+ _ZN36QDeclarativeDomValueValueInterceptoraSERKS_ @ 1047 NONAME ABSENT
_ZN36QDeclarativePropertyValueInterceptorC2Ev @ 1048 NONAME
_ZN36QDeclarativePropertyValueInterceptorD0Ev @ 1049 NONAME
_ZN36QDeclarativePropertyValueInterceptorD1Ev @ 1050 NONAME
_ZN36QDeclarativePropertyValueInterceptorD2Ev @ 1051 NONAME
- _ZN38QDeclarativeDebugObjectExpressionWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 1052 NONAME
- _ZN38QDeclarativeDebugObjectExpressionWatch11qt_metacastEPKc @ 1053 NONAME
- _ZN38QDeclarativeDebugObjectExpressionWatch16staticMetaObjectE @ 1054 NONAME DATA 16
- _ZN38QDeclarativeDebugObjectExpressionWatch19getStaticMetaObjectEv @ 1055 NONAME
- _ZN38QDeclarativeDebugObjectExpressionWatchC1EP7QObject @ 1056 NONAME
- _ZN38QDeclarativeDebugObjectExpressionWatchC2EP7QObject @ 1057 NONAME
+ _ZN38QDeclarativeDebugObjectExpressionWatch11qt_metacallEN11QMetaObject4CallEiPPv @ 1052 NONAME ABSENT
+ _ZN38QDeclarativeDebugObjectExpressionWatch11qt_metacastEPKc @ 1053 NONAME ABSENT
+ _ZN38QDeclarativeDebugObjectExpressionWatch16staticMetaObjectE @ 1054 NONAME DATA 16 ABSENT
+ _ZN38QDeclarativeDebugObjectExpressionWatch19getStaticMetaObjectEv @ 1055 NONAME ABSENT
+ _ZN38QDeclarativeDebugObjectExpressionWatchC1EP7QObject @ 1056 NONAME ABSENT
+ _ZN38QDeclarativeDebugObjectExpressionWatchC2EP7QObject @ 1057 NONAME ABSENT
_ZN39QDeclarativeNetworkAccessManagerFactoryD0Ev @ 1058 NONAME
_ZN39QDeclarativeNetworkAccessManagerFactoryD1Ev @ 1059 NONAME
_ZN39QDeclarativeNetworkAccessManagerFactoryD2Ev @ 1060 NONAME
- _ZN7QPacket5clearEv @ 1061 NONAME
- _ZN7QPacketC1ERK10QByteArray @ 1062 NONAME
- _ZN7QPacketC1ERKS_ @ 1063 NONAME
- _ZN7QPacketC1Ev @ 1064 NONAME
- _ZN7QPacketC2ERK10QByteArray @ 1065 NONAME
- _ZN7QPacketC2ERKS_ @ 1066 NONAME
- _ZN7QPacketC2Ev @ 1067 NONAME
- _ZN7QPacketD0Ev @ 1068 NONAME
- _ZN7QPacketD1Ev @ 1069 NONAME
- _ZN7QPacketD2Ev @ 1070 NONAME
- _ZNK15QDeclarativePen10metaObjectEv @ 1071 NONAME
- _ZNK15QPacketProtocol10metaObjectEv @ 1072 NONAME
- _ZNK15QPacketProtocol16packetsAvailableEv @ 1073 NONAME
- _ZNK15QPacketProtocol17maximumPacketSizeEv @ 1074 NONAME
+ _ZN7QPacket5clearEv @ 1061 NONAME ABSENT
+ _ZN7QPacketC1ERK10QByteArray @ 1062 NONAME ABSENT
+ _ZN7QPacketC1ERKS_ @ 1063 NONAME ABSENT
+ _ZN7QPacketC1Ev @ 1064 NONAME ABSENT
+ _ZN7QPacketC2ERK10QByteArray @ 1065 NONAME ABSENT
+ _ZN7QPacketC2ERKS_ @ 1066 NONAME ABSENT
+ _ZN7QPacketC2Ev @ 1067 NONAME ABSENT
+ _ZN7QPacketD0Ev @ 1068 NONAME ABSENT
+ _ZN7QPacketD1Ev @ 1069 NONAME ABSENT
+ _ZN7QPacketD2Ev @ 1070 NONAME ABSENT
+ _ZNK15QDeclarativePen10metaObjectEv @ 1071 NONAME ABSENT
+ _ZNK15QPacketProtocol10metaObjectEv @ 1072 NONAME ABSENT
+ _ZNK15QPacketProtocol16packetsAvailableEv @ 1073 NONAME ABSENT
+ _ZNK15QPacketProtocol17maximumPacketSizeEv @ 1074 NONAME ABSENT
_ZNK16QDeclarativeItem10metaObjectEv @ 1075 NONAME
_ZNK16QDeclarativeItem10parentItemEv @ 1076 NONAME
_ZNK16QDeclarativeItem10widthValidEv @ 1077 NONAME
@@ -1094,46 +1094,46 @@ EXPORTS
_ZNK16QDeclarativeItem7childAtEff @ 1093 NONAME
_ZNK16QDeclarativeItem8hasFocusEv @ 1094 NONAME
_ZNK16QDeclarativeItem9mapToItemERK12QScriptValueff @ 1095 NONAME
- _ZNK16QDeclarativeText10metaObjectEv @ 1096 NONAME
- _ZNK16QDeclarativeText10styleColorEv @ 1097 NONAME
- _ZNK16QDeclarativeText10textFormatEv @ 1098 NONAME
- _ZNK16QDeclarativeText12boundingRectEv @ 1099 NONAME
- _ZNK16QDeclarativeText12paintedWidthEv @ 1100 NONAME
- _ZNK16QDeclarativeText13paintedHeightEv @ 1101 NONAME
- _ZNK16QDeclarativeText16resourcesLoadingEv @ 1102 NONAME
- _ZNK16QDeclarativeText4fontEv @ 1103 NONAME
- _ZNK16QDeclarativeText4textEv @ 1104 NONAME
- _ZNK16QDeclarativeText5colorEv @ 1105 NONAME
- _ZNK16QDeclarativeText5styleEv @ 1106 NONAME
- _ZNK16QDeclarativeText6hAlignEv @ 1107 NONAME
- _ZNK16QDeclarativeText6vAlignEv @ 1108 NONAME
- _ZNK16QDeclarativeText8wrapModeEv @ 1109 NONAME
- _ZNK16QDeclarativeText9elideModeEv @ 1110 NONAME
- _ZNK16QDeclarativeType10createSizeEv @ 1111 NONAME
- _ZNK16QDeclarativeType10metaObjectEv @ 1112 NONAME
- _ZNK16QDeclarativeType11isCreatableEv @ 1113 NONAME
- _ZNK16QDeclarativeType11isInterfaceEv @ 1114 NONAME
- _ZNK16QDeclarativeType11qListTypeIdEv @ 1115 NONAME
- _ZNK16QDeclarativeType11qmlTypeNameEv @ 1116 NONAME
- _ZNK16QDeclarativeType12customParserEv @ 1117 NONAME
- _ZNK16QDeclarativeType12interfaceIIdEv @ 1118 NONAME
- _ZNK16QDeclarativeType12majorVersionEv @ 1119 NONAME
- _ZNK16QDeclarativeType12minorVersionEv @ 1120 NONAME
- _ZNK16QDeclarativeType14baseMetaObjectEv @ 1121 NONAME
- _ZNK16QDeclarativeType14createFunctionEv @ 1122 NONAME
- _ZNK16QDeclarativeType14isExtendedTypeEv @ 1123 NONAME
- _ZNK16QDeclarativeType16noCreationReasonEv @ 1124 NONAME
- _ZNK16QDeclarativeType16parserStatusCastEv @ 1125 NONAME
- _ZNK16QDeclarativeType18availableInVersionEii @ 1126 NONAME
- _ZNK16QDeclarativeType22attachedPropertiesTypeEv @ 1127 NONAME
- _ZNK16QDeclarativeType23propertyValueSourceCastEv @ 1128 NONAME
- _ZNK16QDeclarativeType26attachedPropertiesFunctionEv @ 1129 NONAME
- _ZNK16QDeclarativeType28propertyValueInterceptorCastEv @ 1130 NONAME
- _ZNK16QDeclarativeType5indexEv @ 1131 NONAME
- _ZNK16QDeclarativeType6createEPP7QObjectPPvj @ 1132 NONAME
- _ZNK16QDeclarativeType6createEv @ 1133 NONAME
- _ZNK16QDeclarativeType6typeIdEv @ 1134 NONAME
- _ZNK16QDeclarativeType8typeNameEv @ 1135 NONAME
+ _ZNK16QDeclarativeText10metaObjectEv @ 1096 NONAME ABSENT
+ _ZNK16QDeclarativeText10styleColorEv @ 1097 NONAME ABSENT
+ _ZNK16QDeclarativeText10textFormatEv @ 1098 NONAME ABSENT
+ _ZNK16QDeclarativeText12boundingRectEv @ 1099 NONAME ABSENT
+ _ZNK16QDeclarativeText12paintedWidthEv @ 1100 NONAME ABSENT
+ _ZNK16QDeclarativeText13paintedHeightEv @ 1101 NONAME ABSENT
+ _ZNK16QDeclarativeText16resourcesLoadingEv @ 1102 NONAME ABSENT
+ _ZNK16QDeclarativeText4fontEv @ 1103 NONAME ABSENT
+ _ZNK16QDeclarativeText4textEv @ 1104 NONAME ABSENT
+ _ZNK16QDeclarativeText5colorEv @ 1105 NONAME ABSENT
+ _ZNK16QDeclarativeText5styleEv @ 1106 NONAME ABSENT
+ _ZNK16QDeclarativeText6hAlignEv @ 1107 NONAME ABSENT
+ _ZNK16QDeclarativeText6vAlignEv @ 1108 NONAME ABSENT
+ _ZNK16QDeclarativeText8wrapModeEv @ 1109 NONAME ABSENT
+ _ZNK16QDeclarativeText9elideModeEv @ 1110 NONAME ABSENT
+ _ZNK16QDeclarativeType10createSizeEv @ 1111 NONAME ABSENT
+ _ZNK16QDeclarativeType10metaObjectEv @ 1112 NONAME ABSENT
+ _ZNK16QDeclarativeType11isCreatableEv @ 1113 NONAME ABSENT
+ _ZNK16QDeclarativeType11isInterfaceEv @ 1114 NONAME ABSENT
+ _ZNK16QDeclarativeType11qListTypeIdEv @ 1115 NONAME ABSENT
+ _ZNK16QDeclarativeType11qmlTypeNameEv @ 1116 NONAME ABSENT
+ _ZNK16QDeclarativeType12customParserEv @ 1117 NONAME ABSENT
+ _ZNK16QDeclarativeType12interfaceIIdEv @ 1118 NONAME ABSENT
+ _ZNK16QDeclarativeType12majorVersionEv @ 1119 NONAME ABSENT
+ _ZNK16QDeclarativeType12minorVersionEv @ 1120 NONAME ABSENT
+ _ZNK16QDeclarativeType14baseMetaObjectEv @ 1121 NONAME ABSENT
+ _ZNK16QDeclarativeType14createFunctionEv @ 1122 NONAME ABSENT
+ _ZNK16QDeclarativeType14isExtendedTypeEv @ 1123 NONAME ABSENT
+ _ZNK16QDeclarativeType16noCreationReasonEv @ 1124 NONAME ABSENT
+ _ZNK16QDeclarativeType16parserStatusCastEv @ 1125 NONAME ABSENT
+ _ZNK16QDeclarativeType18availableInVersionEii @ 1126 NONAME ABSENT
+ _ZNK16QDeclarativeType22attachedPropertiesTypeEv @ 1127 NONAME ABSENT
+ _ZNK16QDeclarativeType23propertyValueSourceCastEv @ 1128 NONAME ABSENT
+ _ZNK16QDeclarativeType26attachedPropertiesFunctionEv @ 1129 NONAME ABSENT
+ _ZNK16QDeclarativeType28propertyValueInterceptorCastEv @ 1130 NONAME ABSENT
+ _ZNK16QDeclarativeType5indexEv @ 1131 NONAME ABSENT
+ _ZNK16QDeclarativeType6createEPP7QObjectPPvj @ 1132 NONAME ABSENT
+ _ZNK16QDeclarativeType6createEv @ 1133 NONAME ABSENT
+ _ZNK16QDeclarativeType6typeIdEv @ 1134 NONAME ABSENT
+ _ZNK16QDeclarativeType8typeNameEv @ 1135 NONAME ABSENT
_ZNK16QDeclarativeView10metaObjectEv @ 1136 NONAME
_ZNK16QDeclarativeView10resizeModeEv @ 1137 NONAME
_ZNK16QDeclarativeView10rootObjectEv @ 1138 NONAME
@@ -1144,12 +1144,12 @@ EXPORTS
_ZNK16QDeclarativeView6sourceEv @ 1143 NONAME
_ZNK16QDeclarativeView6statusEv @ 1144 NONAME
_ZNK16QDeclarativeView8sizeHintEv @ 1145 NONAME
- _ZNK16QMetaEnumBuilder3keyEi @ 1146 NONAME
- _ZNK16QMetaEnumBuilder4nameEv @ 1147 NONAME
- _ZNK16QMetaEnumBuilder5valueEi @ 1148 NONAME
- _ZNK16QMetaEnumBuilder6d_funcEv @ 1149 NONAME
- _ZNK16QMetaEnumBuilder6isFlagEv @ 1150 NONAME
- _ZNK16QMetaEnumBuilder8keyCountEv @ 1151 NONAME
+ _ZNK16QMetaEnumBuilder3keyEi @ 1146 NONAME ABSENT
+ _ZNK16QMetaEnumBuilder4nameEv @ 1147 NONAME ABSENT
+ _ZNK16QMetaEnumBuilder5valueEi @ 1148 NONAME ABSENT
+ _ZNK16QMetaEnumBuilder6d_funcEv @ 1149 NONAME ABSENT
+ _ZNK16QMetaEnumBuilder6isFlagEv @ 1150 NONAME ABSENT
+ _ZNK16QMetaEnumBuilder8keyCountEv @ 1151 NONAME ABSENT
_ZNK17QDeclarativeError11descriptionEv @ 1152 NONAME
_ZNK17QDeclarativeError3urlEv @ 1153 NONAME
_ZNK17QDeclarativeError4lineEv @ 1154 NONAME
@@ -1196,58 +1196,58 @@ EXPORTS
_ZNK18QDeclarativePixmap7isErrorEv @ 1195 NONAME
_ZNK18QDeclarativePixmap7isReadyEv @ 1196 NONAME
_ZNK18QDeclarativePixmap9isLoadingEv @ 1197 NONAME
- _ZNK18QMetaMethodBuilder10attributesEv @ 1198 NONAME
- _ZNK18QMetaMethodBuilder10methodTypeEv @ 1199 NONAME
- _ZNK18QMetaMethodBuilder10returnTypeEv @ 1200 NONAME
- _ZNK18QMetaMethodBuilder14parameterNamesEv @ 1201 NONAME
- _ZNK18QMetaMethodBuilder3tagEv @ 1202 NONAME
- _ZNK18QMetaMethodBuilder5indexEv @ 1203 NONAME
- _ZNK18QMetaMethodBuilder6accessEv @ 1204 NONAME
- _ZNK18QMetaMethodBuilder6d_funcEv @ 1205 NONAME
- _ZNK18QMetaMethodBuilder9signatureEv @ 1206 NONAME
- _ZNK18QMetaObjectBuilder10enumeratorEi @ 1207 NONAME
- _ZNK18QMetaObjectBuilder10superClassEv @ 1208 NONAME
- _ZNK18QMetaObjectBuilder11constructorEi @ 1209 NONAME
- _ZNK18QMetaObjectBuilder11methodCountEv @ 1210 NONAME
- _ZNK18QMetaObjectBuilder12toMetaObjectEv @ 1211 NONAME
- _ZNK18QMetaObjectBuilder13classInfoNameEi @ 1212 NONAME
- _ZNK18QMetaObjectBuilder13propertyCountEv @ 1213 NONAME
- _ZNK18QMetaObjectBuilder14classInfoCountEv @ 1214 NONAME
- _ZNK18QMetaObjectBuilder14classInfoValueEi @ 1215 NONAME
- _ZNK18QMetaObjectBuilder15enumeratorCountEv @ 1216 NONAME
- _ZNK18QMetaObjectBuilder16constructorCountEv @ 1217 NONAME
- _ZNK18QMetaObjectBuilder17relatedMetaObjectEi @ 1218 NONAME
- _ZNK18QMetaObjectBuilder17toRelocatableDataEPb @ 1219 NONAME
- _ZNK18QMetaObjectBuilder22relatedMetaObjectCountEv @ 1220 NONAME
- _ZNK18QMetaObjectBuilder22staticMetacallFunctionEv @ 1221 NONAME
- _ZNK18QMetaObjectBuilder5flagsEv @ 1222 NONAME
- _ZNK18QMetaObjectBuilder6methodEi @ 1223 NONAME
- _ZNK18QMetaObjectBuilder8propertyEi @ 1224 NONAME
- _ZNK18QMetaObjectBuilder9classNameEv @ 1225 NONAME
- _ZNK18QMetaObjectBuilder9serializeER11QDataStream @ 1226 NONAME
- _ZNK19QDeclarativeAnchors10leftMarginEv @ 1227 NONAME
- _ZNK19QDeclarativeAnchors10metaObjectEv @ 1228 NONAME
- _ZNK19QDeclarativeAnchors11rightMarginEv @ 1229 NONAME
- _ZNK19QDeclarativeAnchors11usedAnchorsEv @ 1230 NONAME
- _ZNK19QDeclarativeAnchors12bottomMarginEv @ 1231 NONAME
- _ZNK19QDeclarativeAnchors14baselineOffsetEv @ 1232 NONAME
- _ZNK19QDeclarativeAnchors14verticalCenterEv @ 1233 NONAME
- _ZNK19QDeclarativeAnchors16horizontalCenterEv @ 1234 NONAME
- _ZNK19QDeclarativeAnchors20verticalCenterOffsetEv @ 1235 NONAME
- _ZNK19QDeclarativeAnchors22horizontalCenterOffsetEv @ 1236 NONAME
- _ZNK19QDeclarativeAnchors3topEv @ 1237 NONAME
- _ZNK19QDeclarativeAnchors4fillEv @ 1238 NONAME
- _ZNK19QDeclarativeAnchors4leftEv @ 1239 NONAME
- _ZNK19QDeclarativeAnchors5rightEv @ 1240 NONAME
- _ZNK19QDeclarativeAnchors6bottomEv @ 1241 NONAME
- _ZNK19QDeclarativeAnchors7marginsEv @ 1242 NONAME
- _ZNK19QDeclarativeAnchors8baselineEv @ 1243 NONAME
- _ZNK19QDeclarativeAnchors8centerInEv @ 1244 NONAME
- _ZNK19QDeclarativeAnchors9topMarginEv @ 1245 NONAME
- _ZNK19QDeclarativeBinding10expressionEv @ 1246 NONAME
- _ZNK19QDeclarativeBinding10metaObjectEv @ 1247 NONAME
- _ZNK19QDeclarativeBinding7enabledEv @ 1248 NONAME
- _ZNK19QDeclarativeBinding8propertyEv @ 1249 NONAME
+ _ZNK18QMetaMethodBuilder10attributesEv @ 1198 NONAME ABSENT
+ _ZNK18QMetaMethodBuilder10methodTypeEv @ 1199 NONAME ABSENT
+ _ZNK18QMetaMethodBuilder10returnTypeEv @ 1200 NONAME ABSENT
+ _ZNK18QMetaMethodBuilder14parameterNamesEv @ 1201 NONAME ABSENT
+ _ZNK18QMetaMethodBuilder3tagEv @ 1202 NONAME ABSENT
+ _ZNK18QMetaMethodBuilder5indexEv @ 1203 NONAME ABSENT
+ _ZNK18QMetaMethodBuilder6accessEv @ 1204 NONAME ABSENT
+ _ZNK18QMetaMethodBuilder6d_funcEv @ 1205 NONAME ABSENT
+ _ZNK18QMetaMethodBuilder9signatureEv @ 1206 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder10enumeratorEi @ 1207 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder10superClassEv @ 1208 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder11constructorEi @ 1209 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder11methodCountEv @ 1210 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder12toMetaObjectEv @ 1211 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder13classInfoNameEi @ 1212 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder13propertyCountEv @ 1213 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder14classInfoCountEv @ 1214 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder14classInfoValueEi @ 1215 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder15enumeratorCountEv @ 1216 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder16constructorCountEv @ 1217 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder17relatedMetaObjectEi @ 1218 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder17toRelocatableDataEPb @ 1219 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder22relatedMetaObjectCountEv @ 1220 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder22staticMetacallFunctionEv @ 1221 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder5flagsEv @ 1222 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder6methodEi @ 1223 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder8propertyEi @ 1224 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder9classNameEv @ 1225 NONAME ABSENT
+ _ZNK18QMetaObjectBuilder9serializeER11QDataStream @ 1226 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors10leftMarginEv @ 1227 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors10metaObjectEv @ 1228 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors11rightMarginEv @ 1229 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors11usedAnchorsEv @ 1230 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors12bottomMarginEv @ 1231 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors14baselineOffsetEv @ 1232 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors14verticalCenterEv @ 1233 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors16horizontalCenterEv @ 1234 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors20verticalCenterOffsetEv @ 1235 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors22horizontalCenterOffsetEv @ 1236 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors3topEv @ 1237 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors4fillEv @ 1238 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors4leftEv @ 1239 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors5rightEv @ 1240 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors6bottomEv @ 1241 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors7marginsEv @ 1242 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors8baselineEv @ 1243 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors8centerInEv @ 1244 NONAME ABSENT
+ _ZNK19QDeclarativeAnchors9topMarginEv @ 1245 NONAME ABSENT
+ _ZNK19QDeclarativeBinding10expressionEv @ 1246 NONAME ABSENT
+ _ZNK19QDeclarativeBinding10metaObjectEv @ 1247 NONAME ABSENT
+ _ZNK19QDeclarativeBinding7enabledEv @ 1248 NONAME ABSENT
+ _ZNK19QDeclarativeBinding8propertyEv @ 1249 NONAME ABSENT
_ZNK19QDeclarativeContext10metaObjectEv @ 1250 NONAME
_ZNK19QDeclarativeContext13contextObjectEv @ 1251 NONAME
_ZNK19QDeclarativeContext13parentContextEv @ 1252 NONAME
@@ -1255,29 +1255,29 @@ EXPORTS
_ZNK19QDeclarativeContext6engineEv @ 1254 NONAME
_ZNK19QDeclarativeContext7baseUrlEv @ 1255 NONAME
_ZNK19QDeclarativeContext7isValidEv @ 1256 NONAME
- _ZNK19QDeclarativeDomList14commaPositionsEv @ 1257 NONAME
- _ZNK19QDeclarativeDomList6lengthEv @ 1258 NONAME
- _ZNK19QDeclarativeDomList6valuesEv @ 1259 NONAME
- _ZNK19QDeclarativeDomList8positionEv @ 1260 NONAME
- _ZNK19QListModelInterface10metaObjectEv @ 1261 NONAME
- _ZNK20QDeclarativeBehavior10metaObjectEv @ 1262 NONAME
- _ZNK20QDeclarativeBehavior7enabledEv @ 1263 NONAME
- _ZNK20QDeclarativeDomValue13isValueSourceEv @ 1264 NONAME
- _ZNK20QDeclarativeDomValue13toValueSourceEv @ 1265 NONAME
- _ZNK20QDeclarativeDomValue18isValueInterceptorEv @ 1266 NONAME
- _ZNK20QDeclarativeDomValue18toValueInterceptorEv @ 1267 NONAME
- _ZNK20QDeclarativeDomValue4typeEv @ 1268 NONAME
- _ZNK20QDeclarativeDomValue6isListEv @ 1269 NONAME
- _ZNK20QDeclarativeDomValue6lengthEv @ 1270 NONAME
- _ZNK20QDeclarativeDomValue6toListEv @ 1271 NONAME
- _ZNK20QDeclarativeDomValue8isObjectEv @ 1272 NONAME
- _ZNK20QDeclarativeDomValue8positionEv @ 1273 NONAME
- _ZNK20QDeclarativeDomValue8toObjectEv @ 1274 NONAME
- _ZNK20QDeclarativeDomValue9isBindingEv @ 1275 NONAME
- _ZNK20QDeclarativeDomValue9isInvalidEv @ 1276 NONAME
- _ZNK20QDeclarativeDomValue9isLiteralEv @ 1277 NONAME
- _ZNK20QDeclarativeDomValue9toBindingEv @ 1278 NONAME
- _ZNK20QDeclarativeDomValue9toLiteralEv @ 1279 NONAME
+ _ZNK19QDeclarativeDomList14commaPositionsEv @ 1257 NONAME ABSENT
+ _ZNK19QDeclarativeDomList6lengthEv @ 1258 NONAME ABSENT
+ _ZNK19QDeclarativeDomList6valuesEv @ 1259 NONAME ABSENT
+ _ZNK19QDeclarativeDomList8positionEv @ 1260 NONAME ABSENT
+ _ZNK19QListModelInterface10metaObjectEv @ 1261 NONAME ABSENT
+ _ZNK20QDeclarativeBehavior10metaObjectEv @ 1262 NONAME ABSENT
+ _ZNK20QDeclarativeBehavior7enabledEv @ 1263 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue13isValueSourceEv @ 1264 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue13toValueSourceEv @ 1265 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue18isValueInterceptorEv @ 1266 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue18toValueInterceptorEv @ 1267 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue4typeEv @ 1268 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue6isListEv @ 1269 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue6lengthEv @ 1270 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue6toListEv @ 1271 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue8isObjectEv @ 1272 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue8positionEv @ 1273 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue8toObjectEv @ 1274 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue9isBindingEv @ 1275 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue9isInvalidEv @ 1276 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue9isLiteralEv @ 1277 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue9toBindingEv @ 1278 NONAME ABSENT
+ _ZNK20QDeclarativeDomValue9toLiteralEv @ 1279 NONAME ABSENT
_ZNK20QDeclarativeProperty10isPropertyEv @ 1280 NONAME
_ZNK20QDeclarativeProperty10isWritableEv @ 1281 NONAME
_ZNK20QDeclarativeProperty12isDesignableEv @ 1282 NONAME
@@ -1301,22 +1301,22 @@ EXPORTS
_ZNK20QDeclarativeProperty7isValidEv @ 1300 NONAME
_ZNK20QDeclarativeProperty8propertyEv @ 1301 NONAME
_ZNK20QDeclarativePropertyeqERKS_ @ 1302 NONAME
- _ZNK20QMetaPropertyBuilder10isEditableEv @ 1303 NONAME
- _ZNK20QMetaPropertyBuilder10isReadableEv @ 1304 NONAME
- _ZNK20QMetaPropertyBuilder10isWritableEv @ 1305 NONAME
- _ZNK20QMetaPropertyBuilder12hasStdCppSetEv @ 1306 NONAME
- _ZNK20QMetaPropertyBuilder12isDesignableEv @ 1307 NONAME
- _ZNK20QMetaPropertyBuilder12isEnumOrFlagEv @ 1308 NONAME
- _ZNK20QMetaPropertyBuilder12isResettableEv @ 1309 NONAME
- _ZNK20QMetaPropertyBuilder12isScriptableEv @ 1310 NONAME
- _ZNK20QMetaPropertyBuilder12notifySignalEv @ 1311 NONAME
- _ZNK20QMetaPropertyBuilder15hasNotifySignalEv @ 1312 NONAME
- _ZNK20QMetaPropertyBuilder4nameEv @ 1313 NONAME
- _ZNK20QMetaPropertyBuilder4typeEv @ 1314 NONAME
- _ZNK20QMetaPropertyBuilder6d_funcEv @ 1315 NONAME
- _ZNK20QMetaPropertyBuilder6isUserEv @ 1316 NONAME
- _ZNK20QMetaPropertyBuilder8isStoredEv @ 1317 NONAME
- _ZNK20QMetaPropertyBuilder9isDynamicEv @ 1318 NONAME
+ _ZNK20QMetaPropertyBuilder10isEditableEv @ 1303 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder10isReadableEv @ 1304 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder10isWritableEv @ 1305 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder12hasStdCppSetEv @ 1306 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder12isDesignableEv @ 1307 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder12isEnumOrFlagEv @ 1308 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder12isResettableEv @ 1309 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder12isScriptableEv @ 1310 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder12notifySignalEv @ 1311 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder15hasNotifySignalEv @ 1312 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder4nameEv @ 1313 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder4typeEv @ 1314 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder6d_funcEv @ 1315 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder6isUserEv @ 1316 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder8isStoredEv @ 1317 NONAME ABSENT
+ _ZNK20QMetaPropertyBuilder9isDynamicEv @ 1318 NONAME ABSENT
_ZNK21QDeclarativeComponent10metaObjectEv @ 1319 NONAME
_ZNK21QDeclarativeComponent11errorStringEv @ 1320 NONAME
_ZNK21QDeclarativeComponent15creationContextEv @ 1321 NONAME
@@ -1328,49 +1328,49 @@ EXPORTS
_ZNK21QDeclarativeComponent7isReadyEv @ 1327 NONAME
_ZNK21QDeclarativeComponent8progressEv @ 1328 NONAME
_ZNK21QDeclarativeComponent9isLoadingEv @ 1329 NONAME
- _ZNK21QDeclarativeDomImport3uriEv @ 1330 NONAME
- _ZNK21QDeclarativeDomImport4typeEv @ 1331 NONAME
- _ZNK21QDeclarativeDomImport7versionEv @ 1332 NONAME
- _ZNK21QDeclarativeDomImport9qualifierEv @ 1333 NONAME
- _ZNK21QDeclarativeDomObject10objectTypeEv @ 1334 NONAME
- _ZNK21QDeclarativeDomObject10propertiesEv @ 1335 NONAME
- _ZNK21QDeclarativeDomObject11isComponentEv @ 1336 NONAME
- _ZNK21QDeclarativeDomObject11toComponentEv @ 1337 NONAME
- _ZNK21QDeclarativeDomObject12isCustomTypeEv @ 1338 NONAME
- _ZNK21QDeclarativeDomObject14customTypeDataEv @ 1339 NONAME
- _ZNK21QDeclarativeDomObject15dynamicPropertyERK10QByteArray @ 1340 NONAME
- _ZNK21QDeclarativeDomObject15objectClassNameEv @ 1341 NONAME
- _ZNK21QDeclarativeDomObject17dynamicPropertiesEv @ 1342 NONAME
- _ZNK21QDeclarativeDomObject22objectTypeMajorVersionEv @ 1343 NONAME
- _ZNK21QDeclarativeDomObject22objectTypeMinorVersionEv @ 1344 NONAME
- _ZNK21QDeclarativeDomObject3urlEv @ 1345 NONAME
- _ZNK21QDeclarativeDomObject6lengthEv @ 1346 NONAME
- _ZNK21QDeclarativeDomObject7isValidEv @ 1347 NONAME
- _ZNK21QDeclarativeDomObject8objectIdEv @ 1348 NONAME
- _ZNK21QDeclarativeDomObject8positionEv @ 1349 NONAME
- _ZNK21QDeclarativeDomObject8propertyERK10QByteArray @ 1350 NONAME
- _ZNK21QDeclarativeListModel10metaObjectEv @ 1351 NONAME
- _ZNK21QDeclarativeListModel3getEi @ 1352 NONAME
+ _ZNK21QDeclarativeDomImport3uriEv @ 1330 NONAME ABSENT
+ _ZNK21QDeclarativeDomImport4typeEv @ 1331 NONAME ABSENT
+ _ZNK21QDeclarativeDomImport7versionEv @ 1332 NONAME ABSENT
+ _ZNK21QDeclarativeDomImport9qualifierEv @ 1333 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject10objectTypeEv @ 1334 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject10propertiesEv @ 1335 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject11isComponentEv @ 1336 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject11toComponentEv @ 1337 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject12isCustomTypeEv @ 1338 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject14customTypeDataEv @ 1339 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject15dynamicPropertyERK10QByteArray @ 1340 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject15objectClassNameEv @ 1341 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject17dynamicPropertiesEv @ 1342 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject22objectTypeMajorVersionEv @ 1343 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject22objectTypeMinorVersionEv @ 1344 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject3urlEv @ 1345 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject6lengthEv @ 1346 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject7isValidEv @ 1347 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject8objectIdEv @ 1348 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject8positionEv @ 1349 NONAME ABSENT
+ _ZNK21QDeclarativeDomObject8propertyERK10QByteArray @ 1350 NONAME ABSENT
+ _ZNK21QDeclarativeListModel10metaObjectEv @ 1351 NONAME ABSENT
+ _ZNK21QDeclarativeListModel3getEi @ 1352 NONAME ABSENT
_ZNK21QDeclarativeListModel4dataEiRK5QListIiE @ 1353 NONAME ABSENT
- _ZNK21QDeclarativeListModel4dataEii @ 1354 NONAME
- _ZNK21QDeclarativeListModel5countEv @ 1355 NONAME
- _ZNK21QDeclarativeListModel5rolesEv @ 1356 NONAME
- _ZNK21QDeclarativeListModel8toStringEi @ 1357 NONAME
- _ZNK21QDeclarativeRectangle10metaObjectEv @ 1358 NONAME
- _ZNK21QDeclarativeRectangle12boundingRectEv @ 1359 NONAME
- _ZNK21QDeclarativeRectangle5colorEv @ 1360 NONAME
- _ZNK21QDeclarativeRectangle6radiusEv @ 1361 NONAME
- _ZNK21QDeclarativeRectangle8gradientEv @ 1362 NONAME
- _ZNK21QDeclarativeScaleGrid10metaObjectEv @ 1363 NONAME
- _ZNK21QDeclarativeScaleGrid6isNullEv @ 1364 NONAME
- _ZNK21QDeclarativeValueType10metaObjectEv @ 1365 NONAME
- _ZNK22QDeclarativeDebugQuery10metaObjectEv @ 1366 NONAME
- _ZNK22QDeclarativeDebugQuery5stateEv @ 1367 NONAME
- _ZNK22QDeclarativeDebugQuery9isWaitingEv @ 1368 NONAME
- _ZNK22QDeclarativeDebugWatch10metaObjectEv @ 1369 NONAME
- _ZNK22QDeclarativeDebugWatch13objectDebugIdEv @ 1370 NONAME
- _ZNK22QDeclarativeDebugWatch5stateEv @ 1371 NONAME
- _ZNK22QDeclarativeDebugWatch7queryIdEv @ 1372 NONAME
+ _ZNK21QDeclarativeListModel4dataEii @ 1354 NONAME ABSENT
+ _ZNK21QDeclarativeListModel5countEv @ 1355 NONAME ABSENT
+ _ZNK21QDeclarativeListModel5rolesEv @ 1356 NONAME ABSENT
+ _ZNK21QDeclarativeListModel8toStringEi @ 1357 NONAME ABSENT
+ _ZNK21QDeclarativeRectangle10metaObjectEv @ 1358 NONAME ABSENT
+ _ZNK21QDeclarativeRectangle12boundingRectEv @ 1359 NONAME ABSENT
+ _ZNK21QDeclarativeRectangle5colorEv @ 1360 NONAME ABSENT
+ _ZNK21QDeclarativeRectangle6radiusEv @ 1361 NONAME ABSENT
+ _ZNK21QDeclarativeRectangle8gradientEv @ 1362 NONAME ABSENT
+ _ZNK21QDeclarativeScaleGrid10metaObjectEv @ 1363 NONAME ABSENT
+ _ZNK21QDeclarativeScaleGrid6isNullEv @ 1364 NONAME ABSENT
+ _ZNK21QDeclarativeValueType10metaObjectEv @ 1365 NONAME ABSENT
+ _ZNK22QDeclarativeDebugQuery10metaObjectEv @ 1366 NONAME ABSENT
+ _ZNK22QDeclarativeDebugQuery5stateEv @ 1367 NONAME ABSENT
+ _ZNK22QDeclarativeDebugQuery9isWaitingEv @ 1368 NONAME ABSENT
+ _ZNK22QDeclarativeDebugWatch10metaObjectEv @ 1369 NONAME ABSENT
+ _ZNK22QDeclarativeDebugWatch13objectDebugIdEv @ 1370 NONAME ABSENT
+ _ZNK22QDeclarativeDebugWatch5stateEv @ 1371 NONAME ABSENT
+ _ZNK22QDeclarativeDebugWatch7queryIdEv @ 1372 NONAME ABSENT
_ZNK22QDeclarativeExpression10expressionEv @ 1373 NONAME
_ZNK22QDeclarativeExpression10lineNumberEv @ 1374 NONAME
_ZNK22QDeclarativeExpression10metaObjectEv @ 1375 NONAME
@@ -1389,21 +1389,21 @@ EXPORTS
_ZNK22QDeclarativeTransition10reversibleEv @ 1388 NONAME
_ZNK22QDeclarativeTransition7toStateEv @ 1389 NONAME
_ZNK22QDeclarativeTransition9fromStateEv @ 1390 NONAME
- _ZNK23QDeclarativeDebugClient10metaObjectEv @ 1391 NONAME
+ _ZNK23QDeclarativeDebugClient10metaObjectEv @ 1391 NONAME ABSENT
_ZNK23QDeclarativeDebugClient11isConnectedEv @ 1392 NONAME ABSENT
- _ZNK23QDeclarativeDebugClient4nameEv @ 1393 NONAME
+ _ZNK23QDeclarativeDebugClient4nameEv @ 1393 NONAME ABSENT
_ZNK23QDeclarativeDebugClient9isEnabledEv @ 1394 NONAME ABSENT
- _ZNK23QDeclarativeDomDocument10rootObjectEv @ 1395 NONAME
- _ZNK23QDeclarativeDomDocument6errorsEv @ 1396 NONAME
- _ZNK23QDeclarativeDomDocument7importsEv @ 1397 NONAME
- _ZNK23QDeclarativeDomProperty12propertyNameEv @ 1398 NONAME
- _ZNK23QDeclarativeDomProperty17isDefaultPropertyEv @ 1399 NONAME
- _ZNK23QDeclarativeDomProperty17propertyNamePartsEv @ 1400 NONAME
- _ZNK23QDeclarativeDomProperty5valueEv @ 1401 NONAME
- _ZNK23QDeclarativeDomProperty6lengthEv @ 1402 NONAME
- _ZNK23QDeclarativeDomProperty7isValidEv @ 1403 NONAME
- _ZNK23QDeclarativeDomProperty8positionEv @ 1404 NONAME
- _ZNK23QDeclarativeEngineDebug10metaObjectEv @ 1405 NONAME
+ _ZNK23QDeclarativeDomDocument10rootObjectEv @ 1395 NONAME ABSENT
+ _ZNK23QDeclarativeDomDocument6errorsEv @ 1396 NONAME ABSENT
+ _ZNK23QDeclarativeDomDocument7importsEv @ 1397 NONAME ABSENT
+ _ZNK23QDeclarativeDomProperty12propertyNameEv @ 1398 NONAME ABSENT
+ _ZNK23QDeclarativeDomProperty17isDefaultPropertyEv @ 1399 NONAME ABSENT
+ _ZNK23QDeclarativeDomProperty17propertyNamePartsEv @ 1400 NONAME ABSENT
+ _ZNK23QDeclarativeDomProperty5valueEv @ 1401 NONAME ABSENT
+ _ZNK23QDeclarativeDomProperty6lengthEv @ 1402 NONAME ABSENT
+ _ZNK23QDeclarativeDomProperty7isValidEv @ 1403 NONAME ABSENT
+ _ZNK23QDeclarativeDomProperty8positionEv @ 1404 NONAME ABSENT
+ _ZNK23QDeclarativeEngineDebug10metaObjectEv @ 1405 NONAME ABSENT
_ZNK23QDeclarativeItemPrivate14verticalCenterEv @ 1406 NONAME
_ZNK23QDeclarativeItemPrivate16horizontalCenterEv @ 1407 NONAME
_ZNK23QDeclarativeItemPrivate22computeTransformOriginEv @ 1408 NONAME
@@ -1425,10 +1425,10 @@ EXPORTS
_ZNK23QDeclarativePropertyMapixERK7QString @ 1424 NONAME
_ZNK24QDeclarativeCustomParser11resolveTypeERK10QByteArray @ 1425 NONAME
_ZNK24QDeclarativeCustomParser12evaluateEnumERK10QByteArray @ 1426 NONAME
- _ZNK24QDeclarativeDebugService10metaObjectEv @ 1427 NONAME
- _ZNK24QDeclarativeDebugService4nameEv @ 1428 NONAME
+ _ZNK24QDeclarativeDebugService10metaObjectEv @ 1427 NONAME ABSENT
+ _ZNK24QDeclarativeDebugService4nameEv @ 1428 NONAME ABSENT
_ZNK24QDeclarativeDebugService9isEnabledEv @ 1429 NONAME ABSENT
- _ZNK24QDeclarativeDomComponent13componentRootEv @ 1430 NONAME
+ _ZNK24QDeclarativeDomComponent13componentRootEv @ 1430 NONAME ABSENT
_ZNK24QDeclarativeScriptString11scopeObjectEv @ 1431 NONAME
_ZNK24QDeclarativeScriptString6scriptEv @ 1432 NONAME
_ZNK24QDeclarativeScriptString7contextEv @ 1433 NONAME
@@ -1444,193 +1444,193 @@ EXPORTS
_ZNK25QDeclarativeListReference8canClearEv @ 1443 NONAME
_ZNK25QDeclarativeListReference8canCountEv @ 1444 NONAME
_ZNK25QDeclarativeListReference9canAppendEv @ 1445 NONAME
- _ZNK26QDeclarativeOpenMetaObject4nameEi @ 1446 NONAME
- _ZNK26QDeclarativeOpenMetaObject4typeEv @ 1447 NONAME
- _ZNK26QDeclarativeOpenMetaObject5countEv @ 1448 NONAME
- _ZNK26QDeclarativeOpenMetaObject5valueERK10QByteArray @ 1449 NONAME
- _ZNK26QDeclarativeOpenMetaObject5valueEi @ 1450 NONAME
- _ZNK26QDeclarativeOpenMetaObject6objectEv @ 1451 NONAME
- _ZNK26QDeclarativeOpenMetaObject6parentEv @ 1452 NONAME
- _ZNK26QDeclarativeOpenMetaObject8hasValueEi @ 1453 NONAME
+ _ZNK26QDeclarativeOpenMetaObject4nameEi @ 1446 NONAME ABSENT
+ _ZNK26QDeclarativeOpenMetaObject4typeEv @ 1447 NONAME ABSENT
+ _ZNK26QDeclarativeOpenMetaObject5countEv @ 1448 NONAME ABSENT
+ _ZNK26QDeclarativeOpenMetaObject5valueERK10QByteArray @ 1449 NONAME ABSENT
+ _ZNK26QDeclarativeOpenMetaObject5valueEi @ 1450 NONAME ABSENT
+ _ZNK26QDeclarativeOpenMetaObject6objectEv @ 1451 NONAME ABSENT
+ _ZNK26QDeclarativeOpenMetaObject6parentEv @ 1452 NONAME ABSENT
+ _ZNK26QDeclarativeOpenMetaObject8hasValueEi @ 1453 NONAME ABSENT
_ZNK26QDeclarativeStateOperation10metaObjectEv @ 1454 NONAME
- _ZNK27QDeclarativeAbstractBinding10expressionEv @ 1455 NONAME
- _ZNK27QDeclarativeDebugConnection10metaObjectEv @ 1456 NONAME
- _ZNK27QDeclarativeDebugConnection11isConnectedEv @ 1457 NONAME
- _ZNK27QDeclarativeDomValueBinding7bindingEv @ 1458 NONAME
- _ZNK27QDeclarativeDomValueLiteral7literalEv @ 1459 NONAME
+ _ZNK27QDeclarativeAbstractBinding10expressionEv @ 1455 NONAME ABSENT
+ _ZNK27QDeclarativeDebugConnection10metaObjectEv @ 1456 NONAME ABSENT
+ _ZNK27QDeclarativeDebugConnection11isConnectedEv @ 1457 NONAME ABSENT
+ _ZNK27QDeclarativeDomValueBinding7bindingEv @ 1458 NONAME ABSENT
+ _ZNK27QDeclarativeDomValueLiteral7literalEv @ 1459 NONAME ABSENT
_ZNK27QDeclarativeExtensionPlugin10metaObjectEv @ 1460 NONAME
- _ZNK27QDeclarativeGridScaledImage10gridBottomEv @ 1461 NONAME
- _ZNK27QDeclarativeGridScaledImage7gridTopEv @ 1462 NONAME
- _ZNK27QDeclarativeGridScaledImage7isValidEv @ 1463 NONAME
- _ZNK27QDeclarativeGridScaledImage8gridLeftEv @ 1464 NONAME
- _ZNK27QDeclarativeGridScaledImage9gridRightEv @ 1465 NONAME
- _ZNK27QDeclarativeGridScaledImage9pixmapUrlEv @ 1466 NONAME
- _ZNK27QDeclarativePropertyPrivate11isValueTypeEv @ 1467 NONAME
- _ZNK27QDeclarativePropertyPrivate12propertyTypeEv @ 1468 NONAME
- _ZNK27QDeclarativePropertyPrivate20propertyTypeCategoryEv @ 1469 NONAME
+ _ZNK27QDeclarativeGridScaledImage10gridBottomEv @ 1461 NONAME ABSENT
+ _ZNK27QDeclarativeGridScaledImage7gridTopEv @ 1462 NONAME ABSENT
+ _ZNK27QDeclarativeGridScaledImage7isValidEv @ 1463 NONAME ABSENT
+ _ZNK27QDeclarativeGridScaledImage8gridLeftEv @ 1464 NONAME ABSENT
+ _ZNK27QDeclarativeGridScaledImage9gridRightEv @ 1465 NONAME ABSENT
+ _ZNK27QDeclarativeGridScaledImage9pixmapUrlEv @ 1466 NONAME ABSENT
+ _ZNK27QDeclarativePropertyPrivate11isValueTypeEv @ 1467 NONAME ABSENT
+ _ZNK27QDeclarativePropertyPrivate12propertyTypeEv @ 1468 NONAME ABSENT
+ _ZNK27QDeclarativePropertyPrivate20propertyTypeCategoryEv @ 1469 NONAME ABSENT
_ZNK28QDeclarativeCustomParserNode10propertiesEv @ 1470 NONAME
_ZNK28QDeclarativeCustomParserNode4nameEv @ 1471 NONAME
_ZNK28QDeclarativeCustomParserNode8locationEv @ 1472 NONAME
- _ZNK28QDeclarativeDebugObjectQuery10metaObjectEv @ 1473 NONAME
- _ZNK28QDeclarativeDebugObjectQuery6objectEv @ 1474 NONAME
- _ZNK29QDeclarativeDebugEnginesQuery10metaObjectEv @ 1475 NONAME
- _ZNK29QDeclarativeDebugEnginesQuery7enginesEv @ 1476 NONAME
- _ZNK30QDeclarativeDebugFileReference10lineNumberEv @ 1477 NONAME
- _ZNK30QDeclarativeDebugFileReference12columnNumberEv @ 1478 NONAME
- _ZNK30QDeclarativeDebugFileReference3urlEv @ 1479 NONAME
- _ZNK30QDeclarativeDebugPropertyWatch10metaObjectEv @ 1480 NONAME
- _ZNK30QDeclarativeDebugPropertyWatch4nameEv @ 1481 NONAME
- _ZNK30QDeclarativeDomDynamicProperty12defaultValueEv @ 1482 NONAME
- _ZNK30QDeclarativeDomDynamicProperty12propertyNameEv @ 1483 NONAME
- _ZNK30QDeclarativeDomDynamicProperty12propertyTypeEv @ 1484 NONAME
- _ZNK30QDeclarativeDomDynamicProperty16propertyTypeNameEv @ 1485 NONAME
- _ZNK30QDeclarativeDomDynamicProperty17isDefaultPropertyEv @ 1486 NONAME
- _ZNK30QDeclarativeDomDynamicProperty6lengthEv @ 1487 NONAME
- _ZNK30QDeclarativeDomDynamicProperty7isAliasEv @ 1488 NONAME
- _ZNK30QDeclarativeDomDynamicProperty7isValidEv @ 1489 NONAME
- _ZNK30QDeclarativeDomDynamicProperty8positionEv @ 1490 NONAME
- _ZNK30QDeclarativeOpenMetaObjectType12signalOffsetEv @ 1491 NONAME
- _ZNK30QDeclarativeOpenMetaObjectType14propertyOffsetEv @ 1492 NONAME
- _ZNK31QDeclarativeDomValueValueSource6objectEv @ 1493 NONAME
+ _ZNK28QDeclarativeDebugObjectQuery10metaObjectEv @ 1473 NONAME ABSENT
+ _ZNK28QDeclarativeDebugObjectQuery6objectEv @ 1474 NONAME ABSENT
+ _ZNK29QDeclarativeDebugEnginesQuery10metaObjectEv @ 1475 NONAME ABSENT
+ _ZNK29QDeclarativeDebugEnginesQuery7enginesEv @ 1476 NONAME ABSENT
+ _ZNK30QDeclarativeDebugFileReference10lineNumberEv @ 1477 NONAME ABSENT
+ _ZNK30QDeclarativeDebugFileReference12columnNumberEv @ 1478 NONAME ABSENT
+ _ZNK30QDeclarativeDebugFileReference3urlEv @ 1479 NONAME ABSENT
+ _ZNK30QDeclarativeDebugPropertyWatch10metaObjectEv @ 1480 NONAME ABSENT
+ _ZNK30QDeclarativeDebugPropertyWatch4nameEv @ 1481 NONAME ABSENT
+ _ZNK30QDeclarativeDomDynamicProperty12defaultValueEv @ 1482 NONAME ABSENT
+ _ZNK30QDeclarativeDomDynamicProperty12propertyNameEv @ 1483 NONAME ABSENT
+ _ZNK30QDeclarativeDomDynamicProperty12propertyTypeEv @ 1484 NONAME ABSENT
+ _ZNK30QDeclarativeDomDynamicProperty16propertyTypeNameEv @ 1485 NONAME ABSENT
+ _ZNK30QDeclarativeDomDynamicProperty17isDefaultPropertyEv @ 1486 NONAME ABSENT
+ _ZNK30QDeclarativeDomDynamicProperty6lengthEv @ 1487 NONAME ABSENT
+ _ZNK30QDeclarativeDomDynamicProperty7isAliasEv @ 1488 NONAME ABSENT
+ _ZNK30QDeclarativeDomDynamicProperty7isValidEv @ 1489 NONAME ABSENT
+ _ZNK30QDeclarativeDomDynamicProperty8positionEv @ 1490 NONAME ABSENT
+ _ZNK30QDeclarativeOpenMetaObjectType12signalOffsetEv @ 1491 NONAME ABSENT
+ _ZNK30QDeclarativeOpenMetaObjectType14propertyOffsetEv @ 1492 NONAME ABSENT
+ _ZNK31QDeclarativeDomValueValueSource6objectEv @ 1493 NONAME ABSENT
_ZNK32QDeclarativeCustomParserProperty14assignedValuesEv @ 1494 NONAME
_ZNK32QDeclarativeCustomParserProperty4nameEv @ 1495 NONAME
_ZNK32QDeclarativeCustomParserProperty6isListEv @ 1496 NONAME
_ZNK32QDeclarativeCustomParserProperty8locationEv @ 1497 NONAME
- _ZNK32QDeclarativeDebugEngineReference4nameEv @ 1498 NONAME
- _ZNK32QDeclarativeDebugEngineReference7debugIdEv @ 1499 NONAME
- _ZNK32QDeclarativeDebugExpressionQuery10expressionEv @ 1500 NONAME
- _ZNK32QDeclarativeDebugExpressionQuery10metaObjectEv @ 1501 NONAME
- _ZNK32QDeclarativeDebugExpressionQuery6resultEv @ 1502 NONAME
- _ZNK32QDeclarativeDebugObjectReference10propertiesEv @ 1503 NONAME
- _ZNK32QDeclarativeDebugObjectReference14contextDebugIdEv @ 1504 NONAME
- _ZNK32QDeclarativeDebugObjectReference4nameEv @ 1505 NONAME
- _ZNK32QDeclarativeDebugObjectReference6sourceEv @ 1506 NONAME
- _ZNK32QDeclarativeDebugObjectReference7debugIdEv @ 1507 NONAME
- _ZNK32QDeclarativeDebugObjectReference8childrenEv @ 1508 NONAME
- _ZNK32QDeclarativeDebugObjectReference8idStringEv @ 1509 NONAME
- _ZNK32QDeclarativeDebugObjectReference9classNameEv @ 1510 NONAME
- _ZNK33QDeclarativeDebugContextReference4nameEv @ 1511 NONAME
- _ZNK33QDeclarativeDebugContextReference7debugIdEv @ 1512 NONAME
- _ZNK33QDeclarativeDebugContextReference7objectsEv @ 1513 NONAME
- _ZNK33QDeclarativeDebugContextReference8contextsEv @ 1514 NONAME
- _ZNK33QDeclarativeDebugRootContextQuery10metaObjectEv @ 1515 NONAME
- _ZNK33QDeclarativeDebugRootContextQuery11rootContextEv @ 1516 NONAME
- _ZNK34QDeclarativeDebugPropertyReference13objectDebugIdEv @ 1517 NONAME
- _ZNK34QDeclarativeDebugPropertyReference13valueTypeNameEv @ 1518 NONAME
- _ZNK34QDeclarativeDebugPropertyReference15hasNotifySignalEv @ 1519 NONAME
- _ZNK34QDeclarativeDebugPropertyReference4nameEv @ 1520 NONAME
- _ZNK34QDeclarativeDebugPropertyReference5valueEv @ 1521 NONAME
- _ZNK34QDeclarativeDebugPropertyReference7bindingEv @ 1522 NONAME
- _ZNK36QDeclarativeDomValueValueInterceptor6objectEv @ 1523 NONAME
- _ZNK38QDeclarativeDebugObjectExpressionWatch10expressionEv @ 1524 NONAME
- _ZNK38QDeclarativeDebugObjectExpressionWatch10metaObjectEv @ 1525 NONAME
- _ZNK7QPacket7isEmptyEv @ 1526 NONAME
- _ZTI15QDeclarativePen @ 1527 NONAME
- _ZTI15QPacketAutoSend @ 1528 NONAME
- _ZTI15QPacketProtocol @ 1529 NONAME
+ _ZNK32QDeclarativeDebugEngineReference4nameEv @ 1498 NONAME ABSENT
+ _ZNK32QDeclarativeDebugEngineReference7debugIdEv @ 1499 NONAME ABSENT
+ _ZNK32QDeclarativeDebugExpressionQuery10expressionEv @ 1500 NONAME ABSENT
+ _ZNK32QDeclarativeDebugExpressionQuery10metaObjectEv @ 1501 NONAME ABSENT
+ _ZNK32QDeclarativeDebugExpressionQuery6resultEv @ 1502 NONAME ABSENT
+ _ZNK32QDeclarativeDebugObjectReference10propertiesEv @ 1503 NONAME ABSENT
+ _ZNK32QDeclarativeDebugObjectReference14contextDebugIdEv @ 1504 NONAME ABSENT
+ _ZNK32QDeclarativeDebugObjectReference4nameEv @ 1505 NONAME ABSENT
+ _ZNK32QDeclarativeDebugObjectReference6sourceEv @ 1506 NONAME ABSENT
+ _ZNK32QDeclarativeDebugObjectReference7debugIdEv @ 1507 NONAME ABSENT
+ _ZNK32QDeclarativeDebugObjectReference8childrenEv @ 1508 NONAME ABSENT
+ _ZNK32QDeclarativeDebugObjectReference8idStringEv @ 1509 NONAME ABSENT
+ _ZNK32QDeclarativeDebugObjectReference9classNameEv @ 1510 NONAME ABSENT
+ _ZNK33QDeclarativeDebugContextReference4nameEv @ 1511 NONAME ABSENT
+ _ZNK33QDeclarativeDebugContextReference7debugIdEv @ 1512 NONAME ABSENT
+ _ZNK33QDeclarativeDebugContextReference7objectsEv @ 1513 NONAME ABSENT
+ _ZNK33QDeclarativeDebugContextReference8contextsEv @ 1514 NONAME ABSENT
+ _ZNK33QDeclarativeDebugRootContextQuery10metaObjectEv @ 1515 NONAME ABSENT
+ _ZNK33QDeclarativeDebugRootContextQuery11rootContextEv @ 1516 NONAME ABSENT
+ _ZNK34QDeclarativeDebugPropertyReference13objectDebugIdEv @ 1517 NONAME ABSENT
+ _ZNK34QDeclarativeDebugPropertyReference13valueTypeNameEv @ 1518 NONAME ABSENT
+ _ZNK34QDeclarativeDebugPropertyReference15hasNotifySignalEv @ 1519 NONAME ABSENT
+ _ZNK34QDeclarativeDebugPropertyReference4nameEv @ 1520 NONAME ABSENT
+ _ZNK34QDeclarativeDebugPropertyReference5valueEv @ 1521 NONAME ABSENT
+ _ZNK34QDeclarativeDebugPropertyReference7bindingEv @ 1522 NONAME ABSENT
+ _ZNK36QDeclarativeDomValueValueInterceptor6objectEv @ 1523 NONAME ABSENT
+ _ZNK38QDeclarativeDebugObjectExpressionWatch10expressionEv @ 1524 NONAME ABSENT
+ _ZNK38QDeclarativeDebugObjectExpressionWatch10metaObjectEv @ 1525 NONAME ABSENT
+ _ZNK7QPacket7isEmptyEv @ 1526 NONAME ABSENT
+ _ZTI15QDeclarativePen @ 1527 NONAME ABSENT
+ _ZTI15QPacketAutoSend @ 1528 NONAME ABSENT
+ _ZTI15QPacketProtocol @ 1529 NONAME ABSENT
_ZTI16QDeclarativeItem @ 1530 NONAME
- _ZTI16QDeclarativeText @ 1531 NONAME
+ _ZTI16QDeclarativeText @ 1531 NONAME ABSENT
_ZTI16QDeclarativeView @ 1532 NONAME
_ZTI17QDeclarativeState @ 1533 NONAME
_ZTI18QDeclarativeEngine @ 1534 NONAME
- _ZTI18QMetaObjectBuilder @ 1535 NONAME
- _ZTI19QDeclarativeAnchors @ 1536 NONAME
- _ZTI19QDeclarativeBinding @ 1537 NONAME
+ _ZTI18QMetaObjectBuilder @ 1535 NONAME ABSENT
+ _ZTI19QDeclarativeAnchors @ 1536 NONAME ABSENT
+ _ZTI19QDeclarativeBinding @ 1537 NONAME ABSENT
_ZTI19QDeclarativeContext @ 1538 NONAME
- _ZTI19QListModelInterface @ 1539 NONAME
- _ZTI20QDeclarativeBehavior @ 1540 NONAME
+ _ZTI19QListModelInterface @ 1539 NONAME ABSENT
+ _ZTI20QDeclarativeBehavior @ 1540 NONAME ABSENT
_ZTI21QDeclarativeComponent @ 1541 NONAME
- _ZTI21QDeclarativeListModel @ 1542 NONAME
- _ZTI21QDeclarativeRectangle @ 1543 NONAME
- _ZTI21QDeclarativeScaleGrid @ 1544 NONAME
- _ZTI21QDeclarativeValueType @ 1545 NONAME
- _ZTI22QDeclarativeDebugQuery @ 1546 NONAME
- _ZTI22QDeclarativeDebugWatch @ 1547 NONAME
+ _ZTI21QDeclarativeListModel @ 1542 NONAME ABSENT
+ _ZTI21QDeclarativeRectangle @ 1543 NONAME ABSENT
+ _ZTI21QDeclarativeScaleGrid @ 1544 NONAME ABSENT
+ _ZTI21QDeclarativeValueType @ 1545 NONAME ABSENT
+ _ZTI22QDeclarativeDebugQuery @ 1546 NONAME ABSENT
+ _ZTI22QDeclarativeDebugWatch @ 1547 NONAME ABSENT
_ZTI22QDeclarativeExpression @ 1548 NONAME
_ZTI22QDeclarativeStateGroup @ 1549 NONAME
_ZTI22QDeclarativeTransition @ 1550 NONAME
- _ZTI23QDeclarativeDebugClient @ 1551 NONAME
- _ZTI23QDeclarativeEngineDebug @ 1552 NONAME
+ _ZTI23QDeclarativeDebugClient @ 1551 NONAME ABSENT
+ _ZTI23QDeclarativeEngineDebug @ 1552 NONAME ABSENT
_ZTI23QDeclarativeItemPrivate @ 1553 NONAME
_ZTI23QDeclarativePropertyMap @ 1554 NONAME
_ZTI24QDeclarativeCustomParser @ 1555 NONAME
- _ZTI24QDeclarativeDebugService @ 1556 NONAME
+ _ZTI24QDeclarativeDebugService @ 1556 NONAME ABSENT
_ZTI24QDeclarativeParserStatus @ 1557 NONAME
_ZTI25QDeclarativeImageProvider @ 1558 NONAME
- _ZTI26QDeclarativeDebuggerStatus @ 1559 NONAME
- _ZTI26QDeclarativeOpenMetaObject @ 1560 NONAME
+ _ZTI26QDeclarativeDebuggerStatus @ 1559 NONAME ABSENT
+ _ZTI26QDeclarativeOpenMetaObject @ 1560 NONAME ABSENT
_ZTI26QDeclarativeStateOperation @ 1561 NONAME
- _ZTI27QDeclarativeAbstractBinding @ 1562 NONAME
- _ZTI27QDeclarativeDebugConnection @ 1563 NONAME
+ _ZTI27QDeclarativeAbstractBinding @ 1562 NONAME ABSENT
+ _ZTI27QDeclarativeDebugConnection @ 1563 NONAME ABSENT
_ZTI27QDeclarativeExtensionPlugin @ 1564 NONAME
- _ZTI28QDeclarativeDebugObjectQuery @ 1565 NONAME
- _ZTI29QDeclarativeDebugEnginesQuery @ 1566 NONAME
- _ZTI30QDeclarativeDebugPropertyWatch @ 1567 NONAME
+ _ZTI28QDeclarativeDebugObjectQuery @ 1565 NONAME ABSENT
+ _ZTI29QDeclarativeDebugEnginesQuery @ 1566 NONAME ABSENT
+ _ZTI30QDeclarativeDebugPropertyWatch @ 1567 NONAME ABSENT
_ZTI30QDeclarativeExtensionInterface @ 1568 NONAME
- _ZTI30QDeclarativeOpenMetaObjectType @ 1569 NONAME
+ _ZTI30QDeclarativeOpenMetaObjectType @ 1569 NONAME ABSENT
_ZTI31QDeclarativePropertyValueSource @ 1570 NONAME
- _ZTI32QDeclarativeDebugExpressionQuery @ 1571 NONAME
- _ZTI33QDeclarativeDebugRootContextQuery @ 1572 NONAME
+ _ZTI32QDeclarativeDebugExpressionQuery @ 1571 NONAME ABSENT
+ _ZTI33QDeclarativeDebugRootContextQuery @ 1572 NONAME ABSENT
_ZTI36QDeclarativePropertyValueInterceptor @ 1573 NONAME
- _ZTI38QDeclarativeDebugObjectExpressionWatch @ 1574 NONAME
+ _ZTI38QDeclarativeDebugObjectExpressionWatch @ 1574 NONAME ABSENT
_ZTI39QDeclarativeNetworkAccessManagerFactory @ 1575 NONAME
- _ZTI7QPacket @ 1576 NONAME
- _ZTV15QDeclarativePen @ 1577 NONAME
- _ZTV15QPacketAutoSend @ 1578 NONAME
- _ZTV15QPacketProtocol @ 1579 NONAME
+ _ZTI7QPacket @ 1576 NONAME ABSENT
+ _ZTV15QDeclarativePen @ 1577 NONAME ABSENT
+ _ZTV15QPacketAutoSend @ 1578 NONAME ABSENT
+ _ZTV15QPacketProtocol @ 1579 NONAME ABSENT
_ZTV16QDeclarativeItem @ 1580 NONAME
- _ZTV16QDeclarativeText @ 1581 NONAME
+ _ZTV16QDeclarativeText @ 1581 NONAME ABSENT
_ZTV16QDeclarativeView @ 1582 NONAME
_ZTV17QDeclarativeState @ 1583 NONAME
_ZTV18QDeclarativeEngine @ 1584 NONAME
- _ZTV18QMetaObjectBuilder @ 1585 NONAME
- _ZTV19QDeclarativeAnchors @ 1586 NONAME
- _ZTV19QDeclarativeBinding @ 1587 NONAME
+ _ZTV18QMetaObjectBuilder @ 1585 NONAME ABSENT
+ _ZTV19QDeclarativeAnchors @ 1586 NONAME ABSENT
+ _ZTV19QDeclarativeBinding @ 1587 NONAME ABSENT
_ZTV19QDeclarativeContext @ 1588 NONAME
- _ZTV19QListModelInterface @ 1589 NONAME
- _ZTV20QDeclarativeBehavior @ 1590 NONAME
+ _ZTV19QListModelInterface @ 1589 NONAME ABSENT
+ _ZTV20QDeclarativeBehavior @ 1590 NONAME ABSENT
_ZTV21QDeclarativeComponent @ 1591 NONAME
- _ZTV21QDeclarativeListModel @ 1592 NONAME
- _ZTV21QDeclarativeRectangle @ 1593 NONAME
- _ZTV21QDeclarativeScaleGrid @ 1594 NONAME
- _ZTV21QDeclarativeValueType @ 1595 NONAME
- _ZTV22QDeclarativeDebugQuery @ 1596 NONAME
- _ZTV22QDeclarativeDebugWatch @ 1597 NONAME
+ _ZTV21QDeclarativeListModel @ 1592 NONAME ABSENT
+ _ZTV21QDeclarativeRectangle @ 1593 NONAME ABSENT
+ _ZTV21QDeclarativeScaleGrid @ 1594 NONAME ABSENT
+ _ZTV21QDeclarativeValueType @ 1595 NONAME ABSENT
+ _ZTV22QDeclarativeDebugQuery @ 1596 NONAME ABSENT
+ _ZTV22QDeclarativeDebugWatch @ 1597 NONAME ABSENT
_ZTV22QDeclarativeExpression @ 1598 NONAME
_ZTV22QDeclarativeStateGroup @ 1599 NONAME
_ZTV22QDeclarativeTransition @ 1600 NONAME
- _ZTV23QDeclarativeDebugClient @ 1601 NONAME
- _ZTV23QDeclarativeEngineDebug @ 1602 NONAME
+ _ZTV23QDeclarativeDebugClient @ 1601 NONAME ABSENT
+ _ZTV23QDeclarativeEngineDebug @ 1602 NONAME ABSENT
_ZTV23QDeclarativeItemPrivate @ 1603 NONAME
_ZTV23QDeclarativePropertyMap @ 1604 NONAME
_ZTV24QDeclarativeCustomParser @ 1605 NONAME
- _ZTV24QDeclarativeDebugService @ 1606 NONAME
+ _ZTV24QDeclarativeDebugService @ 1606 NONAME ABSENT
_ZTV24QDeclarativeParserStatus @ 1607 NONAME
_ZTV25QDeclarativeImageProvider @ 1608 NONAME
- _ZTV26QDeclarativeDebuggerStatus @ 1609 NONAME
- _ZTV26QDeclarativeOpenMetaObject @ 1610 NONAME
+ _ZTV26QDeclarativeDebuggerStatus @ 1609 NONAME ABSENT
+ _ZTV26QDeclarativeOpenMetaObject @ 1610 NONAME ABSENT
_ZTV26QDeclarativeStateOperation @ 1611 NONAME
- _ZTV27QDeclarativeAbstractBinding @ 1612 NONAME
- _ZTV27QDeclarativeDebugConnection @ 1613 NONAME
+ _ZTV27QDeclarativeAbstractBinding @ 1612 NONAME ABSENT
+ _ZTV27QDeclarativeDebugConnection @ 1613 NONAME ABSENT
_ZTV27QDeclarativeExtensionPlugin @ 1614 NONAME
- _ZTV28QDeclarativeDebugObjectQuery @ 1615 NONAME
- _ZTV29QDeclarativeDebugEnginesQuery @ 1616 NONAME
- _ZTV30QDeclarativeDebugPropertyWatch @ 1617 NONAME
- _ZTV30QDeclarativeOpenMetaObjectType @ 1618 NONAME
+ _ZTV28QDeclarativeDebugObjectQuery @ 1615 NONAME ABSENT
+ _ZTV29QDeclarativeDebugEnginesQuery @ 1616 NONAME ABSENT
+ _ZTV30QDeclarativeDebugPropertyWatch @ 1617 NONAME ABSENT
+ _ZTV30QDeclarativeOpenMetaObjectType @ 1618 NONAME ABSENT
_ZTV31QDeclarativePropertyValueSource @ 1619 NONAME
- _ZTV32QDeclarativeDebugExpressionQuery @ 1620 NONAME
- _ZTV33QDeclarativeDebugRootContextQuery @ 1621 NONAME
+ _ZTV32QDeclarativeDebugExpressionQuery @ 1620 NONAME ABSENT
+ _ZTV33QDeclarativeDebugRootContextQuery @ 1621 NONAME ABSENT
_ZTV36QDeclarativePropertyValueInterceptor @ 1622 NONAME
- _ZTV38QDeclarativeDebugObjectExpressionWatch @ 1623 NONAME
+ _ZTV38QDeclarativeDebugObjectExpressionWatch @ 1623 NONAME ABSENT
_ZTV39QDeclarativeNetworkAccessManagerFactory @ 1624 NONAME
- _ZTV7QPacket @ 1625 NONAME
+ _ZTV7QPacket @ 1625 NONAME ABSENT
_ZThn16_N16QDeclarativeItem10classBeginEv @ 1626 NONAME
_ZThn16_N16QDeclarativeItem17componentCompleteEv @ 1627 NONAME
_ZThn16_N16QDeclarativeItemD0Ev @ 1628 NONAME
_ZThn16_N16QDeclarativeItemD1Ev @ 1629 NONAME
- _ZThn16_N16QDeclarativeText17componentCompleteEv @ 1630 NONAME
- _ZThn16_N16QDeclarativeTextD0Ev @ 1631 NONAME
- _ZThn16_N16QDeclarativeTextD1Ev @ 1632 NONAME
+ _ZThn16_N16QDeclarativeText17componentCompleteEv @ 1630 NONAME ABSENT
+ _ZThn16_N16QDeclarativeTextD0Ev @ 1631 NONAME ABSENT
+ _ZThn16_N16QDeclarativeTextD1Ev @ 1632 NONAME ABSENT
_ZThn8_N16QDeclarativeItem10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 1633 NONAME
_ZThn8_N16QDeclarativeItem10sceneEventEP6QEvent @ 1634 NONAME
_ZThn8_N16QDeclarativeItem13keyPressEventEP9QKeyEvent @ 1635 NONAME
@@ -1639,23 +1639,23 @@ EXPORTS
_ZThn8_N16QDeclarativeItem5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1638 NONAME
_ZThn8_N16QDeclarativeItemD0Ev @ 1639 NONAME
_ZThn8_N16QDeclarativeItemD1Ev @ 1640 NONAME
- _ZThn8_N16QDeclarativeText15mousePressEventEP24QGraphicsSceneMouseEvent @ 1641 NONAME
- _ZThn8_N16QDeclarativeText17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 1642 NONAME
- _ZThn8_N16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1643 NONAME
- _ZThn8_N16QDeclarativeTextD0Ev @ 1644 NONAME
- _ZThn8_N16QDeclarativeTextD1Ev @ 1645 NONAME
+ _ZThn8_N16QDeclarativeText15mousePressEventEP24QGraphicsSceneMouseEvent @ 1641 NONAME ABSENT
+ _ZThn8_N16QDeclarativeText17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 1642 NONAME ABSENT
+ _ZThn8_N16QDeclarativeText5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1643 NONAME ABSENT
+ _ZThn8_N16QDeclarativeTextD0Ev @ 1644 NONAME ABSENT
+ _ZThn8_N16QDeclarativeTextD1Ev @ 1645 NONAME ABSENT
_ZThn8_N16QDeclarativeViewD0Ev @ 1646 NONAME
_ZThn8_N16QDeclarativeViewD1Ev @ 1647 NONAME
- _ZThn8_N19QDeclarativeBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 1648 NONAME
- _ZThn8_N19QDeclarativeBinding13propertyIndexEv @ 1649 NONAME
- _ZThn8_N19QDeclarativeBinding6updateE6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 1650 NONAME
- _ZThn8_N19QDeclarativeBindingD0Ev @ 1651 NONAME
- _ZThn8_N19QDeclarativeBindingD1Ev @ 1652 NONAME
- _ZThn8_N20QDeclarativeBehavior5writeERK8QVariant @ 1653 NONAME
- _ZThn8_N20QDeclarativeBehavior9setTargetERK20QDeclarativeProperty @ 1654 NONAME
- _ZThn8_N20QDeclarativeBehaviorD0Ev @ 1655 NONAME
- _ZThn8_N20QDeclarativeBehaviorD1Ev @ 1656 NONAME
- _ZThn8_N21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1657 NONAME
+ _ZThn8_N19QDeclarativeBinding10setEnabledEb6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 1648 NONAME ABSENT
+ _ZThn8_N19QDeclarativeBinding13propertyIndexEv @ 1649 NONAME ABSENT
+ _ZThn8_N19QDeclarativeBinding6updateE6QFlagsIN27QDeclarativePropertyPrivate9WriteFlagEE @ 1650 NONAME ABSENT
+ _ZThn8_N19QDeclarativeBindingD0Ev @ 1651 NONAME ABSENT
+ _ZThn8_N19QDeclarativeBindingD1Ev @ 1652 NONAME ABSENT
+ _ZThn8_N20QDeclarativeBehavior5writeERK8QVariant @ 1653 NONAME ABSENT
+ _ZThn8_N20QDeclarativeBehavior9setTargetERK20QDeclarativeProperty @ 1654 NONAME ABSENT
+ _ZThn8_N20QDeclarativeBehaviorD0Ev @ 1655 NONAME ABSENT
+ _ZThn8_N20QDeclarativeBehaviorD1Ev @ 1656 NONAME ABSENT
+ _ZThn8_N21QDeclarativeRectangle5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 1657 NONAME ABSENT
_ZThn8_N22QDeclarativeStateGroup10classBeginEv @ 1658 NONAME
_ZThn8_N22QDeclarativeStateGroup17componentCompleteEv @ 1659 NONAME
_ZThn8_N22QDeclarativeStateGroupD0Ev @ 1660 NONAME
@@ -1665,16 +1665,16 @@ EXPORTS
_ZThn8_N27QDeclarativeExtensionPluginD1Ev @ 1664 NONAME
_ZThn8_NK16QDeclarativeItem12boundingRectEv @ 1665 NONAME
_ZThn8_NK16QDeclarativeItem16inputMethodQueryEN2Qt16InputMethodQueryE @ 1666 NONAME
- _ZThn8_NK16QDeclarativeText12boundingRectEv @ 1667 NONAME
- _ZThn8_NK19QDeclarativeBinding10expressionEv @ 1668 NONAME
- _ZThn8_NK21QDeclarativeRectangle12boundingRectEv @ 1669 NONAME
+ _ZThn8_NK16QDeclarativeText12boundingRectEv @ 1667 NONAME ABSENT
+ _ZThn8_NK19QDeclarativeBinding10expressionEv @ 1668 NONAME ABSENT
+ _ZThn8_NK21QDeclarativeRectangle12boundingRectEv @ 1669 NONAME ABSENT
_Zls6QDebugP16QDeclarativeItem @ 1670 NONAME
_Zls6QDebugRK17QDeclarativeError @ 1671 NONAME
- _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 1672 NONAME
- _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 1673 NONAME
- _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 1674 NONAME
- _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 1675 NONAME
- _ZN23QDeclarativeEngineDebug10newObjectsEv @ 1676 NONAME
+ _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 1672 NONAME ABSENT
+ _ZlsR11QDataStreamRKN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 1673 NONAME ABSENT
+ _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer22QDeclarativeObjectDataE @ 1674 NONAME ABSENT
+ _ZrsR11QDataStreamRN29QDeclarativeEngineDebugServer26QDeclarativeObjectPropertyE @ 1675 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug10newObjectsEv @ 1676 NONAME ABSENT
_ZN17QDeclarativeState20addEntryToRevertListERK18QDeclarativeAction @ 1677 NONAME
_ZN17QDeclarativeState22addEntriesToRevertListERK5QListI18QDeclarativeActionE @ 1678 NONAME
_ZN17QDeclarativeState23changeValueInRevertListEP7QObjectRK10QByteArrayRK8QVariant @ 1679 NONAME
@@ -1686,202 +1686,203 @@ EXPORTS
_ZN23QDeclarativeItemPrivate15resources_clearEP24QDeclarativeListPropertyI7QObjectE @ 1685 NONAME
_ZN23QDeclarativeItemPrivate7data_atEP24QDeclarativeListPropertyI7QObjectEi @ 1686 NONAME
_ZN26QDeclarativeStateOperation8setStateEP17QDeclarativeState @ 1687 NONAME
- _ZN27QDeclarativeAbstractBinding11weakPointerEv @ 1688 NONAME
- _ZN27QDeclarativePropertyChanges11changeValueERK10QByteArrayRK8QVariant @ 1689 NONAME
- _ZN27QDeclarativePropertyChanges11qt_metacallEN11QMetaObject4CallEiPPv @ 1690 NONAME
- _ZN27QDeclarativePropertyChanges11qt_metacastEPKc @ 1691 NONAME
- _ZN27QDeclarativePropertyChanges13attachToStateEv @ 1692 NONAME
- _ZN27QDeclarativePropertyChanges13setIsExplicitEb @ 1693 NONAME
- _ZN27QDeclarativePropertyChanges14removePropertyERK10QByteArray @ 1694 NONAME
- _ZN27QDeclarativePropertyChanges15detachFromStateEv @ 1695 NONAME
- _ZN27QDeclarativePropertyChanges16changeExpressionERK10QByteArrayRK7QString @ 1696 NONAME
- _ZN27QDeclarativePropertyChanges16staticMetaObjectE @ 1697 NONAME DATA 16
- _ZN27QDeclarativePropertyChanges19getStaticMetaObjectEv @ 1698 NONAME
- _ZN27QDeclarativePropertyChanges21setRestoreEntryValuesEb @ 1699 NONAME
- _ZN27QDeclarativePropertyChanges7actionsEv @ 1700 NONAME
- _ZN27QDeclarativePropertyChanges9setObjectEP7QObject @ 1701 NONAME
- _ZN27QDeclarativePropertyChangesC1Ev @ 1702 NONAME
- _ZN27QDeclarativePropertyChangesC2Ev @ 1703 NONAME
- _ZN27QDeclarativePropertyChangesD0Ev @ 1704 NONAME
- _ZN27QDeclarativePropertyChangesD1Ev @ 1705 NONAME
- _ZN27QDeclarativePropertyChangesD2Ev @ 1706 NONAME
+ _ZN27QDeclarativeAbstractBinding11weakPointerEv @ 1688 NONAME ABSENT
+ _ZN27QDeclarativePropertyChanges11changeValueERK10QByteArrayRK8QVariant @ 1689 NONAME ABSENT
+ _ZN27QDeclarativePropertyChanges11qt_metacallEN11QMetaObject4CallEiPPv @ 1690 NONAME ABSENT
+ _ZN27QDeclarativePropertyChanges11qt_metacastEPKc @ 1691 NONAME ABSENT
+ _ZN27QDeclarativePropertyChanges13attachToStateEv @ 1692 NONAME ABSENT
+ _ZN27QDeclarativePropertyChanges13setIsExplicitEb @ 1693 NONAME ABSENT
+ _ZN27QDeclarativePropertyChanges14removePropertyERK10QByteArray @ 1694 NONAME ABSENT
+ _ZN27QDeclarativePropertyChanges15detachFromStateEv @ 1695 NONAME ABSENT
+ _ZN27QDeclarativePropertyChanges16changeExpressionERK10QByteArrayRK7QString @ 1696 NONAME ABSENT
+ _ZN27QDeclarativePropertyChanges16staticMetaObjectE @ 1697 NONAME DATA 16 ABSENT
+ _ZN27QDeclarativePropertyChanges19getStaticMetaObjectEv @ 1698 NONAME ABSENT
+ _ZN27QDeclarativePropertyChanges21setRestoreEntryValuesEb @ 1699 NONAME ABSENT
+ _ZN27QDeclarativePropertyChanges7actionsEv @ 1700 NONAME ABSENT
+ _ZN27QDeclarativePropertyChanges9setObjectEP7QObject @ 1701 NONAME ABSENT
+ _ZN27QDeclarativePropertyChangesC1Ev @ 1702 NONAME ABSENT
+ _ZN27QDeclarativePropertyChangesC2Ev @ 1703 NONAME ABSENT
+ _ZN27QDeclarativePropertyChangesD0Ev @ 1704 NONAME ABSENT
+ _ZN27QDeclarativePropertyChangesD1Ev @ 1705 NONAME ABSENT
+ _ZN27QDeclarativePropertyChangesD2Ev @ 1706 NONAME ABSENT
_ZNK17QDeclarativeState13isStateActiveEv @ 1707 NONAME
_ZNK17QDeclarativeState17valueInRevertListEP7QObjectRK10QByteArray @ 1708 NONAME
_ZNK17QDeclarativeState19bindingInRevertListEP7QObjectRK10QByteArray @ 1709 NONAME
_ZNK17QDeclarativeState28containsPropertyInRevertListEP7QObjectRK10QByteArray @ 1710 NONAME
_ZNK26QDeclarativeStateOperation5stateEv @ 1711 NONAME
- _ZNK27QDeclarativePropertyChanges10expressionERK10QByteArray @ 1712 NONAME
- _ZNK27QDeclarativePropertyChanges10isExplicitEv @ 1713 NONAME
- _ZNK27QDeclarativePropertyChanges10metaObjectEv @ 1714 NONAME
- _ZNK27QDeclarativePropertyChanges13containsValueERK10QByteArray @ 1715 NONAME
- _ZNK27QDeclarativePropertyChanges16containsPropertyERK10QByteArray @ 1716 NONAME
- _ZNK27QDeclarativePropertyChanges18containsExpressionERK10QByteArray @ 1717 NONAME
- _ZNK27QDeclarativePropertyChanges18restoreEntryValuesEv @ 1718 NONAME
- _ZNK27QDeclarativePropertyChanges5valueERK10QByteArray @ 1719 NONAME
- _ZNK27QDeclarativePropertyChanges6objectEv @ 1720 NONAME
- _ZNK27QDeclarativePropertyChanges8propertyERK10QByteArray @ 1721 NONAME
- _ZTI27QDeclarativePropertyChanges @ 1722 NONAME
- _ZTV27QDeclarativePropertyChanges @ 1723 NONAME
- _ZN24QDeclarativeScriptAction10transitionER5QListI18QDeclarativeActionERS0_I20QDeclarativePropertyEN29QDeclarativeAbstractAnimation19TransitionDirectionE @ 1724 NONAME
- _ZN24QDeclarativeScriptAction11qtAnimationEv @ 1725 NONAME
- _ZN24QDeclarativeScriptAction11qt_metacallEN11QMetaObject4CallEiPPv @ 1726 NONAME
- _ZN24QDeclarativeScriptAction11qt_metacastEPKc @ 1727 NONAME
- _ZN24QDeclarativeScriptAction16staticMetaObjectE @ 1728 NONAME DATA 16
- _ZN24QDeclarativeScriptAction19getStaticMetaObjectEv @ 1729 NONAME
- _ZN24QDeclarativeScriptAction24setStateChangeScriptNameERK7QString @ 1730 NONAME
- _ZN24QDeclarativeScriptAction9setScriptERK24QDeclarativeScriptString @ 1731 NONAME
- _ZN24QDeclarativeScriptActionC1EP7QObject @ 1732 NONAME
- _ZN24QDeclarativeScriptActionC2EP7QObject @ 1733 NONAME
- _ZN24QDeclarativeScriptActionD0Ev @ 1734 NONAME
- _ZN24QDeclarativeScriptActionD1Ev @ 1735 NONAME
- _ZN24QDeclarativeScriptActionD2Ev @ 1736 NONAME
- _ZNK24QDeclarativeScriptAction10metaObjectEv @ 1737 NONAME
- _ZNK24QDeclarativeScriptAction21stateChangeScriptNameEv @ 1738 NONAME
- _ZNK24QDeclarativeScriptAction6scriptEv @ 1739 NONAME
- _ZTI24QDeclarativeScriptAction @ 1740 NONAME
- _ZTV24QDeclarativeScriptAction @ 1741 NONAME
- _ZThn12_N24QDeclarativeScriptActionD0Ev @ 1742 NONAME
- _ZThn12_N24QDeclarativeScriptActionD1Ev @ 1743 NONAME
- _ZThn8_N24QDeclarativeScriptActionD0Ev @ 1744 NONAME
- _ZThn8_N24QDeclarativeScriptActionD1Ev @ 1745 NONAME
- _ZN21QDeclarativeListModelC1EPKS_P32QDeclarativeListModelWorkerAgent @ 1746 NONAME
- _ZN21QDeclarativeListModelC2EPKS_P32QDeclarativeListModelWorkerAgent @ 1747 NONAME
- _ZNK21QDeclarativeListModel14inWorkerThreadEv @ 1748 NONAME
- _ZN23QDeclarativeDebugHelper15getScriptEngineEP18QDeclarativeEngine @ 1749 NONAME
- _ZN23QDeclarativeDebugHelper26setAnimationSlowDownFactorEf @ 1750 NONAME
- _ZN17QDeclarativeTimer10classBeginEv @ 1751 NONAME
- _ZN17QDeclarativeTimer10setRunningEb @ 1752 NONAME
- _ZN17QDeclarativeTimer11qt_metacallEN11QMetaObject4CallEiPPv @ 1753 NONAME
- _ZN17QDeclarativeTimer11qt_metacastEPKc @ 1754 NONAME
- _ZN17QDeclarativeTimer11setIntervalEi @ 1755 NONAME
- _ZN17QDeclarativeTimer12setRepeatingEb @ 1756 NONAME
- _ZN17QDeclarativeTimer13repeatChangedEv @ 1757 NONAME
- _ZN17QDeclarativeTimer14runningChangedEv @ 1758 NONAME
- _ZN17QDeclarativeTimer15intervalChangedEv @ 1759 NONAME
- _ZN17QDeclarativeTimer16staticMetaObjectE @ 1760 NONAME DATA 16
- _ZN17QDeclarativeTimer17componentCompleteEv @ 1761 NONAME
- _ZN17QDeclarativeTimer19getStaticMetaObjectEv @ 1762 NONAME
- _ZN17QDeclarativeTimer19setTriggeredOnStartEb @ 1763 NONAME
- _ZN17QDeclarativeTimer23triggeredOnStartChangedEv @ 1764 NONAME
- _ZN17QDeclarativeTimer4stopEv @ 1765 NONAME
- _ZN17QDeclarativeTimer5startEv @ 1766 NONAME
- _ZN17QDeclarativeTimer6tickedEv @ 1767 NONAME
- _ZN17QDeclarativeTimer6updateEv @ 1768 NONAME
- _ZN17QDeclarativeTimer7restartEv @ 1769 NONAME
- _ZN17QDeclarativeTimer8finishedEv @ 1770 NONAME
- _ZN17QDeclarativeTimer9triggeredEv @ 1771 NONAME
- _ZN17QDeclarativeTimerC1EP7QObject @ 1772 NONAME
- _ZN17QDeclarativeTimerC2EP7QObject @ 1773 NONAME
- _ZN23QDeclarativeDebugClient13statusChangedENS_6StatusE @ 1774 NONAME
- _ZN23QDeclarativeDebugClientD0Ev @ 1775 NONAME
- _ZN23QDeclarativeDebugClientD1Ev @ 1776 NONAME
- _ZN23QDeclarativeDebugClientD2Ev @ 1777 NONAME
- _ZN23QDeclarativeEngineDebug13statusChangedENS_6StatusE @ 1778 NONAME
- _ZN24QDeclarativeDebugService13statusChangedENS_6StatusE @ 1779 NONAME
- _ZN24QDeclarativeDebugServiceD0Ev @ 1780 NONAME
- _ZN24QDeclarativeDebugServiceD1Ev @ 1781 NONAME
- _ZN24QDeclarativeDebugServiceD2Ev @ 1782 NONAME
- _ZN26QDeclarativeBasePositioner10addChangedEv @ 1783 NONAME
- _ZN26QDeclarativeBasePositioner10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 1784 NONAME
- _ZN26QDeclarativeBasePositioner10setSpacingEi @ 1785 NONAME
- _ZN26QDeclarativeBasePositioner11moveChangedEv @ 1786 NONAME
- _ZN26QDeclarativeBasePositioner11qt_metacallEN11QMetaObject4CallEiPPv @ 1787 NONAME
- _ZN26QDeclarativeBasePositioner11qt_metacastEPKc @ 1788 NONAME
- _ZN26QDeclarativeBasePositioner14prePositioningEv @ 1789 NONAME
- _ZN26QDeclarativeBasePositioner14spacingChangedEv @ 1790 NONAME
- _ZN26QDeclarativeBasePositioner16staticMetaObjectE @ 1791 NONAME DATA 16
- _ZN26QDeclarativeBasePositioner17componentCompleteEv @ 1792 NONAME
- _ZN26QDeclarativeBasePositioner19getStaticMetaObjectEv @ 1793 NONAME
- _ZN26QDeclarativeBasePositioner22finishApplyTransitionsEv @ 1794 NONAME
- _ZN26QDeclarativeBasePositioner29graphicsWidgetGeometryChangedEv @ 1795 NONAME
- _ZN26QDeclarativeBasePositioner6setAddEP22QDeclarativeTransition @ 1796 NONAME
- _ZN26QDeclarativeBasePositioner7setMoveEP22QDeclarativeTransition @ 1797 NONAME
- _ZN26QDeclarativeBasePositioner9positionXEiRKNS_14PositionedItemE @ 1798 NONAME
- _ZN26QDeclarativeBasePositioner9positionYEiRKNS_14PositionedItemE @ 1799 NONAME
- _ZN26QDeclarativeBasePositionerC2ENS_14PositionerTypeEP16QDeclarativeItem @ 1800 NONAME
- _ZN26QDeclarativeBasePositionerC2ER33QDeclarativeBasePositionerPrivateNS_14PositionerTypeEP16QDeclarativeItem @ 1801 NONAME
- _ZN26QDeclarativeBasePositionerD0Ev @ 1802 NONAME
- _ZN26QDeclarativeBasePositionerD1Ev @ 1803 NONAME
- _ZN26QDeclarativeBasePositionerD2Ev @ 1804 NONAME
- _ZN27QDeclarativeDebugConnectionD0Ev @ 1805 NONAME
- _ZN27QDeclarativeDebugConnectionD1Ev @ 1806 NONAME
- _ZN27QDeclarativeDebugConnectionD2Ev @ 1807 NONAME
- _ZN29QDeclarativeAbstractAnimation10classBeginEv @ 1808 NONAME
- _ZN29QDeclarativeAbstractAnimation10setRunningEb @ 1809 NONAME
- _ZN29QDeclarativeAbstractAnimation10transitionER5QListI18QDeclarativeActionERS0_I20QDeclarativePropertyENS_19TransitionDirectionE @ 1810 NONAME
- _ZN29QDeclarativeAbstractAnimation11currentTimeEv @ 1811 NONAME
- _ZN29QDeclarativeAbstractAnimation11qt_metacallEN11QMetaObject4CallEiPPv @ 1812 NONAME
- _ZN29QDeclarativeAbstractAnimation11qt_metacastEPKc @ 1813 NONAME
- _ZN29QDeclarativeAbstractAnimation13pausedChangedEb @ 1814 NONAME
- _ZN29QDeclarativeAbstractAnimation14runningChangedEb @ 1815 NONAME
- _ZN29QDeclarativeAbstractAnimation14setCurrentTimeEi @ 1816 NONAME
- _ZN29QDeclarativeAbstractAnimation16loopCountChangedEi @ 1817 NONAME
- _ZN29QDeclarativeAbstractAnimation16setDefaultTargetERK20QDeclarativeProperty @ 1818 NONAME
- _ZN29QDeclarativeAbstractAnimation16staticMetaObjectE @ 1819 NONAME DATA 16
- _ZN29QDeclarativeAbstractAnimation16timelineCompleteEv @ 1820 NONAME
- _ZN29QDeclarativeAbstractAnimation17componentCompleteEv @ 1821 NONAME
- _ZN29QDeclarativeAbstractAnimation17setAlwaysRunToEndEb @ 1822 NONAME
- _ZN29QDeclarativeAbstractAnimation18componentFinalizedEv @ 1823 NONAME
- _ZN29QDeclarativeAbstractAnimation19getStaticMetaObjectEv @ 1824 NONAME
- _ZN29QDeclarativeAbstractAnimation20notifyRunningChangedEb @ 1825 NONAME
- _ZN29QDeclarativeAbstractAnimation21alwaysRunToEndChangedEb @ 1826 NONAME
- _ZN29QDeclarativeAbstractAnimation21setDisableUserControlEv @ 1827 NONAME
- _ZN29QDeclarativeAbstractAnimation4stopEv @ 1828 NONAME
- _ZN29QDeclarativeAbstractAnimation5pauseEv @ 1829 NONAME
- _ZN29QDeclarativeAbstractAnimation5startEv @ 1830 NONAME
- _ZN29QDeclarativeAbstractAnimation6resumeEv @ 1831 NONAME
- _ZN29QDeclarativeAbstractAnimation7restartEv @ 1832 NONAME
- _ZN29QDeclarativeAbstractAnimation7startedEv @ 1833 NONAME
- _ZN29QDeclarativeAbstractAnimation8completeEv @ 1834 NONAME
- _ZN29QDeclarativeAbstractAnimation8setGroupEP26QDeclarativeAnimationGroup @ 1835 NONAME
- _ZN29QDeclarativeAbstractAnimation8setLoopsEi @ 1836 NONAME
- _ZN29QDeclarativeAbstractAnimation9completedEv @ 1837 NONAME
- _ZN29QDeclarativeAbstractAnimation9setPausedEb @ 1838 NONAME
- _ZN29QDeclarativeAbstractAnimation9setTargetERK20QDeclarativeProperty @ 1839 NONAME
- _ZN29QDeclarativeAbstractAnimationC2EP7QObject @ 1840 NONAME
- _ZN29QDeclarativeAbstractAnimationC2ER36QDeclarativeAbstractAnimationPrivateP7QObject @ 1841 NONAME
- _ZN29QDeclarativeAbstractAnimationD0Ev @ 1842 NONAME
- _ZN29QDeclarativeAbstractAnimationD1Ev @ 1843 NONAME
- _ZN29QDeclarativeAbstractAnimationD2Ev @ 1844 NONAME
- _ZNK16QDeclarativeType20attachedPropertiesIdEv @ 1845 NONAME
- _ZNK17QDeclarativeTimer10metaObjectEv @ 1846 NONAME
- _ZNK17QDeclarativeTimer11isRepeatingEv @ 1847 NONAME
- _ZNK17QDeclarativeTimer16triggeredOnStartEv @ 1848 NONAME
- _ZNK17QDeclarativeTimer8intervalEv @ 1849 NONAME
- _ZNK17QDeclarativeTimer9isRunningEv @ 1850 NONAME
- _ZNK23QDeclarativeDebugClient6statusEv @ 1851 NONAME
- _ZNK23QDeclarativeEngineDebug6statusEv @ 1852 NONAME
- _ZNK24QDeclarativeDebugService6statusEv @ 1853 NONAME
- _ZNK26QDeclarativeBasePositioner10metaObjectEv @ 1854 NONAME
- _ZNK26QDeclarativeBasePositioner3addEv @ 1855 NONAME
- _ZNK26QDeclarativeBasePositioner4moveEv @ 1856 NONAME
- _ZNK26QDeclarativeBasePositioner7spacingEv @ 1857 NONAME
- _ZNK29QDeclarativeAbstractAnimation10metaObjectEv @ 1858 NONAME
- _ZNK29QDeclarativeAbstractAnimation14alwaysRunToEndEv @ 1859 NONAME
- _ZNK29QDeclarativeAbstractAnimation5groupEv @ 1860 NONAME
- _ZNK29QDeclarativeAbstractAnimation5loopsEv @ 1861 NONAME
- _ZNK29QDeclarativeAbstractAnimation8isPausedEv @ 1862 NONAME
- _ZNK29QDeclarativeAbstractAnimation9isRunningEv @ 1863 NONAME
- _ZTI17QDeclarativeTimer @ 1864 NONAME
- _ZTI26QDeclarativeBasePositioner @ 1865 NONAME
- _ZTI29QDeclarativeAbstractAnimation @ 1866 NONAME
- _ZTV17QDeclarativeTimer @ 1867 NONAME
- _ZTV26QDeclarativeBasePositioner @ 1868 NONAME
- _ZTV29QDeclarativeAbstractAnimation @ 1869 NONAME
- _ZThn12_N29QDeclarativeAbstractAnimation10classBeginEv @ 1870 NONAME
- _ZThn12_N29QDeclarativeAbstractAnimation17componentCompleteEv @ 1871 NONAME
- _ZThn12_N29QDeclarativeAbstractAnimationD0Ev @ 1872 NONAME
- _ZThn12_N29QDeclarativeAbstractAnimationD1Ev @ 1873 NONAME
- _ZThn16_N26QDeclarativeBasePositioner17componentCompleteEv @ 1874 NONAME
- _ZThn16_N26QDeclarativeBasePositionerD0Ev @ 1875 NONAME
- _ZThn16_N26QDeclarativeBasePositionerD1Ev @ 1876 NONAME
- _ZThn8_N17QDeclarativeTimer10classBeginEv @ 1877 NONAME
- _ZThn8_N17QDeclarativeTimer17componentCompleteEv @ 1878 NONAME
- _ZThn8_N26QDeclarativeBasePositioner10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 1879 NONAME
- _ZThn8_N26QDeclarativeBasePositionerD0Ev @ 1880 NONAME
- _ZThn8_N26QDeclarativeBasePositionerD1Ev @ 1881 NONAME
- _ZThn8_N29QDeclarativeAbstractAnimation9setTargetERK20QDeclarativeProperty @ 1882 NONAME
- _ZThn8_N29QDeclarativeAbstractAnimationD0Ev @ 1883 NONAME
- _ZThn8_N29QDeclarativeAbstractAnimationD1Ev @ 1884 NONAME
- _ZN27QDeclarativePropertyPrivate7connectEPK7QObjectiS2_iiPi @ 1885 NONAME
+ _ZNK27QDeclarativePropertyChanges10expressionERK10QByteArray @ 1712 NONAME ABSENT
+ _ZNK27QDeclarativePropertyChanges10isExplicitEv @ 1713 NONAME ABSENT
+ _ZNK27QDeclarativePropertyChanges10metaObjectEv @ 1714 NONAME ABSENT
+ _ZNK27QDeclarativePropertyChanges13containsValueERK10QByteArray @ 1715 NONAME ABSENT
+ _ZNK27QDeclarativePropertyChanges16containsPropertyERK10QByteArray @ 1716 NONAME ABSENT
+ _ZNK27QDeclarativePropertyChanges18containsExpressionERK10QByteArray @ 1717 NONAME ABSENT
+ _ZNK27QDeclarativePropertyChanges18restoreEntryValuesEv @ 1718 NONAME ABSENT
+ _ZNK27QDeclarativePropertyChanges5valueERK10QByteArray @ 1719 NONAME ABSENT
+ _ZNK27QDeclarativePropertyChanges6objectEv @ 1720 NONAME ABSENT
+ _ZNK27QDeclarativePropertyChanges8propertyERK10QByteArray @ 1721 NONAME ABSENT
+ _ZTI27QDeclarativePropertyChanges @ 1722 NONAME ABSENT
+ _ZTV27QDeclarativePropertyChanges @ 1723 NONAME ABSENT
+ _ZN24QDeclarativeScriptAction10transitionER5QListI18QDeclarativeActionERS0_I20QDeclarativePropertyEN29QDeclarativeAbstractAnimation19TransitionDirectionE @ 1724 NONAME ABSENT
+ _ZN24QDeclarativeScriptAction11qtAnimationEv @ 1725 NONAME ABSENT
+ _ZN24QDeclarativeScriptAction11qt_metacallEN11QMetaObject4CallEiPPv @ 1726 NONAME ABSENT
+ _ZN24QDeclarativeScriptAction11qt_metacastEPKc @ 1727 NONAME ABSENT
+ _ZN24QDeclarativeScriptAction16staticMetaObjectE @ 1728 NONAME DATA 16 ABSENT
+ _ZN24QDeclarativeScriptAction19getStaticMetaObjectEv @ 1729 NONAME ABSENT
+ _ZN24QDeclarativeScriptAction24setStateChangeScriptNameERK7QString @ 1730 NONAME ABSENT
+ _ZN24QDeclarativeScriptAction9setScriptERK24QDeclarativeScriptString @ 1731 NONAME ABSENT
+ _ZN24QDeclarativeScriptActionC1EP7QObject @ 1732 NONAME ABSENT
+ _ZN24QDeclarativeScriptActionC2EP7QObject @ 1733 NONAME ABSENT
+ _ZN24QDeclarativeScriptActionD0Ev @ 1734 NONAME ABSENT
+ _ZN24QDeclarativeScriptActionD1Ev @ 1735 NONAME ABSENT
+ _ZN24QDeclarativeScriptActionD2Ev @ 1736 NONAME ABSENT
+ _ZNK24QDeclarativeScriptAction10metaObjectEv @ 1737 NONAME ABSENT
+ _ZNK24QDeclarativeScriptAction21stateChangeScriptNameEv @ 1738 NONAME ABSENT
+ _ZNK24QDeclarativeScriptAction6scriptEv @ 1739 NONAME ABSENT
+ _ZTI24QDeclarativeScriptAction @ 1740 NONAME ABSENT
+ _ZTV24QDeclarativeScriptAction @ 1741 NONAME ABSENT
+ _ZThn12_N24QDeclarativeScriptActionD0Ev @ 1742 NONAME ABSENT
+ _ZThn12_N24QDeclarativeScriptActionD1Ev @ 1743 NONAME ABSENT
+ _ZThn8_N24QDeclarativeScriptActionD0Ev @ 1744 NONAME ABSENT
+ _ZThn8_N24QDeclarativeScriptActionD1Ev @ 1745 NONAME ABSENT
+ _ZN21QDeclarativeListModelC1EPKS_P32QDeclarativeListModelWorkerAgent @ 1746 NONAME ABSENT
+ _ZN21QDeclarativeListModelC2EPKS_P32QDeclarativeListModelWorkerAgent @ 1747 NONAME ABSENT
+ _ZNK21QDeclarativeListModel14inWorkerThreadEv @ 1748 NONAME ABSENT
+ _ZN23QDeclarativeDebugHelper15getScriptEngineEP18QDeclarativeEngine @ 1749 NONAME ABSENT
+ _ZN23QDeclarativeDebugHelper26setAnimationSlowDownFactorEf @ 1750 NONAME ABSENT
+ _ZN17QDeclarativeTimer10classBeginEv @ 1751 NONAME ABSENT
+ _ZN17QDeclarativeTimer10setRunningEb @ 1752 NONAME ABSENT
+ _ZN17QDeclarativeTimer11qt_metacallEN11QMetaObject4CallEiPPv @ 1753 NONAME ABSENT
+ _ZN17QDeclarativeTimer11qt_metacastEPKc @ 1754 NONAME ABSENT
+ _ZN17QDeclarativeTimer11setIntervalEi @ 1755 NONAME ABSENT
+ _ZN17QDeclarativeTimer12setRepeatingEb @ 1756 NONAME ABSENT
+ _ZN17QDeclarativeTimer13repeatChangedEv @ 1757 NONAME ABSENT
+ _ZN17QDeclarativeTimer14runningChangedEv @ 1758 NONAME ABSENT
+ _ZN17QDeclarativeTimer15intervalChangedEv @ 1759 NONAME ABSENT
+ _ZN17QDeclarativeTimer16staticMetaObjectE @ 1760 NONAME DATA 16 ABSENT
+ _ZN17QDeclarativeTimer17componentCompleteEv @ 1761 NONAME ABSENT
+ _ZN17QDeclarativeTimer19getStaticMetaObjectEv @ 1762 NONAME ABSENT
+ _ZN17QDeclarativeTimer19setTriggeredOnStartEb @ 1763 NONAME ABSENT
+ _ZN17QDeclarativeTimer23triggeredOnStartChangedEv @ 1764 NONAME ABSENT
+ _ZN17QDeclarativeTimer4stopEv @ 1765 NONAME ABSENT
+ _ZN17QDeclarativeTimer5startEv @ 1766 NONAME ABSENT
+ _ZN17QDeclarativeTimer6tickedEv @ 1767 NONAME ABSENT
+ _ZN17QDeclarativeTimer6updateEv @ 1768 NONAME ABSENT
+ _ZN17QDeclarativeTimer7restartEv @ 1769 NONAME ABSENT
+ _ZN17QDeclarativeTimer8finishedEv @ 1770 NONAME ABSENT
+ _ZN17QDeclarativeTimer9triggeredEv @ 1771 NONAME ABSENT
+ _ZN17QDeclarativeTimerC1EP7QObject @ 1772 NONAME ABSENT
+ _ZN17QDeclarativeTimerC2EP7QObject @ 1773 NONAME ABSENT
+ _ZN23QDeclarativeDebugClient13statusChangedENS_6StatusE @ 1774 NONAME ABSENT
+ _ZN23QDeclarativeDebugClientD0Ev @ 1775 NONAME ABSENT
+ _ZN23QDeclarativeDebugClientD1Ev @ 1776 NONAME ABSENT
+ _ZN23QDeclarativeDebugClientD2Ev @ 1777 NONAME ABSENT
+ _ZN23QDeclarativeEngineDebug13statusChangedENS_6StatusE @ 1778 NONAME ABSENT
+ _ZN24QDeclarativeDebugService13statusChangedENS_6StatusE @ 1779 NONAME ABSENT
+ _ZN24QDeclarativeDebugServiceD0Ev @ 1780 NONAME ABSENT
+ _ZN24QDeclarativeDebugServiceD1Ev @ 1781 NONAME ABSENT
+ _ZN24QDeclarativeDebugServiceD2Ev @ 1782 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner10addChangedEv @ 1783 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 1784 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner10setSpacingEi @ 1785 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner11moveChangedEv @ 1786 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner11qt_metacallEN11QMetaObject4CallEiPPv @ 1787 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner11qt_metacastEPKc @ 1788 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner14prePositioningEv @ 1789 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner14spacingChangedEv @ 1790 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner16staticMetaObjectE @ 1791 NONAME DATA 16 ABSENT
+ _ZN26QDeclarativeBasePositioner17componentCompleteEv @ 1792 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner19getStaticMetaObjectEv @ 1793 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner22finishApplyTransitionsEv @ 1794 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner29graphicsWidgetGeometryChangedEv @ 1795 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner6setAddEP22QDeclarativeTransition @ 1796 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner7setMoveEP22QDeclarativeTransition @ 1797 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner9positionXEiRKNS_14PositionedItemE @ 1798 NONAME ABSENT
+ _ZN26QDeclarativeBasePositioner9positionYEiRKNS_14PositionedItemE @ 1799 NONAME ABSENT
+ _ZN26QDeclarativeBasePositionerC2ENS_14PositionerTypeEP16QDeclarativeItem @ 1800 NONAME ABSENT
+ _ZN26QDeclarativeBasePositionerC2ER33QDeclarativeBasePositionerPrivateNS_14PositionerTypeEP16QDeclarativeItem @ 1801 NONAME ABSENT
+ _ZN26QDeclarativeBasePositionerD0Ev @ 1802 NONAME ABSENT
+ _ZN26QDeclarativeBasePositionerD1Ev @ 1803 NONAME ABSENT
+ _ZN26QDeclarativeBasePositionerD2Ev @ 1804 NONAME ABSENT
+ _ZN27QDeclarativeDebugConnectionD0Ev @ 1805 NONAME ABSENT
+ _ZN27QDeclarativeDebugConnectionD1Ev @ 1806 NONAME ABSENT
+ _ZN27QDeclarativeDebugConnectionD2Ev @ 1807 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation10classBeginEv @ 1808 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation10setRunningEb @ 1809 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation10transitionER5QListI18QDeclarativeActionERS0_I20QDeclarativePropertyENS_19TransitionDirectionE @ 1810 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation11currentTimeEv @ 1811 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation11qt_metacallEN11QMetaObject4CallEiPPv @ 1812 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation11qt_metacastEPKc @ 1813 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation13pausedChangedEb @ 1814 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation14runningChangedEb @ 1815 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation14setCurrentTimeEi @ 1816 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation16loopCountChangedEi @ 1817 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation16setDefaultTargetERK20QDeclarativeProperty @ 1818 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation16staticMetaObjectE @ 1819 NONAME DATA 16 ABSENT
+ _ZN29QDeclarativeAbstractAnimation16timelineCompleteEv @ 1820 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation17componentCompleteEv @ 1821 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation17setAlwaysRunToEndEb @ 1822 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation18componentFinalizedEv @ 1823 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation19getStaticMetaObjectEv @ 1824 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation20notifyRunningChangedEb @ 1825 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation21alwaysRunToEndChangedEb @ 1826 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation21setDisableUserControlEv @ 1827 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation4stopEv @ 1828 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation5pauseEv @ 1829 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation5startEv @ 1830 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation6resumeEv @ 1831 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation7restartEv @ 1832 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation7startedEv @ 1833 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation8completeEv @ 1834 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation8setGroupEP26QDeclarativeAnimationGroup @ 1835 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation8setLoopsEi @ 1836 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation9completedEv @ 1837 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation9setPausedEb @ 1838 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimation9setTargetERK20QDeclarativeProperty @ 1839 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimationC2EP7QObject @ 1840 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimationC2ER36QDeclarativeAbstractAnimationPrivateP7QObject @ 1841 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimationD0Ev @ 1842 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimationD1Ev @ 1843 NONAME ABSENT
+ _ZN29QDeclarativeAbstractAnimationD2Ev @ 1844 NONAME ABSENT
+ _ZNK16QDeclarativeType20attachedPropertiesIdEv @ 1845 NONAME ABSENT
+ _ZNK17QDeclarativeTimer10metaObjectEv @ 1846 NONAME ABSENT
+ _ZNK17QDeclarativeTimer11isRepeatingEv @ 1847 NONAME ABSENT
+ _ZNK17QDeclarativeTimer16triggeredOnStartEv @ 1848 NONAME ABSENT
+ _ZNK17QDeclarativeTimer8intervalEv @ 1849 NONAME ABSENT
+ _ZNK17QDeclarativeTimer9isRunningEv @ 1850 NONAME ABSENT
+ _ZNK23QDeclarativeDebugClient6statusEv @ 1851 NONAME ABSENT
+ _ZNK23QDeclarativeEngineDebug6statusEv @ 1852 NONAME ABSENT
+ _ZNK24QDeclarativeDebugService6statusEv @ 1853 NONAME ABSENT
+ _ZNK26QDeclarativeBasePositioner10metaObjectEv @ 1854 NONAME ABSENT
+ _ZNK26QDeclarativeBasePositioner3addEv @ 1855 NONAME ABSENT
+ _ZNK26QDeclarativeBasePositioner4moveEv @ 1856 NONAME ABSENT
+ _ZNK26QDeclarativeBasePositioner7spacingEv @ 1857 NONAME ABSENT
+ _ZNK29QDeclarativeAbstractAnimation10metaObjectEv @ 1858 NONAME ABSENT
+ _ZNK29QDeclarativeAbstractAnimation14alwaysRunToEndEv @ 1859 NONAME ABSENT
+ _ZNK29QDeclarativeAbstractAnimation5groupEv @ 1860 NONAME ABSENT
+ _ZNK29QDeclarativeAbstractAnimation5loopsEv @ 1861 NONAME ABSENT
+ _ZNK29QDeclarativeAbstractAnimation8isPausedEv @ 1862 NONAME ABSENT
+ _ZNK29QDeclarativeAbstractAnimation9isRunningEv @ 1863 NONAME ABSENT
+ _ZTI17QDeclarativeTimer @ 1864 NONAME ABSENT
+ _ZTI26QDeclarativeBasePositioner @ 1865 NONAME ABSENT
+ _ZTI29QDeclarativeAbstractAnimation @ 1866 NONAME ABSENT
+ _ZTV17QDeclarativeTimer @ 1867 NONAME ABSENT
+ _ZTV26QDeclarativeBasePositioner @ 1868 NONAME ABSENT
+ _ZTV29QDeclarativeAbstractAnimation @ 1869 NONAME ABSENT
+ _ZThn12_N29QDeclarativeAbstractAnimation10classBeginEv @ 1870 NONAME ABSENT
+ _ZThn12_N29QDeclarativeAbstractAnimation17componentCompleteEv @ 1871 NONAME ABSENT
+ _ZThn12_N29QDeclarativeAbstractAnimationD0Ev @ 1872 NONAME ABSENT
+ _ZThn12_N29QDeclarativeAbstractAnimationD1Ev @ 1873 NONAME ABSENT
+ _ZThn16_N26QDeclarativeBasePositioner17componentCompleteEv @ 1874 NONAME ABSENT
+ _ZThn16_N26QDeclarativeBasePositionerD0Ev @ 1875 NONAME ABSENT
+ _ZThn16_N26QDeclarativeBasePositionerD1Ev @ 1876 NONAME ABSENT
+ _ZThn8_N17QDeclarativeTimer10classBeginEv @ 1877 NONAME ABSENT
+ _ZThn8_N17QDeclarativeTimer17componentCompleteEv @ 1878 NONAME ABSENT
+ _ZThn8_N26QDeclarativeBasePositioner10itemChangeEN13QGraphicsItem18GraphicsItemChangeERK8QVariant @ 1879 NONAME ABSENT
+ _ZThn8_N26QDeclarativeBasePositionerD0Ev @ 1880 NONAME ABSENT
+ _ZThn8_N26QDeclarativeBasePositionerD1Ev @ 1881 NONAME ABSENT
+ _ZThn8_N29QDeclarativeAbstractAnimation9setTargetERK20QDeclarativeProperty @ 1882 NONAME ABSENT
+ _ZThn8_N29QDeclarativeAbstractAnimationD0Ev @ 1883 NONAME ABSENT
+ _ZThn8_N29QDeclarativeAbstractAnimationD1Ev @ 1884 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 4e867a3320..54768a10ea 100644
--- a/src/s60installs/eabi/QtGuiu.def
+++ b/src/s60installs/eabi/QtGuiu.def
@@ -12094,9 +12094,15 @@ EXPORTS
_ZN18QTapAndHoldGesture7timeoutEv @ 12093 NONAME
_ZN20QGraphicsItemPrivate26childrenBoundingRectHelperEP10QTransformP6QRectFb @ 12094 NONAME ABSENT
_ZN20QGraphicsItemPrivate14children_clearEP24QDeclarativeListPropertyI15QGraphicsObjectE @ 12095 NONAME
- _ZN19QApplicationPrivate19qmljsDebugArgumentsE @ 12096 NONAME DATA 4
+ _ZN19QApplicationPrivate19qmljsDebugArgumentsE @ 12096 NONAME DATA 4 ABSENT
_ZN20QGraphicsItemPrivate26childrenBoundingRectHelperEP10QTransformP6QRectFP13QGraphicsItem @ 12097 NONAME
_ZNK20QGraphicsItemPrivate21effectiveBoundingRectEP13QGraphicsItem @ 12098 NONAME
- _ZNK5QFont14lastResortFontEv @ 12099 NONAME
- _ZN11QFontEngine33convertToPostscriptFontFamilyNameERK10QByteArray @ 12100 NONAME
+ _ZN19QApplicationPrivate21qmljs_debug_argumentsE @ 12099 NONAME DATA 4
+ _ZN19QApplicationPrivate25qmljsDebugArgumentsStringEv @ 12100 NONAME
+ _ZNK5QFont14lastResortFontEv @ 12101 NONAME
+ _ZN11QFontEngine33convertToPostscriptFontFamilyNameERK10QByteArray @ 12102 NONAME
+ _ZN15QStaticTextItem13setFontEngineEP11QFontEngine @ 12103 NONAME
+ _ZN15QStaticTextItemD1Ev @ 12104 NONAME
+ _ZN15QStaticTextItemD2Ev @ 12105 NONAME
+ _ZN19QEventDispatcherS6031reactivateDeferredActiveObjectsEv @ 12106 NONAME
diff --git a/src/s60installs/eabi/QtOpenGLu.def b/src/s60installs/eabi/QtOpenGLu.def
index 7ceade4a55..c92d99ecc6 100644
--- a/src/s60installs/eabi/QtOpenGLu.def
+++ b/src/s60installs/eabi/QtOpenGLu.def
@@ -702,4 +702,9 @@ EXPORTS
_ZeqRK9QGLFormatS1_ @ 701 NONAME
_Zls6QDebugRK9QGLFormat @ 702 NONAME
_ZneRK9QGLFormatS1_ @ 703 NONAME
+ _ZN16QGLWindowSurface26initializeOffscreenTextureERK5QSize @ 704 NONAME
+ _ZNK20QGLTextureGlyphCache15maxTextureWidthEv @ 705 NONAME
+ _ZNK20QGLTextureGlyphCache16maxTextureHeightEv @ 706 NONAME
+ _ZThn8_NK20QGLTextureGlyphCache15maxTextureWidthEv @ 707 NONAME
+ _ZThn8_NK20QGLTextureGlyphCache16maxTextureHeightEv @ 708 NONAME
diff --git a/src/s60installs/eabi/QtOpenVGu.def b/src/s60installs/eabi/QtOpenVGu.def
index 99942b8e20..e1828c1e43 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/s60installs/qt.iby b/src/s60installs/qt.iby
index 4afbf05c5d..2b3be0af0c 100644
--- a/src/s60installs/qt.iby
+++ b/src/s60installs/qt.iby
@@ -60,6 +60,8 @@ file=ABI_DIR\BUILD_DIR\qsymbianbearer.dll SHARED_LIB_DIR\qsymbianbearer.dll
// so don't bother including those plugins
file=ABI_DIR\BUILD_DIR\qts60plugin_5_0.dll SHARED_LIB_DIR\qts60plugin_5_0.dll
+file=ABI_DIR\BUILD_DIR\qtactilefeedback.dll SHARED_LIB_DIR\qtactilefeedback.dll
+
S60_APP_RESOURCE(s60main)
// imageformats stubs
@@ -105,6 +107,9 @@ data=\epoc32\data\z\resource\qt\plugins\graphicssystems\qglgraphicssystem.qtplug
// bearer stub
data=\epoc32\data\z\resource\qt\plugins\bearer\qsymbianbearer.qtplugin resource\qt\plugins\bearer\qsymbianbearer.qtplugin
+// feedback
+data=\epoc32\data\z\resource\qt\plugins\feedback\qtactilefeedback.qtplugin resource\qt\plugins\feedback\qtactilefeedback.qtplugin
+
// Stub sis file
data=ZSYSTEM\install\qt_stub.sis System\Install\qt_stub.sis
data=ZSYSTEM\install\qtwebkit_stub.sis System\Install\qtwebkit_stub.sis
diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro
index d63b97cc35..ff67bcfb88 100644
--- a/src/s60installs/s60installs.pro
+++ b/src/s60installs/s60installs.pro
@@ -35,6 +35,8 @@ symbian: {
}
VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION}
+ DESTDIR = $$QMAKE_LIBDIR_QT
+
qtlibraries.sources = \
$$QMAKE_LIBDIR_QT/QtCore$${QT_LIBINFIX}.dll \
$$QMAKE_LIBDIR_QT/QtXml$${QT_LIBINFIX}.dll \
@@ -85,6 +87,12 @@ symbian: {
DEPLOYMENT += bearer_plugin
}
+ !contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) {
+ feedback_plugin.sources = $$QT_BUILD_TREE/plugins/s60/feedback/qtactilefeedback$${QT_LIBINFIX}.dll
+ feedback_plugin.path = c:$$QT_PLUGINS_BASE_DIR/feedback
+ DEPLOYMENT += feedback_plugin
+ }
+
qtlibraries.pkg_postrules += qts60plugindeployment
qtlibraries.path = c:/sys/bin
@@ -183,11 +191,9 @@ symbian: {
qtlibraries.sources += $$QMAKE_LIBDIR_QT/QtOpenVG$${QT_LIBINFIX}.dll
graphicssystems_plugins.sources += $$QT_BUILD_TREE/plugins/graphicssystems/qvggraphicssystem$${QT_LIBINFIX}.dll
# OpenVG requires Symbian^3 or later
- pkg_platform_dependencies -= \
- "[0x101F7961],0,0,0,{\"S60ProductID\"}" \
- "[0x102032BE],0,0,0,{\"S60ProductID\"}" \
- "[0x102752AE],0,0,0,{\"S60ProductID\"}" \
- "[0x1028315F],0,0,0,{\"S60ProductID\"}"
+ pkg_platform_dependencies = \
+ "[0x20022E6D],0,0,0,{\"S60ProductID\"}" \
+ "[0x20032DE7],0,0,0,{\"S60ProductID\"}"
}
contains(QT_CONFIG, opengl) {
diff --git a/src/script/api/qscriptcontextinfo.cpp b/src/script/api/qscriptcontextinfo.cpp
index a90e0146af..8528decd61 100644
--- a/src/script/api/qscriptcontextinfo.cpp
+++ b/src/script/api/qscriptcontextinfo.cpp
@@ -177,7 +177,7 @@ QScriptContextInfoPrivate::QScriptContextInfoPrivate(const QScriptContext *conte
fileName = source->url();
}
- // Get the others informations:
+ // Get the others information:
JSC::JSObject *callee = frame->callee();
if (callee && callee->inherits(&JSC::InternalFunction::info))
functionName = JSC::asInternalFunction(callee)->name(frame);
diff --git a/src/script/api/qscriptvalue.cpp b/src/script/api/qscriptvalue.cpp
index f6390bb0be..e40458b896 100644
--- a/src/script/api/qscriptvalue.cpp
+++ b/src/script/api/qscriptvalue.cpp
@@ -1736,10 +1736,12 @@ QScriptValue QScriptValue::construct(const QScriptValueList &args)
JSC::JSValue savedException;
QScriptEnginePrivate::saveException(exec, &savedException);
- JSC::JSObject *result = JSC::construct(exec, callee, constructType, constructData, jscArgs);
+ JSC::JSValue result;
+ JSC::JSObject *newObject = JSC::construct(exec, callee, constructType, constructData, jscArgs);
if (exec->hadException()) {
- result = JSC::asObject(exec->exception());
+ result = exec->exception();
} else {
+ result = newObject;
QScriptEnginePrivate::restoreException(exec, savedException);
}
return d->engine->scriptValueFromJSCValue(result);
@@ -1796,11 +1798,12 @@ QScriptValue QScriptValue::construct(const QScriptValue &arguments)
JSC::JSValue savedException;
QScriptEnginePrivate::saveException(exec, &savedException);
- JSC::JSObject *result = JSC::construct(exec, callee, constructType, constructData, applyArgs);
+ JSC::JSValue result;
+ JSC::JSObject *newObject = JSC::construct(exec, callee, constructType, constructData, applyArgs);
if (exec->hadException()) {
- if (exec->exception().isObject())
- result = JSC::asObject(exec->exception());
+ result = exec->exception();
} else {
+ result = newObject;
QScriptEnginePrivate::restoreException(exec, savedException);
}
return d->engine->scriptValueFromJSCValue(result);
@@ -2033,6 +2036,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 dd229f1fa4..228e755357 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 551f6c36e3..93626397a3 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 e11cf75f23..1bf59bf8c0 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/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp
index 64fd99c892..3d753dc41a 100644
--- a/src/sql/kernel/qsqldriver.cpp
+++ b/src/sql/kernel/qsqldriver.cpp
@@ -396,7 +396,7 @@ QString QSqlDriver::escapeIdentifier(const QString &identifier, IdentifierType)
\a identifier can either be a table name or field name, dependent
on \a type.
- \warning Because of binary compatability constraints, this function is not virtual.
+ \warning Because of binary compatibility constraints, this function is not virtual.
If you want to provide your own implementation in your QSqlDriver subclass,
reimplement the isIdentifierEscapedImplementation() slot in your subclass instead.
The isIdentifierEscapedFunction() will dynamically detect the slot and call it.
@@ -421,7 +421,7 @@ bool QSqlDriver::isIdentifierEscaped(const QString &identifier, IdentifierType t
and trailing delimiter characters, \a identifier is returned without
modification.
- \warning Because of binary compatability constraints, this function is not virtual,
+ \warning Because of binary compatibility constraints, this function is not virtual,
If you want to provide your own implementation in your QSqlDriver subclass,
reimplement the stripDelimitersImplementation() slot in your subclass instead.
The stripDelimiters() function will dynamically detect the slot and call it.
@@ -871,7 +871,7 @@ QStringList QSqlDriver::subscribedToNotificationsImplementation() const
\a identifier can either be a table name or field name, dependent
on \a type.
- Because of binary compatability constraints, isIdentifierEscaped() function
+ Because of binary compatibility constraints, isIdentifierEscaped() function
(introduced in Qt 4.5) is not virtual. Instead, isIdentifierEscaped() will
dynamically detect and call \e this slot. The default implementation
assumes the escape/delimiter character is a double quote. Reimplement this
@@ -896,7 +896,7 @@ bool QSqlDriver::isIdentifierEscapedImplementation(const QString &identifier, Id
If \a identifier does not have leading and trailing delimiter characters, \a
identifier is returned without modification.
- Because of binary compatability constraints, the stripDelimiters() function
+ Because of binary compatibility constraints, the stripDelimiters() function
(introduced in Qt 4.5) is not virtual. Instead, stripDelimiters() will
dynamically detect and call \e this slot. It generally unnecessary
to reimplement this slot.
diff --git a/src/sql/models/qsqlrelationaldelegate.h b/src/sql/models/qsqlrelationaldelegate.h
index 7600e52036..96760e12fa 100644
--- a/src/sql/models/qsqlrelationaldelegate.h
+++ b/src/sql/models/qsqlrelationaldelegate.h
@@ -59,23 +59,23 @@ class QSqlRelationalDelegate: public QItemDelegate
{
public:
-explicit QSqlRelationalDelegate(QObject *parent = 0)
- : QItemDelegate(parent)
+explicit QSqlRelationalDelegate(QObject *aParent = 0)
+ : QItemDelegate(aParent)
{}
~QSqlRelationalDelegate()
{}
-QWidget *createEditor(QWidget *parent,
+QWidget *createEditor(QWidget *aParent,
const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
const QSqlRelationalTableModel *sqlModel = qobject_cast<const QSqlRelationalTableModel *>(index.model());
QSqlTableModel *childModel = sqlModel ? sqlModel->relationModel(index.column()) : 0;
if (!childModel)
- return QItemDelegate::createEditor(parent, option, index);
+ return QItemDelegate::createEditor(aParent, option, index);
- QComboBox *combo = new QComboBox(parent);
+ QComboBox *combo = new QComboBox(aParent);
combo->setModel(childModel);
combo->setModelColumn(childModel->fieldIndex(sqlModel->relation(index.column()).displayColumn()));
combo->installEventFilter(const_cast<QSqlRelationalDelegate *>(this));
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index 17f1a6b3b0..e3a8726061 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -755,6 +755,9 @@ QT_BEGIN_NAMESPACE
QTest::touchEvent to create a QTouchEventSequence instance. Add touch events to
the sequence by calling press(), move(), release() and stationary(), and let the
instance run out of scope to commit the sequence to the event system.
+
+ Example:
+ \snippet doc/src/snippets/code/src_qtestlib_qtestcase.cpp 25
*/
/*!
diff --git a/src/testlib/qtesttouch.h b/src/testlib/qtesttouch.h
index 1beef85f5f..6c58e4c012 100644
--- a/src/testlib/qtesttouch.h
+++ b/src/testlib/qtesttouch.h
@@ -106,8 +106,8 @@ namespace QTest
}
private:
- QTouchEventSequence(QWidget *widget, QTouchEvent::DeviceType deviceType)
- : targetWidget(widget), deviceType(deviceType)
+ QTouchEventSequence(QWidget *widget, QTouchEvent::DeviceType aDeviceType)
+ : targetWidget(widget), deviceType(aDeviceType)
{
}
QTouchEventSequence(const QTouchEventSequence &v);
diff --git a/src/xmlpatterns/data/qabstractfloat.cpp b/src/xmlpatterns/data/qabstractfloat.cpp
index d3384fe51a..9f0e4e0c4d 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 c4f3578478..fc4cf2e6de 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;
@@ -202,7 +202,7 @@ ItemType::Ptr AtomicValue::qtToXDMType(const QXmlItem &item)
Q_ASSERT(item.isAtomicValue());
const QVariant v(item.toAtomicValue());
- switch(v.type())
+ switch(int(v.type()))
{
case QVariant::Char:
/* Fallthrough. */
diff --git a/src/xmlpatterns/data/qschematime_p.h b/src/xmlpatterns/data/qschematime_p.h
index bd63714ba0..bff065b86c 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/expr/qarithmeticexpression_p.h b/src/xmlpatterns/expr/qarithmeticexpression_p.h
index 66c1f136f2..6ff82191a9 100644
--- a/src/xmlpatterns/expr/qarithmeticexpression_p.h
+++ b/src/xmlpatterns/expr/qarithmeticexpression_p.h
@@ -62,7 +62,7 @@ QT_BEGIN_NAMESPACE
namespace QPatternist
{
/**
- * @short Implements arithmetics, such as multiplication and substraction.
+ * @short Implements arithmetics, such as multiplication and subtraction.
*
*
* Optimizations: there's some operator/value combos that are no ops. For
diff --git a/src/xmlpatterns/parser/createTokenLookup.sh b/src/xmlpatterns/parser/createTokenLookup.sh
index e11a3ba3e4..933956869d 100755
--- a/src/xmlpatterns/parser/createTokenLookup.sh
+++ b/src/xmlpatterns/parser/createTokenLookup.sh
@@ -55,8 +55,8 @@ license=`cat <<EOF
** 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 either Technology Preview License Agreement or the
-** Beta Release License Agreement.
+** 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
@@ -66,13 +66,12 @@ license=`cat <<EOF
** 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.0, included in the file LGPL_EXCEPTION.txt in this
-** package.
+** 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 are unsure which license is appropriate for your use, please
-** contact the sales department at http://qt.nokia.com/contact.
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
**
**
**
diff --git a/src/xmlpatterns/schema/qxsdschemaparser.cpp b/src/xmlpatterns/schema/qxsdschemaparser.cpp
index fd0b95cf2a..585cf126c1 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 88e5f939a7..dc4730e794 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 294eb50c88..62c6ab021b 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 879fe0e73c..73f83b738a 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/tst_collections.cpp b/tests/auto/collections/tst_collections.cpp
index f81535ee2b..43e1a52d5b 100644
--- a/tests/auto/collections/tst_collections.cpp
+++ b/tests/auto/collections/tst_collections.cpp
@@ -1222,7 +1222,7 @@ void tst_Collections::vector()
}
}
- // this used to trigger an unitialized read in valgrind
+ // this used to trigger an uninitialized read in valgrind
QVector<char> foo;
foo.resize(144);
diff --git a/tests/auto/declarative/examples/tst_examples.cpp b/tests/auto/declarative/examples/tst_examples.cpp
index cff0b46d39..0c7f8fb528 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 e6a81b8433..53471bf8cd 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"
@@ -278,8 +279,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;
diff --git a/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp b/tests/auto/declarative/qdeclarativedebugclient/tst_qdeclarativedebugclient.cpp
index 80241ba855..64afd4e28f 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 c9cb839121..edfc58f102 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 36f2222c1d..60aec9d321 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 538129c5cd..30629f9dc6 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 b4a702bbbe..07bb16b0d8 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 0000000000..5a2091f71c
--- /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 0a933e86f2..090c948f26 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/data/propertySplicing.qml b/tests/auto/declarative/qdeclarativeecmascript/data/propertySplicing.qml
new file mode 100644
index 0000000000..7deb84a1be
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativeecmascript/data/propertySplicing.qml
@@ -0,0 +1,10 @@
+import Qt.test 1.0
+import QtQuick 1.0
+
+MyDerivedObject {
+ property bool test: false
+
+ Component.onCompleted: {
+ test = intProperty()
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/scope.2.qml b/tests/auto/declarative/qdeclarativeecmascript/data/scope.2.qml
index 95f34d8b3d..9555b7f95b 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/data/scope.2.qml
+++ b/tests/auto/declarative/qdeclarativeecmascript/data/scope.2.qml
@@ -2,7 +2,7 @@ import QtQuick 1.0
Item {
property int a: 0
- property int b: 0
+ property int b: 14
function b() { return 11; }
function c() { return 33; }
@@ -21,7 +21,7 @@ Item {
id: nested
property int a: 1
property int test: a.value
- property int test2: b()
+ property int test2: b
property int test3: c.value
}
@@ -30,8 +30,8 @@ Item {
property int test1: a.value
property alias test2: nested.test
- // methods takes precedence over local, and root properties
- property int test3: b()
+ // properties takes precedence over local, and root methods
+ property int test3: b
property alias test4: nested.test2
// id takes precedence over methods
diff --git a/tests/auto/declarative/qdeclarativeecmascript/testtypes.cpp b/tests/auto/declarative/qdeclarativeecmascript/testtypes.cpp
index 810a0f772c..94135f989c 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/testtypes.cpp
+++ b/tests/auto/declarative/qdeclarativeecmascript/testtypes.cpp
@@ -109,6 +109,7 @@ void registerTypes()
qmlRegisterExtendedType<MyBaseExtendedObject, BaseExtensionObject>("Qt.test", 1,0, "MyBaseExtendedObject");
qmlRegisterExtendedType<MyExtendedObject, ExtensionObject>("Qt.test", 1,0, "MyExtendedObject");
qmlRegisterType<MyTypeObject>("Qt.test", 1,0, "MyTypeObject");
+ qmlRegisterType<MyDerivedObject>("Qt.test", 1,0, "MyDerivedObject");
qmlRegisterType<NumberAssignment>("Qt.test", 1,0, "NumberAssignment");
qmlRegisterExtendedType<DefaultPropertyExtendedObject, DefaultPropertyExtensionObject>("Qt.test", 1,0, "DefaultPropertyExtendedObject");
qmlRegisterType<OverrideDefaultPropertyObject>("Qt.test", 1,0, "OverrideDefaultPropertyObject");
diff --git a/tests/auto/declarative/qdeclarativeecmascript/testtypes.h b/tests/auto/declarative/qdeclarativeecmascript/testtypes.h
index 220318d586..15c310ff22 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/testtypes.h
+++ b/tests/auto/declarative/qdeclarativeecmascript/testtypes.h
@@ -92,7 +92,7 @@ class MyQmlObject : public QObject
Q_PROPERTY(QDeclarativeListProperty<QObject> objectListProperty READ objectListProperty CONSTANT)
Q_PROPERTY(int resettableProperty READ resettableProperty WRITE setResettableProperty RESET resetProperty)
Q_PROPERTY(QRegExp regExp READ regExp WRITE setRegExp)
- Q_PROPERTY(int nonscriptable READ nonscriptable WRITE setNonscriptable SCRIPTABLE false);
+ Q_PROPERTY(int nonscriptable READ nonscriptable WRITE setNonscriptable SCRIPTABLE false)
public:
MyQmlObject(): myinvokableObject(0), m_methodCalled(false), m_methodIntCalled(false), m_object(0), m_value(0), m_resetProperty(13) {}
@@ -562,8 +562,27 @@ signals:
};
Q_DECLARE_OPERATORS_FOR_FLAGS(MyTypeObject::MyFlags)
+class MyDerivedObject : public MyTypeObject
+{
+ Q_OBJECT
+public:
+ Q_INVOKABLE bool intProperty() const {
+ return true;
+ }
+};
+
Q_DECLARE_METATYPE(QScriptValue);
-class MyInvokableObject : public QObject
+class MyInvokableBaseObject : public QObject
+{
+ Q_OBJECT
+public:
+ inline ~MyInvokableBaseObject() = 0;
+
+ Q_INVOKABLE inline void method_inherited(int a);
+ Q_INVOKABLE inline void method_overload();
+};
+
+class MyInvokableObject : public MyInvokableBaseObject
{
Q_OBJECT
Q_ENUMS(TestEnum)
@@ -599,16 +618,34 @@ public:
Q_INVOKABLE void method_overload(int a) { invoke(16); m_actuals << a; }
Q_INVOKABLE void method_overload(int a, int b) { invoke(17); m_actuals << a << b; }
+ Q_INVOKABLE void method_overload(QString a) { invoke(18); m_actuals << a; }
- Q_INVOKABLE void method_with_enum(TestEnum e) { invoke(18); m_actuals << (int)e; }
+ Q_INVOKABLE void method_with_enum(TestEnum e) { invoke(19); m_actuals << (int)e; }
+
+ Q_INVOKABLE int method_default(int a, int b = 19) { invoke(20); m_actuals << a << b; return b; }
private:
+ friend class MyInvokableBaseObject;
void invoke(int idx) { if (m_invoked != -1) m_invokedError = true; m_invoked = idx;}
int m_invoked;
bool m_invokedError;
QVariantList m_actuals;
};
+MyInvokableBaseObject::~MyInvokableBaseObject() {}
+
+void MyInvokableBaseObject::method_inherited(int a)
+{
+ static_cast<MyInvokableObject *>(this)->invoke(-3);
+ static_cast<MyInvokableObject *>(this)->m_actuals << a;
+}
+
+// This is a hidden overload of the MyInvokableObject::method_overload() method
+void MyInvokableBaseObject::method_overload()
+{
+ static_cast<MyInvokableObject *>(this)->invoke(-2);
+}
+
class NumberAssignment : public QObject
{
Q_OBJECT
diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
index 02832f37ad..652404cddd 100644
--- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
+++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp
@@ -139,6 +139,7 @@ private slots:
void strictlyEquals();
void compiled();
void numberAssignment();
+ void propertySplicing();
void bug1();
void bug2();
@@ -732,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);
+ }
}
/*
@@ -802,8 +818,8 @@ void tst_qdeclarativeecmascript::scope()
QCOMPARE(object->property("test1").toInt(), 19);
QCOMPARE(object->property("test2").toInt(), 19);
- QCOMPARE(object->property("test3").toInt(), 11);
- QCOMPARE(object->property("test4").toInt(), 11);
+ QCOMPARE(object->property("test3").toInt(), 14);
+ QCOMPARE(object->property("test4").toInt(), 14);
QCOMPARE(object->property("test5").toInt(), 24);
QCOMPARE(object->property("test6").toInt(), 24);
}
@@ -1550,7 +1566,7 @@ void tst_qdeclarativeecmascript::callQtInvokables()
o.reset();
{
- QString expected = "MyInvokableObject(0x" + QString::number((intptr_t)&o, 16) + ")";
+ QString expected = "MyInvokableObject(0x" + QString::number((quintptr)&o, 16) + ")";
QCOMPARE(engine->evaluate("object.method_QString(object)").isUndefined(), true);
QCOMPARE(o.error(), false);
QCOMPARE(o.invoked(), 11);
@@ -1709,7 +1725,6 @@ void tst_qdeclarativeecmascript::callQtInvokables()
QCOMPARE(o.actuals().at(0), QVariant(44));
QVERIFY(qvariant_cast<QScriptValue>(o.actuals().at(1)).isArray());
- // Test overloads - QML will always invoke the *last* method
o.reset();
QCOMPARE(engine->evaluate("object.method_overload()").isError(), true);
QCOMPARE(o.error(), false);
@@ -1717,10 +1732,11 @@ void tst_qdeclarativeecmascript::callQtInvokables()
QCOMPARE(o.actuals().count(), 0);
o.reset();
- QCOMPARE(engine->evaluate("object.method_overload(10)").isError(), true);
+ QCOMPARE(engine->evaluate("object.method_overload(10)").isUndefined(), true);
QCOMPARE(o.error(), false);
- QCOMPARE(o.invoked(), -1);
- QCOMPARE(o.actuals().count(), 0);
+ QCOMPARE(o.invoked(), 16);
+ QCOMPARE(o.actuals().count(), 1);
+ QCOMPARE(o.actuals().at(0), QVariant(10));
o.reset();
QCOMPARE(engine->evaluate("object.method_overload(10, 11)").isUndefined(), true);
@@ -1731,10 +1747,40 @@ void tst_qdeclarativeecmascript::callQtInvokables()
QCOMPARE(o.actuals().at(1), QVariant(11));
o.reset();
- QCOMPARE(engine->evaluate("object.method_with_enum(9)").isUndefined(), true);
+ QCOMPARE(engine->evaluate("object.method_overload(\"Hello\")").isUndefined(), true);
QCOMPARE(o.error(), false);
QCOMPARE(o.invoked(), 18);
QCOMPARE(o.actuals().count(), 1);
+ QCOMPARE(o.actuals().at(0), QVariant(QString("Hello")));
+
+ o.reset();
+ QCOMPARE(engine->evaluate("object.method_with_enum(9)").isUndefined(), true);
+ QCOMPARE(o.error(), false);
+ QCOMPARE(o.invoked(), 19);
+ QCOMPARE(o.actuals().count(), 1);
+ QCOMPARE(o.actuals().at(0), QVariant(9));
+
+ o.reset();
+ QVERIFY(engine->evaluate("object.method_default(10)").strictlyEquals(QScriptValue(19)));
+ QCOMPARE(o.error(), false);
+ QCOMPARE(o.invoked(), 20);
+ QCOMPARE(o.actuals().count(), 2);
+ QCOMPARE(o.actuals().at(0), QVariant(10));
+ QCOMPARE(o.actuals().at(1), QVariant(19));
+
+ o.reset();
+ QVERIFY(engine->evaluate("object.method_default(10, 13)").strictlyEquals(QScriptValue(13)));
+ QCOMPARE(o.error(), false);
+ QCOMPARE(o.invoked(), 20);
+ QCOMPARE(o.actuals().count(), 2);
+ QCOMPARE(o.actuals().at(0), QVariant(10));
+ QCOMPARE(o.actuals().at(1), QVariant(13));
+
+ o.reset();
+ QCOMPARE(engine->evaluate("object.method_inherited(9)").isUndefined(), true);
+ QCOMPARE(o.error(), false);
+ QCOMPARE(o.invoked(), -3);
+ QCOMPARE(o.actuals().count(), 1);
QCOMPARE(o.actuals().at(0), QVariant(9));
}
@@ -2175,6 +2221,18 @@ void tst_qdeclarativeecmascript::numberAssignment()
delete object;
}
+void tst_qdeclarativeecmascript::propertySplicing()
+{
+ QDeclarativeComponent component(&engine, TEST_FILE("propertySplicing.qml"));
+
+ QObject *object = component.create();
+ QVERIFY(object != 0);
+
+ QCOMPARE(object->property("test").toBool(), true);
+
+ delete object;
+}
+
// Test that assigning a null object works
// Regressed with: df1788b4dbbb2826ae63f26bdf166342595343f4
void tst_qdeclarativeecmascript::nullObjectBinding()
diff --git a/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp b/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp
index 4cafbd9617..1645dac9f4 100644
--- a/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp
+++ b/tests/auto/declarative/qdeclarativefocusscope/tst_qdeclarativefocusscope.cpp
@@ -398,6 +398,12 @@ void tst_qdeclarativefocusscope::signalEmission()
QCOMPARE(item3->property("color"), blue);
QCOMPARE(item4->property("color"), red);
+ item4->setFocus(false);
+ QCOMPARE(item1->property("color"), blue);
+ QCOMPARE(item2->property("color"), red);
+ QCOMPARE(item3->property("color"), blue);
+ QCOMPARE(item4->property("color"), blue);
+
delete view;
}
diff --git a/tests/auto/declarative/qdeclarativegridview/data/gridview-noCurrent.qml b/tests/auto/declarative/qdeclarativegridview/data/gridview-noCurrent.qml
new file mode 100644
index 0000000000..1189649ea1
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativegridview/data/gridview-noCurrent.qml
@@ -0,0 +1,52 @@
+import QtQuick 1.0
+
+Rectangle {
+ property int current: grid.currentIndex
+ width: 240
+ height: 320
+ color: "#ffffff"
+ resources: [
+ Component {
+ id: myDelegate
+ Rectangle {
+ id: wrapper
+ objectName: "wrapper"
+ width: 80
+ height: 60
+ border.color: "blue"
+ Text {
+ text: index
+ }
+ Text {
+ x: 40
+ text: wrapper.x + ", " + wrapper.y
+ }
+ Text {
+ y: 20
+ id: textName
+ objectName: "textName"
+ text: name
+ }
+ Text {
+ y: 40
+ id: textNumber
+ objectName: "textNumber"
+ text: number
+ }
+ color: GridView.isCurrentItem ? "lightsteelblue" : "white"
+ }
+ }
+ ]
+ GridView {
+ id: grid
+ objectName: "grid"
+ focus: true
+ width: 240
+ height: 320
+ currentIndex: -1
+ cellWidth: 80
+ cellHeight: 60
+ delegate: myDelegate
+ model: testModel
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp
index f7acd87d13..327bba2d00 100644
--- a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp
+++ b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp
@@ -71,6 +71,7 @@ private slots:
void moved();
void changeFlow();
void currentIndex();
+ void noCurrentIndex();
void defaultValues();
void properties();
void propertyChanges();
@@ -696,9 +697,51 @@ void tst_QDeclarativeGridView::currentIndex()
model.insertItem(0, "Foo", "1111");
QTRY_COMPARE(canvas->rootObject()->property("current").toInt(), 29);
+ // check removing highlight by setting currentIndex to -1;
+ gridview->setCurrentIndex(-1);
+
+ QCOMPARE(gridview->currentIndex(), -1);
+ QVERIFY(!gridview->highlightItem());
+ QVERIFY(!gridview->currentItem());
+
delete canvas;
}
+void tst_QDeclarativeGridView::noCurrentIndex()
+{
+ TestModel model;
+ for (int i = 0; i < 60; i++)
+ model.addItem("Item" + QString::number(i), QString::number(i));
+
+ QDeclarativeView *canvas = new QDeclarativeView(0);
+ canvas->setFixedSize(240,320);
+
+ QDeclarativeContext *ctxt = canvas->rootContext();
+ ctxt->setContextProperty("testModel", &model);
+
+ QString filename(SRCDIR "/data/gridview-noCurrent.qml");
+ canvas->setSource(QUrl::fromLocalFile(filename));
+
+ qApp->processEvents();
+
+ QDeclarativeGridView *gridview = findItem<QDeclarativeGridView>(canvas->rootObject(), "grid");
+ QVERIFY(gridview != 0);
+
+ QDeclarativeItem *contentItem = gridview->contentItem();
+ QVERIFY(contentItem != 0);
+
+ // current index should be -1
+ QCOMPARE(gridview->currentIndex(), -1);
+ QVERIFY(!gridview->currentItem());
+ QVERIFY(!gridview->highlightItem());
+ QCOMPARE(gridview->contentY(), 0.0);
+
+ gridview->setCurrentIndex(5);
+ QCOMPARE(gridview->currentIndex(), 5);
+ QVERIFY(gridview->currentItem());
+ QVERIFY(gridview->highlightItem());
+}
+
void tst_QDeclarativeGridView::changeFlow()
{
QDeclarativeView *canvas = createView();
diff --git a/tests/auto/declarative/qdeclarativeimage/data/rect.png b/tests/auto/declarative/qdeclarativeimage/data/rect.png
new file mode 100644
index 0000000000..d564a2d5a5
--- /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 f1e026f20d..bf779adec0 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 b4903aea9d..711bf00643 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/qdeclarativelanguage/data/AliasPropertyChangeSignalsType.qml b/tests/auto/declarative/qdeclarativelanguage/data/AliasPropertyChangeSignalsType.qml
new file mode 100644
index 0000000000..0bc2025414
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/AliasPropertyChangeSignalsType.qml
@@ -0,0 +1,20 @@
+import QtQuick 1.0
+
+QtObject {
+ id: root
+
+ signal sig1
+ signal sig2
+ signal sig3
+ signal sig4
+
+ property alias aliasProperty: root.realProperty
+
+ property int realProperty: 0
+
+ property bool test: false
+
+ Component.onCompleted: {
+ root.realProperty = 10;
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/aliasPropertyChangeSignals.2.qml b/tests/auto/declarative/qdeclarativelanguage/data/aliasPropertyChangeSignals.2.qml
new file mode 100644
index 0000000000..a15a718891
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/aliasPropertyChangeSignals.2.qml
@@ -0,0 +1,10 @@
+import QtQuick 1.0
+
+AliasPropertyChangeSignalsType {
+ id: root
+ onAliasPropertyChanged: root.test = true
+
+ function blah() {}
+ property int a
+}
+
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/insertedSemicolon.1.errors.txt b/tests/auto/declarative/qdeclarativelanguage/data/insertedSemicolon.1.errors.txt
new file mode 100644
index 0000000000..651009cf05
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/insertedSemicolon.1.errors.txt
@@ -0,0 +1 @@
+9:5:Expected a qualified name id
diff --git a/tests/auto/declarative/qdeclarativelanguage/data/insertedSemicolon.1.qml b/tests/auto/declarative/qdeclarativelanguage/data/insertedSemicolon.1.qml
new file mode 100644
index 0000000000..4e561b48b2
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelanguage/data/insertedSemicolon.1.qml
@@ -0,0 +1,10 @@
+import Test 1.0
+
+MyQmlObject {
+ function foo()
+ {
+ return
+ }
+
+ 1223
+}
diff --git a/tests/auto/declarative/qdeclarativelanguage/testtypes.h b/tests/auto/declarative/qdeclarativelanguage/testtypes.h
index 2b23a49fe9..f8d785c516 100644
--- a/tests/auto/declarative/qdeclarativelanguage/testtypes.h
+++ b/tests/auto/declarative/qdeclarativelanguage/testtypes.h
@@ -112,7 +112,7 @@ class MyQmlObject : public QObject, public MyInterface
Q_PROPERTY(MyCustomVariantType customType READ customType WRITE setCustomType)
Q_PROPERTY(MyQmlObject *qmlobjectProperty READ qmlobject WRITE setQmlobject)
Q_PROPERTY(int propertyWithNotify READ propertyWithNotify WRITE setPropertyWithNotify NOTIFY oddlyNamedNotifySignal)
- Q_PROPERTY(int nonScriptable READ nonScriptable WRITE setNonScriptable SCRIPTABLE false);
+ Q_PROPERTY(int nonScriptable READ nonScriptable WRITE setNonScriptable SCRIPTABLE false)
Q_INTERFACES(MyInterface)
public:
diff --git a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp
index 061ac48d81..50463b70e9 100644
--- a/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp
+++ b/tests/auto/declarative/qdeclarativelanguage/tst_qdeclarativelanguage.cpp
@@ -86,6 +86,9 @@ private slots:
void errors_data();
void errors();
+ void insertedSemicolon_data();
+ void insertedSemicolon();
+
void simpleObject();
void simpleContainer();
void interfaceProperty();
@@ -211,6 +214,31 @@ void tst_qdeclarativelanguage::cleanupTestCase()
QVERIFY(QFile::remove(TEST_FILE(QString::fromUtf8("I18nType\303\201\303\242\303\243\303\244\303\245.qml")).toLocalFile()));
}
+void tst_qdeclarativelanguage::insertedSemicolon_data()
+{
+ QTest::addColumn<QString>("file");
+ QTest::addColumn<QString>("errorFile");
+ QTest::addColumn<bool>("create");
+
+ QTest::newRow("insertedSemicolon.1") << "insertedSemicolon.1.qml" << "insertedSemicolon.1.errors.txt" << false;
+}
+
+void tst_qdeclarativelanguage::insertedSemicolon()
+{
+ QFETCH(QString, file);
+ QFETCH(QString, errorFile);
+ QFETCH(bool, create);
+
+ QDeclarativeComponent component(&engine, TEST_FILE(file));
+
+ if(create) {
+ QObject *object = component.create();
+ QVERIFY(object == 0);
+ }
+
+ VERIFY_ERRORS(errorFile.toLatin1().constData());
+}
+
void tst_qdeclarativelanguage::errors_data()
{
QTest::addColumn<QString>("file");
@@ -1890,15 +1918,30 @@ void tst_qdeclarativelanguage::initTestCase()
void tst_qdeclarativelanguage::aliasPropertyChangeSignals()
{
- QDeclarativeComponent component(&engine, TEST_FILE("aliasPropertyChangeSignals.qml"));
+ {
+ QDeclarativeComponent component(&engine, TEST_FILE("aliasPropertyChangeSignals.qml"));
- VERIFY_ERRORS(0);
- QObject *o = component.create();
- QVERIFY(o != 0);
+ VERIFY_ERRORS(0);
+ QObject *o = component.create();
+ QVERIFY(o != 0);
- QCOMPARE(o->property("test").toBool(), true);
+ QCOMPARE(o->property("test").toBool(), true);
- delete o;
+ delete o;
+ }
+
+ // QTCREATORBUG-2769
+ {
+ QDeclarativeComponent component(&engine, TEST_FILE("aliasPropertyChangeSignals.2.qml"));
+
+ VERIFY_ERRORS(0);
+ QObject *o = component.create();
+ QVERIFY(o != 0);
+
+ QCOMPARE(o->property("test").toBool(), true);
+
+ delete o;
+ }
}
QTEST_MAIN(tst_qdeclarativelanguage)
diff --git a/tests/auto/declarative/qdeclarativelistview/data/listview-noCurrent.qml b/tests/auto/declarative/qdeclarativelistview/data/listview-noCurrent.qml
new file mode 100644
index 0000000000..19970100f7
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelistview/data/listview-noCurrent.qml
@@ -0,0 +1,50 @@
+import QtQuick 1.0
+
+Rectangle {
+ property int current: list.currentIndex
+ width: 240
+ height: 320
+ color: "#ffffff"
+ resources: [
+ Component {
+ id: myDelegate
+ Rectangle {
+ id: wrapper
+ objectName: "wrapper"
+ height: 20
+ width: 240
+ Text {
+ text: index
+ }
+ Text {
+ x: 30
+ id: textName
+ objectName: "textName"
+ text: name
+ }
+ Text {
+ x: 120
+ id: textNumber
+ objectName: "textNumber"
+ text: number
+ }
+ Text {
+ x: 200
+ text: wrapper.y
+ }
+ color: ListView.isCurrentItem ? "lightsteelblue" : "white"
+ }
+ }
+ ]
+ ListView {
+ id: list
+ objectName: "list"
+ focus: true
+ currentIndex: -1
+ width: 240
+ height: 320
+ delegate: myDelegate
+ highlightMoveSpeed: 1000
+ model: testModel
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativelistview/data/qtbug14821.qml b/tests/auto/declarative/qdeclarativelistview/data/qtbug14821.qml
new file mode 100644
index 0000000000..e0303ecaa3
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelistview/data/qtbug14821.qml
@@ -0,0 +1,31 @@
+import QtQuick 1.0
+
+ListView {
+ id: view
+ width: 300; height: 200
+ focus: true
+ keyNavigationWraps: true
+
+ model: 100
+
+ preferredHighlightBegin: 90
+ preferredHighlightEnd: 110
+
+ highlightRangeMode: ListView.StrictlyEnforceRange
+ highlight: Component {
+ Rectangle {
+ border.color: "blue"
+ border.width: 3
+ color: "transparent"
+ width: 300; height: 15
+ }
+ }
+
+ delegate: Component {
+ Item {
+ height: 15 + (view.currentIndex == index ? 20 : 0)
+ width: 200
+ Text { text: 'Index: ' + index; anchors.verticalCenter: parent.verticalCenter }
+ }
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativelistview/data/sizelessthan1.qml b/tests/auto/declarative/qdeclarativelistview/data/sizelessthan1.qml
new file mode 100644
index 0000000000..77bfef8e57
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativelistview/data/sizelessthan1.qml
@@ -0,0 +1,26 @@
+import QtQuick 1.0
+
+Rectangle {
+ width: 240
+ height: 320
+ color: "#ffffff"
+ Component {
+ id: myDelegate
+ Rectangle {
+ id: wrapper
+ objectName: "wrapper"
+ height: 0.5
+ width: 240
+ color: ((index % 2) == 1 ? "red" : "blue")
+ }
+ }
+ ListView {
+ id: list
+ objectName: "list"
+ focus: true
+ width: 240
+ height: 320
+ model: testModel
+ delegate: myDelegate
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp
index 2649c0d8b9..37d836de59 100644
--- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp
+++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp
@@ -85,6 +85,7 @@ private slots:
void itemList();
void currentIndex();
+ void noCurrentIndex();
void enforceRange();
void spacing();
void sections();
@@ -99,6 +100,8 @@ private slots:
void QTBUG_11105();
void footer();
void resizeView();
+ void sizeLessThan1();
+ void QTBUG_14821();
private:
template <class T> void items();
@@ -672,6 +675,15 @@ void tst_QDeclarativeListView::removed(bool animated)
QTRY_COMPARE(item->y(),80+i*20.0);
}
+ model.removeItems(1, 17);
+// QTest::qWait(300);
+
+ model.removeItems(2, 1);
+ model.addItem("New", "1");
+
+ QTRY_VERIFY(name = findItem<QDeclarativeText>(contentItem, "textName", model.count()-1));
+ QCOMPARE(name->text(), QString("New"));
+
delete canvas;
}
@@ -1087,9 +1099,52 @@ void tst_QDeclarativeListView::currentIndex()
model.insertItem(0, "Foo", "1111");
QTRY_COMPARE(canvas->rootObject()->property("current").toInt(), 29);
+ // check removing highlight by setting currentIndex to -1;
+ listview->setCurrentIndex(-1);
+
+ QCOMPARE(listview->currentIndex(), -1);
+ QVERIFY(!listview->highlightItem());
+ QVERIFY(!listview->currentItem());
+
delete canvas;
}
+void tst_QDeclarativeListView::noCurrentIndex()
+{
+ TestModel model;
+ for (int i = 0; i < 30; i++)
+ model.addItem("Item" + QString::number(i), QString::number(i));
+
+ QDeclarativeView *canvas = new QDeclarativeView(0);
+ canvas->setFixedSize(240,320);
+
+ QDeclarativeContext *ctxt = canvas->rootContext();
+ ctxt->setContextProperty("testModel", &model);
+
+ QString filename(SRCDIR "/data/listview-noCurrent.qml");
+ canvas->setSource(QUrl::fromLocalFile(filename));
+
+ qApp->processEvents();
+
+ QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list");
+ QTRY_VERIFY(listview != 0);
+
+ QDeclarativeItem *contentItem = listview->contentItem();
+ QTRY_VERIFY(contentItem != 0);
+
+ // current index should be -1 at startup
+ // and we should not have a currentItem or highlightItem
+ QCOMPARE(listview->currentIndex(), -1);
+ QCOMPARE(listview->contentY(), 0.0);
+ QVERIFY(!listview->highlightItem());
+ QVERIFY(!listview->currentItem());
+
+ listview->setCurrentIndex(2);
+ QCOMPARE(listview->currentIndex(), 2);
+ QVERIFY(listview->highlightItem());
+ QVERIFY(listview->currentItem());
+}
+
void tst_QDeclarativeListView::itemList()
{
QDeclarativeView *canvas = createView();
@@ -1679,6 +1734,61 @@ void tst_QDeclarativeListView::resizeView()
QCOMPARE(heightRatio.toReal(), 0.25);
}
+void tst_QDeclarativeListView::sizeLessThan1()
+{
+ QDeclarativeView *canvas = createView();
+
+ TestModel model;
+ for (int i = 0; i < 30; i++)
+ model.addItem("Item" + QString::number(i), "");
+
+ QDeclarativeContext *ctxt = canvas->rootContext();
+ ctxt->setContextProperty("testModel", &model);
+
+ TestObject *testObject = new TestObject;
+ ctxt->setContextProperty("testObject", testObject);
+
+ canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/sizelessthan1.qml"));
+ qApp->processEvents();
+
+ QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list");
+ QTRY_VERIFY(listview != 0);
+
+ QDeclarativeItem *contentItem = listview->contentItem();
+ QTRY_VERIFY(contentItem != 0);
+
+ // Confirm items positioned correctly
+ int itemCount = findItems<QDeclarativeItem>(contentItem, "wrapper").count();
+ for (int i = 0; i < model.count() && i < itemCount; ++i) {
+ QDeclarativeItem *item = findItem<QDeclarativeItem>(contentItem, "wrapper", i);
+ if (!item) qWarning() << "Item" << i << "not found";
+ QTRY_VERIFY(item);
+ QTRY_COMPARE(item->y(), i*0.5);
+ }
+
+ delete canvas;
+}
+
+void tst_QDeclarativeListView::QTBUG_14821()
+{
+ QDeclarativeView *canvas = createView();
+
+ canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/qtbug14821.qml"));
+ qApp->processEvents();
+
+ QDeclarativeListView *listview = qobject_cast<QDeclarativeListView*>(canvas->rootObject());
+ QVERIFY(listview != 0);
+
+ QDeclarativeItem *contentItem = listview->contentItem();
+ QVERIFY(contentItem != 0);
+
+ listview->decrementCurrentIndex();
+ QCOMPARE(listview->currentIndex(), 99);
+
+ listview->incrementCurrentIndex();
+ QCOMPARE(listview->currentIndex(), 0);
+}
+
void tst_QDeclarativeListView::qListModelInterface_items()
{
items<TestModel>();
diff --git a/tests/auto/declarative/qdeclarativemousearea/data/clicktwice.qml b/tests/auto/declarative/qdeclarativemousearea/data/clicktwice.qml
new file mode 100644
index 0000000000..c6b1f8992a
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativemousearea/data/clicktwice.qml
@@ -0,0 +1,16 @@
+import QtQuick 1.0
+
+Item {
+ id: root
+ property int clicked: 0
+ property int pressed: 0
+ property int released: 0
+
+ MouseArea {
+ width: 200; height: 200
+ onPressed: { root.pressed++ }
+ onClicked: { root.clicked++ }
+ onReleased: { root.released++ }
+ }
+}
+
diff --git a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
index 5a50e0d32d..9d7cc055f9 100644
--- a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
+++ b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp
@@ -63,6 +63,7 @@ private slots:
void noOnClickedWithPressAndHold();
void onMousePressRejected();
void doubleClick();
+ void clickTwice();
private:
QDeclarativeView *createView();
@@ -215,7 +216,14 @@ void tst_QDeclarativeMouseArea::dragging()
QCOMPARE(blackRect->x(), 50.0);
QCOMPARE(blackRect->y(), 50.0);
+ // First move event triggers drag, second is acted upon.
+ // This is due to possibility of higher stacked area taking precedence.
QGraphicsSceneMouseEvent moveEvent(QEvent::GraphicsSceneMouseMove);
+ moveEvent.setScenePos(QPointF(106, 106));
+ moveEvent.setButton(Qt::LeftButton);
+ moveEvent.setButtons(Qt::LeftButton);
+ QApplication::sendEvent(scene, &moveEvent);
+
moveEvent.setScenePos(QPointF(110, 110));
moveEvent.setButton(Qt::LeftButton);
moveEvent.setButtons(Qt::LeftButton);
@@ -426,6 +434,47 @@ void tst_QDeclarativeMouseArea::doubleClick()
QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 1);
QCOMPARE(canvas->rootObject()->property("doubleClicked").toInt(), 1);
QCOMPARE(canvas->rootObject()->property("released").toInt(), 2);
+
+}
+
+// QTBUG-14832
+void tst_QDeclarativeMouseArea::clickTwice()
+{
+ QDeclarativeView *canvas = createView();
+ canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/clicktwice.qml"));
+ canvas->show();
+ canvas->setFocus();
+ QVERIFY(canvas->rootObject() != 0);
+
+ QGraphicsScene *scene = canvas->scene();
+ QGraphicsSceneMouseEvent pressEvent(QEvent::GraphicsSceneMousePress);
+ pressEvent.setScenePos(QPointF(100, 100));
+ pressEvent.setButton(Qt::LeftButton);
+ pressEvent.setButtons(Qt::LeftButton);
+ QApplication::sendEvent(scene, &pressEvent);
+
+ QGraphicsSceneMouseEvent releaseEvent(QEvent::GraphicsSceneMouseRelease);
+ releaseEvent.setScenePos(QPointF(100, 100));
+ releaseEvent.setButton(Qt::LeftButton);
+ releaseEvent.setButtons(Qt::LeftButton);
+ QApplication::sendEvent(scene, &releaseEvent);
+
+ QCOMPARE(canvas->rootObject()->property("pressed").toInt(), 1);
+ QCOMPARE(canvas->rootObject()->property("released").toInt(), 1);
+ QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 1);
+
+ QGraphicsSceneMouseEvent dblClickEvent(QEvent::GraphicsSceneMouseDoubleClick);
+ dblClickEvent.setScenePos(QPointF(100, 100));
+ dblClickEvent.setButton(Qt::LeftButton);
+ dblClickEvent.setButtons(Qt::LeftButton);
+ QApplication::sendEvent(scene, &dblClickEvent);
+
+ QApplication::sendEvent(scene, &pressEvent);
+ QApplication::sendEvent(scene, &releaseEvent);
+
+ QCOMPARE(canvas->rootObject()->property("pressed").toInt(), 2);
+ QCOMPARE(canvas->rootObject()->property("released").toInt(), 2);
+ QCOMPARE(canvas->rootObject()->property("clicked").toInt(), 2);
}
QTEST_MAIN(tst_QDeclarativeMouseArea)
diff --git a/tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp b/tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp
index b20d8ec023..50d0731cb7 100644
--- a/tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp
+++ b/tests/auto/declarative/qdeclarativepixmapcache/tst_qdeclarativepixmapcache.cpp
@@ -74,7 +74,7 @@ private slots:
void massive();
void cancelcrash();
void shrinkcache();
-
+ void networkCrash();
private:
QDeclarativeEngine engine;
QUrl thisfile;
@@ -335,6 +335,7 @@ public:
: QDeclarativeImageProvider(Pixmap) {}
virtual QPixmap requestPixmap(const QString &d, QSize *, const QSize &) {
+ Q_UNUSED(d)
QPixmap pix(800, 600);
pix.fill(Qt::red);
return pix;
@@ -353,6 +354,30 @@ void tst_qdeclarativepixmapcache::shrinkcache()
}
}
+void createNetworkServer()
+{
+ QEventLoop eventLoop;
+ TestHTTPServer server(14453);
+ server.serveDirectory(SRCDIR "/data/http");
+ QTimer::singleShot(100, &eventLoop, SLOT(quit()));
+ eventLoop.exec();
+}
+
+// QT-3957
+void tst_qdeclarativepixmapcache::networkCrash()
+{
+ QFuture<void> future = QtConcurrent::run(createNetworkServer);
+ QDeclarativeEngine engine;
+ for (int ii = 0; ii < 100 ; ++ii) {
+ QDeclarativePixmap* pixmap = new QDeclarativePixmap;
+ pixmap->load(&engine, QUrl(QString("http://127.0.0.1:14453/exists.png")));
+ QTest::qSleep(1);
+ pixmap->clear();
+ delete pixmap;
+ }
+ future.cancel();
+}
+
QTEST_MAIN(tst_qdeclarativepixmapcache)
#include "tst_qdeclarativepixmapcache.moc"
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 0000000000..7f9ddbfa2d
--- /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 0d10c10d18..b8409a50ab 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/qdeclarativeviewer/tst_qdeclarativeviewer.cpp b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp
index 1c1c04bf64..21c719730e 100644
--- a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp
+++ b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp
@@ -45,6 +45,7 @@
#include <QtDeclarative/qdeclarativeitem.h>
#include <QtDeclarative/qdeclarativecontext.h>
#include <QtGui/qmenubar.h>
+#include <QSignalSpy>
#include "../../../shared/util.h"
#include "qmlruntime.h"
#include "deviceorientation.h"
@@ -194,7 +195,9 @@ void tst_QDeclarativeViewer::loading()
QCOMPARE(viewer->size(), QSize(250, 350));
QCOMPARE(viewer->size(), viewer->sizeHint());
+ QSignalSpy statusSpy(viewer->view(), SIGNAL(statusChanged(QDeclarativeView::Status)));
viewer->reload();
+ QTRY_VERIFY(statusSpy.count() == 1);
rootItem = qobject_cast<QDeclarativeItem*>(viewer->view()->rootObject());
QVERIFY(rootItem);
diff --git a/tests/auto/declarative/qdeclarativevisualdatamodel/data/modelproperties.qml b/tests/auto/declarative/qdeclarativevisualdatamodel/data/modelproperties.qml
new file mode 100644
index 0000000000..8cd5763684
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativevisualdatamodel/data/modelproperties.qml
@@ -0,0 +1,17 @@
+import QtQuick 1.0
+
+ListView {
+ model: myModel
+ delegate: Item {
+ objectName: "delegate"
+ property variant test1: name
+ property variant test2: model.name
+ property variant test3: modelData
+ property variant test4: model.modelData
+ property variant test5: modelData.name
+ property variant test6: model
+ property variant test7: index
+ property variant test8: model.index
+ property variant test9: model.modelData.name
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativevisualdatamodel/data/modelproperties2.qml b/tests/auto/declarative/qdeclarativevisualdatamodel/data/modelproperties2.qml
new file mode 100644
index 0000000000..67721c92a1
--- /dev/null
+++ b/tests/auto/declarative/qdeclarativevisualdatamodel/data/modelproperties2.qml
@@ -0,0 +1,17 @@
+import QtQuick 1.0
+
+ListView {
+ model: myModel
+ delegate: Item {
+ objectName: "delegate"
+ property variant test1: display
+ property variant test2: model.display
+ property variant test3: modelData
+ property variant test4: model.modelData
+ property variant test5: modelData.display
+ property variant test6: model
+ property variant test7: index
+ property variant test8: model.index
+ property variant test9: model.modelData.display
+ }
+}
diff --git a/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp b/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp
index d73a872d02..29a065c2b3 100644
--- a/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp
+++ b/tests/auto/declarative/qdeclarativevisualdatamodel/tst_qdeclarativevisualdatamodel.cpp
@@ -120,6 +120,8 @@ private slots:
void childChanged();
void objectListModel();
void singleRole();
+ void modelProperties();
+ void noDelegate();
private:
QDeclarativeEngine engine;
@@ -364,6 +366,136 @@ void tst_qdeclarativevisualdatamodel::singleRole()
}
}
+void tst_qdeclarativevisualdatamodel::modelProperties()
+{
+ {
+ QDeclarativeView view;
+
+ SingleRoleModel model;
+
+ QDeclarativeContext *ctxt = view.rootContext();
+ ctxt->setContextProperty("myModel", &model);
+
+ view.setSource(QUrl::fromLocalFile(SRCDIR "/data/modelproperties.qml"));
+
+ QDeclarativeListView *listview = qobject_cast<QDeclarativeListView*>(view.rootObject());
+ QVERIFY(listview != 0);
+
+ QDeclarativeItem *contentItem = listview->contentItem();
+ QVERIFY(contentItem != 0);
+
+ QDeclarativeItem *delegate = findItem<QDeclarativeItem>(contentItem, "delegate", 1);
+ QCOMPARE(delegate->property("test1").toString(),QString("two"));
+ QCOMPARE(delegate->property("test2").toString(),QString("two"));
+ QCOMPARE(delegate->property("test3").toString(),QString("two"));
+ QCOMPARE(delegate->property("test4").toString(),QString("two"));
+ QVERIFY(!delegate->property("test9").isValid());
+ QCOMPARE(delegate->property("test5").toString(),QString(""));
+ QVERIFY(delegate->property("test6").value<QObject*>() != 0);
+ QCOMPARE(delegate->property("test7").toInt(),1);
+ QCOMPARE(delegate->property("test8").toInt(),1);
+ }
+
+ {
+ QDeclarativeView view;
+
+ QList<QObject*> dataList;
+ dataList.append(new DataObject("Item 1", "red"));
+ dataList.append(new DataObject("Item 2", "green"));
+ dataList.append(new DataObject("Item 3", "blue"));
+ dataList.append(new DataObject("Item 4", "yellow"));
+
+ QDeclarativeContext *ctxt = view.rootContext();
+ ctxt->setContextProperty("myModel", QVariant::fromValue(dataList));
+
+ view.setSource(QUrl::fromLocalFile(SRCDIR "/data/modelproperties.qml"));
+
+ QDeclarativeListView *listview = qobject_cast<QDeclarativeListView*>(view.rootObject());
+ QVERIFY(listview != 0);
+
+ QDeclarativeItem *contentItem = listview->contentItem();
+ QVERIFY(contentItem != 0);
+
+ QDeclarativeItem *delegate = findItem<QDeclarativeItem>(contentItem, "delegate", 1);
+ QCOMPARE(delegate->property("test1").toString(),QString("Item 2"));
+ QEXPECT_FAIL("", "QTBUG-13576", Continue);
+ QCOMPARE(delegate->property("test2").toString(),QString("Item 2"));
+ QVERIFY(qobject_cast<DataObject*>(delegate->property("test3").value<QObject*>()) != 0);
+ QVERIFY(qobject_cast<DataObject*>(delegate->property("test4").value<QObject*>()) != 0);
+ QCOMPARE(delegate->property("test5").toString(),QString("Item 2"));
+ QCOMPARE(delegate->property("test9").toString(),QString("Item 2"));
+ QVERIFY(delegate->property("test6").value<QObject*>() != 0);
+ QCOMPARE(delegate->property("test7").toInt(),1);
+ QCOMPARE(delegate->property("test8").toInt(),1);
+ }
+
+ {
+ QDeclarativeView view;
+
+ QStandardItemModel model;
+ initStandardTreeModel(&model);
+
+ view.rootContext()->setContextProperty("myModel", &model);
+
+ QUrl source(QUrl::fromLocalFile(SRCDIR "/data/modelproperties2.qml"));
+
+ //3 items, 3 warnings each
+ QTest::ignoreMessage(QtWarningMsg, source.toString().toLatin1() + ":11: ReferenceError: Can't find variable: modelData");
+ QTest::ignoreMessage(QtWarningMsg, source.toString().toLatin1() + ":11: ReferenceError: Can't find variable: modelData");
+ QTest::ignoreMessage(QtWarningMsg, source.toString().toLatin1() + ":11: ReferenceError: Can't find variable: modelData");
+ QTest::ignoreMessage(QtWarningMsg, source.toString().toLatin1() + ":9: ReferenceError: Can't find variable: modelData");
+ QTest::ignoreMessage(QtWarningMsg, source.toString().toLatin1() + ":9: ReferenceError: Can't find variable: modelData");
+ QTest::ignoreMessage(QtWarningMsg, source.toString().toLatin1() + ":9: ReferenceError: Can't find variable: modelData");
+ QTest::ignoreMessage(QtWarningMsg, source.toString().toLatin1() + ":15: TypeError: Result of expression 'model.modelData' [undefined] is not an object.");
+ QTest::ignoreMessage(QtWarningMsg, source.toString().toLatin1() + ":15: TypeError: Result of expression 'model.modelData' [undefined] is not an object.");
+ QTest::ignoreMessage(QtWarningMsg, source.toString().toLatin1() + ":15: TypeError: Result of expression 'model.modelData' [undefined] is not an object.");
+
+ view.setSource(source);
+
+ QDeclarativeListView *listview = qobject_cast<QDeclarativeListView*>(view.rootObject());
+ QVERIFY(listview != 0);
+
+ QDeclarativeItem *contentItem = listview->contentItem();
+ QVERIFY(contentItem != 0);
+
+ QDeclarativeItem *delegate = findItem<QDeclarativeItem>(contentItem, "delegate", 1);
+ QCOMPARE(delegate->property("test1").toString(),QString("Row 2 Item"));
+ QCOMPARE(delegate->property("test2").toString(),QString("Row 2 Item"));
+ QVERIFY(!delegate->property("test3").isValid());
+ QVERIFY(!delegate->property("test4").isValid());
+ QVERIFY(!delegate->property("test5").isValid());
+ QVERIFY(!delegate->property("test9").isValid());
+ QVERIFY(delegate->property("test6").value<QObject*>() != 0);
+ QCOMPARE(delegate->property("test7").toInt(),1);
+ QCOMPARE(delegate->property("test8").toInt(),1);
+ }
+
+ //### should also test QStringList and QVariantList
+}
+
+void tst_qdeclarativevisualdatamodel::noDelegate()
+{
+ QDeclarativeView view;
+
+ QStandardItemModel model;
+ initStandardTreeModel(&model);
+
+ view.rootContext()->setContextProperty("myModel", &model);
+
+ view.setSource(QUrl::fromLocalFile(SRCDIR "/data/datalist.qml"));
+
+ QDeclarativeListView *listview = qobject_cast<QDeclarativeListView*>(view.rootObject());
+ QVERIFY(listview != 0);
+
+ QDeclarativeVisualDataModel *vdm = listview->findChild<QDeclarativeVisualDataModel*>("visualModel");
+ QVERIFY(vdm != 0);
+ QCOMPARE(vdm->count(), 3);
+
+ vdm->setDelegate(0);
+ QCOMPARE(vdm->count(), 0);
+}
+
+
template<typename T>
T *tst_qdeclarativevisualdatamodel::findItem(QGraphicsObject *parent, const QString &objectName, int index)
{
diff --git a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp
index 31402650e7..5a6cf3c887 100644
--- a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp
+++ b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp
@@ -137,6 +137,11 @@ void tst_QDeclarativeWorkerScript::messaging_data()
QTest::newRow("real") << qVariantFromValue(10334.375);
QTest::newRow("string") << qVariantFromValue(QString("More cheeeese, Gromit!"));
QTest::newRow("variant list") << qVariantFromValue((QVariantList() << "a" << "b" << "c"));
+ QTest::newRow("date time") << qVariantFromValue(QDateTime::currentDateTime());
+#ifndef QT_NO_REGEXP
+ // QtScript's QScriptValue -> QRegExp uses RegExp2 pattern syntax
+ QTest::newRow("regexp") << qVariantFromValue(QRegExp("^\\d\\d?$", Qt::CaseInsensitive, QRegExp::RegExp2));
+#endif
}
void tst_QDeclarativeWorkerScript::messaging_sendQObjectList()
diff --git a/tests/auto/declarative/qmlvisual/ListView/basic1.qml b/tests/auto/declarative/qmlvisual/ListView/basic1.qml
index d55c997c46..8c1b56e5dd 100644
--- a/tests/auto/declarative/qmlvisual/ListView/basic1.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/basic1.qml
@@ -11,16 +11,19 @@ Rectangle {
color: "red"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
model: ListModel {
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/basic2.qml b/tests/auto/declarative/qmlvisual/ListView/basic2.qml
index 31c802d1e3..9d26c737eb 100644
--- a/tests/auto/declarative/qmlvisual/ListView/basic2.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/basic2.qml
@@ -11,8 +11,11 @@ Rectangle {
color: "red"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
}
@@ -21,10 +24,10 @@ Rectangle {
delegate: delegate
model: ListModel {
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/basic3.qml b/tests/auto/declarative/qmlvisual/ListView/basic3.qml
index be39ca1e08..982df9a68a 100644
--- a/tests/auto/declarative/qmlvisual/ListView/basic3.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/basic3.qml
@@ -8,10 +8,10 @@ Rectangle {
ListModel {
id: model
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
ListView {
@@ -21,8 +21,11 @@ Rectangle {
color: "red"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/basic4.qml b/tests/auto/declarative/qmlvisual/ListView/basic4.qml
index 906af6336f..2c5d1e3eae 100644
--- a/tests/auto/declarative/qmlvisual/ListView/basic4.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/basic4.qml
@@ -8,10 +8,10 @@ Rectangle {
ListModel {
id: model
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
Component {
@@ -20,8 +20,11 @@ Rectangle {
color: "red"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic1.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic1.qml
deleted file mode 100644
index 3373247c7c..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic1.qml
+++ /dev/null
@@ -1,159 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 32
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 48
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 64
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 80
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 96
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 112
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 128
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 144
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 160
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 176
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 192
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 208
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 224
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 240
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 256
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 272
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 288
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 304
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 320
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 336
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 352
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 368
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 384
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 400
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 416
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 432
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 448
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 464
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 480
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 496
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 512
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 528
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 544
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 560
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 576
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic2.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic2.qml
deleted file mode 100644
index 20b889d5fe..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic2.qml
+++ /dev/null
@@ -1,187 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 32
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 48
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 64
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 80
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 96
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 112
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 128
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 144
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 160
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 176
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 192
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 208
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 224
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 240
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 256
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 272
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 288
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 304
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 320
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 336
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 352
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 368
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 384
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 400
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 416
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 432
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 448
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 464
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 480
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 496
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 512
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 528
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 544
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 560
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 576
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 592
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 608
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 624
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 640
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 656
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 672
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 688
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic3.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic3.qml
deleted file mode 100644
index f49de2f03d..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic3.qml
+++ /dev/null
@@ -1,147 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 32
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 48
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 64
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 80
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 96
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 112
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 128
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 144
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 160
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 176
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 192
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 208
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 224
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 240
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 256
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 272
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 288
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 304
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 320
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 336
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 352
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 368
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 384
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 400
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 416
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 432
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 448
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 464
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 480
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 496
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 512
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 528
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic4.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic4.qml
deleted file mode 100644
index 1ea5547e26..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/basic4.qml
+++ /dev/null
@@ -1,171 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 32
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 48
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 64
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 80
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 96
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 112
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 128
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 144
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 160
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 176
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 192
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 208
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 224
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 240
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 256
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 272
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 288
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 304
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 320
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 336
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 352
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 368
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 384
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 400
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 416
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 432
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 448
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 464
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 480
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 496
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 512
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 528
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 544
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 560
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 576
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 592
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 608
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
- Frame {
- msec: 624
- hash: "895c70434a24da42144e60e6d8dcf323"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.0.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.0.png
deleted file mode 100644
index 13b280c1c5..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.1.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.1.png
deleted file mode 100644
index 402872bde4..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.2.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.2.png
deleted file mode 100644
index afd0830a8d..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.3.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.3.png
deleted file mode 100644
index 7c15f610b2..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.5.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.5.png
deleted file mode 100644
index fddf1cb0c0..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.6.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.6.png
deleted file mode 100644
index 13b280c1c5..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.qml
deleted file mode 100644
index 829fbb3e1b..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.qml
+++ /dev/null
@@ -1,2203 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 32
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 48
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 64
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 80
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 96
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 112
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 128
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 144
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 160
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 176
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 192
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 208
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 224
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 240
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 256
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 272
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 288
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 304
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 320
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 336
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 352
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 368
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 384
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 400
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 416
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 432
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 448
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 464
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 480
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 496
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 512
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 528
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 544
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 560
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 576
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 592
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 608
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 624
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 640
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 656
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 672
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 688
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 704
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 720
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 736
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 752
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 768
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 784
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 800
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 816
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 832
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 848
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 864
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 880
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 896
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 912
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 928
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 944
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 960
- image: "itemlist.0.png"
- }
- Frame {
- msec: 976
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 992
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1008
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1024
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1040
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1056
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1072
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1088
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1104
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1120
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1136
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1152
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1168
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1184
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1200
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1216
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1232
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1248
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1264
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1280
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1296
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1312
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1328
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1344
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1360
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1376
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1392
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1408
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1424
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1440
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1456
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1472
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1488
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1504
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1520
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1536
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1552
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1568
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1584
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1600
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1616
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1632
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 1648
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 192; y: 111
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1664
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 191; y: 111
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1680
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 190; y: 112
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 187; y: 113
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1696
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 184; y: 113
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 180; y: 113
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1712
- hash: "a68b1bc6c2963ee92c3a45f500667b3b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 174; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 167; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1728
- hash: "7cda93e59466b3348e7ffe3895f89e86"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1744
- hash: "06e0008c78e919f7270402938d9d764b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 140; y: 121
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 132; y: 122
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1760
- hash: "9d8da9199efebb95f56e5d4ebc9a585e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 114; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 98; y: 132
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1776
- hash: "54a60a4279911ba4a8a5741bcadfa783"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 91; y: 132
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 91; y: 132
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1792
- hash: "a1a19370a1a8ed78e475f0d0eb12311c"
- }
- Frame {
- msec: 1808
- hash: "196a3b127cf7065614c34856bf8d8bca"
- }
- Frame {
- msec: 1824
- hash: "5fbefbd7c7be4374382cc4c8b86ac78a"
- }
- Frame {
- msec: 1840
- hash: "d6a544c622e504c1b931e1a8a1310a6e"
- }
- Frame {
- msec: 1856
- hash: "20e76f0eb4ec5f691999faf8ad313370"
- }
- Frame {
- msec: 1872
- hash: "7f84a3545907c754ae8a6a30ef61c98d"
- }
- Frame {
- msec: 1888
- hash: "b544901eae32903ad054e8cdfed715eb"
- }
- Frame {
- msec: 1904
- hash: "a010ed1e3312f4ca9f429b7e32cdcef9"
- }
- Frame {
- msec: 1920
- image: "itemlist.1.png"
- }
- Frame {
- msec: 1936
- hash: "93a731dc6f71b6ff5400bf74c87e6c46"
- }
- Frame {
- msec: 1952
- hash: "c73f63d1a024ba956e693487b3ccc761"
- }
- Frame {
- msec: 1968
- hash: "539d3d00fce2d0128cd697d86d237fe7"
- }
- Frame {
- msec: 1984
- hash: "52752d7d6f2d0e085f7132313907b72b"
- }
- Frame {
- msec: 2000
- hash: "f46dd5803a6075e979e0fc733d503bfb"
- }
- Frame {
- msec: 2016
- hash: "b8734698a6bad00ecf019f85328c2c21"
- }
- Frame {
- msec: 2032
- hash: "1cfc499ca756023430cc5b2fa95a599d"
- }
- Frame {
- msec: 2048
- hash: "63a816548837c19f8f0494c137fc0174"
- }
- Frame {
- msec: 2064
- hash: "1bce9b85235e9a1a472c079dfec70ec5"
- }
- Frame {
- msec: 2080
- hash: "6677863e7f74c12648409883f73adbe2"
- }
- Frame {
- msec: 2096
- hash: "98e707a3e39a5f7bd4a101c2ed83535c"
- }
- Frame {
- msec: 2112
- hash: "c1f6d8842d14a9394d4b7797314f50e8"
- }
- Frame {
- msec: 2128
- hash: "579758b477bcd2112b305a5aac7df338"
- }
- Frame {
- msec: 2144
- hash: "4a7bb81090db246db53e2dbc56f710ea"
- }
- Frame {
- msec: 2160
- hash: "074995cdd8a70817d1c8a7bb0ad4c542"
- }
- Frame {
- msec: 2176
- hash: "bd8d7bda4d2e9ad1fba2895d568f36cc"
- }
- Frame {
- msec: 2192
- hash: "40cce3d2d80ac470af44fc334cec1d5b"
- }
- Frame {
- msec: 2208
- hash: "15cbc226b032d5a97199735ea7a1408b"
- }
- Frame {
- msec: 2224
- hash: "12b296aea9b058a5402d0d0a620f8edc"
- }
- Frame {
- msec: 2240
- hash: "6ffd2b79cf0e941a59e74bc6f9025bcb"
- }
- Frame {
- msec: 2256
- hash: "589a58ef76ea709dc8d80390c9044f99"
- }
- Frame {
- msec: 2272
- hash: "c009924bfa30153f22ab168b539494e9"
- }
- Frame {
- msec: 2288
- hash: "4b83674a7c2daa68d735901ad40be2bd"
- }
- Frame {
- msec: 2304
- hash: "0525908c0302ada989e28990bac3f2ca"
- }
- Frame {
- msec: 2320
- hash: "89eb13976ba3ba4413cafeb0cc91c01b"
- }
- Frame {
- msec: 2336
- hash: "75c1295ef99680784b2e11fb88fa1423"
- }
- Frame {
- msec: 2352
- hash: "93d89165cf6a97c76ae6e7f75678a3cd"
- }
- Frame {
- msec: 2368
- hash: "53064c1938f08a55603a99b0db225174"
- }
- Frame {
- msec: 2384
- hash: "31db5684466c0c32128a9a8c7b1835e1"
- }
- Frame {
- msec: 2400
- hash: "99d9e58697736198e0a00443d237e85b"
- }
- Frame {
- msec: 2416
- hash: "6c1e860aef983367365d53f5849ad441"
- }
- Frame {
- msec: 2432
- hash: "6c1e860aef983367365d53f5849ad441"
- }
- Frame {
- msec: 2448
- hash: "6c1e860aef983367365d53f5849ad441"
- }
- Frame {
- msec: 2464
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2480
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2496
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2512
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2528
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2544
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2560
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2576
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2592
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2608
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2624
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2640
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2656
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2672
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2688
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2704
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2720
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2736
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2752
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2768
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2784
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2800
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2816
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2832
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2848
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 2864
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 181; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2880
- image: "itemlist.2.png"
- }
- Frame {
- msec: 2896
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 179; y: 105
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 177; y: 106
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2912
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 174; y: 108
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 170; y: 110
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2928
- hash: "5bb06b4e74532ba5bc8c7bc38bf77d7f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 112
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2944
- hash: "b10a6206830a876017799ef2fcf61b1a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 140; y: 123
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2960
- hash: "b2e24759ba10afd6cff90f4b1e04b496"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 124; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 124; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2976
- hash: "ccbcd6f45cb529c2db71504c0f69d73e"
- }
- Frame {
- msec: 2992
- hash: "7b31c6d5931677f1aa1e8c7d48a4ff22"
- }
- Frame {
- msec: 3008
- hash: "c52f691a0a6cf155118bdfea2dfea623"
- }
- Frame {
- msec: 3024
- hash: "dd639d1df3d4a9b8f06718def63d588f"
- }
- Frame {
- msec: 3040
- hash: "39d767b09a648ef6295cec2848f9226f"
- }
- Frame {
- msec: 3056
- hash: "5dd46d5f386431e7b13348ac9a9630ed"
- }
- Frame {
- msec: 3072
- hash: "0354e5183b0e66e7ba146d292c559df4"
- }
- Frame {
- msec: 3088
- hash: "984aa6d7075e24de429e05b1b0eda94a"
- }
- Frame {
- msec: 3104
- hash: "1af58a2f44f1f613712d4df85e38356d"
- }
- Frame {
- msec: 3120
- hash: "6e4085e7f1fee724d78808753f04b471"
- }
- Frame {
- msec: 3136
- hash: "73a019ef9057639d631cd99a431b3f3b"
- }
- Frame {
- msec: 3152
- hash: "c9414a2e655a90dfdcb6fb288b4ba0ca"
- }
- Frame {
- msec: 3168
- hash: "3f4c24f7ac89da982af22032309637fb"
- }
- Frame {
- msec: 3184
- hash: "a50e6ada8f73a257657f4348ceaffcfd"
- }
- Frame {
- msec: 3200
- hash: "a67bf40d09259bbd079c12ae4f49150f"
- }
- Frame {
- msec: 3216
- hash: "a2fc512b7c234a9d0b2c1a83387a8a46"
- }
- Frame {
- msec: 3232
- hash: "85090683ce9a3c9833b1cb0b3df076ee"
- }
- Frame {
- msec: 3248
- hash: "275f3594a0e2cc4b6717f9f336e7e1b6"
- }
- Frame {
- msec: 3264
- hash: "2473eb11f7b65a784a2b166114026488"
- }
- Frame {
- msec: 3280
- hash: "4865c30dc45fbf5ca82047b77eca0912"
- }
- Frame {
- msec: 3296
- hash: "54de88bca395449fbaea2c090c7a5d91"
- }
- Frame {
- msec: 3312
- hash: "833f9295cf9a34934f001eac48551b59"
- }
- Frame {
- msec: 3328
- hash: "5bf565f57ababa7380faeee94add91ca"
- }
- Frame {
- msec: 3344
- hash: "6325578867f1eb3b2d47ed40b017b571"
- }
- Frame {
- msec: 3360
- hash: "046a6114176b3a3206b7a2acd6e30b41"
- }
- Frame {
- msec: 3376
- hash: "f8d4120a17f28c2d1d9c4be959098058"
- }
- Frame {
- msec: 3392
- hash: "71356d2e48aad2900784ea6bc1a3d908"
- }
- Frame {
- msec: 3408
- hash: "b84ad460fb81fdc4049abe8f3ff180bb"
- }
- Frame {
- msec: 3424
- hash: "0354239f5eaea23474d9f81385392a8a"
- }
- Frame {
- msec: 3440
- hash: "8ef0eef3393e07ae7605c865a95edc30"
- }
- Frame {
- msec: 3456
- hash: "5b8b384cc8e3faf4310015e19b3eb487"
- }
- Frame {
- msec: 3472
- hash: "77c18ac7dfff2a4e516915e3e3df0717"
- }
- Frame {
- msec: 3488
- hash: "c1d3264384c26345eb8100de829309ca"
- }
- Frame {
- msec: 3504
- hash: "6b21f71d0bedef4bbcb445a13f61e7a3"
- }
- Frame {
- msec: 3520
- hash: "f619097356671f6eb54d3b1c481e709d"
- }
- Frame {
- msec: 3536
- hash: "e56e3a90da446e0c482cb93717f6aacc"
- }
- Frame {
- msec: 3552
- hash: "aa94ebdbb4b8423aff28c95daff0baf5"
- }
- Frame {
- msec: 3568
- hash: "e1744d9cacd1a2c96af4cfdd5c486995"
- }
- Frame {
- msec: 3584
- hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
- }
- Frame {
- msec: 3600
- hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
- }
- Frame {
- msec: 3616
- hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
- }
- Frame {
- msec: 3632
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3648
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3664
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3680
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3696
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3712
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3728
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3744
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3760
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3776
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3792
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3808
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3824
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3840
- image: "itemlist.3.png"
- }
- Frame {
- msec: 3856
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3872
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3888
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3904
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3920
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3936
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3952
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3968
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 3984
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 4000
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 4016
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 4032
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 4048
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 4064
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 4080
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Frame {
- msec: 4096
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 31; y: 137
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4112
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 32; y: 137
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4128
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 33; y: 136
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 36; y: 135
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4144
- hash: "88143ff6c278a5433b314b551b7b8b1d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 40; y: 134
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 132
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4160
- hash: "c2c9c284b185a89faf4ddb5a7867f449"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 64; y: 130
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4176
- hash: "de1c18aeda5d2fbd6dad4554c78617bd"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 86; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 110; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 110; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4192
- hash: "a67bf40d09259bbd079c12ae4f49150f"
- }
- Frame {
- msec: 4208
- hash: "94514668dafbe41c5890a578efd6dea4"
- }
- Frame {
- msec: 4224
- hash: "2e97a74eb9ddb1c9613c89e2d78db018"
- }
- Frame {
- msec: 4240
- hash: "4b5368f0d86bffeb6bd31b58aec88650"
- }
- Frame {
- msec: 4256
- hash: "b459bde7bb4ce51e6ecdab58f64fcbb9"
- }
- Frame {
- msec: 4272
- hash: "7bac8cc3ec64c9ad1c0da282e38c953e"
- }
- Frame {
- msec: 4288
- hash: "a73a58c3d7a757547740a2a161f4c756"
- }
- Frame {
- msec: 4304
- hash: "b35edcb1fa3568a3e770ab2364b82e75"
- }
- Frame {
- msec: 4320
- hash: "d6c863ef57c5e5cb04cdac72f920db0b"
- }
- Frame {
- msec: 4336
- hash: "0db5e4588ff851918b07796f0cf07382"
- }
- Frame {
- msec: 4352
- hash: "71ec8c363ca6a6f7556afb70faccffe6"
- }
- Frame {
- msec: 4368
- hash: "18d026e9c965ada1db67c643576d2a80"
- }
- Frame {
- msec: 4384
- hash: "69f71c22dff981a4da8ec1edcf90e79f"
- }
- Frame {
- msec: 4400
- hash: "680460f5e4d9e649931601041af046b2"
- }
- Frame {
- msec: 4416
- hash: "3028763fd15de2607b20b1331b904a4a"
- }
- Frame {
- msec: 4432
- hash: "333eb60e217fe1ea7469eab52ac461f1"
- }
- Frame {
- msec: 4448
- hash: "ccbcd6f45cb529c2db71504c0f69d73e"
- }
- Frame {
- msec: 4464
- hash: "3445df9b41a0a3e74738cbf328ab7d5c"
- }
- Frame {
- msec: 4480
- hash: "bd2c072558479e9de7a97207e58cc57f"
- }
- Frame {
- msec: 4496
- hash: "3d34b0b24a30eda93377dcb4585afed8"
- }
- Frame {
- msec: 4512
- hash: "d3045703863b0c5a327b9355c23d69f2"
- }
- Frame {
- msec: 4528
- hash: "2f2eb55f693415b840a317211b250e9f"
- }
- Frame {
- msec: 4544
- hash: "791b9ca7d47a3343474c30a35e336d4b"
- }
- Frame {
- msec: 4560
- hash: "73a0c02ebad6d3d5f939d9a00dd898bf"
- }
- Frame {
- msec: 4576
- hash: "d5c11135d586711b12f236430a2c2795"
- }
- Frame {
- msec: 4592
- hash: "34f9ea214fe714ff4e994f715ea6ea39"
- }
- Frame {
- msec: 4608
- hash: "8e49afa00983b156b818533923fb6edd"
- }
- Frame {
- msec: 4624
- hash: "e7e7bef17cee92eca9191fd734d7a577"
- }
- Frame {
- msec: 4640
- hash: "e407f6ed7cb3c130365ab5515d6308c0"
- }
- Frame {
- msec: 4656
- hash: "5bb06b4e74532ba5bc8c7bc38bf77d7f"
- }
- Frame {
- msec: 4672
- hash: "0ad7411316031e22034c14e81ca3a806"
- }
- Frame {
- msec: 4688
- hash: "dd81d7a9b48c922b4c42cba1b5f2b9d7"
- }
- Frame {
- msec: 4704
- hash: "32bef6f5005ad94e29ff59165958fbdc"
- }
- Frame {
- msec: 4720
- hash: "87758dd311f91193bf1e3536c2f58525"
- }
- Frame {
- msec: 4736
- hash: "015be92a4ff4e735fcc3cbc7a8b9d763"
- }
- Frame {
- msec: 4752
- hash: "d4c34ed49317c6692d71681fcd9842b6"
- }
- Frame {
- msec: 4768
- hash: "abaa235bb946a8abaddd52981d632c2d"
- }
- Frame {
- msec: 4784
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4800
- image: "itemlist.4.png"
- }
- Frame {
- msec: 4816
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4832
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4848
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4864
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4880
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4896
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4912
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4928
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4944
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4960
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4976
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 4992
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5008
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5024
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5040
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5056
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5072
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5088
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5104
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5120
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5136
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5152
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5168
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5184
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5200
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5216
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Frame {
- msec: 5232
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 17; y: 120
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5248
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 19; y: 120
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 21; y: 120
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5264
- hash: "99f9988040a389576cb6420b5391f768"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 24; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 28; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5280
- hash: "95b380c9ab6f8db7b822faf023d94546"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 35; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 44; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5296
- hash: "bb79e53556698c62ec30c75be9f6b7d7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 70; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 96; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 96; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5312
- hash: "285cc2f0df1f59f25a0135560ab6edf2"
- }
- Frame {
- msec: 5328
- hash: "93a731dc6f71b6ff5400bf74c87e6c46"
- }
- Frame {
- msec: 5344
- hash: "eb555741ab128a50de5a18a454f2e639"
- }
- Frame {
- msec: 5360
- hash: "5dbe6cf898c1e37fcaacecfcf57b2194"
- }
- Frame {
- msec: 5376
- hash: "e7795610115593e78bb32f7bcc0ae2eb"
- }
- Frame {
- msec: 5392
- hash: "20e76f0eb4ec5f691999faf8ad313370"
- }
- Frame {
- msec: 5408
- hash: "d6a544c622e504c1b931e1a8a1310a6e"
- }
- Frame {
- msec: 5424
- hash: "e7a3a21feed244c5b1c710a9254c15f0"
- }
- Frame {
- msec: 5440
- hash: "5a4b1aca24f121d1373646e9d80b86fd"
- }
- Frame {
- msec: 5456
- hash: "331d2ec7021655c86aa64e47718a1088"
- }
- Frame {
- msec: 5472
- hash: "92096bc872e7395aa5b75c44646a0b60"
- }
- Frame {
- msec: 5488
- hash: "0d9aa6cee4d21488cbb5153f8f3ed593"
- }
- Frame {
- msec: 5504
- hash: "c1b943d43701605563fffffcb75f9fa7"
- }
- Frame {
- msec: 5520
- hash: "1b680025d5ad1ddd8f8d5f570ba73e71"
- }
- Frame {
- msec: 5536
- hash: "5539a3b9f60ea747c10ed8328b467cbf"
- }
- Frame {
- msec: 5552
- hash: "0a1317bcb606cd3488c5b14ee5d96585"
- }
- Frame {
- msec: 5568
- hash: "8844af68b11db7d92c69804c7371a746"
- }
- Frame {
- msec: 5584
- hash: "28d7fd127739c6e3b8488651b725c802"
- }
- Frame {
- msec: 5600
- hash: "0cf1a7d958a96aa2768995dddc5ccc09"
- }
- Frame {
- msec: 5616
- hash: "64b902fe7ab4d89ef0c7b760974e3488"
- }
- Frame {
- msec: 5632
- hash: "aba11c597eba550fc1eaddbf554057f6"
- }
- Frame {
- msec: 5648
- hash: "1bacaa3bb9dc3cac9ffc7491cb4dc1a5"
- }
- Frame {
- msec: 5664
- hash: "0ba8b582234d9f0c198c0c9e18e1cb02"
- }
- Frame {
- msec: 5680
- hash: "f66eaf2b5c3529987c0d9d005351ed73"
- }
- Frame {
- msec: 5696
- hash: "75b0bb720fa4c77da3783b3ff31c2fae"
- }
- Frame {
- msec: 5712
- hash: "345b235bb7f13409378e5c0c370f2a41"
- }
- Frame {
- msec: 5728
- hash: "83b7e902dce4e0fdc4ef5d629188c23c"
- }
- Frame {
- msec: 5744
- hash: "04b9041c6f10969889d92e94785c7e88"
- }
- Frame {
- msec: 5760
- image: "itemlist.5.png"
- }
- Frame {
- msec: 5776
- hash: "4f3a902addc34ecdaf390e2427cc52e7"
- }
- Frame {
- msec: 5792
- hash: "68d443f16c16821ffc9ca68b17c76034"
- }
- Frame {
- msec: 5808
- hash: "9d25adc77befa761ee376a9b43595b5e"
- }
- Frame {
- msec: 5824
- hash: "a68b1bc6c2963ee92c3a45f500667b3b"
- }
- Frame {
- msec: 5840
- hash: "d5268cd58c222451d48038e715e83802"
- }
- Frame {
- msec: 5856
- hash: "f37d461541a8ec7a4161b18748de6aea"
- }
- Frame {
- msec: 5872
- hash: "805319ac7ca842feb3649e92f8b5b72f"
- }
- Frame {
- msec: 5888
- hash: "73124472a05080891d4948d8ca273f8c"
- }
- Frame {
- msec: 5904
- hash: "b6e433a23282a50db2e165a2447ba3f6"
- }
- Frame {
- msec: 5920
- hash: "fd8d3f5688b1806998c6087e18c6c730"
- }
- Frame {
- msec: 5936
- hash: "f132dd459950ef2d18aa93ca950d0692"
- }
- Frame {
- msec: 5952
- hash: "ade5beb259b5277c333ca806fc9bdbec"
- }
- Frame {
- msec: 5968
- hash: "ade5beb259b5277c333ca806fc9bdbec"
- }
- Frame {
- msec: 5984
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6000
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6016
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6032
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6048
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6064
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6080
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6096
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6112
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6128
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6144
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6160
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6176
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6192
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6208
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6224
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6240
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6256
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6272
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6288
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6304
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6320
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6336
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6352
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6368
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6384
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6400
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6416
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6432
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6448
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6464
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6480
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6496
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6512
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6528
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6544
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6560
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6576
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6592
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6608
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6624
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6640
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6656
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6672
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6688
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6704
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6720
- image: "itemlist.6.png"
- }
- Frame {
- msec: 6736
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6752
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6768
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6784
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6800
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6816
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6832
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6848
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6864
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6880
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6896
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6912
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6928
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6944
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6960
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6976
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 6992
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7008
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7024
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7040
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7056
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7072
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7088
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7104
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7120
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7136
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7152
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7168
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7184
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7200
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7216
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7232
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7248
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7264
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7280
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7296
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
- Frame {
- msec: 7312
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.0.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.0.png
deleted file mode 100644
index a1ab987d8c..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.1.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.1.png
deleted file mode 100644
index a1ab987d8c..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.10.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.10.png
deleted file mode 100644
index dcfca3f794..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.10.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.11.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.11.png
deleted file mode 100644
index 7cc40470bb..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.11.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.12.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.12.png
deleted file mode 100644
index a97f4ad519..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.12.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.13.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.13.png
deleted file mode 100644
index 7a8c6bd52c..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.13.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.14.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.14.png
deleted file mode 100644
index ae47356225..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.14.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.15.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.15.png
deleted file mode 100644
index b3a72609a2..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.15.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.16.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.16.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.16.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.17.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.17.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.17.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.18.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.18.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.18.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.19.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.19.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.19.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.2.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.2.png
deleted file mode 100644
index 9877b92f21..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.3.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.3.png
deleted file mode 100644
index 603bd24577..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.4.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.4.png
deleted file mode 100644
index 5fdfbb896e..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.5.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.5.png
deleted file mode 100644
index a1ab987d8c..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.6.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.6.png
deleted file mode 100644
index 9ccf9b051e..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.7.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.7.png
deleted file mode 100644
index 6b40e1bfb9..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.8.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.8.png
deleted file mode 100644
index 2fda36d6b5..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.8.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.9.png b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.9.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.qml b/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.qml
deleted file mode 100644
index f47179d977..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/listview.qml
+++ /dev/null
@@ -1,3079 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 32
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 48
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 64
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 80
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 96
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 112
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 128
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 144
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 160
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 176
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 192
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 208
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 224
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 240
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 256
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 272
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 288
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 304
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 320
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 336
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 352
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 368
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 384
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 400
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 416
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 432
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 448
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 464
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 480
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 496
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 512
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 528
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 544
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 560
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 576
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 592
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 608
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 624
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 640
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 656
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 672
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 688
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 704
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 720
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 736
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 752
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 768
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 784
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 800
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 816
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 832
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 848
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 864
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 880
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 896
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 912
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 928
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 944
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 960
- image: "listview.0.png"
- }
- Frame {
- msec: 976
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 992
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1008
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1024
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1040
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1056
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1072
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1088
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1104
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1120
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1136
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1152
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1168
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1184
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1200
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1216
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1232
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1248
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1264
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1280
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1296
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1312
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1328
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1344
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1360
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1376
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1392
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1408
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1424
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1440
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1456
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1472
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1488
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1504
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1520
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1536
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1552
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1568
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1584
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1600
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1616
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1632
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1648
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1664
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1680
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1696
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1712
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1728
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1744
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1760
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1776
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1792
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1808
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1824
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1840
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1856
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1872
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1888
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1904
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1920
- image: "listview.1.png"
- }
- Frame {
- msec: 1936
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1952
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1968
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 1984
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2000
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2016
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2032
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2048
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2064
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2080
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2096
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2112
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2128
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2144
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2160
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2176
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2192
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2208
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2224
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2240
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2256
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2272
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2288
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2304
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2320
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2336
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2352
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2368
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2384
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2400
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2416
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2432
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2448
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2464
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2480
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2496
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2512
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2528
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2544
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2560
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2576
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2592
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 553; y: 267
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2608
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2624
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 554; y: 267
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 555; y: 266
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2640
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 556; y: 265
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 558; y: 260
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2656
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 560; y: 256
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2672
- hash: "c315e184c4dcb11d7e9fd4509a8b6a1f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 562; y: 250
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 566; y: 234
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2688
- hash: "aeef1cacca9518408519b670443e396f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 568; y: 216
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2704
- hash: "621626927f83bf7b36b78f5ca7ed4ed0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 572; y: 192
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 572; y: 192
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2720
- hash: "b2aca965b745e98365195c52b9dd9a2c"
- }
- Frame {
- msec: 2736
- hash: "4cc8c162afcc45c79afd8230893d4ddd"
- }
- Frame {
- msec: 2752
- hash: "b9c0815086393878ad00566db7a3c577"
- }
- Frame {
- msec: 2768
- hash: "23cbc15fce97f966c24e3ec626e01960"
- }
- Frame {
- msec: 2784
- hash: "3a7ce897b47ba39e63be31a020de6f3d"
- }
- Frame {
- msec: 2800
- hash: "2a8a32cd27fad2c57c9eb518c7b3b3ca"
- }
- Frame {
- msec: 2816
- hash: "96d676ad58119430b440a5f0a2215f26"
- }
- Frame {
- msec: 2832
- hash: "5f9cd251615ee6a98470a7b6098f7890"
- }
- Frame {
- msec: 2848
- hash: "c9b1c073cbfbf1c353685b3f38baa675"
- }
- Frame {
- msec: 2864
- hash: "cf5bfbfe8904ea40b796d2b33d5cc363"
- }
- Frame {
- msec: 2880
- image: "listview.2.png"
- }
- Frame {
- msec: 2896
- hash: "c75c3342b476f75fc0c5f56a374da13e"
- }
- Frame {
- msec: 2912
- hash: "0dfcd15d21b7e949b56bc69d881c52f5"
- }
- Frame {
- msec: 2928
- hash: "73b7352bb11d29cbf64b6b594e761e42"
- }
- Frame {
- msec: 2944
- hash: "876361c2fc18c2236c1dffd36f517f44"
- }
- Frame {
- msec: 2960
- hash: "0dfaf61e3a86ee056a5d76cf6f7994b2"
- }
- Frame {
- msec: 2976
- hash: "391995cfc5d8d3808b30d74ba5ea3188"
- }
- Frame {
- msec: 2992
- hash: "6fd4f14c16a8870355fa190c94e4be2d"
- }
- Frame {
- msec: 3008
- hash: "0aac04c8092505d934220e61c7959512"
- }
- Frame {
- msec: 3024
- hash: "6cb0fbe22fcd60b5ed6385e49522b32e"
- }
- Frame {
- msec: 3040
- hash: "2eb7fd1a773e32ae94284cf57efaaff2"
- }
- Frame {
- msec: 3056
- hash: "e143ed5eeb94b35ef97e965f34d45e4d"
- }
- Frame {
- msec: 3072
- hash: "529e85f2cd48c1f0d056682b8350445b"
- }
- Frame {
- msec: 3088
- hash: "d74bded985c00ecd192ff8fdce708450"
- }
- Frame {
- msec: 3104
- hash: "f71568b2173f72c4433a019775923c02"
- }
- Frame {
- msec: 3120
- hash: "1185a1c936ac08633c14d39ca9c4f5e9"
- }
- Frame {
- msec: 3136
- hash: "e641720bf75f1e4f0a8471f3a8b35094"
- }
- Frame {
- msec: 3152
- hash: "cecc41fb42abb95505c094829fd415bf"
- }
- Frame {
- msec: 3168
- hash: "7ad89090beb9de3cd7c5a5a03fca900d"
- }
- Frame {
- msec: 3184
- hash: "2a98fe4406367d4e286d8932d6a21318"
- }
- Frame {
- msec: 3200
- hash: "9aad024b2fc25ce886ccaa4ac106b1d8"
- }
- Frame {
- msec: 3216
- hash: "3c4a787a4d590efd2e72706e40df7b6d"
- }
- Frame {
- msec: 3232
- hash: "1135e06c2981bdaed13c13400e178dc3"
- }
- Frame {
- msec: 3248
- hash: "1fbceedf1c20f2aa3f05be36126280e2"
- }
- Frame {
- msec: 3264
- hash: "5d1ec83f43b649c732cc3f7815100428"
- }
- Frame {
- msec: 3280
- hash: "27501f6b6adccfdb77a5228611e2a95a"
- }
- Frame {
- msec: 3296
- hash: "218dc244352c14467f2b2a39d78a1bc7"
- }
- Frame {
- msec: 3312
- hash: "33a998563d2c053e375f619b7a75a224"
- }
- Frame {
- msec: 3328
- hash: "02d34b79e25367e6d0dc1765cab12353"
- }
- Frame {
- msec: 3344
- hash: "2698cf68138aa7d292167bcc85f60b74"
- }
- Frame {
- msec: 3360
- hash: "0b33e929b420596ff1dce2eeef8480db"
- }
- Frame {
- msec: 3376
- hash: "d8ec307a85cecaacaa908ceb34d5db5b"
- }
- Frame {
- msec: 3392
- hash: "4afe1df3e802b41d1b89b5fab4e35190"
- }
- Frame {
- msec: 3408
- hash: "e8f484ed8d2a6745ee87ac9544281d55"
- }
- Frame {
- msec: 3424
- hash: "6df053920e87d7e6e3ec0368b4b14c25"
- }
- Frame {
- msec: 3440
- hash: "6e94791acce321417a37132821c0260d"
- }
- Frame {
- msec: 3456
- hash: "fea3e31cbf3078615f57c934197dac35"
- }
- Frame {
- msec: 3472
- hash: "e8d15890a8bd95db39889d19f046901b"
- }
- Frame {
- msec: 3488
- hash: "038b422b154dfef2d955b833892c581e"
- }
- Frame {
- msec: 3504
- hash: "01180b3d9b504ca2814382eadaf3a4e0"
- }
- Frame {
- msec: 3520
- hash: "869a0aa0d67043822c65383e0f3264d4"
- }
- Frame {
- msec: 3536
- hash: "43785b1214510c10b65018a9d68a93b1"
- }
- Frame {
- msec: 3552
- hash: "95e6ebc35c2fb128b6e6ac0743268523"
- }
- Frame {
- msec: 3568
- hash: "f8c22a6ca3169de4d29b3b0e2908f581"
- }
- Frame {
- msec: 3584
- hash: "6baf16c321847d269718bcb3468aeeb2"
- }
- Frame {
- msec: 3600
- hash: "30804b5eb2a6d99116475cbdc1a9c043"
- }
- Frame {
- msec: 3616
- hash: "c892c17ec947a910b74f5b8704405e9f"
- }
- Frame {
- msec: 3632
- hash: "696029b77512943001c9eba64191e633"
- }
- Frame {
- msec: 3648
- hash: "4c26bb0ca28d74a2bb79d0bfc8127361"
- }
- Frame {
- msec: 3664
- hash: "6e8c50cc14c9afe73b4baf09a6a8f1a4"
- }
- Frame {
- msec: 3680
- hash: "fd20e4259b44357c93f22f35c698fe1b"
- }
- Frame {
- msec: 3696
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3712
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3728
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3744
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3760
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3776
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3792
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3808
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3824
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3840
- image: "listview.3.png"
- }
- Frame {
- msec: 3856
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3872
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3888
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3904
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3920
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3936
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3952
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3968
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3984
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4000
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4016
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4032
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4048
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4064
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4080
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4096
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4112
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4128
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4144
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 521; y: 24
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4160
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 25
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4176
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 32
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 37
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4192
- hash: "a5df688148c264de1d376c9b87ddfa6b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 46
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4208
- hash: "a4e2c1878b0afce0ee1eebd63e9c951a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 66
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 88
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4224
- hash: "2f9a79278d492790ef86a09c77e95ff4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 531; y: 136
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 531; y: 136
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4240
- hash: "5b5ce7206b26528157c426f4e1e3e0a8"
- }
- Frame {
- msec: 4256
- hash: "65a1e5f81ab89b163aed46b984cca45e"
- }
- Frame {
- msec: 4272
- hash: "e28253ad5a2415251b68bcda1d7d4bd0"
- }
- Frame {
- msec: 4288
- hash: "71aae5abb4a9e9077053ea21dd3ec315"
- }
- Frame {
- msec: 4304
- hash: "33fcea38fc3b328b3294f9ac2a26aa1a"
- }
- Frame {
- msec: 4320
- hash: "6299eb1d87f371966307668b92de6a0b"
- }
- Frame {
- msec: 4336
- hash: "4f66d8c7cb6971d0fc24089d123c547b"
- }
- Frame {
- msec: 4352
- hash: "d9906d61b31fabf968290ebcd6688f34"
- }
- Frame {
- msec: 4368
- hash: "5a1945993ff8096ba6b933d45586044a"
- }
- Frame {
- msec: 4384
- hash: "331535e54da9bbdbc2fbf2b244ad0199"
- }
- Frame {
- msec: 4400
- hash: "4dc39de0c54f6e0b77f94f6ae6c345ec"
- }
- Frame {
- msec: 4416
- hash: "ec309a298ce246c13eb666488eb75016"
- }
- Frame {
- msec: 4432
- hash: "a133819f8adc6265eb0e438261c869e3"
- }
- Frame {
- msec: 4448
- hash: "da4d64fd6b3ae7d49ee5c5c8d0117a37"
- }
- Frame {
- msec: 4464
- hash: "620dd1c3fc41ce657eac9d1a5b765fd4"
- }
- Frame {
- msec: 4480
- hash: "ff1c370bd1bf75a98ae7125e7dd5a9db"
- }
- Frame {
- msec: 4496
- hash: "59c6e4297109b5cc7c197749867dddae"
- }
- Frame {
- msec: 4512
- hash: "91b1719e86529d0c35a53a2d0a095dd6"
- }
- Frame {
- msec: 4528
- hash: "2994663d35c9eb453a27c1a1fa9aeeb8"
- }
- Frame {
- msec: 4544
- hash: "ae4ec37b9f6a00b3c9139e5cfe13d32e"
- }
- Frame {
- msec: 4560
- hash: "a98340236d1b65f47e88684168c1429d"
- }
- Frame {
- msec: 4576
- hash: "34848b483ea6a2bd412e29d26beb3ab0"
- }
- Frame {
- msec: 4592
- hash: "dd9bae0e2fca84b265d8cb59686ff88d"
- }
- Frame {
- msec: 4608
- hash: "18b6ef6f5913b0612b76e7b2e25073dd"
- }
- Frame {
- msec: 4624
- hash: "9398aab9478279aed1bc40c9378f8da4"
- }
- Frame {
- msec: 4640
- hash: "a297a304c12102f23bd1e0f0207e0df9"
- }
- Frame {
- msec: 4656
- hash: "091db9138cd6ae801ad857105a83c8f9"
- }
- Frame {
- msec: 4672
- hash: "253938ca4a4f13433ddd502eb94cb7cd"
- }
- Frame {
- msec: 4688
- hash: "6002df1793d290e4e31ee0c91c37bbe6"
- }
- Frame {
- msec: 4704
- hash: "212476fa1c3a52fb8eba03ec3aecdcd8"
- }
- Frame {
- msec: 4720
- hash: "80d4d8434d4e96a2bc23f5ed060d6ddc"
- }
- Frame {
- msec: 4736
- hash: "2d4add725f31a04558635ce4b73a758a"
- }
- Frame {
- msec: 4752
- hash: "57c06022ec1e502c4f49f43063c433e7"
- }
- Frame {
- msec: 4768
- hash: "8393e97990993f9d5f68ea65f8e4a2db"
- }
- Frame {
- msec: 4784
- hash: "9a1fcd96dffaf5c79ecc7f9427e02499"
- }
- Frame {
- msec: 4800
- image: "listview.4.png"
- }
- Frame {
- msec: 4816
- hash: "5ae722cf541e3453e73bbee57dc379e9"
- }
- Frame {
- msec: 4832
- hash: "fc7326c2e2e56d9c3036e8dfc2ea77a8"
- }
- Frame {
- msec: 4848
- hash: "f22a2a68cea158f333b0457025d75490"
- }
- Frame {
- msec: 4864
- hash: "d684c8aa9b835779080f170cafead40f"
- }
- Frame {
- msec: 4880
- hash: "dd451e5e421f929d015981bc7aeb8c66"
- }
- Frame {
- msec: 4896
- hash: "d066f228295db7f46520495167d3e946"
- }
- Frame {
- msec: 4912
- hash: "ebf640a457e3498bade3220aafa70331"
- }
- Frame {
- msec: 4928
- hash: "190f5b1f3ce9d200790c34c50bcc62c5"
- }
- Frame {
- msec: 4944
- hash: "9d4ad865246eb008afa40740b5c9a208"
- }
- Frame {
- msec: 4960
- hash: "81c8b2c0b4f9e74f24d328a1d9b40a9f"
- }
- Frame {
- msec: 4976
- hash: "24acc300307e71bee79bce8de76f56cb"
- }
- Frame {
- msec: 4992
- hash: "1f9d31f94cfce6f868bfcc8a104d2465"
- }
- Frame {
- msec: 5008
- hash: "7a3cab008dcb7a893ae30797b33df6f2"
- }
- Frame {
- msec: 5024
- hash: "38d561a2950434e59513439c7f1120ea"
- }
- Frame {
- msec: 5040
- hash: "8d34131faa15bc126bd4d9ef3be39ef5"
- }
- Frame {
- msec: 5056
- hash: "85d57ef15791b56deb537795dd87911e"
- }
- Frame {
- msec: 5072
- hash: "71e932169915a6c8c2cef0b22febf316"
- }
- Frame {
- msec: 5088
- hash: "8b3452981963aeebadc9ac2013150263"
- }
- Frame {
- msec: 5104
- hash: "a3fb8abecfeb48ba1cd1fd8f40896fa0"
- }
- Frame {
- msec: 5120
- hash: "f53ab533f6a58ae45139f3da4bf8ab4e"
- }
- Frame {
- msec: 5136
- hash: "9ec7012404f3c1c7795810dcee5acc3b"
- }
- Frame {
- msec: 5152
- hash: "99ca43bab532dd5d7566e596c65053ce"
- }
- Frame {
- msec: 5168
- hash: "0af83ad2416821cc230cd2856d1a3e39"
- }
- Frame {
- msec: 5184
- hash: "86fa23ddf2005bbf35238ae04ae554ac"
- }
- Frame {
- msec: 5200
- hash: "bb52a748f1d85dde410cfa4f24e3ed20"
- }
- Frame {
- msec: 5216
- hash: "898b96bc5ee9a3ac61764e5cd9af8cfb"
- }
- Frame {
- msec: 5232
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5248
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5264
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5280
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5296
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5312
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5328
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5344
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5360
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5376
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5392
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5408
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5424
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5440
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5456
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5472
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5488
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5504
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5520
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5536
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5552
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5568
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5584
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5600
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5616
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5632
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5648
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5664
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5680
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5696
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5712
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5728
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5744
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5760
- image: "listview.5.png"
- }
- Frame {
- msec: 5776
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5792
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5808
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5824
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5840
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5856
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5872
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5888
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5904
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5920
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5936
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5952
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5968
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 111; y: 230
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 227
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5984
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 223
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6000
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 216
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 210
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6016
- hash: "0076b55d3da4ca365688b6a2c984103f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 112; y: 205
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6032
- hash: "db846ad8e3200ca1fce36a38dc7beab8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 112; y: 192
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6048
- hash: "3cb6b25725b4285f9c096d595224c5ca"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 180
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6064
- hash: "1832e12fdf3b464b02b296e727b33694"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 110; y: 173
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6080
- hash: "6d18d2b5f65cbba4915d0725d24b40f3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 109; y: 158
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 107; y: 140
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6096
- hash: "79bc7afc6b1aa5f8904b3e6d5d4a9389"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 124
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6112
- hash: "4436f2d15304c839aacec486c1fd6d96"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 111
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6128
- hash: "c3bffc7c95893cf9bbd8596208b7f657"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 105
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6144
- hash: "04231c2fdc02729aa34ed4e403dd373b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6160
- hash: "392d75c4b372825e78366eb63a618170"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 87
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 83
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6176
- hash: "7f91f7bdb0cb62d600ac4aa573681fe3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 79
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6192
- hash: "69207181a382650c5e33145555f0d9ba"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 76
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 72
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6208
- hash: "65a184b5c49b02e08114e437483f928d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 104; y: 68
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 105; y: 64
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6224
- hash: "c22da9ce54d04f51fb55da755753a509"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 105; y: 61
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6240
- hash: "59dbd5216847a62f60a1d0701a15bb62"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 106; y: 57
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 106; y: 53
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6256
- hash: "bbfc902db6e6ca253afb1c90306b2a63"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 106; y: 47
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 106; y: 47
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6272
- hash: "5c41f194afec5f7e3db9d98673d03d5c"
- }
- Frame {
- msec: 6288
- hash: "deb06d0f915d5f6ec39b1820d57b6af6"
- }
- Frame {
- msec: 6304
- hash: "deb06d0f915d5f6ec39b1820d57b6af6"
- }
- Frame {
- msec: 6320
- hash: "2a1a1f9239a6ccb308e51796f9b0bb89"
- }
- Frame {
- msec: 6336
- hash: "3c1b44201616b8271023bf05a3f3f0f7"
- }
- Frame {
- msec: 6352
- hash: "87afcef49db8b2b547e85e834f8ec304"
- }
- Frame {
- msec: 6368
- hash: "290081b4b1272ef09ec9964c128e61b5"
- }
- Frame {
- msec: 6384
- hash: "19bb3b23ee4b14a5f0a313106ef7c8c1"
- }
- Frame {
- msec: 6400
- hash: "65a184b5c49b02e08114e437483f928d"
- }
- Frame {
- msec: 6416
- hash: "832d2aefbcaf776f35039be527d367c5"
- }
- Frame {
- msec: 6432
- hash: "69207181a382650c5e33145555f0d9ba"
- }
- Frame {
- msec: 6448
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6464
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6480
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6496
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6512
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6528
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6544
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6560
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6576
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6592
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6608
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6624
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6640
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6656
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6672
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6688
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6704
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6720
- image: "listview.6.png"
- }
- Frame {
- msec: 6736
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6752
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6768
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6784
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6800
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6816
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6832
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6848
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6864
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6880
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6896
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6912
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6928
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6944
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6960
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6976
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6992
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7008
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7024
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7040
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7056
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7072
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7088
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7104
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7120
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7136
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7152
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7168
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7184
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7200
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7216
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7232
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7248
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7264
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7280
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 7296
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 519; y: 276
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7312
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 519; y: 275
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7328
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 519; y: 274
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7344
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 518; y: 273
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 518; y: 272
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7360
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 518; y: 271
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7376
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 518; y: 268
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7392
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 518; y: 266
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 518; y: 265
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7408
- hash: "9047f597b9e59ca652c172338bed6ef9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 262
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7424
- hash: "87476f78daecd6bb49e8d6e673d28100"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 260
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7440
- hash: "6bfd895c6b7d97e4102eb26608cdfeca"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 254
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7456
- hash: "e4c2b75beaee54a5781a5acbeb37ea64"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 249
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7472
- hash: "d5e816768e9c3db0631416bd86b1b461"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 243
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7488
- hash: "df6c7252ebb51e7447396b640e1c6ead"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 237
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7504
- hash: "5f4db5386dc76b9f2dac47618c733dee"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 231
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7520
- hash: "534d1d16d8321996969b54875ec5f1e0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 225
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7536
- hash: "5263016e53327df1972498b55a60c0ed"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 517; y: 219
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7552
- hash: "6787a5a16d2a61643bb1435f6488ada6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 518; y: 215
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7568
- hash: "1feabcd683590c3d28d899167e6278b3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 519; y: 208
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7584
- hash: "c0495d6083b2e4ddd2b1dca2f231529c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 520; y: 202
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7600
- hash: "cb302493a17c1806dfcdf002c44e7acd"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 196
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7616
- hash: "f3822b79b678532ce7f826952636be90"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 189
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7632
- hash: "6e30eed182c38be110ba9c7e95b223be"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 185
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7648
- hash: "9e3ad0331c0c041b9a5747a1d44a43fe"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 177
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7664
- hash: "791e6abf9dae670770c2429ee9f1ad71"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 169
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7680
- image: "listview.7.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 160
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7696
- hash: "d3ae366fb8212cb987e23150802c88e3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 156
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7712
- hash: "b87708e19d7e8b64fe1ab50ec1723975"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 147
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7728
- hash: "512678e45cdd8d48e10b08ee020afe8e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 144
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7744
- hash: "211aa70e813819d476996b3396e9e5a0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 137
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7760
- hash: "f16eaa360604be84ce61364ad9733b52"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 130
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7776
- hash: "d3af36dfb187d08abe1458f186a935a2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 124
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7792
- hash: "9d0a0ba1deb7c4a4a8838e5e6a27f2f6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 122
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7808
- hash: "69aac14f4c137e66724ca33f00a86676"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7824
- hash: "893d56e2a2ca257fae9f0c6c0629903d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 111
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7840
- hash: "b9f734e57a72e33973740a59776948d9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 106
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7856
- hash: "e4b0f3f6a6785d7a183e4a36c5803301"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7872
- hash: "99ee1e8803c05e546a721b0c9ee39499"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7888
- hash: "96e7da2f895500a786ed36cb295e9003"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7904
- hash: "cd369fc5dc31814208e56cf7cd0decea"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7920
- hash: "5fee72994b65a45b4900a3073f86a3e1"
- }
- Frame {
- msec: 7936
- hash: "9a2f8a65d842b8f92998e6411f7cd53c"
- }
- Frame {
- msec: 7952
- hash: "2848d69017ce71ae101ccdfa7c67f933"
- }
- Frame {
- msec: 7968
- hash: "6568aa88e81f988f65da435df7166167"
- }
- Frame {
- msec: 7984
- hash: "d5f15ee08a2d7667786757a378a7a7f4"
- }
- Frame {
- msec: 8000
- hash: "9b566bd02a561b32d1a4c1ec99c2e2c3"
- }
- Frame {
- msec: 8016
- hash: "580419e1c9e91046547d913f6b8790a4"
- }
- Frame {
- msec: 8032
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
- }
- Frame {
- msec: 8048
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
- }
- Frame {
- msec: 8064
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 521; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8080
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
- }
- Frame {
- msec: 8096
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
- }
- Frame {
- msec: 8112
- hash: "83b91a371d682a501bc3a3fceabe4f8c"
- }
- Frame {
- msec: 8128
- hash: "798b1dbfa0cce362213f426e2c60ac0e"
- }
- Frame {
- msec: 8144
- hash: "d71b6a693c430a618c23413cb65bb320"
- }
- Frame {
- msec: 8160
- hash: "2baae394390da39447a67151bc503d65"
- }
- Frame {
- msec: 8176
- hash: "06688b05c61a7b862d39534207a8adab"
- }
- Frame {
- msec: 8192
- hash: "a1d3042e16709817906dcdc673ee52c7"
- }
- Frame {
- msec: 8208
- hash: "236dd41feac1b1a8a4bd7911bb184da2"
- }
- Frame {
- msec: 8224
- hash: "f3ec821bba1d32e90bdab0e85c07d7d8"
- }
- Frame {
- msec: 8240
- hash: "e328c35adf7ffc3d7e3af97e798ec8a5"
- }
- Frame {
- msec: 8256
- hash: "651101db68fd3ed1dc5f441c126dc31b"
- }
- Frame {
- msec: 8272
- hash: "651101db68fd3ed1dc5f441c126dc31b"
- }
- Frame {
- msec: 8288
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8304
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8320
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8336
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8352
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8368
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8384
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8400
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8416
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8432
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8448
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8464
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8480
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8496
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8512
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8528
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8544
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8560
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8576
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8592
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8608
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8624
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8640
- image: "listview.8.png"
- }
- Frame {
- msec: 8656
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8672
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8688
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8704
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8720
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8736
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8752
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8768
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8784
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8800
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8816
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8832
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8848
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8864
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8880
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8896
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8912
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8928
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8944
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8960
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8976
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8992
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9008
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9024
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9040
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9056
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9072
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9088
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9104
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9120
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9136
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9152
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9168
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9184
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9200
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9216
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9232
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9248
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9264
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9280
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9296
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9312
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9328
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9344
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9360
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9376
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9392
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 9408
- hash: "1171be123a361d72859c25434573482c"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic1.qml b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic1.qml
deleted file mode 100644
index b291ea4766..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic1.qml
+++ /dev/null
@@ -1,159 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 32
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 48
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 64
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 80
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 96
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 112
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 128
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 144
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 160
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 176
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 192
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 208
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 224
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 240
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 256
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 272
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 288
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 304
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 320
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 336
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 352
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 368
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 384
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 400
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 416
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 432
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 448
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 464
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 480
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 496
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 512
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 528
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 544
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 560
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 576
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic2.qml b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic2.qml
deleted file mode 100644
index e32e9e691c..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic2.qml
+++ /dev/null
@@ -1,187 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 32
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 48
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 64
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 80
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 96
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 112
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 128
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 144
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 160
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 176
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 192
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 208
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 224
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 240
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 256
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 272
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 288
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 304
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 320
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 336
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 352
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 368
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 384
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 400
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 416
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 432
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 448
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 464
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 480
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 496
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 512
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 528
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 544
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 560
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 576
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 592
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 608
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 624
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 640
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 656
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 672
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 688
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic3.qml b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic3.qml
deleted file mode 100644
index ed0c53bc70..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic3.qml
+++ /dev/null
@@ -1,147 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 32
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 48
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 64
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 80
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 96
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 112
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 128
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 144
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 160
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 176
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 192
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 208
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 224
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 240
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 256
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 272
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 288
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 304
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 320
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 336
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 352
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 368
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 384
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 400
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 416
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 432
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 448
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 464
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 480
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 496
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 512
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 528
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic4.qml b/tests/auto/declarative/qmlvisual/ListView/data-X11/basic4.qml
deleted file mode 100644
index a70b741c03..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data-X11/basic4.qml
+++ /dev/null
@@ -1,171 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 32
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 48
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 64
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 80
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 96
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 112
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 128
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 144
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 160
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 176
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 192
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 208
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 224
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 240
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 256
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 272
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 288
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 304
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 320
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 336
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 352
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 368
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 384
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 400
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 416
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 432
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 448
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 464
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 480
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 496
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 512
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 528
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 544
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 560
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 576
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 592
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 608
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
- Frame {
- msec: 624
- hash: "c0dc2737283d8dfa62631e0cbb948b99"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/basic1.0.png b/tests/auto/declarative/qmlvisual/ListView/data/basic1.0.png
new file mode 100644
index 0000000000..049d9c8d6f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/basic1.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/basic1.qml b/tests/auto/declarative/qmlvisual/ListView/data/basic1.qml
index 7aadf36853..aad4858ca4 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/basic1.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/data/basic1.qml
@@ -6,154 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 32
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 48
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 64
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 80
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 96
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 112
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 128
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 144
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 160
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 176
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 192
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 208
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 224
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 240
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 256
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 272
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 288
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 304
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 320
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 336
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 352
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 368
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 384
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 400
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 416
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 432
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 448
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 464
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 480
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 496
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 512
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 528
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 544
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 560
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 576
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ image: "basic1.0.png"
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/basic2.0.png b/tests/auto/declarative/qmlvisual/ListView/data/basic2.0.png
new file mode 100644
index 0000000000..049d9c8d6f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/basic2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/basic2.qml b/tests/auto/declarative/qmlvisual/ListView/data/basic2.qml
index 5624d6b6af..373ad27cb3 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/basic2.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/data/basic2.qml
@@ -6,182 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 32
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 48
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 64
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 80
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 96
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 112
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 128
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 144
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 160
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 176
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 192
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 208
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 224
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 240
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 256
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 272
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 288
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 304
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 320
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 336
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 352
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 368
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 384
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 400
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 416
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 432
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 448
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 464
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 480
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 496
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 512
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 528
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 544
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 560
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 576
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 592
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 608
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 624
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 640
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 656
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 672
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 688
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ image: "basic2.0.png"
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/basic3.0.png b/tests/auto/declarative/qmlvisual/ListView/data/basic3.0.png
new file mode 100644
index 0000000000..049d9c8d6f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/basic3.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/basic3.qml b/tests/auto/declarative/qmlvisual/ListView/data/basic3.qml
index 16a8329822..f5dbf65a43 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/basic3.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/data/basic3.qml
@@ -6,142 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 32
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 48
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 64
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 80
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 96
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 112
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 128
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 144
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 160
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 176
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 192
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 208
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 224
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 240
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 256
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 272
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 288
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 304
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 320
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 336
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 352
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 368
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 384
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 400
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 416
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 432
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 448
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 464
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 480
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 496
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 512
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 528
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ image: "basic3.0.png"
}
}
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/basic4.0.png b/tests/auto/declarative/qmlvisual/ListView/data/basic4.0.png
new file mode 100644
index 0000000000..049d9c8d6f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/basic4.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/basic4.qml b/tests/auto/declarative/qmlvisual/ListView/data/basic4.qml
index 23cc2555b2..5e494d13a7 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/basic4.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/data/basic4.qml
@@ -6,166 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 32
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 48
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 64
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 80
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 96
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 112
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 128
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 144
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 160
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 176
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 192
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 208
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 224
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 240
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 256
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 272
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 288
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 304
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 320
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 336
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 352
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 368
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 384
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 400
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 416
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 432
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 448
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 464
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 480
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 496
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 512
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 528
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 544
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 560
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 576
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 592
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 608
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
- }
- Frame {
- msec: 624
- hash: "c0ec1bac5550efaa1f8ce7b46c2fed94"
+ image: "basic4.0.png"
}
}
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 0000000000..5c0b6a6a72
--- /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 0000000000..5c0b6a6a72
--- /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 0000000000..304aed8b34
--- /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 0000000000..4abc58e03a
--- /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 0000000000..5c0b6a6a72
--- /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 0000000000..8d421afa38
--- /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.6.png b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.6.png
new file mode 100644
index 0000000000..81ea1ff41a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/ListView/data/enforcerange.6.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 0000000000..de3f49c813
--- /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
+ image: "enforcerange.0.png"
+ }
+ 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
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 976
+ image: "enforcerange.1.png"
+ }
+ 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
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 1936
+ image: "enforcerange.2.png"
+ }
+ 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
+ hash: "a4ff6c6c43697808f9ad7387d152cef3"
+ }
+ Frame {
+ msec: 2896
+ image: "enforcerange.3.png"
+ }
+ 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
+ hash: "19c43fcf2875769c9a15f1ce317a0f1e"
+ }
+ Frame {
+ msec: 3856
+ image: "enforcerange.4.png"
+ }
+ 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
+ hash: "da5a30a6f9f40fbb5e2b150965be8ac0"
+ }
+ Frame {
+ msec: 4816
+ image: "enforcerange.5.png"
+ }
+ 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
+ hash: "b64810845a97bedf6fe11c043457c197"
+ }
+ Frame {
+ msec: 5776
+ image: "enforcerange.6.png"
+ }
+ 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 a1947ca447..75d2089cda 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 d27b7fa9f2..75d2089cda 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 fdab8c6a25..bc7dc2c489 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 dc321a85bf..def378f40d 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 fdab8c6a25..e23b9033c8 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 15b51cb500..def378f40d 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 a1947ca447..b81e713aec 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-MAC/itemlist.4.png b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.7.png
index afd0830a8d..75d2089cda 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data-MAC/itemlist.4.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.7.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 829fbb3e1b..6438e425b5 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/data/itemlist.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ image: "itemlist.0.png"
}
Frame {
msec: 32
@@ -242,11 +242,11 @@ VisualTest {
}
Frame {
msec: 960
- image: "itemlist.0.png"
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
}
Frame {
msec: 976
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ image: "itemlist.1.png"
}
Frame {
msec: 992
@@ -478,7 +478,7 @@ VisualTest {
}
Frame {
msec: 1712
- hash: "a68b1bc6c2963ee92c3a45f500667b3b"
+ hash: "b6e433a23282a50db2e165a2447ba3f6"
}
Mouse {
type: 5
@@ -498,7 +498,7 @@ VisualTest {
}
Frame {
msec: 1728
- hash: "7cda93e59466b3348e7ffe3895f89e86"
+ hash: "68d443f16c16821ffc9ca68b17c76034"
}
Mouse {
type: 5
@@ -510,7 +510,7 @@ VisualTest {
}
Frame {
msec: 1744
- hash: "06e0008c78e919f7270402938d9d764b"
+ hash: "04b9041c6f10969889d92e94785c7e88"
}
Mouse {
type: 5
@@ -530,7 +530,7 @@ VisualTest {
}
Frame {
msec: 1760
- hash: "9d8da9199efebb95f56e5d4ebc9a585e"
+ hash: "64b902fe7ab4d89ef0c7b760974e3488"
}
Mouse {
type: 5
@@ -550,7 +550,7 @@ VisualTest {
}
Frame {
msec: 1776
- hash: "54a60a4279911ba4a8a5741bcadfa783"
+ hash: "c2125b59e00f1a1c189c778c44fe39b0"
}
Mouse {
type: 5
@@ -570,171 +570,171 @@ VisualTest {
}
Frame {
msec: 1792
- hash: "a1a19370a1a8ed78e475f0d0eb12311c"
+ hash: "c78175071f2e95649d529b9e1cf045b2"
}
Frame {
msec: 1808
- hash: "196a3b127cf7065614c34856bf8d8bca"
+ hash: "ca8ef2c2a7b06e55899b1b63208e257d"
}
Frame {
msec: 1824
- hash: "5fbefbd7c7be4374382cc4c8b86ac78a"
+ hash: "b54957726e6257956b63e1d7ebbc96e4"
}
Frame {
msec: 1840
- hash: "d6a544c622e504c1b931e1a8a1310a6e"
+ hash: "48847db78ddde75bb96edf01c52c3400"
}
Frame {
msec: 1856
- hash: "20e76f0eb4ec5f691999faf8ad313370"
+ hash: "48dab5cd1feedf1b5dd67390d6f40fda"
}
Frame {
msec: 1872
- hash: "7f84a3545907c754ae8a6a30ef61c98d"
+ hash: "fe32013c245091b577d0e38eea05705d"
}
Frame {
msec: 1888
- hash: "b544901eae32903ad054e8cdfed715eb"
+ hash: "e4b6e31029c1ea26405537c6d2304b72"
}
Frame {
msec: 1904
- hash: "a010ed1e3312f4ca9f429b7e32cdcef9"
+ hash: "b5fc9ab0a96ef526e6eb1c022f26c6a7"
}
Frame {
msec: 1920
- image: "itemlist.1.png"
+ hash: "75ab445a739fb2415e20e8997b043656"
}
Frame {
msec: 1936
- hash: "93a731dc6f71b6ff5400bf74c87e6c46"
+ image: "itemlist.2.png"
}
Frame {
msec: 1952
- hash: "c73f63d1a024ba956e693487b3ccc761"
+ hash: "1bce9b85235e9a1a472c079dfec70ec5"
}
Frame {
msec: 1968
- hash: "539d3d00fce2d0128cd697d86d237fe7"
+ hash: "98e707a3e39a5f7bd4a101c2ed83535c"
}
Frame {
msec: 1984
- hash: "52752d7d6f2d0e085f7132313907b72b"
+ hash: "f73470027601a0c1a2382d5ded9e5fa6"
}
Frame {
msec: 2000
- hash: "f46dd5803a6075e979e0fc733d503bfb"
+ hash: "d917b18a47b4e90821cba8987492cd1f"
}
Frame {
msec: 2016
- hash: "b8734698a6bad00ecf019f85328c2c21"
+ hash: "fa526c5ef57eaa210fb4d03b72c35b69"
}
Frame {
msec: 2032
- hash: "1cfc499ca756023430cc5b2fa95a599d"
+ hash: "15cbc226b032d5a97199735ea7a1408b"
}
Frame {
msec: 2048
- hash: "63a816548837c19f8f0494c137fc0174"
+ hash: "6ffd2b79cf0e941a59e74bc6f9025bcb"
}
Frame {
msec: 2064
- hash: "1bce9b85235e9a1a472c079dfec70ec5"
+ hash: "c009924bfa30153f22ab168b539494e9"
}
Frame {
msec: 2080
- hash: "6677863e7f74c12648409883f73adbe2"
+ hash: "0525908c0302ada989e28990bac3f2ca"
}
Frame {
msec: 2096
- hash: "98e707a3e39a5f7bd4a101c2ed83535c"
+ hash: "75c1295ef99680784b2e11fb88fa1423"
}
Frame {
msec: 2112
- hash: "c1f6d8842d14a9394d4b7797314f50e8"
+ hash: "53064c1938f08a55603a99b0db225174"
}
Frame {
msec: 2128
- hash: "579758b477bcd2112b305a5aac7df338"
+ hash: "99d9e58697736198e0a00443d237e85b"
}
Frame {
msec: 2144
- hash: "4a7bb81090db246db53e2dbc56f710ea"
+ hash: "6c1e860aef983367365d53f5849ad441"
}
Frame {
msec: 2160
- hash: "074995cdd8a70817d1c8a7bb0ad4c542"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2176
- hash: "bd8d7bda4d2e9ad1fba2895d568f36cc"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2192
- hash: "40cce3d2d80ac470af44fc334cec1d5b"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2208
- hash: "15cbc226b032d5a97199735ea7a1408b"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2224
- hash: "12b296aea9b058a5402d0d0a620f8edc"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2240
- hash: "6ffd2b79cf0e941a59e74bc6f9025bcb"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2256
- hash: "589a58ef76ea709dc8d80390c9044f99"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2272
- hash: "c009924bfa30153f22ab168b539494e9"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2288
- hash: "4b83674a7c2daa68d735901ad40be2bd"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2304
- hash: "0525908c0302ada989e28990bac3f2ca"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2320
- hash: "89eb13976ba3ba4413cafeb0cc91c01b"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2336
- hash: "75c1295ef99680784b2e11fb88fa1423"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2352
- hash: "93d89165cf6a97c76ae6e7f75678a3cd"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2368
- hash: "53064c1938f08a55603a99b0db225174"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2384
- hash: "31db5684466c0c32128a9a8c7b1835e1"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2400
- hash: "99d9e58697736198e0a00443d237e85b"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2416
- hash: "6c1e860aef983367365d53f5849ad441"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2432
- hash: "6c1e860aef983367365d53f5849ad441"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2448
- hash: "6c1e860aef983367365d53f5849ad441"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2464
@@ -850,11 +850,11 @@ VisualTest {
}
Frame {
msec: 2880
- image: "itemlist.2.png"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 2896
- hash: "99f9988040a389576cb6420b5391f768"
+ image: "itemlist.3.png"
}
Mouse {
type: 5
@@ -894,7 +894,7 @@ VisualTest {
}
Frame {
msec: 2928
- hash: "5bb06b4e74532ba5bc8c7bc38bf77d7f"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Mouse {
type: 5
@@ -914,7 +914,7 @@ VisualTest {
}
Frame {
msec: 2944
- hash: "b10a6206830a876017799ef2fcf61b1a"
+ hash: "52af1b81022e8572b9123461d123197f"
}
Mouse {
type: 5
@@ -934,7 +934,7 @@ VisualTest {
}
Frame {
msec: 2960
- hash: "b2e24759ba10afd6cff90f4b1e04b496"
+ hash: "e1390ad02ae7a6e757df4a7af9032167"
}
Mouse {
type: 5
@@ -954,11 +954,11 @@ VisualTest {
}
Frame {
msec: 2976
- hash: "ccbcd6f45cb529c2db71504c0f69d73e"
+ hash: "bf57f309378c956dfd70aa79a7dd97c5"
}
Frame {
msec: 2992
- hash: "7b31c6d5931677f1aa1e8c7d48a4ff22"
+ hash: "408b59b96ecad0541ecbb97262c2567b"
}
Frame {
msec: 3008
@@ -966,175 +966,175 @@ VisualTest {
}
Frame {
msec: 3024
- hash: "dd639d1df3d4a9b8f06718def63d588f"
+ hash: "9aabf0500b1272375f5f6db1bd1d7b04"
}
Frame {
msec: 3040
- hash: "39d767b09a648ef6295cec2848f9226f"
+ hash: "2e92065ca9425d1645d69c1734804518"
}
Frame {
msec: 3056
- hash: "5dd46d5f386431e7b13348ac9a9630ed"
+ hash: "c73b2e430a0e96a660aa4447697e5adf"
}
Frame {
msec: 3072
- hash: "0354e5183b0e66e7ba146d292c559df4"
+ hash: "875560b509215a869d1cad8a05f38850"
}
Frame {
msec: 3088
- hash: "984aa6d7075e24de429e05b1b0eda94a"
+ hash: "fd8e51cca3432f6edcf949857737095f"
}
Frame {
msec: 3104
- hash: "1af58a2f44f1f613712d4df85e38356d"
+ hash: "aa5d4e65932b3ec2f5549079dfc7718d"
}
Frame {
msec: 3120
- hash: "6e4085e7f1fee724d78808753f04b471"
+ hash: "f811f3c6b022730dd68ebd7b1659ea40"
}
Frame {
msec: 3136
- hash: "73a019ef9057639d631cd99a431b3f3b"
+ hash: "e51a2e41972cfc3df46a7d4375024d80"
}
Frame {
msec: 3152
- hash: "c9414a2e655a90dfdcb6fb288b4ba0ca"
+ hash: "275f3594a0e2cc4b6717f9f336e7e1b6"
}
Frame {
msec: 3168
- hash: "3f4c24f7ac89da982af22032309637fb"
+ hash: "9229054bb70662b12a4f7e45ac5b7a90"
}
Frame {
msec: 3184
- hash: "a50e6ada8f73a257657f4348ceaffcfd"
+ hash: "89ff346eca0b71cad3b04a2cb8064fb0"
}
Frame {
msec: 3200
- hash: "a67bf40d09259bbd079c12ae4f49150f"
+ hash: "94e6ecb87a7efca6344d6d63a1e3829f"
}
Frame {
msec: 3216
- hash: "a2fc512b7c234a9d0b2c1a83387a8a46"
+ hash: "bc5eb6b0eeae316ddd0b308da2cc32e2"
}
Frame {
msec: 3232
- hash: "85090683ce9a3c9833b1cb0b3df076ee"
+ hash: "240081760f0cf2f02be4d6d2600d2bbc"
}
Frame {
msec: 3248
- hash: "275f3594a0e2cc4b6717f9f336e7e1b6"
+ hash: "69b335aeb81fc2ae6173f2ec5cdc4c55"
}
Frame {
msec: 3264
- hash: "2473eb11f7b65a784a2b166114026488"
+ hash: "10d481e57cc8cd694500d9ed6ae1f8bb"
}
Frame {
msec: 3280
- hash: "4865c30dc45fbf5ca82047b77eca0912"
+ hash: "6b21f71d0bedef4bbcb445a13f61e7a3"
}
Frame {
msec: 3296
- hash: "54de88bca395449fbaea2c090c7a5d91"
+ hash: "aa94ebdbb4b8423aff28c95daff0baf5"
}
Frame {
msec: 3312
- hash: "833f9295cf9a34934f001eac48551b59"
+ hash: "5f6708f615654c459f5749676fc09016"
}
Frame {
msec: 3328
- hash: "5bf565f57ababa7380faeee94add91ca"
+ hash: "8ef246d322446e7f0848b99495f89e2b"
}
Frame {
msec: 3344
- hash: "6325578867f1eb3b2d47ed40b017b571"
+ hash: "c3b219bdd7710427d134402a8d3e6429"
}
Frame {
msec: 3360
- hash: "046a6114176b3a3206b7a2acd6e30b41"
+ hash: "3b2e2d957585fb44a7165186a146892c"
}
Frame {
msec: 3376
- hash: "f8d4120a17f28c2d1d9c4be959098058"
+ hash: "124da0099a7dd6fbf6dfd0ecfb09638c"
}
Frame {
msec: 3392
- hash: "71356d2e48aad2900784ea6bc1a3d908"
+ hash: "e4dacafba5ab5f8db53f08cef458cf42"
}
Frame {
msec: 3408
- hash: "b84ad460fb81fdc4049abe8f3ff180bb"
+ hash: "b554512bac0766063870c5b3acb1d24f"
}
Frame {
msec: 3424
- hash: "0354239f5eaea23474d9f81385392a8a"
+ hash: "bb5ea2a238920a8486263bc7450edfb4"
}
Frame {
msec: 3440
- hash: "8ef0eef3393e07ae7605c865a95edc30"
+ hash: "bb5ea2a238920a8486263bc7450edfb4"
}
Frame {
msec: 3456
- hash: "5b8b384cc8e3faf4310015e19b3eb487"
+ hash: "bb5ea2a238920a8486263bc7450edfb4"
}
Frame {
msec: 3472
- hash: "77c18ac7dfff2a4e516915e3e3df0717"
+ hash: "b554512bac0766063870c5b3acb1d24f"
}
Frame {
msec: 3488
- hash: "c1d3264384c26345eb8100de829309ca"
+ hash: "b554512bac0766063870c5b3acb1d24f"
}
Frame {
msec: 3504
- hash: "6b21f71d0bedef4bbcb445a13f61e7a3"
+ hash: "e4dacafba5ab5f8db53f08cef458cf42"
}
Frame {
msec: 3520
- hash: "f619097356671f6eb54d3b1c481e709d"
+ hash: "de7f3c83f37cc89c87009626c72e7642"
}
Frame {
msec: 3536
- hash: "e56e3a90da446e0c482cb93717f6aacc"
+ hash: "124da0099a7dd6fbf6dfd0ecfb09638c"
}
Frame {
msec: 3552
- hash: "aa94ebdbb4b8423aff28c95daff0baf5"
+ hash: "40204fdb7a84b86f1380224908092354"
}
Frame {
msec: 3568
- hash: "e1744d9cacd1a2c96af4cfdd5c486995"
+ hash: "ff93c3290b7d9a9743cc11d41a112a0a"
}
Frame {
msec: 3584
- hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
+ hash: "c3b219bdd7710427d134402a8d3e6429"
}
Frame {
msec: 3600
- hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
+ hash: "56e2f6b2ac103caf7ada3b56c19622c2"
}
Frame {
msec: 3616
- hash: "7f19ea52e9e41a3b1bd90bb2a144d305"
+ hash: "8ef246d322446e7f0848b99495f89e2b"
}
Frame {
msec: 3632
- hash: "88143ff6c278a5433b314b551b7b8b1d"
+ hash: "8eb6d69d9833d0fbf87f951f489b71fe"
}
Frame {
msec: 3648
- hash: "88143ff6c278a5433b314b551b7b8b1d"
+ hash: "17deb6b26fc9d27d5194995c102da4ac"
}
Frame {
msec: 3664
- hash: "88143ff6c278a5433b314b551b7b8b1d"
+ hash: "5f6708f615654c459f5749676fc09016"
}
Frame {
msec: 3680
- hash: "88143ff6c278a5433b314b551b7b8b1d"
+ hash: "1734205ea5e7539b47d80c5a93ec74aa"
}
Frame {
msec: 3696
- hash: "88143ff6c278a5433b314b551b7b8b1d"
+ hash: "1734205ea5e7539b47d80c5a93ec74aa"
}
Frame {
msec: 3712
@@ -1170,11 +1170,11 @@ VisualTest {
}
Frame {
msec: 3840
- image: "itemlist.3.png"
+ hash: "88143ff6c278a5433b314b551b7b8b1d"
}
Frame {
msec: 3856
- hash: "88143ff6c278a5433b314b551b7b8b1d"
+ image: "itemlist.4.png"
}
Frame {
msec: 3872
@@ -1298,7 +1298,7 @@ VisualTest {
}
Frame {
msec: 4160
- hash: "c2c9c284b185a89faf4ddb5a7867f449"
+ hash: "f619097356671f6eb54d3b1c481e709d"
}
Mouse {
type: 5
@@ -1310,7 +1310,7 @@ VisualTest {
}
Frame {
msec: 4176
- hash: "de1c18aeda5d2fbd6dad4554c78617bd"
+ hash: "240081760f0cf2f02be4d6d2600d2bbc"
}
Mouse {
type: 5
@@ -1338,11 +1338,11 @@ VisualTest {
}
Frame {
msec: 4192
- hash: "a67bf40d09259bbd079c12ae4f49150f"
+ hash: "3b85c1739fdf3933d8cb0b2eaf22e6e3"
}
Frame {
msec: 4208
- hash: "94514668dafbe41c5890a578efd6dea4"
+ hash: "f811f3c6b022730dd68ebd7b1659ea40"
}
Frame {
msec: 4224
@@ -1350,139 +1350,139 @@ VisualTest {
}
Frame {
msec: 4240
- hash: "4b5368f0d86bffeb6bd31b58aec88650"
+ hash: "7b7f5daf5eaf047e69d04b5bcb73240c"
}
Frame {
msec: 4256
- hash: "b459bde7bb4ce51e6ecdab58f64fcbb9"
+ hash: "1af58a2f44f1f613712d4df85e38356d"
}
Frame {
msec: 4272
- hash: "7bac8cc3ec64c9ad1c0da282e38c953e"
+ hash: "1bbdda445cec7f95a189c15d7e3c77b8"
}
Frame {
msec: 4288
- hash: "a73a58c3d7a757547740a2a161f4c756"
+ hash: "91d8bcfebff29d2caf526b4012daaf46"
}
Frame {
msec: 4304
- hash: "b35edcb1fa3568a3e770ab2364b82e75"
+ hash: "71ec8c363ca6a6f7556afb70faccffe6"
}
Frame {
msec: 4320
- hash: "d6c863ef57c5e5cb04cdac72f920db0b"
+ hash: "303ebc28d09a49de52cb1adaa03872dd"
}
Frame {
msec: 4336
- hash: "0db5e4588ff851918b07796f0cf07382"
+ hash: "9402e86bf4ffa62c60b02531a3735275"
}
Frame {
msec: 4352
- hash: "71ec8c363ca6a6f7556afb70faccffe6"
+ hash: "5652de6fb2e107d41c0c5aeacf5a3055"
}
Frame {
msec: 4368
- hash: "18d026e9c965ada1db67c643576d2a80"
+ hash: "b6a2ade6565a86b1f8e369b02e0b93f9"
}
Frame {
msec: 4384
- hash: "69f71c22dff981a4da8ec1edcf90e79f"
+ hash: "30dd35e0b9ffa846f3cfc39edcbae511"
}
Frame {
msec: 4400
- hash: "680460f5e4d9e649931601041af046b2"
+ hash: "401975fb4c9a48953aec25adb593eec4"
}
Frame {
msec: 4416
- hash: "3028763fd15de2607b20b1331b904a4a"
+ hash: "71f9039c7aa9c8dc6d1de4561b1d5537"
}
Frame {
msec: 4432
- hash: "333eb60e217fe1ea7469eab52ac461f1"
+ hash: "e1390ad02ae7a6e757df4a7af9032167"
}
Frame {
msec: 4448
- hash: "ccbcd6f45cb529c2db71504c0f69d73e"
+ hash: "53a26f00bd49b8a9c065be99f9402d9c"
}
Frame {
msec: 4464
- hash: "3445df9b41a0a3e74738cbf328ab7d5c"
+ hash: "b6e515e9a27af23b895f5024a41ce7b3"
}
Frame {
msec: 4480
- hash: "bd2c072558479e9de7a97207e58cc57f"
+ hash: "85d143505d56f53c629358b37ad11581"
}
Frame {
msec: 4496
- hash: "3d34b0b24a30eda93377dcb4585afed8"
+ hash: "de5cbdd848a07b78f9c5eb510cca2d3e"
}
Frame {
msec: 4512
- hash: "d3045703863b0c5a327b9355c23d69f2"
+ hash: "0ad7411316031e22034c14e81ca3a806"
}
Frame {
msec: 4528
- hash: "2f2eb55f693415b840a317211b250e9f"
+ hash: "32bef6f5005ad94e29ff59165958fbdc"
}
Frame {
msec: 4544
- hash: "791b9ca7d47a3343474c30a35e336d4b"
+ hash: "87758dd311f91193bf1e3536c2f58525"
}
Frame {
msec: 4560
- hash: "73a0c02ebad6d3d5f939d9a00dd898bf"
+ hash: "d4c34ed49317c6692d71681fcd9842b6"
}
Frame {
msec: 4576
- hash: "d5c11135d586711b12f236430a2c2795"
+ hash: "abaa235bb946a8abaddd52981d632c2d"
}
Frame {
msec: 4592
- hash: "34f9ea214fe714ff4e994f715ea6ea39"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4608
- hash: "8e49afa00983b156b818533923fb6edd"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4624
- hash: "e7e7bef17cee92eca9191fd734d7a577"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4640
- hash: "e407f6ed7cb3c130365ab5515d6308c0"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4656
- hash: "5bb06b4e74532ba5bc8c7bc38bf77d7f"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4672
- hash: "0ad7411316031e22034c14e81ca3a806"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4688
- hash: "dd81d7a9b48c922b4c42cba1b5f2b9d7"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4704
- hash: "32bef6f5005ad94e29ff59165958fbdc"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4720
- hash: "87758dd311f91193bf1e3536c2f58525"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4736
- hash: "015be92a4ff4e735fcc3cbc7a8b9d763"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4752
- hash: "d4c34ed49317c6692d71681fcd9842b6"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4768
- hash: "abaa235bb946a8abaddd52981d632c2d"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4784
@@ -1490,11 +1490,11 @@ VisualTest {
}
Frame {
msec: 4800
- image: "itemlist.4.png"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Frame {
msec: 4816
- hash: "99f9988040a389576cb6420b5391f768"
+ image: "itemlist.5.png"
}
Frame {
msec: 4832
@@ -1650,7 +1650,7 @@ VisualTest {
}
Frame {
msec: 5280
- hash: "95b380c9ab6f8db7b822faf023d94546"
+ hash: "99f9988040a389576cb6420b5391f768"
}
Mouse {
type: 5
@@ -1670,7 +1670,7 @@ VisualTest {
}
Frame {
msec: 5296
- hash: "bb79e53556698c62ec30c75be9f6b7d7"
+ hash: "6ffd2b79cf0e941a59e74bc6f9025bcb"
}
Mouse {
type: 5
@@ -1698,179 +1698,179 @@ VisualTest {
}
Frame {
msec: 5312
- hash: "285cc2f0df1f59f25a0135560ab6edf2"
+ hash: "4aa05d978267325ae00cb45e310a2f01"
}
Frame {
msec: 5328
- hash: "93a731dc6f71b6ff5400bf74c87e6c46"
+ hash: "b5717b311259c77a0210e26ab99dd401"
}
Frame {
msec: 5344
- hash: "eb555741ab128a50de5a18a454f2e639"
+ hash: "9b3fde82278fa2f0caaf64cf23bb6530"
}
Frame {
msec: 5360
- hash: "5dbe6cf898c1e37fcaacecfcf57b2194"
+ hash: "e7795610115593e78bb32f7bcc0ae2eb"
}
Frame {
msec: 5376
- hash: "e7795610115593e78bb32f7bcc0ae2eb"
+ hash: "0dc7c4c161e0b3c3d176e5e6bc08a805"
}
Frame {
msec: 5392
- hash: "20e76f0eb4ec5f691999faf8ad313370"
+ hash: "7c2b0307c4040d8d9e88425b3bf3fb70"
}
Frame {
msec: 5408
- hash: "d6a544c622e504c1b931e1a8a1310a6e"
+ hash: "06ce7db518da042e04dd3f79b7220974"
}
Frame {
msec: 5424
- hash: "e7a3a21feed244c5b1c710a9254c15f0"
+ hash: "7aeec517e845c1c5012ed63be6bbd006"
}
Frame {
msec: 5440
- hash: "5a4b1aca24f121d1373646e9d80b86fd"
+ hash: "53e9d5a0098f2e91bbea45360b876607"
}
Frame {
msec: 5456
- hash: "331d2ec7021655c86aa64e47718a1088"
+ hash: "22a6c7f3dcb5a36592909783b2466c8d"
}
Frame {
msec: 5472
- hash: "92096bc872e7395aa5b75c44646a0b60"
+ hash: "9d8da9199efebb95f56e5d4ebc9a585e"
}
Frame {
msec: 5488
- hash: "0d9aa6cee4d21488cbb5153f8f3ed593"
+ hash: "c553400402f233a6246be4e544b433ae"
}
Frame {
msec: 5504
- hash: "c1b943d43701605563fffffcb75f9fa7"
+ hash: "c2e41a54c03340832db93f6f88393f00"
}
Frame {
msec: 5520
- hash: "1b680025d5ad1ddd8f8d5f570ba73e71"
+ hash: "3622a619a99c939e96636a86c4428ba3"
}
Frame {
msec: 5536
- hash: "5539a3b9f60ea747c10ed8328b467cbf"
+ hash: "e65d5e6c756e750e6d98096fe211465c"
}
Frame {
msec: 5552
- hash: "0a1317bcb606cd3488c5b14ee5d96585"
+ hash: "cabd6d30b1f4e42b38b73803aae6d5be"
}
Frame {
msec: 5568
- hash: "8844af68b11db7d92c69804c7371a746"
+ hash: "68d443f16c16821ffc9ca68b17c76034"
}
Frame {
msec: 5584
- hash: "28d7fd127739c6e3b8488651b725c802"
+ hash: "a68b1bc6c2963ee92c3a45f500667b3b"
}
Frame {
msec: 5600
- hash: "0cf1a7d958a96aa2768995dddc5ccc09"
+ hash: "805319ac7ca842feb3649e92f8b5b72f"
}
Frame {
msec: 5616
- hash: "64b902fe7ab4d89ef0c7b760974e3488"
+ hash: "fd8d3f5688b1806998c6087e18c6c730"
}
Frame {
msec: 5632
- hash: "aba11c597eba550fc1eaddbf554057f6"
+ hash: "b135c8c9975f4d45d2054cf31d0b1fe1"
}
Frame {
msec: 5648
- hash: "1bacaa3bb9dc3cac9ffc7491cb4dc1a5"
+ hash: "40382f644935dc4e99353fa29c3e0b21"
}
Frame {
msec: 5664
- hash: "0ba8b582234d9f0c198c0c9e18e1cb02"
+ hash: "aa32e4c20c6a43c4ef7991a9418e57fe"
}
Frame {
msec: 5680
- hash: "f66eaf2b5c3529987c0d9d005351ed73"
+ hash: "b8db9180b4ad15fdbd25a4e974512f92"
}
Frame {
msec: 5696
- hash: "75b0bb720fa4c77da3783b3ff31c2fae"
+ hash: "127871a98123b7bd44f4c38f27cbc836"
}
Frame {
msec: 5712
- hash: "345b235bb7f13409378e5c0c370f2a41"
+ hash: "35fe67a91e50f8ebc896451b39cb8f1c"
}
Frame {
msec: 5728
- hash: "83b7e902dce4e0fdc4ef5d629188c23c"
+ hash: "35fe67a91e50f8ebc896451b39cb8f1c"
}
Frame {
msec: 5744
- hash: "04b9041c6f10969889d92e94785c7e88"
+ hash: "0b7fc796f818bddcada99e9981f1cce0"
}
Frame {
msec: 5760
- image: "itemlist.5.png"
+ hash: "35fe67a91e50f8ebc896451b39cb8f1c"
}
Frame {
msec: 5776
- hash: "4f3a902addc34ecdaf390e2427cc52e7"
+ image: "itemlist.6.png"
}
Frame {
msec: 5792
- hash: "68d443f16c16821ffc9ca68b17c76034"
+ hash: "35fe67a91e50f8ebc896451b39cb8f1c"
}
Frame {
msec: 5808
- hash: "9d25adc77befa761ee376a9b43595b5e"
+ hash: "2311ce1a83a43619ab7ce537a2b948e1"
}
Frame {
msec: 5824
- hash: "a68b1bc6c2963ee92c3a45f500667b3b"
+ hash: "2311ce1a83a43619ab7ce537a2b948e1"
}
Frame {
msec: 5840
- hash: "d5268cd58c222451d48038e715e83802"
+ hash: "127871a98123b7bd44f4c38f27cbc836"
}
Frame {
msec: 5856
- hash: "f37d461541a8ec7a4161b18748de6aea"
+ hash: "b8db9180b4ad15fdbd25a4e974512f92"
}
Frame {
msec: 5872
- hash: "805319ac7ca842feb3649e92f8b5b72f"
+ hash: "65af7a4a4aea5a983ea3fb9324e74256"
}
Frame {
msec: 5888
- hash: "73124472a05080891d4948d8ca273f8c"
+ hash: "aa32e4c20c6a43c4ef7991a9418e57fe"
}
Frame {
msec: 5904
- hash: "b6e433a23282a50db2e165a2447ba3f6"
+ hash: "b3e92eb4cfe548b92ac526066dfc7d23"
}
Frame {
msec: 5920
- hash: "fd8d3f5688b1806998c6087e18c6c730"
+ hash: "39fcad34db24d591e24c8ae1c7094d5b"
}
Frame {
msec: 5936
- hash: "f132dd459950ef2d18aa93ca950d0692"
+ hash: "165b91b850bcb8dd1d9b1eaa6f81be57"
}
Frame {
msec: 5952
- hash: "ade5beb259b5277c333ca806fc9bdbec"
+ hash: "f34d2248999f5f51210064315d631f60"
}
Frame {
msec: 5968
- hash: "ade5beb259b5277c333ca806fc9bdbec"
+ hash: "f34d2248999f5f51210064315d631f60"
}
Frame {
msec: 5984
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ hash: "b135c8c9975f4d45d2054cf31d0b1fe1"
}
Frame {
msec: 6000
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ hash: "b135c8c9975f4d45d2054cf31d0b1fe1"
}
Frame {
msec: 6016
@@ -2050,11 +2050,11 @@ VisualTest {
}
Frame {
msec: 6720
- image: "itemlist.6.png"
+ hash: "bf47cc398a702dd17c8efebb3d2f8073"
}
Frame {
msec: 6736
- hash: "bf47cc398a702dd17c8efebb3d2f8073"
+ image: "itemlist.7.png"
}
Frame {
msec: 6752
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.0.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.0.png
index 581e8243df..71926d71d4 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 581e8243df..80f82e4178 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.10.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.10.png
deleted file mode 100644
index dcfca3f794..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.10.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.11.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.11.png
deleted file mode 100644
index 7cc40470bb..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.11.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.12.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.12.png
deleted file mode 100644
index a97f4ad519..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.12.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.13.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.13.png
deleted file mode 100644
index 7a8c6bd52c..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.13.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.14.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.14.png
deleted file mode 100644
index ae47356225..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.14.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.15.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.15.png
deleted file mode 100644
index b3a72609a2..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.15.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.16.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.16.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.16.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.17.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.17.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.17.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.18.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.18.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.18.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.19.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.19.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.19.png
+++ /dev/null
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 579c68c49a..61501bb17e 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 b3a72609a2..51c4eb137c 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 19758b0e38..81e00ed6bf 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 581e8243df..d1f06fa03e 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.6.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png
index 82cac48c87..9e6e29c62a 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.7.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.7.png
index 9277a823df..9e7bd6eb31 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.7.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.8.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.8.png
index 8c36da732c..9e7bd6eb31 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.8.png
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.9.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.9.png
deleted file mode 100644
index 581e8243df..0000000000
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.qml b/tests/auto/declarative/qmlvisual/ListView/data/listview.qml
index bf640297eb..b1ffe8f5a8 100644
--- a/tests/auto/declarative/qmlvisual/ListView/data/listview.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ image: "listview.0.png"
}
Frame {
msec: 32
@@ -108,571 +108,747 @@ VisualTest {
msec: 416
hash: "3b88645092be28037fca4a6034f5b2f7"
}
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
Frame {
msec: 432
hash: "3b88645092be28037fca4a6034f5b2f7"
}
Frame {
msec: 448
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "435ac0668ad4d0e196eb040d385053cb"
}
Frame {
msec: 464
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "e9532fe1acc1c27a2119e6dde3e01637"
}
Frame {
msec: 480
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9c757feaf5a8d1e88c659fca97e3b7b2"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
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
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 624
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9e5a57fabdc443e395cacbaf6e0c9bef"
}
Frame {
msec: 640
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "0e9c577fa86d9b3734da0d50040624e0"
}
Frame {
msec: 656
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "834cf83f0f8d613191cac775b5737664"
}
Frame {
msec: 672
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "495ea7650b2ae45f9afd7f9f6ecdd793"
}
Frame {
msec: 688
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "55c761ccee6543bb3b9564bb813df58e"
}
Frame {
msec: 704
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "e29e5f86cb3b1fb5ec77fde696024812"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 720
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "f24b7d5a8f5ab03460505d6203269d1b"
}
Frame {
msec: 736
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "893473965efe9e0540b197cbaa3f765d"
}
Frame {
msec: 752
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "a541b7be2f370f948048b2101b037ab7"
}
Frame {
msec: 768
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "a541b7be2f370f948048b2101b037ab7"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 784
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "da065f1e72883a45241630b96ee5b1f8"
}
Frame {
msec: 800
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "e97f78604c0c6d468c8dd225642e2ebd"
}
Frame {
msec: 816
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "7b9d4b14eedfa4ff10dd7e3747c4a7f5"
}
Frame {
msec: 832
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "6d55ba6287c720614854d36bb681a9f3"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 848
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "3e7a44811f59bfb81de2f4f884a7af17"
}
Frame {
msec: 864
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "101113a7723b9d09275f66152b82142f"
}
Frame {
msec: 880
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "0044e068522f912630868476f8bf49f8"
}
Frame {
msec: 896
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "92065f9f170ee09abf67f0d0c7a1b6ba"
}
Frame {
msec: 912
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "92065f9f170ee09abf67f0d0c7a1b6ba"
}
Frame {
msec: 928
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "92065f9f170ee09abf67f0d0c7a1b6ba"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 944
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "92065f9f170ee09abf67f0d0c7a1b6ba"
}
Frame {
msec: 960
- image: "listview.0.png"
+ hash: "d193987835dc12e4391e55ff5fee4ce1"
}
Frame {
msec: 976
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ image: "listview.1.png"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 992
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9b07b6861a97d0871ed89369ff7449da"
}
Frame {
msec: 1008
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "7d95daf35c1823ea7187162b62010c57"
}
Frame {
msec: 1024
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "cc1e70fd1235d50ca291580bef1d6fc4"
}
Frame {
msec: 1040
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "c8250f4cf69642e78523412b7b75501c"
}
Frame {
msec: 1056
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "c57e421c803e8bfa1a85409cbb858829"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1072
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "19b429a90d9877e62a7dee53ebf01fb2"
}
Frame {
msec: 1088
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "7c810f174bed3826016272515df2d525"
}
Frame {
msec: 1104
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9034cf480bda0d8b55aa6c43fc96b23d"
}
Frame {
msec: 1120
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "f62697a1f4e4df2869c14462a0d514fd"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1136
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "c878f53b338d1ce332973193b0fa4b86"
}
Frame {
msec: 1152
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "5d26f27061b319c391961dc30d985593"
}
Frame {
msec: 1168
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "e038ae877e8dddd3d99bf97475f59b3d"
}
Frame {
msec: 1184
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "f44adc5e46d320c62095e1285ca8848b"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1200
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "17f6b13e0556ac07dc527a9013a307a1"
}
Frame {
msec: 1216
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "70a1cc3b6dd3be4e30bb6763344fb980"
}
Frame {
msec: 1232
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "097c37d2243a27b8e800b5d4ec94b2e3"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1248
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "15839227c002b1c71eb516f6653a7531"
}
Frame {
msec: 1264
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "f4a8103ef9010c651368d325fe9eee98"
}
Frame {
msec: 1280
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "d158ec1c83719c58c1d0a2e4cc90998f"
}
Frame {
msec: 1296
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "6f66a44f5dc3fe150db2291b8cbc7327"
}
Frame {
msec: 1312
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "8a016eac5befb215a157f7fe5bc743de"
}
Frame {
msec: 1328
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "8a016eac5befb215a157f7fe5bc743de"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1344
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "807129a4c578b1a5f0d3d84686eb0553"
}
Frame {
msec: 1360
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "f9f2da990518048f0b050cc193567a20"
}
Frame {
msec: 1376
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "762de7b1f4e56df6d7a245a23446884b"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1392
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "84ba7354badc3dca92974933c3610010"
}
Frame {
msec: 1408
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "36c3018870d74cff638d00acd03a0cf0"
}
Frame {
msec: 1424
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "82b756a14eb0e802cd3e2d2d2a07f28e"
}
Frame {
msec: 1440
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "74af1c12613130dc53533fe1178d5534"
}
Frame {
msec: 1456
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "c32818b0ba24f11295580d1ccffffdc0"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1472
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "b858be109fac6852234bf1db161e515b"
}
Frame {
msec: 1488
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9b3f8cffd3e79241d8a3b1f7d80790db"
}
Frame {
msec: 1504
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "840dc72aabc4a9b28bae641354676324"
}
Frame {
msec: 1520
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "c60bfd5cc8b26a841035db29baba5dab"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1536
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "88d80dc8b0d968aa718ff464e507f53b"
}
Frame {
msec: 1552
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "f7ffc82d3448c415b4997401fb61b96b"
}
Frame {
msec: 1568
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "df8e9a09752fe2b2eff9184ba8e88ef1"
}
Frame {
msec: 1584
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1600
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1616
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1632
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1648
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1664
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1680
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1696
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1712
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1728
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1744
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1760
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1776
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1792
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1808
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1824
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1840
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1856
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1872
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1888
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "97330e949a609f5f33832dd17e0c3716"
}
Frame {
msec: 1904
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "15e45e1f64438d7c31e79a9602e1db7a"
}
Frame {
msec: 1920
- image: "listview.1.png"
+ hash: "02f34b6fde613c7c5928285bf81837d6"
}
Frame {
msec: 1936
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ image: "listview.2.png"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1952
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "33091359f9e6f21a14bf415d32d4d3b1"
}
Frame {
msec: 1968
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "0fdcffa304f3eadde5cd7866d0a74e72"
}
Frame {
msec: 1984
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "024539dbf8e66f1ba7d5d8c91bd278f0"
}
Frame {
msec: 2000
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "4900babcc0a7bbd622a72590dcb0eea4"
}
Frame {
msec: 2016
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "d6f68d576fe46bb832accf5e9e590f7e"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2032
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "5a54bcb9a59268d70a2bb99bd32395be"
}
Frame {
msec: 2048
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "72fbb18da8c5ef3e98390796dad31390"
}
Frame {
msec: 2064
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "ac073b398e3d50ef10c92d8e6b4b3fa0"
}
Frame {
msec: 2080
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "41e38d866d65bf1d42448b07a133cd93"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2096
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "c45310b94cd2ff276e97be1706e1d432"
}
Frame {
msec: 2112
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "aefc6994644d266d4be0310f01c28be7"
}
Frame {
msec: 2128
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "f07bcb1d8ad693e1ddd79bf651126554"
}
Frame {
msec: 2144
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "62ff227caab71d2d98daf0da302ec796"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2160
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "72350eeeaefd043354c82ca2039cff59"
}
Frame {
msec: 2176
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "d89f288f0b231b4ec4a634b3856ecf8e"
}
Frame {
msec: 2192
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "bc7d7e2253651cb3ea1cdebf9f188ae0"
}
Frame {
msec: 2208
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "7c89cdb693489708fe2db327ae66d083"
}
Frame {
msec: 2224
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "8ca778c1812ede19545c3c70020faa67"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2240
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "bd50cd99f177eb3f70b2ffad9f7a49e1"
}
Frame {
msec: 2256
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "b439c3576cad17689e7b6b134bb04e14"
}
Frame {
msec: 2272
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2288
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2304
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2320
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2336
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2352
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2368
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2384
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2400
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2416
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 488; y: 56
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2432
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Frame {
msec: 2448
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2464
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2480
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2496
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2512
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2528
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2544
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2560
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2576
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2592
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 553; y: 267
+ x: 489; y: 56
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2608
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 2624
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 2464
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 554; y: 267
+ x: 490; y: 59
modifiers: 0
sendToViewport: true
}
@@ -680,19 +856,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 555; y: 266
+ x: 491; y: 64
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2640
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 2480
+ hash: "9489c0e1e8cc5675bbc42b78e567eab6"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 556; y: 265
+ x: 494; y: 74
modifiers: 0
sendToViewport: true
}
@@ -700,63 +876,75 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 558; y: 260
+ x: 497; y: 90
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2656
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 2496
+ hash: "6502b3a17af7ebca92d4794f0c2a62ac"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 560; y: 256
+ x: 499; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 501; y: 126
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2672
- hash: "c315e184c4dcb11d7e9fd4509a8b6a1f"
+ msec: 2512
+ hash: "8a7ac12d59126b2784fd0af8d6b762a5"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 562; y: 250
+ x: 505; y: 170
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 2528
+ hash: "12fa9c4e2d6681f3a0643d8243d83e23"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 566; y: 234
+ x: 509; y: 214
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2688
- hash: "aeef1cacca9518408519b670443e396f"
+ msec: 2544
+ hash: "ccf18952f7c9686bd12fa196af9919e6"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 568; y: 216
+ x: 516; y: 289
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2704
- hash: "621626927f83bf7b36b78f5ca7ed4ed0"
+ msec: 2560
+ hash: "70d654eecaf2163971596a503d2925a0"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 572; y: 192
+ x: 518; y: 316
modifiers: 0
sendToViewport: true
}
@@ -764,399 +952,139 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 572; y: 192
+ x: 518; y: 316
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2720
- hash: "b2aca965b745e98365195c52b9dd9a2c"
- }
- Frame {
- msec: 2736
- hash: "b80cc493e604c42aca2367e26bc9e844"
- }
- Frame {
- msec: 2752
- hash: "39165ad87fc687e0f165f8a2675173b5"
- }
- Frame {
- msec: 2768
- hash: "edd1da7c34c3eb7f1f16b782dfa41a13"
- }
- Frame {
- msec: 2784
- hash: "d31a7915cdb2a7f392e6edc3047a6606"
- }
- Frame {
- msec: 2800
- hash: "3038dbb3fe3c255adcbecfc106bacb99"
- }
- Frame {
- msec: 2816
- hash: "454137c508d76f2c38b8007247420b81"
- }
- Frame {
- msec: 2832
- hash: "16eb385d3ce3b186745974500f855a97"
- }
- Frame {
- msec: 2848
- hash: "8871fded1fbbdcb0fdfdaa2e6eecc3d1"
- }
- Frame {
- msec: 2864
- hash: "f49955dab8341e7ca472c3f547cbeaab"
- }
- Frame {
- msec: 2880
- image: "listview.2.png"
- }
- Frame {
- msec: 2896
- hash: "c0ef41c682fa9802c9eb74fd249cfd40"
- }
- Frame {
- msec: 2912
- hash: "6174fea6ef04fbcefd32d6a0b35a3514"
- }
- Frame {
- msec: 2928
- hash: "7b2288a8be7b3c465e725aeb5788e91f"
- }
- Frame {
- msec: 2944
- hash: "b39d8cb650ee00c245b556235843490b"
- }
- Frame {
- msec: 2960
- hash: "9478ea0bf640924931d627cd8b607eba"
- }
- Frame {
- msec: 2976
- hash: "39743788f56c6f5c29fa9549e586d1ae"
- }
- Frame {
- msec: 2992
- hash: "ec8ab3547e10d18e9493b8fae5125591"
- }
- Frame {
- msec: 3008
- hash: "169b115d03db8c901db4f4c2909a18d3"
- }
- Frame {
- msec: 3024
- hash: "bf438b17a1e8df6d6bb05474cacd12a7"
- }
- Frame {
- msec: 3040
- hash: "2aad06334128659e143c4c6c8415a30b"
- }
- Frame {
- msec: 3056
- hash: "ea0e8d7387b9b54a47bb99c058093462"
- }
- Frame {
- msec: 3072
- hash: "e483e585399a47490599ca265cf73000"
- }
- Frame {
- msec: 3088
- hash: "43bed4aac1a2a9b66eafefc117424500"
- }
- Frame {
- msec: 3104
- hash: "ba5c36add368938f8134a0a88e599c00"
- }
- Frame {
- msec: 3120
- hash: "c905be5276a871bd1ac392580231c9e4"
- }
- Frame {
- msec: 3136
- hash: "0c96d9b0119513c1f327f9e6651e89cd"
- }
- Frame {
- msec: 3152
- hash: "c4ba0836dbb900600f8f4aed42eb1ea1"
- }
- Frame {
- msec: 3168
- hash: "253d014f89a616032664f29f268cfd85"
- }
- Frame {
- msec: 3184
- hash: "a5185192d7db7c4a4c8bec6cb5a2a73a"
- }
- Frame {
- msec: 3200
- hash: "d453cc5b89d3fa00586cc41d5a9a8092"
- }
- Frame {
- msec: 3216
- hash: "b3c39c0c06643612681b098101458d32"
- }
- Frame {
- msec: 3232
- hash: "09beec410a0ca7c47fe08991341aea0c"
- }
- Frame {
- msec: 3248
- hash: "c13c269b384029d04a05fd0170e5909e"
- }
- Frame {
- msec: 3264
- hash: "cafe360c512ab92804dc1fddae9b8fb6"
- }
- Frame {
- msec: 3280
- hash: "26dfe538a7edc8f43af1d78e678f3dfa"
- }
- Frame {
- msec: 3296
- hash: "11e03f6901a4bdbc1eabe72b1ddbee4b"
- }
- Frame {
- msec: 3312
- hash: "0ea8886b1256649665a1597f62cc633b"
- }
- Frame {
- msec: 3328
- hash: "013c34be077fb689333df9b04a931b3a"
- }
- Frame {
- msec: 3344
- hash: "d0e9f1d147e0767c12a89f33b5f2b5b3"
- }
- Frame {
- msec: 3360
- hash: "9888bf29cd868bad6b2593842413b283"
- }
- Frame {
- msec: 3376
- hash: "d8ec307a85cecaacaa908ceb34d5db5b"
- }
- Frame {
- msec: 3392
- hash: "4afe1df3e802b41d1b89b5fab4e35190"
- }
- Frame {
- msec: 3408
- hash: "e8f484ed8d2a6745ee87ac9544281d55"
- }
- Frame {
- msec: 3424
- hash: "48eaa0644a27cb3e53c75bd0ce08bf47"
- }
- Frame {
- msec: 3440
- hash: "f1523d82dfc5c136fbe8746449bb5013"
- }
- Frame {
- msec: 3456
- hash: "d664786f1a79f851e72aa48ee6736374"
- }
- Frame {
- msec: 3472
- hash: "e43bb6d0374c8bab67b5fafcaeb2a205"
- }
- Frame {
- msec: 3488
- hash: "77ef61827c993b16691a023e99cc7f7e"
- }
- Frame {
- msec: 3504
- hash: "6198e0d242db79e81fb81f621c78a3c9"
- }
- Frame {
- msec: 3520
- hash: "a66b4773ef05ca78aa12e2c8a151c53a"
+ msec: 2576
+ hash: "01ef888104f290f25612970a91e64620"
}
Frame {
- msec: 3536
- hash: "52fa0b693c3de208e5943521eef5587c"
+ msec: 2592
+ hash: "25b730c7c126875078c64cce118f6277"
}
Frame {
- msec: 3552
- hash: "0e237f706f9c2c4c616271f9b9d014e5"
+ msec: 2608
+ hash: "68f3366932fed9156bf68dce6660b2a8"
}
Frame {
- msec: 3568
- hash: "14edd1dc2371a9aadaa3c079d325fab6"
+ msec: 2624
+ hash: "9f4be0b58c46035a11c5b80ec60618d5"
}
Frame {
- msec: 3584
- hash: "1fe873b07ee24edaea224939e10830f1"
+ msec: 2640
+ hash: "6d38a4eaa2a41c57599cca381957ec4c"
}
Frame {
- msec: 3600
- hash: "30804b5eb2a6d99116475cbdc1a9c043"
+ msec: 2656
+ hash: "1061db26c9080067bf121eb1d164a3f3"
}
Frame {
- msec: 3616
- hash: "c892c17ec947a910b74f5b8704405e9f"
+ msec: 2672
+ hash: "c78d271711dc8f13fb48b41871249141"
}
Frame {
- msec: 3632
- hash: "696029b77512943001c9eba64191e633"
+ msec: 2688
+ hash: "c5825611f6c429fddd8c20495507ea5f"
}
Frame {
- msec: 3648
- hash: "4c26bb0ca28d74a2bb79d0bfc8127361"
+ msec: 2704
+ hash: "9888b608bcf80496a3fe8848be4e3629"
}
Frame {
- msec: 3664
- hash: "2d1539db88647d73b9c53cde7c424dd7"
+ msec: 2720
+ hash: "9995d6ba039045d94903d5095b018ca8"
}
Frame {
- msec: 3680
- hash: "fd20e4259b44357c93f22f35c698fe1b"
+ msec: 2736
+ hash: "f8ea705b4710b3ffb11c2fe08ccccda2"
}
Frame {
- msec: 3696
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2752
+ hash: "7354c2fcabdede9fb1ee823ce098da3b"
}
Frame {
- msec: 3712
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2768
+ hash: "0d6beff960fa26771f09748356accedb"
}
Frame {
- msec: 3728
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2784
+ hash: "0720a8a1ed85344a1de6682b3aefd502"
}
Frame {
- msec: 3744
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2800
+ hash: "0245488740e13dbfc836b587b2bdf917"
}
Frame {
- msec: 3760
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2816
+ hash: "25c4fcdd85017d18df7e83c15f1accbc"
}
Frame {
- msec: 3776
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2832
+ hash: "51192ae0eae814f3dead9d949e2e4676"
}
Frame {
- msec: 3792
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2848
+ hash: "ddbe6b273882c6018c01e0a4480b1adb"
}
Frame {
- msec: 3808
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2864
+ hash: "bb840a0677114b67d9b08589e8a8192b"
}
Frame {
- msec: 3824
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2880
+ hash: "5387de4152cac542735a4debf997b56f"
}
Frame {
- msec: 3840
+ msec: 2896
image: "listview.3.png"
}
Frame {
- msec: 3856
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3872
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3888
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3904
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3920
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3936
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3952
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3968
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 3984
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4000
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4016
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4032
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4048
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Frame {
- msec: 4064
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2912
+ hash: "f5c99d06e0b3055374ee4c6bf3e634f4"
}
Frame {
- msec: 4080
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2928
+ hash: "18fe01fadf4c5acbd369f4450db1efa6"
}
Frame {
- msec: 4096
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2944
+ hash: "bed738f1883a76c5169dd2726456b9ea"
}
Frame {
- msec: 4112
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2960
+ hash: "c80c45be3189269d8edc5be22db7227d"
}
Frame {
- msec: 4128
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2976
+ hash: "3dcb08dd8ac8f083ad6aacbafaae05f4"
}
Frame {
- msec: 4144
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 2992
+ hash: "38850ecc15cdcd55b758f94e8ac7fe55"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 521; y: 24
+ x: 517; y: 241
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4160
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 25
- modifiers: 0
- sendToViewport: true
+ msec: 3008
+ hash: "033c44c51b8ab8f1555e153e20a80699"
}
Frame {
- msec: 4176
- hash: "5d49efe1383065f0b88f1bfdbbe5e165"
+ msec: 3024
+ hash: "b6dc510369c679a028bb059e74796f6c"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 32
+ x: 518; y: 240
modifiers: 0
sendToViewport: true
}
@@ -1164,51 +1092,55 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 521; y: 37
+ x: 519; y: 239
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4192
- hash: "a5df688148c264de1d376c9b87ddfa6b"
+ msec: 3040
+ hash: "f3606887493ee9c0db86b1c6cc6fef6d"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 46
+ x: 524; y: 229
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4208
- hash: "a4e2c1878b0afce0ee1eebd63e9c951a"
+ msec: 3056
+ hash: "79975f978ebf4556381d08b500dcab72"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 66
+ x: 530; y: 204
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 3072
+ hash: "1345974969c1a56c4c14c74301985289"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 88
+ x: 532; y: 167
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4224
- hash: "2f9a79278d492790ef86a09c77e95ff4"
+ msec: 3088
+ hash: "fd623f2bf161f326da6dec8b5d8bf16f"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 531; y: 136
+ x: 530; y: 117
modifiers: 0
sendToViewport: true
}
@@ -1216,731 +1148,283 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 531; y: 136
+ x: 530; y: 117
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4240
- hash: "5b5ce7206b26528157c426f4e1e3e0a8"
- }
- Frame {
- msec: 4256
- hash: "65a1e5f81ab89b163aed46b984cca45e"
- }
- Frame {
- msec: 4272
- hash: "e28253ad5a2415251b68bcda1d7d4bd0"
- }
- Frame {
- msec: 4288
- hash: "71aae5abb4a9e9077053ea21dd3ec315"
- }
- Frame {
- msec: 4304
- hash: "33fcea38fc3b328b3294f9ac2a26aa1a"
- }
- Frame {
- msec: 4320
- hash: "6299eb1d87f371966307668b92de6a0b"
- }
- Frame {
- msec: 4336
- hash: "4f66d8c7cb6971d0fc24089d123c547b"
- }
- Frame {
- msec: 4352
- hash: "d9906d61b31fabf968290ebcd6688f34"
- }
- Frame {
- msec: 4368
- hash: "5a1945993ff8096ba6b933d45586044a"
- }
- Frame {
- msec: 4384
- hash: "331535e54da9bbdbc2fbf2b244ad0199"
- }
- Frame {
- msec: 4400
- hash: "4dc39de0c54f6e0b77f94f6ae6c345ec"
- }
- Frame {
- msec: 4416
- hash: "ec309a298ce246c13eb666488eb75016"
- }
- Frame {
- msec: 4432
- hash: "a133819f8adc6265eb0e438261c869e3"
- }
- Frame {
- msec: 4448
- hash: "da4d64fd6b3ae7d49ee5c5c8d0117a37"
- }
- Frame {
- msec: 4464
- hash: "620dd1c3fc41ce657eac9d1a5b765fd4"
- }
- Frame {
- msec: 4480
- hash: "ff1c370bd1bf75a98ae7125e7dd5a9db"
- }
- Frame {
- msec: 4496
- hash: "59c6e4297109b5cc7c197749867dddae"
- }
- Frame {
- msec: 4512
- hash: "91b1719e86529d0c35a53a2d0a095dd6"
- }
- Frame {
- msec: 4528
- hash: "2994663d35c9eb453a27c1a1fa9aeeb8"
- }
- Frame {
- msec: 4544
- hash: "ae4ec37b9f6a00b3c9139e5cfe13d32e"
- }
- Frame {
- msec: 4560
- hash: "a98340236d1b65f47e88684168c1429d"
- }
- Frame {
- msec: 4576
- hash: "34848b483ea6a2bd412e29d26beb3ab0"
- }
- Frame {
- msec: 4592
- hash: "dd9bae0e2fca84b265d8cb59686ff88d"
- }
- Frame {
- msec: 4608
- hash: "18b6ef6f5913b0612b76e7b2e25073dd"
- }
- Frame {
- msec: 4624
- hash: "9398aab9478279aed1bc40c9378f8da4"
- }
- Frame {
- msec: 4640
- hash: "a297a304c12102f23bd1e0f0207e0df9"
- }
- Frame {
- msec: 4656
- hash: "091db9138cd6ae801ad857105a83c8f9"
- }
- Frame {
- msec: 4672
- hash: "253938ca4a4f13433ddd502eb94cb7cd"
- }
- Frame {
- msec: 4688
- hash: "6002df1793d290e4e31ee0c91c37bbe6"
- }
- Frame {
- msec: 4704
- hash: "212476fa1c3a52fb8eba03ec3aecdcd8"
- }
- Frame {
- msec: 4720
- hash: "80d4d8434d4e96a2bc23f5ed060d6ddc"
- }
- Frame {
- msec: 4736
- hash: "2d4add725f31a04558635ce4b73a758a"
- }
- Frame {
- msec: 4752
- hash: "57c06022ec1e502c4f49f43063c433e7"
- }
- Frame {
- msec: 4768
- hash: "8393e97990993f9d5f68ea65f8e4a2db"
- }
- Frame {
- msec: 4784
- hash: "9a1fcd96dffaf5c79ecc7f9427e02499"
- }
- Frame {
- msec: 4800
- image: "listview.4.png"
- }
- Frame {
- msec: 4816
- hash: "5ae722cf541e3453e73bbee57dc379e9"
- }
- Frame {
- msec: 4832
- hash: "fc7326c2e2e56d9c3036e8dfc2ea77a8"
- }
- Frame {
- msec: 4848
- hash: "f22a2a68cea158f333b0457025d75490"
- }
- Frame {
- msec: 4864
- hash: "d684c8aa9b835779080f170cafead40f"
- }
- Frame {
- msec: 4880
- hash: "dd451e5e421f929d015981bc7aeb8c66"
- }
- Frame {
- msec: 4896
- hash: "d066f228295db7f46520495167d3e946"
- }
- Frame {
- msec: 4912
- hash: "ebf640a457e3498bade3220aafa70331"
- }
- Frame {
- msec: 4928
- hash: "190f5b1f3ce9d200790c34c50bcc62c5"
- }
- Frame {
- msec: 4944
- hash: "9d4ad865246eb008afa40740b5c9a208"
- }
- Frame {
- msec: 4960
- hash: "81c8b2c0b4f9e74f24d328a1d9b40a9f"
- }
- Frame {
- msec: 4976
- hash: "24acc300307e71bee79bce8de76f56cb"
- }
- Frame {
- msec: 4992
- hash: "1f9d31f94cfce6f868bfcc8a104d2465"
- }
- Frame {
- msec: 5008
- hash: "7a3cab008dcb7a893ae30797b33df6f2"
- }
- Frame {
- msec: 5024
- hash: "38d561a2950434e59513439c7f1120ea"
- }
- Frame {
- msec: 5040
- hash: "8d34131faa15bc126bd4d9ef3be39ef5"
- }
- Frame {
- msec: 5056
- hash: "85d57ef15791b56deb537795dd87911e"
- }
- Frame {
- msec: 5072
- hash: "71e932169915a6c8c2cef0b22febf316"
- }
- Frame {
- msec: 5088
- hash: "8b3452981963aeebadc9ac2013150263"
- }
- Frame {
- msec: 5104
- hash: "a3fb8abecfeb48ba1cd1fd8f40896fa0"
- }
- Frame {
- msec: 5120
- hash: "f53ab533f6a58ae45139f3da4bf8ab4e"
- }
- Frame {
- msec: 5136
- hash: "9ec7012404f3c1c7795810dcee5acc3b"
- }
- Frame {
- msec: 5152
- hash: "99ca43bab532dd5d7566e596c65053ce"
- }
- Frame {
- msec: 5168
- hash: "0af83ad2416821cc230cd2856d1a3e39"
- }
- Frame {
- msec: 5184
- hash: "86fa23ddf2005bbf35238ae04ae554ac"
- }
- Frame {
- msec: 5200
- hash: "bb52a748f1d85dde410cfa4f24e3ed20"
- }
- Frame {
- msec: 5216
- hash: "898b96bc5ee9a3ac61764e5cd9af8cfb"
- }
- Frame {
- msec: 5232
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5248
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5264
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5280
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5296
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5312
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5328
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Frame {
- msec: 5344
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3104
+ hash: "f1dfb47c5d4449e6cf7e2e6a2e86b1c5"
}
Frame {
- msec: 5360
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3120
+ hash: "26b31d08a1d50614771bec0458a2776b"
}
Frame {
- msec: 5376
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3136
+ hash: "dd017925e34f942c279ceb18b5e222da"
}
Frame {
- msec: 5392
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3152
+ hash: "be400b4ad1d9a1ccca56b8ff6b809272"
}
Frame {
- msec: 5408
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3168
+ hash: "4a4faa75155bb2c260f3a35675bd113e"
}
Frame {
- msec: 5424
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3184
+ hash: "3884c5d0d4c127876ba92a7b3a416339"
}
Frame {
- msec: 5440
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3200
+ hash: "b3d15196484410e24084b0f0d8fd683f"
}
Frame {
- msec: 5456
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3216
+ hash: "ed636ae433d185338ddbf7bffae731e1"
}
Frame {
- msec: 5472
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3232
+ hash: "0e1f352c163ad8fe852c2e4857881d2f"
}
Frame {
- msec: 5488
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3248
+ hash: "3c3b44481a6c2330a4a03076e35055f4"
}
Frame {
- msec: 5504
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3264
+ hash: "6ea3210a929774aea84a7beb4a784842"
}
Frame {
- msec: 5520
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3280
+ hash: "74dd747f9a64b19e5c5230c90ad3b642"
}
Frame {
- msec: 5536
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3296
+ hash: "c02be4ebefd19f4c5e864e8bbab7c13e"
}
Frame {
- msec: 5552
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3312
+ hash: "ce661af9085c833ec7d1fd66ebe67649"
}
Frame {
- msec: 5568
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3328
+ hash: "4bf921874cfdc1b7d14e3a110b9e70a1"
}
Frame {
- msec: 5584
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3344
+ hash: "f3e9cf8ac9e109e88d8c426fdcee28a9"
}
Frame {
- msec: 5600
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3360
+ hash: "aa718a37f7ccf655d176adb799b5ddfb"
}
Frame {
- msec: 5616
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3376
+ hash: "aa114a9676af508b4a106b21f7a2ed10"
}
Frame {
- msec: 5632
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3392
+ hash: "a5bbbaebb61b83384f5be82a9c3181ba"
}
Frame {
- msec: 5648
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3408
+ hash: "83deebf650b192de7c8a764d5379eeb4"
}
Frame {
- msec: 5664
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3424
+ hash: "5b433e1f5b97b39b6e86c837f0b91f2b"
}
Frame {
- msec: 5680
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3440
+ hash: "b5236be4e416f89a91eda7afbd75fc63"
}
Frame {
- msec: 5696
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3456
+ hash: "1713477f5484a1b35686f2f4bff27612"
}
Frame {
- msec: 5712
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3472
+ hash: "77f91f90744a23bbe172629f311d1a4e"
}
Frame {
- msec: 5728
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3488
+ hash: "3963753a90d6cbf74bc21c9d06f4227b"
}
Frame {
- msec: 5744
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3504
+ hash: "7f64804cd07a0ae63d0e3a1b9f8f8a84"
}
Frame {
- msec: 5760
- image: "listview.5.png"
+ msec: 3520
+ hash: "9ae6bc952da97239bfee88633637aeb7"
}
Frame {
- msec: 5776
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3536
+ hash: "ba34cd0d57d5d027ad6c2de102676399"
}
Frame {
- msec: 5792
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3552
+ hash: "c49632f9369aa901fcb702e76295c1e8"
}
Frame {
- msec: 5808
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3568
+ hash: "3adab59e06a635a033564dfc8edc4877"
}
Frame {
- msec: 5824
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3584
+ hash: "67643cbfb3c9864b7447a9a8e316b251"
}
Frame {
- msec: 5840
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3600
+ hash: "d04d288cbf89e1ad3bbf25ffebd7a382"
}
Frame {
- msec: 5856
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3616
+ hash: "e6c4d34b9b3de464ec0dcf8719b86313"
}
Frame {
- msec: 5872
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3632
+ hash: "f73462d0fe19cbbd771f9f78d7bc4384"
}
Frame {
- msec: 5888
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3648
+ hash: "6369f075a492240aee36eae8dcb2ace5"
}
Frame {
- msec: 5904
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3664
+ hash: "1e9424a3b93833f8ae855c5f7877679a"
}
Frame {
- msec: 5920
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3680
+ hash: "da274c1ae57d217ef4515326d32646b4"
}
Frame {
- msec: 5936
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3696
+ hash: "1cbe684ba95e6ef635873f746e942f3d"
}
Frame {
- msec: 5952
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3712
+ hash: "228e13c1d3dea6e666637de7cedd6dd4"
}
Frame {
- msec: 5968
- hash: "3b88645092be28037fca4a6034f5b2f7"
+ msec: 3728
+ hash: "a3f8fec49fb88652e9339b621ea8b972"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 111; y: 230
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 227
+ x: 487; y: 34
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 5984
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 223
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6000
- hash: "3b88645092be28037fca4a6034f5b2f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 216
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 210
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6016
- hash: "0076b55d3da4ca365688b6a2c984103f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 112; y: 205
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6032
- hash: "db846ad8e3200ca1fce36a38dc7beab8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 112; y: 192
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6048
- hash: "3cb6b25725b4285f9c096d595224c5ca"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 111; y: 180
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6064
- hash: "1832e12fdf3b464b02b296e727b33694"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 110; y: 173
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6080
- hash: "6d18d2b5f65cbba4915d0725d24b40f3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 109; y: 158
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 107; y: 140
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6096
- hash: "79bc7afc6b1aa5f8904b3e6d5d4a9389"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 124
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6112
- hash: "4436f2d15304c839aacec486c1fd6d96"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 111
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6128
- hash: "c3bffc7c95893cf9bbd8596208b7f657"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 105
- modifiers: 0
- sendToViewport: true
+ msec: 3744
+ hash: "7c3eb16bf4f66d2b9889c9d80aaae8b2"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 101; y: 100
+ x: 488; y: 40
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6144
- hash: "04231c2fdc02729aa34ed4e403dd373b"
+ msec: 3760
+ hash: "1825d33eb9ae94a63d334d93e07ce9af"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 101; y: 96
+ x: 489; y: 49
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6160
- hash: "392d75c4b372825e78366eb63a618170"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 87
- modifiers: 0
- sendToViewport: true
+ msec: 3776
+ hash: "306652a5a179cf23ee87c10571814f53"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 102; y: 83
+ x: 490; y: 55
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6176
- hash: "7f91f7bdb0cb62d600ac4aa573681fe3"
+ msec: 3792
+ hash: "3d3ba7cd968a1f91f7534cabd7cc034b"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 102; y: 79
+ x: 490; y: 60
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6192
- hash: "69207181a382650c5e33145555f0d9ba"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 76
- modifiers: 0
- sendToViewport: true
+ msec: 3808
+ hash: "862f70151938a5d27db37a9f5dd53faa"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 103; y: 72
+ x: 491; y: 64
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6208
- hash: "65a184b5c49b02e08114e437483f928d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 104; y: 68
- modifiers: 0
- sendToViewport: true
+ msec: 3824
+ hash: "92b9283fa8b5642ce9bd14d875a12b75"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 105; y: 64
+ x: 491; y: 72
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6224
- hash: "c22da9ce54d04f51fb55da755753a509"
+ msec: 3840
+ hash: "294e6961316b028201657ab6b244559f"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 105; y: 61
+ x: 493; y: 93
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6240
- hash: "59dbd5216847a62f60a1d0701a15bb62"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 106; y: 57
- modifiers: 0
- sendToViewport: true
+ msec: 3856
+ image: "listview.4.png"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 106; y: 53
+ x: 493; y: 123
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6256
- hash: "bbfc902db6e6ca253afb1c90306b2a63"
+ msec: 3872
+ hash: "6cdd764ee39789307e5e313bfbbb7765"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 106; y: 47
+ x: 494; y: 141
modifiers: 0
sendToViewport: true
}
@@ -1948,311 +1432,131 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 106; y: 47
+ x: 494; y: 141
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6272
- hash: "5c41f194afec5f7e3db9d98673d03d5c"
- }
- Frame {
- msec: 6288
- hash: "5c41f194afec5f7e3db9d98673d03d5c"
- }
- Frame {
- msec: 6304
- hash: "deb06d0f915d5f6ec39b1820d57b6af6"
- }
- Frame {
- msec: 6320
- hash: "deb06d0f915d5f6ec39b1820d57b6af6"
- }
- Frame {
- msec: 6336
- hash: "2a1a1f9239a6ccb308e51796f9b0bb89"
- }
- Frame {
- msec: 6352
- hash: "3c1b44201616b8271023bf05a3f3f0f7"
- }
- Frame {
- msec: 6368
- hash: "87afcef49db8b2b547e85e834f8ec304"
- }
- Frame {
- msec: 6384
- hash: "290081b4b1272ef09ec9964c128e61b5"
- }
- Frame {
- msec: 6400
- hash: "19bb3b23ee4b14a5f0a313106ef7c8c1"
- }
- Frame {
- msec: 6416
- hash: "65a184b5c49b02e08114e437483f928d"
- }
- Frame {
- msec: 6432
- hash: "832d2aefbcaf776f35039be527d367c5"
- }
- Frame {
- msec: 6448
- hash: "69207181a382650c5e33145555f0d9ba"
- }
- Frame {
- msec: 6464
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6480
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6496
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6512
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6528
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6544
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6560
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6576
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6592
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6608
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6624
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6640
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6656
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6672
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6688
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6704
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6720
- image: "listview.6.png"
- }
- Frame {
- msec: 6736
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6752
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6768
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6784
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6800
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6816
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6832
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6848
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6864
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6880
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6896
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6912
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6928
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6944
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6960
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6976
- hash: "89fe95733476bd000457e36ee4ecfc73"
- }
- Frame {
- msec: 6992
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 3888
+ hash: "a88656d49e4636b18c4f6f4a0ab943d6"
}
Frame {
- msec: 7008
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 3904
+ hash: "f1ec9a65d5f8d2020db1b70bcd419417"
}
Frame {
- msec: 7024
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 3920
+ hash: "ca7d3d7d26445d13acd7fe4a2c5d1d4d"
}
Frame {
- msec: 7040
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 3936
+ hash: "90016f51541a15ba4b6265f6843a2998"
}
Frame {
- msec: 7056
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 3952
+ hash: "bdb992552a5c5707ddb372631f72e6a3"
}
Frame {
- msec: 7072
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 3968
+ hash: "af69ed47f0f40648d55af10c87866805"
}
Frame {
- msec: 7088
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 3984
+ hash: "33e77562bdf839ca1e969b918d90a07b"
}
Frame {
- msec: 7104
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4000
+ hash: "2001b5ca444808a79c49adc9d03c960e"
}
Frame {
- msec: 7120
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4016
+ hash: "e4186283e5fe0c1efb29eca6f59e9079"
}
Frame {
- msec: 7136
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4032
+ hash: "dab82d0bbba66df3297712b42f74f25a"
}
Frame {
- msec: 7152
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4048
+ hash: "b180ad3acdfd736276ef4d1de040bb55"
}
Frame {
- msec: 7168
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4064
+ hash: "577445b0e4d6f8079830c2b87ce5829d"
}
Frame {
- msec: 7184
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4080
+ hash: "45fffe51376abef4cb28842b392ab0b7"
}
Frame {
- msec: 7200
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4096
+ hash: "fc14e3b2d16e1f078d223876ef71c81e"
}
Frame {
- msec: 7216
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4112
+ hash: "4ef2b65280a00a6a4e66185f41479aef"
}
Frame {
- msec: 7232
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4128
+ hash: "131181ce7ff2f4d4e69823fcb7a20755"
}
Frame {
- msec: 7248
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4144
+ hash: "8e6db058e96dad9c4963b881083ab9bf"
}
Frame {
- msec: 7264
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4160
+ hash: "e2d407b6dff40625790d4fd9e599b374"
}
Frame {
- msec: 7280
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4176
+ hash: "631fe708fdcb1e4f4ea89b10da5db623"
}
Frame {
- msec: 7296
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4192
+ hash: "e11831f37a3a1da78cbdc7604ddccd68"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 519; y: 276
+ x: 491; y: 193
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7312
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4208
+ hash: "c2dccc4e890b2302edd413dcdb87b50b"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 519; y: 275
+ x: 491; y: 189
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7328
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4224
+ hash: "b4f6a6650dd779c8ad8696c23f44411a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 519; y: 274
+ x: 493; y: 187
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7344
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4240
+ hash: "ad913e53e63c030ffdf4560766722760"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 518; y: 273
+ x: 494; y: 182
modifiers: 0
sendToViewport: true
}
@@ -2260,43 +1564,43 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 518; y: 272
+ x: 495; y: 180
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7360
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4256
+ hash: "ef31f8a4d5bde5a2e308d19ee6d5e759"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 518; y: 271
+ x: 496; y: 174
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7376
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4272
+ hash: "3ba07527f66e8bea5a8fb7647b0b4f3f"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 518; y: 268
+ x: 496; y: 168
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7392
- hash: "89fe95733476bd000457e36ee4ecfc73"
+ msec: 4288
+ hash: "70e5fe656f5fd843383964825690b678"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 518; y: 266
+ x: 497; y: 159
modifiers: 0
sendToViewport: true
}
@@ -2304,776 +1608,620 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 518; y: 265
+ x: 497; y: 156
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7408
- hash: "9047f597b9e59ca652c172338bed6ef9"
+ msec: 4304
+ hash: "b7d8738be4cd6caa63dbecdb0f810a2f"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 262
+ x: 497; y: 147
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7424
- hash: "87476f78daecd6bb49e8d6e673d28100"
+ msec: 4320
+ hash: "d6312191f9d7bbddc07f9253d8a93469"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 260
+ x: 497; y: 139
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7440
- hash: "6bfd895c6b7d97e4102eb26608cdfeca"
+ msec: 4336
+ hash: "b182da64886cf4f444296e5fde26701e"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 254
+ x: 497; y: 128
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7456
- hash: "e4c2b75beaee54a5781a5acbeb37ea64"
+ msec: 4352
+ hash: "ebefef14b6fb990e0c6900884528bbd3"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 249
+ x: 497; y: 120
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7472
- hash: "d5e816768e9c3db0631416bd86b1b461"
+ msec: 4368
+ hash: "9a3451ed091b1bb6b975a9c5506b1ea4"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 243
+ x: 497; y: 117
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7488
- hash: "22cb512b302afc6c3c9dec1d47b3bf03"
+ msec: 4384
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 237
+ x: 498; y: 114
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7504
- hash: "a7e458e007954bd908cf27a1841d36ea"
+ msec: 4400
+ hash: "eaaf9ea1d7fcf4a2a9dd58b1b5bb3cae"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 231
+ x: 498; y: 112
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7520
- hash: "0f9fa53b247f72e9a8ff6201b188b410"
+ msec: 4416
+ hash: "7ca8e3d76cf913d85f84f0b96acde829"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 225
+ x: 498; y: 110
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7536
- hash: "c986ea3853dd33f7f2b5629f67429423"
+ msec: 4432
+ hash: "7cfef56b24a552c6d4ecb3d0b88a1d08"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 517; y: 219
+ x: 498; y: 109
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 7552
- hash: "114ffaa5cf38e4884a1d477884541b44"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 518; y: 215
+ x: 498; y: 108
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7568
- hash: "7cdf1bb327484618909ded5411aca4ec"
+ msec: 4448
+ hash: "d032b257259810b4fe514c63ca5c9e4b"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 519; y: 208
+ x: 498; y: 106
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7584
- hash: "d4c005194ed510f5d54a811176943dc2"
+ msec: 4464
+ hash: "568f6a57e6f1644b0dc245d03a1d7b85"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 520; y: 202
+ x: 499; y: 105
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7600
- hash: "3103351bc83675c877fb6dcd1a6ddbbc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 196
- modifiers: 0
- sendToViewport: true
+ msec: 4480
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7616
- hash: "2c13ddda8d89501c9487b83f8b115570"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 189
- modifiers: 0
- sendToViewport: true
+ msec: 4496
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7632
- hash: "476834b6d88077f9983ed358c06bd0c3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 185
- modifiers: 0
- sendToViewport: true
+ msec: 4512
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7648
- hash: "cc2148c6a7ba0bbe6ceea848b7e48621"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 177
- modifiers: 0
- sendToViewport: true
+ msec: 4528
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7664
- hash: "5b8824848dd1de3632b26e04e95b5899"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 169
- modifiers: 0
- sendToViewport: true
+ msec: 4544
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7680
- image: "listview.7.png"
+ msec: 4560
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 160
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4576
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7696
- hash: "d0a4a8b631e3494043f261fb8da67938"
+ msec: 4592
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 156
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4608
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7712
- hash: "985111215c3959a45b293879af701318"
+ msec: 4624
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 147
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4640
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7728
- hash: "ed5917a3fe95777f2efdaa154af0c489"
+ msec: 4656
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 144
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4672
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7744
- hash: "6fa9de2983f0e30cb96c035c28757b93"
+ msec: 4688
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 137
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4704
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7760
- hash: "fd568c7d27618a71b0f0882ca57b685b"
+ msec: 4720
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 130
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4736
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7776
- hash: "f5b941f5741a9a78122605576809c395"
+ msec: 4752
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 124
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4768
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7792
- hash: "ffc96a85d7dbbed257b69a0c735e21b8"
+ msec: 4784
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 122
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4800
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7808
- hash: "cfb6335c5449554e631d6e3106ea8a00"
+ msec: 4816
+ image: "listview.5.png"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 521; y: 116
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4832
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Frame {
- msec: 7824
- hash: "ff9786e85ee8af6177ac8e5cc1307462"
+ msec: 4848
+ hash: "5cb4cf2c527d821db2a5072dd3702653"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 111
+ x: 499; y: 106
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 7840
- hash: "3140b49dfee8e690b5c778044385e107"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 106
+ x: 498; y: 107
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7856
- hash: "0d899af24685a9998a6b961023286fde"
+ msec: 4864
+ hash: "d48ecbd0661e08b2117fe2fd96ffeb2c"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 104
+ x: 497; y: 110
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7872
- hash: "99ee1e8803c05e546a721b0c9ee39499"
+ msec: 4880
+ hash: "7cfef56b24a552c6d4ecb3d0b88a1d08"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 101
+ x: 496; y: 113
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7888
- hash: "96e7da2f895500a786ed36cb295e9003"
+ msec: 4896
+ hash: "5b12e9d17d9d464b055601db9cf0da44"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 99
+ x: 495; y: 115
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7904
- hash: "cd369fc5dc31814208e56cf7cd0decea"
+ msec: 4912
+ hash: "25333e1f0cc9cfc664fd7369af544c06"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 521; y: 97
+ x: 494; y: 117
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7920
- hash: "5fee72994b65a45b4900a3073f86a3e1"
- }
- Frame {
- msec: 7936
- hash: "9a2f8a65d842b8f92998e6411f7cd53c"
+ msec: 4928
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 7952
- hash: "2848d69017ce71ae101ccdfa7c67f933"
+ msec: 4944
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 7968
- hash: "6568aa88e81f988f65da435df7166167"
+ msec: 4960
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 7984
- hash: "d5f15ee08a2d7667786757a378a7a7f4"
+ msec: 4976
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8000
- hash: "9b566bd02a561b32d1a4c1ec99c2e2c3"
+ msec: 4992
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8016
- hash: "580419e1c9e91046547d913f6b8790a4"
+ msec: 5008
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8032
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
+ msec: 5024
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8048
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
+ msec: 5040
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8064
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
+ msec: 5056
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Mouse {
type: 3
button: 1
buttons: 0
- x: 521; y: 97
+ x: 494; y: 117
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 8080
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
- }
- Frame {
- msec: 8096
- hash: "a5a3cd610ec0b35af1295ee6c41e09e3"
- }
- Frame {
- msec: 8112
- hash: "83b91a371d682a501bc3a3fceabe4f8c"
- }
- Frame {
- msec: 8128
- hash: "798b1dbfa0cce362213f426e2c60ac0e"
- }
- Frame {
- msec: 8144
- hash: "d71b6a693c430a618c23413cb65bb320"
- }
- Frame {
- msec: 8160
- hash: "2baae394390da39447a67151bc503d65"
- }
- Frame {
- msec: 8176
- hash: "06688b05c61a7b862d39534207a8adab"
- }
- Frame {
- msec: 8192
- hash: "a1d3042e16709817906dcdc673ee52c7"
- }
- Frame {
- msec: 8208
- hash: "236dd41feac1b1a8a4bd7911bb184da2"
- }
- Frame {
- msec: 8224
- hash: "f3ec821bba1d32e90bdab0e85c07d7d8"
- }
- Frame {
- msec: 8240
- hash: "e328c35adf7ffc3d7e3af97e798ec8a5"
- }
- Frame {
- msec: 8256
- hash: "651101db68fd3ed1dc5f441c126dc31b"
- }
- Frame {
- msec: 8272
- hash: "651101db68fd3ed1dc5f441c126dc31b"
- }
- Frame {
- msec: 8288
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8304
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8320
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8336
- hash: "1171be123a361d72859c25434573482c"
- }
- Frame {
- msec: 8352
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5072
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8368
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5088
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8384
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5104
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8400
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5120
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8416
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5136
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8432
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5152
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8448
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5168
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8464
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5184
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8480
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5200
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8496
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5216
+ hash: "04290d8d62436c8a812f886e0a56ec1b"
}
Frame {
- msec: 8512
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5232
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8528
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5248
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8544
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5264
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8560
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5280
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8576
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5296
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8592
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5312
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8608
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5328
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8624
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5344
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8640
- image: "listview.8.png"
+ msec: 5360
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8656
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5376
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8672
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5392
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8688
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5408
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8704
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5424
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8720
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5440
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8736
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5456
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8752
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5472
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8768
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5488
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8784
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5504
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8800
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5520
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8816
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5536
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8832
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5552
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8848
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5568
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8864
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5584
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8880
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5600
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8896
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5616
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8912
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5632
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8928
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5648
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8944
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5664
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8960
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5680
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8976
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5696
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 8992
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5712
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9008
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5728
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9024
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5744
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9040
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5760
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9056
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5776
+ image: "listview.6.png"
}
Frame {
- msec: 9072
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5792
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9088
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5808
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9104
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5824
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9120
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5840
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9136
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5856
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9152
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5872
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9168
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5888
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9184
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5904
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9200
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5920
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9216
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5936
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9232
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5952
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9248
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5968
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9264
- hash: "1171be123a361d72859c25434573482c"
+ msec: 5984
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9280
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6000
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9296
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6016
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9312
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6032
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9328
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6048
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9344
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6064
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9360
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6080
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9376
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6096
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9392
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6112
+ hash: "dbd87bf02d698b7f053d307ef0c98452"
}
Frame {
- msec: 9408
- hash: "1171be123a361d72859c25434573482c"
+ msec: 6128
+ 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 0000000000..a796be73ab
--- /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 341311df07..6171c75a6c 100644
--- a/tests/auto/declarative/qmlvisual/ListView/listview.qml
+++ b/tests/auto/declarative/qmlvisual/ListView/listview.qml
@@ -1,6 +1,8 @@
import QtQuick 1.0
Rectangle {
+ id: root
+ property int current: 0
width: 600; height: 300; color: "white"
ListModel {
@@ -49,14 +51,16 @@ Rectangle {
Component {
id: myHighlight
- Rectangle { color: "black" }
+ Rectangle { width: 200; height: 50; color: "black" }
}
ListView {
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 {
@@ -66,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/Package_Views/data/packageviews.0.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.0.png
index c59b816768..85f86916b8 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.0.png
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.1.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.1.png
index d4dbc7049a..3cbb470e0e 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.1.png
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.10.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.10.png
deleted file mode 100644
index ed9d3453cb..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.10.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.11.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.11.png
deleted file mode 100644
index ed9d3453cb..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.11.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.12.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.12.png
deleted file mode 100644
index 45ee400008..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.12.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.13.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.13.png
deleted file mode 100644
index c73e1586b7..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.13.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.14.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.14.png
deleted file mode 100644
index e2fff6d6e3..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.14.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.15.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.15.png
deleted file mode 100644
index d7a13df741..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.15.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.16.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.16.png
deleted file mode 100644
index beb309450b..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.16.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.17.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.17.png
deleted file mode 100644
index beb309450b..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.17.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.18.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.18.png
deleted file mode 100644
index beb309450b..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.18.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.19.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.19.png
deleted file mode 100644
index d3a2650dfb..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.19.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.2.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.2.png
index a09dd286c3..521e818775 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.2.png
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.20.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.20.png
deleted file mode 100644
index 600462a976..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.20.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.21.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.21.png
deleted file mode 100644
index 6defca0653..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.21.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.22.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.22.png
deleted file mode 100644
index 91967e128f..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.22.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.3.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.3.png
index d099a79317..f5e76401dc 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.3.png
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.4.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.4.png
index 385efc8454..7b0c620fdf 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.4.png
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.5.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.5.png
index 25a7c3c2ad..8c40a7a757 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.5.png
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.6.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.6.png
index 25a7c3c2ad..8dfcf7bad8 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.6.png
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.7.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.7.png
deleted file mode 100644
index 7a24f51fbd..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.8.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.8.png
deleted file mode 100644
index 7a24f51fbd..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.8.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.9.png b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.9.png
deleted file mode 100644
index 45ee400008..0000000000
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.qml b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.qml
index 08cb46bcc7..af9e005c2d 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.qml
+++ b/tests/auto/declarative/qmlvisual/Package_Views/data/packageviews.qml
@@ -6,1369 +6,1309 @@ VisualTest {
}
Frame {
msec: 16
- hash: "a327426c93b523526f993b5271ab4501"
+ image: "packageviews.0.png"
}
Frame {
msec: 32
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 48
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 64
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 80
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 96
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 112
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 128
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 144
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 160
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 176
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 192
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 208
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 224
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 240
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 256
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 272
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 288
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 304
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 320
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 336
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 352
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 368
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 384
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 400
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 416
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 432
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 448
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 464
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 480
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 496
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 512
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 528
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 544
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 560
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 576
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 592
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 608
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 624
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 640
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 656
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 672
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 688
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 704
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 720
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 736
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 752
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 768
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 784
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 26; y: 79
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 800
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 816
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 832
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 848
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 26; y: 79
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 864
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 880
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "ae75402b2fa678a20c32d743e2b297a0"
}
Frame {
msec: 896
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "76a9721ada8280925ff32e7207c01944"
}
Frame {
msec: 912
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "87fb13adce4e2af05a7ad2f8cd18bad9"
}
Frame {
msec: 928
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "cd7be3a5b9bae876998770dc52dbcd86"
}
Frame {
msec: 944
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "3ba0b907dad0bfa9b20337d41661030b"
}
Frame {
msec: 960
- image: "packageviews.0.png"
+ hash: "9748e4da669f474bf10abfe7a9c013fd"
}
Frame {
msec: 976
- hash: "a327426c93b523526f993b5271ab4501"
+ image: "packageviews.1.png"
}
Frame {
msec: 992
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "5af677254d12dc96b82cde90c5a65140"
}
Frame {
msec: 1008
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "72cb4e75acb87de293a3cb1872eb946b"
}
Frame {
msec: 1024
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "9b057090349c0c544036a33a60710920"
}
Frame {
msec: 1040
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "ae19cf81092e75979b6471c0b05541cf"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 48; y: 165
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1056
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "0f42c19fee319bc8c27a89e9692c5cd9"
}
Frame {
msec: 1072
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "865e19e35f361b08e6e844aa88d149eb"
}
Frame {
msec: 1088
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "d5fcf7bd78da8918a3512a76189c7202"
}
Frame {
msec: 1104
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "d2a6b42c2a3f7ca9eb35acc47f1faaf6"
}
Frame {
msec: 1120
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "1388e856eb04fc24091c94406f4b5118"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 48; y: 165
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1136
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "1388e856eb04fc24091c94406f4b5118"
}
Frame {
msec: 1152
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "d529b6dcf510392488b370f6cfb87b3c"
}
Frame {
msec: 1168
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "a50b1f2869c95f97a194a95581fa7be9"
}
Frame {
msec: 1184
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "4bbee959f95548c3e76fb60ad363c184"
}
Frame {
msec: 1200
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "5ec0185f4479377579822f92eb7f375a"
}
Frame {
msec: 1216
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "263d09b9447d942c6c048139164d4427"
}
Frame {
msec: 1232
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "291cc81fc3f82bca46db4e4403f39d49"
}
Frame {
msec: 1248
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "c212f98ededa9ce7fc0fec697116a8e2"
}
Frame {
msec: 1264
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "4309ef22d0c36d28a462ab2d4bf2cabd"
}
Frame {
msec: 1280
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "f899f861c569416708c6754d821239e9"
}
Frame {
msec: 1296
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "ed5ec237020ff06f258ce6e1b31e5eb8"
}
Frame {
msec: 1312
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "98f3fe1c211d4f7bdc47b4a485226f14"
}
Frame {
msec: 1328
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "40e376d37a85d225c46579b8f7c27159"
}
Frame {
msec: 1344
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "cc8a178bf0cfc285185d17b37722bf41"
}
Frame {
msec: 1360
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "b612439873d0eeb015d31cccd8e5a436"
}
Frame {
msec: 1376
- hash: "a327426c93b523526f993b5271ab4501"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 57; y: 164
- modifiers: 0
- sendToViewport: true
+ hash: "48c436165872098b474d0c691df11473"
}
Frame {
msec: 1392
- hash: "a327426c93b523526f993b5271ab4501"
+ hash: "48c436165872098b474d0c691df11473"
}
Mouse {
- type: 5
- button: 0
+ type: 2
+ button: 1
buttons: 1
- x: 57; y: 162
+ x: 44; y: 50
modifiers: 0
sendToViewport: true
}
Frame {
msec: 1408
- hash: "a327426c93b523526f993b5271ab4501"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 57; y: 159
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 57; y: 156
- modifiers: 0
- sendToViewport: true
+ hash: "48c436165872098b474d0c691df11473"
}
Frame {
msec: 1424
- hash: "a327426c93b523526f993b5271ab4501"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 56; y: 152
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 56; y: 147
- modifiers: 0
- sendToViewport: true
+ hash: "48c436165872098b474d0c691df11473"
}
Frame {
msec: 1440
- hash: "87b7cacfb2d9e8ad916e331b2cf1f13e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 55; y: 141
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 54; y: 133
- modifiers: 0
- sendToViewport: true
+ hash: "48c436165872098b474d0c691df11473"
}
Frame {
msec: 1456
- hash: "34290c1435c1a96d08152479d2d1334e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 54; y: 126
- modifiers: 0
- sendToViewport: true
+ hash: "48c436165872098b474d0c691df11473"
}
Mouse {
type: 3
button: 1
buttons: 0
- x: 54; y: 126
+ x: 44; y: 50
modifiers: 0
sendToViewport: true
}
Frame {
msec: 1472
- hash: "ef5fb09ec8fb4b0d97c864618d6f6231"
+ hash: "48c436165872098b474d0c691df11473"
}
Frame {
msec: 1488
- hash: "d5b4c2e1d4b0bc877c99739a67b4a4fb"
+ hash: "33cb50c11326c0589c7cc43ba6193e03"
}
Frame {
msec: 1504
- hash: "a3623a3f253590d51ee03b6849e88edb"
+ hash: "3f7e7534ccd7105762c78afab5ab997d"
}
Frame {
msec: 1520
- hash: "4c1115f1041629b7c37cf4ae001fd7d3"
+ hash: "53b23d3eb2aaa1b21e4abaf9c0bfc7f2"
}
Frame {
msec: 1536
- hash: "845bb3d1f52bee4a469fb12d6875a323"
+ hash: "609b37b12154291a28961210e81049fb"
}
Frame {
msec: 1552
- hash: "eb08b5a671149005dbafc8507bb78b18"
+ hash: "33cc6e17d087c251381ecf1b4cb9887c"
}
Frame {
msec: 1568
- hash: "16744a5b90b29954faf0710010ac6369"
+ hash: "dcb3e716035ca3f43895fda99c27e0d8"
}
Frame {
msec: 1584
- hash: "322bbe367fbbf0bf07f9153da652a5fc"
+ hash: "56bb753199873fac4ed9f30682bd1a3c"
}
Frame {
msec: 1600
- hash: "257769f7c3e24bb2d0cd674dfbe42913"
+ hash: "8b744c5cbf6154b73bd6c4fe6b087f0a"
}
Frame {
msec: 1616
- hash: "8e299cbcaeae4d53d0fc05e03d36e0d9"
+ hash: "f2d5996d7fd5391a4d96493e9ef6a637"
}
Frame {
msec: 1632
- hash: "f3fb7f30336045abb4557247aab5bde1"
+ hash: "4407a05b64c68d43b29124df1f0d8f44"
}
Frame {
msec: 1648
- hash: "468400fb4e9bfa454ea00f19aa5d77b5"
+ hash: "b71e43a8f7aa7a58cea80629b782a972"
}
Frame {
msec: 1664
- hash: "429cc820ada7a515b2cb71f133320949"
+ hash: "cca961a04dfdf9da8282219f2022fd2e"
}
Frame {
msec: 1680
- hash: "721ec7594d8f815e5648eb8d570d1179"
+ hash: "f3349a7ae7d7a97a6665476244d46dd6"
}
Frame {
msec: 1696
- hash: "9bc4105a0456c36738c435323e690db1"
+ hash: "78fc6123a10c027faa08dc2ff8318acc"
}
Frame {
msec: 1712
- hash: "e54a84718dbdc45dd814089051772585"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1728
- hash: "2c969450ede6b6ea7e0e68ee54d02aaa"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1744
- hash: "c2015dd1d4bd223a7fe1df03027af2f3"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1760
- hash: "74108fedfb0967adea181893834bcd9b"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1776
- hash: "b04a22f1cfde6ede57117992cd97dc1c"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1792
- hash: "271d71cb03dd38100812466a973b79ef"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1808
- hash: "130709eecd8eca395085020a83e7553a"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1824
- hash: "a0e5e187ed5245fd766803d266195e6b"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1840
- hash: "d29c145f3ba39a7c2c6ac54b27f9cea1"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1856
- hash: "6e41349b4adb6e37a2f9f2482c0aa5b1"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1872
- hash: "c02c52d3c87c6befb65f3bf392981cd5"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1888
- hash: "ec48d113c8468bd1e1b465e248eecaee"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1904
- hash: "a2c9b917d1f0cff0e088d3b624d9eeb8"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1920
- image: "packageviews.1.png"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1936
- hash: "c4d4f8a351316b4a33f42f5fb030f304"
+ image: "packageviews.2.png"
}
Frame {
msec: 1952
- hash: "1baee6be1da687309d84a992e430c915"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1968
- hash: "4245f02817f7a674c34c581cbd9e1181"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 1984
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 181; y: 76
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2000
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 2016
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
}
Frame {
msec: 2032
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "6056cb02b921b56c63696d7fe9fe90fa"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 181; y: 76
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2048
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "9f94c38547da1855e4bd3ae498aed705"
}
Frame {
msec: 2064
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "783f73da3736a2c554c8d749ce0522c0"
}
Frame {
msec: 2080
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "9a0e1c2bed75874381e4b1ce275d0f68"
}
Frame {
msec: 2096
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "e2ce85192977e6422c89190b3cea4518"
}
Frame {
msec: 2112
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "ba9c80ff0ed723bca702cb6b4c6dfb76"
}
Frame {
msec: 2128
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "7e194db1b86bc7346248d2acf34af286"
}
Frame {
msec: 2144
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "cdd013bb8ee5880b16449efc99dd3ae5"
}
Frame {
msec: 2160
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "3ef7d0fb43c2a1c1398f1152573974e0"
}
Frame {
msec: 2176
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "176d1a86257cc85315dac4ecfe33f543"
}
Frame {
msec: 2192
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "6def1267e573217a19e7b8e2cf6d7b6c"
}
Frame {
msec: 2208
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "f679db34d99e24cda2e41c2afeaf551e"
}
Frame {
msec: 2224
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "54a27193c5e59cd7220b65d8fbbd9061"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 112; y: 79
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2240
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "171db3d0bf50062a0d7edd8e4c174024"
}
Frame {
msec: 2256
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "9a7d293dc455e1ef0d18f44c3db7eed7"
}
Frame {
msec: 2272
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "83bef2586d5abeb0ac8765d62135d308"
}
Frame {
msec: 2288
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "56fed2e01cc8a6b9ccbf15731d4e533b"
+ }
+ Frame {
+ msec: 2304
+ hash: "10174f2574c51155b8ee77ae545ac76d"
}
Mouse {
- type: 2
+ type: 3
button: 1
- buttons: 1
- x: 70; y: 89
+ buttons: 0
+ x: 112; y: 79
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2304
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
- }
- Frame {
msec: 2320
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "107928ffebd936080325a1f4e39a0ac0"
}
Frame {
msec: 2336
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "107928ffebd936080325a1f4e39a0ac0"
}
Frame {
msec: 2352
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 70; y: 89
- modifiers: 0
- sendToViewport: true
+ hash: "d46e040f85295e66d8b22185be553d3e"
}
Frame {
msec: 2368
- hash: "2fa6bb20f29467713c94886c6fffe5e3"
+ hash: "3368a34c316486a779d62d143588b425"
}
Frame {
msec: 2384
- hash: "3b9a75225adddb01e92286463e15bf98"
+ hash: "8f4cd4223c05e1b06a688c5eabc2a854"
}
Frame {
msec: 2400
- hash: "32f99602756898b4ec607d4124b5120f"
+ hash: "b576bf54b4bae38e8af6d922b3c73463"
}
Frame {
msec: 2416
- hash: "60007f14752d2d87ba6e335ad596f1ad"
+ hash: "a3a238f5bf182ec6afc398569fd51ac7"
}
Frame {
msec: 2432
- hash: "dcfad2407f53f83964fa7be762a137bd"
+ hash: "a31329ba054a6fe144c030cffb5bd401"
}
Frame {
msec: 2448
- hash: "fcc1a30a33bec046868734014132eb70"
+ hash: "0a4b96a93e62359b6003daa703af1a5f"
}
Frame {
msec: 2464
- hash: "f60592829a2765b3cd3a0cecb9c45426"
+ hash: "a16f126d874d957b879f45d36e88df34"
}
Frame {
msec: 2480
- hash: "a0e26063acd1b53b5eeeb31187f38336"
+ hash: "89735c5b14f075b8f65533d16b3f714a"
}
Frame {
msec: 2496
- hash: "d7f3e776038bd479db292bcba3a65fc7"
+ hash: "5d67dac0c4d2cf60e4cb717f4e4bc25f"
}
Frame {
msec: 2512
- hash: "4af31954235ab8a7cf8462eaa64d7dda"
+ hash: "dbfcc86e621a140466dd2a9215087e81"
}
Frame {
msec: 2528
- hash: "aff3f287c07f546e0d3e9e68731d82fe"
+ hash: "9f8dfa788048466dc07463e83d0377ff"
}
Frame {
msec: 2544
- hash: "75fbc4e26466e8a1f66503addfcbb525"
+ hash: "021e1edec94a1909790a4acdbbc71fd8"
}
Frame {
msec: 2560
- hash: "cb4c91f725ec46dd066475efc2bc2d65"
+ hash: "f16be9ff4aba07708d469d6cfb80f1c2"
}
Frame {
msec: 2576
- hash: "106434203ccc2fd8246c56520095a473"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2592
- hash: "129ced0e7fc406e81b1ced72397adc5c"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2608
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2624
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2640
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2656
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2672
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2688
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2704
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2720
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2736
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 116; y: 165
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2752
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2768
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2784
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
}
Frame {
msec: 2800
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1ab35df24a27349264ec282eb1f53018"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 116; y: 165
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2816
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "a0aa5583886efc9bb0571bbb02fdb051"
}
Frame {
msec: 2832
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "a0aa5583886efc9bb0571bbb02fdb051"
}
Frame {
msec: 2848
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "edec25fdce2e05c0456434be4b8fad84"
}
Frame {
msec: 2864
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "0c2061fc908c98980404b9e08acdc2f2"
}
Frame {
msec: 2880
- image: "packageviews.2.png"
+ hash: "7bb02b032c1dcb4a7b3e6604ea5a8a8d"
}
Frame {
msec: 2896
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ image: "packageviews.3.png"
}
Frame {
msec: 2912
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "3a80012f6ca448fc30db70e9bcb23ddc"
}
Frame {
msec: 2928
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "22a68838e9f6039e782facce7cfe0c9b"
}
Frame {
msec: 2944
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "243fcc73e46db96ab6a91748adeff1a9"
}
Frame {
msec: 2960
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "433bf03a821da5641909785b4c22cb55"
}
Frame {
msec: 2976
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "66be8aa73b1e7173d899df3c0b9072a6"
}
Frame {
msec: 2992
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "d7e563c1a1db45865794351daea5eb08"
}
Frame {
msec: 3008
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "cc4345c2d4d0d7748c352a22f63030cb"
}
Frame {
msec: 3024
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "382172adf3a339cac16a3e185ef4bb05"
}
Frame {
msec: 3040
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "6019a3eac1825acdeac24d39c898d506"
}
Frame {
msec: 3056
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "ac4b9427592a6fe7585625de8d1bff96"
}
Frame {
msec: 3072
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3088
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3104
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3120
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3136
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3152
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3168
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 80; y: 189
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3184
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3200
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3216
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3232
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 80; y: 189
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3248
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7cf95f1bc67a90c0df788787589a75a9"
}
Frame {
msec: 3264
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "a623e09cddb4304db658e30aef433dd8"
}
Frame {
msec: 3280
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "4dce74fbb6649138a6ea6c288818fda5"
}
Frame {
msec: 3296
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "2356d6d1f8481cf60542126f197ee0b1"
}
Frame {
msec: 3312
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "7553601e70a7ccc3c60306fcf4999bed"
}
Frame {
msec: 3328
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "bc86afd210d18dc68b433d70705b6603"
}
Frame {
msec: 3344
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "8538d87120dd14958f92b81ceff304a3"
}
Frame {
msec: 3360
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "2a8d299ff16589069d493bbab2ceda53"
}
Frame {
msec: 3376
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "9f92b838c36e46d61a78f9013f04b580"
}
Frame {
msec: 3392
- hash: "49903693b112d5f35c4e877bef6bbdb0"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 49; y: 162
- modifiers: 0
- sendToViewport: true
+ hash: "7e6710b5491d5b9ad9a84691eadaa66c"
}
Frame {
msec: 3408
- hash: "49903693b112d5f35c4e877bef6bbdb0"
+ hash: "1b165e39ff01747d5e9ad0d8769c8ee9"
}
Frame {
msec: 3424
- hash: "49903693b112d5f35c4e877bef6bbdb0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 49; y: 161
- modifiers: 0
- sendToViewport: true
+ hash: "f78ad1eeb030eb58f8140da041acf4cd"
}
Frame {
msec: 3440
- hash: "49903693b112d5f35c4e877bef6bbdb0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 49; y: 159
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 48; y: 157
- modifiers: 0
- sendToViewport: true
+ hash: "f009dcb6b085ae38a45206f35ab37754"
}
Frame {
msec: 3456
- hash: "49903693b112d5f35c4e877bef6bbdb0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 48; y: 153
- modifiers: 0
- sendToViewport: true
+ hash: "371dd67bf5a16ea085a256dd2e2583f9"
}
Mouse {
- type: 5
- button: 0
+ type: 2
+ button: 1
buttons: 1
- x: 48; y: 149
+ x: 75; y: 164
modifiers: 0
sendToViewport: true
}
Frame {
msec: 3472
- hash: "1c84452b0ce90ae6f136f5bcce408220"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 50; y: 144
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 50; y: 138
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 50; y: 138
- modifiers: 0
- sendToViewport: true
+ hash: "9a0606cd6930b3f992f0533f3f6a0f7a"
}
Frame {
msec: 3488
- hash: "4c77d402b995297dadb5e671f071605f"
+ hash: "1d538ccb1874fe2ddb410d48ca668d74"
}
Frame {
msec: 3504
- hash: "babd28626a81bd48b39b56f8da69c360"
+ hash: "71e08cb1eced66950e5893306b3043e7"
}
Frame {
msec: 3520
- hash: "71654a76f9b94fafaf3767003598fb96"
+ hash: "71e08cb1eced66950e5893306b3043e7"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 75; y: 164
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3536
- hash: "87ad69a660e072e71f940db93be3a949"
+ hash: "71e08cb1eced66950e5893306b3043e7"
}
Frame {
msec: 3552
- hash: "147f7f3f1913bc5ac5889c1a4daa8026"
+ hash: "2da0d9bb50d97ca78ee56f3c528a7db5"
}
Frame {
msec: 3568
- hash: "9c26b3ad7a5dacd56028afa7bf4deef6"
+ hash: "7f5105df4d41a6739ce13d69451d6059"
}
Frame {
msec: 3584
- hash: "18611ff90e5af36c9b6396c3df4cd646"
+ hash: "8d171773d643ca5bfb095208efe841a9"
}
Frame {
msec: 3600
- hash: "84701fd73ed8e1951bd4c806b70654ac"
+ hash: "8aa93bddb58d0533b03d2b7fc6efb839"
}
Frame {
msec: 3616
- hash: "42b40f1683beb23f4fe5ade066c0626f"
+ hash: "26e2bcff7c3de9995e29fd8a06db4139"
}
Frame {
msec: 3632
- hash: "8c6aeefaa6f36cdffcf7bdb1597c6fbe"
+ hash: "94fe4626d8f978649bf200bf79885ec0"
}
Frame {
msec: 3648
- hash: "731cea2e0d8fb8aac6ae919b23b89b87"
+ hash: "61e92064d9da2db6ea0adfdffaad81f6"
}
Frame {
msec: 3664
- hash: "d4dc70a8e09e7ec03e7c1f5123b7abef"
+ hash: "54d5845c08eb5cc9263c84146fd9fcd2"
}
Frame {
msec: 3680
- hash: "5246e2f52aa104e8030eef105a5b5a7c"
+ hash: "d10a128980a46713093899696110d81e"
}
Frame {
msec: 3696
- hash: "a9c3d0034c09ba81d19d57ff550d7b4f"
+ hash: "ff6301533f4fb29194f20a4520824030"
}
Frame {
msec: 3712
- hash: "e9092b1be19273f1f29912cd493dd238"
+ hash: "598b6e7c6c6c0de77b4793d1f68beea6"
}
Frame {
msec: 3728
- hash: "c2b19c7b818c94e932558676a026f049"
+ hash: "e3d123e179a6930e1bc1864095621607"
}
Frame {
msec: 3744
- hash: "6627c4d6daab8e6500dbd0d921bc1ebd"
+ hash: "b1bb4c350969f579630680803e622662"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 72; y: 147
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3760
- hash: "45c584ca18e8bfd6aa495c16a977662a"
+ hash: "3dd276bb96dd3a5ef96095e0b8251c05"
}
Frame {
msec: 3776
- hash: "de79039a8bb623f7d48afe1549ae23e0"
+ hash: "144402c1397313fb5d13b4972bb3a450"
}
Frame {
msec: 3792
- hash: "076d29278466038071095093266553f5"
+ hash: "144402c1397313fb5d13b4972bb3a450"
}
Frame {
msec: 3808
- hash: "73ed162dc5f9983bf22446f63691f7e4"
+ hash: "144402c1397313fb5d13b4972bb3a450"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 72; y: 146
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 72; y: 146
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3824
- hash: "4cc3648635884a69191f0cfe2051f621"
+ hash: "144402c1397313fb5d13b4972bb3a450"
}
Frame {
msec: 3840
- image: "packageviews.3.png"
+ hash: "6dbc00069eca813c20731afdf0d25e35"
}
Frame {
msec: 3856
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ image: "packageviews.4.png"
}
Frame {
msec: 3872
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "1f7a173f70f04adcc28481cfa40ad82e"
}
Frame {
msec: 3888
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "5189e3a7f4c93d6095d526ee4583adea"
}
Frame {
msec: 3904
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "03ef5fa51d7455e58c34c52be2b2625b"
}
Frame {
msec: 3920
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "6589088e4efab3426d5b3c08f885fcc4"
}
Frame {
msec: 3936
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "35593c99aa3f7040efe6420ce90426f7"
}
Frame {
msec: 3952
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "61e13ba4ed7251e607ae299841b55fea"
}
Frame {
msec: 3968
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "7bc5f663e54b6ac10b7aa8787de0483a"
}
Frame {
msec: 3984
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "141e2fa188fabeef8587770b2d18538c"
}
Frame {
msec: 4000
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "5f59ea38bb55096d6ca50ffb9e9706ec"
}
Frame {
msec: 4016
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "9ff31c7768afa3eba211e862bbfddda1"
}
Frame {
msec: 4032
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "f8731aa264c5e534f13f4fa89fc320a1"
}
Frame {
msec: 4048
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "87bc86979d05432f8ad16ca1f0537fa0"
}
Frame {
msec: 4064
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "749f93235f677af13d162aacfde3840a"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 69; y: 113
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4080
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3af211e45026670fef0e5b391bad3455"
}
Frame {
msec: 4096
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3af211e45026670fef0e5b391bad3455"
}
Frame {
msec: 4112
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3af211e45026670fef0e5b391bad3455"
}
Frame {
msec: 4128
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3af211e45026670fef0e5b391bad3455"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 112
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4144
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3af211e45026670fef0e5b391bad3455"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 70; y: 112
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4160
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3af211e45026670fef0e5b391bad3455"
}
Frame {
msec: 4176
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "de1b3a0b2ffb02f4969ce532bb7d6ad9"
}
Frame {
msec: 4192
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "1e0bb98146f64975c4d5b8f8ef65319c"
}
Frame {
msec: 4208
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3540ee1fc403cc923100888e3bd15168"
}
Frame {
msec: 4224
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "8f8178db769ed067e40c06ec2a8f3e3f"
}
Frame {
msec: 4240
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "18310df1f8f735313e71739c58b2e42d"
}
Frame {
msec: 4256
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "0797a57080ad60f00a185ad7eecbc40f"
}
Frame {
msec: 4272
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "80cffb466c0e8947f775a4b7a677cd20"
}
Frame {
msec: 4288
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "3f80ed589a282924e1dd4fbbd99078b0"
}
Frame {
msec: 4304
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "7368b2da0c37d4b212fff8222244d413"
}
Frame {
msec: 4320
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "7fb81e12fc1cb3e6f08a4bd0af23f40d"
}
Frame {
msec: 4336
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
- }
- Frame {
- msec: 4352
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
- }
- Frame {
- msec: 4368
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ hash: "6677c15df6babf38036d4083c63c2684"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 151; y: 170
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 151; y: 168
+ x: 67; y: 89
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4384
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
+ msec: 4352
+ hash: "106d90e84bd5b88c5df048ffc717e843"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 166
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4368
+ hash: "ce69c7e561e9f0c1fd5f3dba2ffda3e8"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 153; y: 163
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4384
+ hash: "63b2956e9bad879bef156a318162656c"
}
Frame {
msec: 4400
- hash: "d06fbe4c7dd8bd392172aa5b29c6ceee"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 160
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 155; y: 154
- modifiers: 0
- sendToViewport: true
+ hash: "e9f02812bdd7071d1ceb71e0c2195f3a"
}
Frame {
msec: 4416
- hash: "ac75b9adaecd10206c4daa07c93adb27"
+ hash: "e9f02812bdd7071d1ceb71e0c2195f3a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 155; y: 148
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 141
+ x: 67; y: 88
modifiers: 0
sendToViewport: true
}
Frame {
msec: 4432
- hash: "539ec244fd42801cfcf97adc12f48786"
+ hash: "e9f02812bdd7071d1ceb71e0c2195f3a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 160; y: 121
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4448
- hash: "7d7bc6f7d2ff1da352ddab0d679906e7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 162; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 83
+ x: 67; y: 87
modifiers: 0
sendToViewport: true
}
@@ -1376,2376 +1316,452 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 166; y: 83
+ x: 67; y: 87
modifiers: 0
sendToViewport: true
}
Frame {
+ msec: 4448
+ hash: "e9f02812bdd7071d1ceb71e0c2195f3a"
+ }
+ Frame {
msec: 4464
- hash: "4b508eb55971a03c6dc8a50d0244fa21"
+ hash: "e33d1f7d03ec85600cb61896c66fd9ca"
}
Frame {
msec: 4480
- hash: "2ceb497ca10e6448a019b62a225a72e4"
+ hash: "72347f42ad925abdc614244b2ec01e7a"
}
Frame {
msec: 4496
- hash: "1fd9b89ebcb8e707c9b1b13ba64061b4"
+ hash: "5fbd0e2ce5e2fe609dfc5e5643bfbc8a"
}
Frame {
msec: 4512
- hash: "24a3a48843860f643e55ca6dfec84f98"
+ hash: "4bcb24b700ac09da7387738bce36def5"
}
Frame {
msec: 4528
- hash: "48ea9398101f44a707c44ee1c5102d0c"
+ hash: "7c489062131ef9fcdfe765cd0361361b"
}
Frame {
msec: 4544
- hash: "d8f2cebcdb542e75bbbaa4391ca881b8"
+ hash: "c4c1834200b2b7b3eb38b20d7147b8ee"
}
Frame {
msec: 4560
- hash: "df35827ac111c67588922aadd45b3c85"
+ hash: "49994b7471ec620ff52e5ba516bbb5d4"
}
Frame {
msec: 4576
- hash: "c1e612548c8d5c2f844e94ad4c0f1db4"
+ hash: "e1cf4e92e291b8509a8eb8a84f70dcad"
}
Frame {
msec: 4592
- hash: "c298bccebeb1f4528c935e5fd256479c"
+ hash: "9c7d6d53aa6089712389b1c2b4207d15"
}
Frame {
msec: 4608
- hash: "4c01d969eba4eca32b8a3b7f6f9c99f0"
+ hash: "408731f3b11d888fff1ef9340ad1c568"
}
Frame {
msec: 4624
- hash: "66c783ae698cb91195088591a9bd67c1"
+ hash: "d34f3092b84dea762adf7cf86c80abc6"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 67; y: 67
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4640
- hash: "5419f6889162fb0db6b8c9e521f57f4f"
+ hash: "d0202d3154721c968301e4fdb759b5d2"
}
Frame {
msec: 4656
- hash: "d153dbf30acf36145d7fcb8e37dd5c6d"
+ hash: "89601cb9b82465f6ae96156b7e259e70"
}
Frame {
msec: 4672
- hash: "ffbf186683dc979ef29cdd5ff50296fc"
+ hash: "7c775a699646acf45f26dea5bd5db783"
}
Frame {
msec: 4688
- hash: "ddcedde95d1ebcafe5b73924ecfa047a"
+ hash: "be285c318afaeb932a2fd50fdc357813"
}
Frame {
msec: 4704
- hash: "d94b9e92f2c1a5e0ea2f8dd21a905517"
+ hash: "5ddee39853aa1b8d1be287c86e5b763c"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 67; y: 67
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4720
- hash: "92c27d497128ccdcbfe8224a0f55a302"
+ hash: "5ddee39853aa1b8d1be287c86e5b763c"
}
Frame {
msec: 4736
- hash: "7146017581b03e6551822653e54d5001"
+ hash: "8386713865c12636ce442cd31eacb8ba"
}
Frame {
msec: 4752
- hash: "a39567e01b8963d3b71f5f525d1582d4"
+ hash: "9f4df793b3b6320e238b451e35183b9f"
}
Frame {
msec: 4768
- hash: "842654ef5a24143e41412b2450b6024c"
+ hash: "3cd41f6ab2303dd666269cca13dc95e3"
}
Frame {
msec: 4784
- hash: "c2a002588b4b3f89806d6d283c39ea54"
+ hash: "504a3dd9018c3c725a92a9d6e84743fc"
}
Frame {
msec: 4800
- image: "packageviews.4.png"
+ hash: "a703cbbef38b49be2d3033163ad450e7"
}
Frame {
msec: 4816
- hash: "2bea5cc22ea4989f8f07fbf62d09880b"
+ image: "packageviews.5.png"
}
Frame {
msec: 4832
- hash: "b8326b959b75b05c050ff91f0c34fa55"
+ hash: "c4f7130484f17854eace9e541c92207a"
}
Frame {
msec: 4848
- hash: "d5f2e63bd18b2067221ec80764c7500d"
+ hash: "406a0371c7366fadefcbae7d428d1879"
}
Frame {
msec: 4864
- hash: "157f93ebaa95664965539237ba121265"
+ hash: "f9d6128c4fe60d95a001642cb80ccb99"
}
Frame {
msec: 4880
- hash: "5bda47a6295e500f24b6ba7bf04e9282"
+ hash: "2fb6886550a0eb7927274cd9cfc46819"
}
Frame {
msec: 4896
- hash: "0134d543cfbf085eb4b5ea4a0f5ae32f"
+ hash: "dd4ac1eb6d18bc267b2f39d6d291a8bd"
}
Frame {
msec: 4912
- hash: "d27f2ad3bd9817c23caf01ba64335776"
+ hash: "7f1e1114fe65b7a54364a04ad7697d4c"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 66; y: 45
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4928
- hash: "4dd96288601f4481a24b75afedd34599"
+ hash: "60a4882d0384489465fec8660933c29c"
}
Frame {
msec: 4944
- hash: "d5ebfbd190fe2482af54004ad9434818"
+ hash: "2330e35830fb707c9d9074b54cd5c7f6"
}
Frame {
msec: 4960
- hash: "6a8c5c64228b3be521407e00c2b6a1de"
+ hash: "02c275412e380c7f2878bc1f01e2850a"
}
Frame {
msec: 4976
- hash: "645219e7aa6761bef1b11ac8f17f1f42"
+ hash: "02c275412e380c7f2878bc1f01e2850a"
}
Frame {
msec: 4992
- hash: "54fff3170fa43d99eca2c87381ecaf1e"
+ hash: "02c275412e380c7f2878bc1f01e2850a"
}
Frame {
msec: 5008
- hash: "54fff3170fa43d99eca2c87381ecaf1e"
+ hash: "02c275412e380c7f2878bc1f01e2850a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 43
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 66; y: 43
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 5024
- hash: "00c3c11b9b266504b8cdbdf4edcc3a98"
+ hash: "02c275412e380c7f2878bc1f01e2850a"
}
Frame {
msec: 5040
- hash: "00c3c11b9b266504b8cdbdf4edcc3a98"
+ hash: "a304ddc3e20220f7ed06aeae22589927"
}
Frame {
msec: 5056
- hash: "00c3c11b9b266504b8cdbdf4edcc3a98"
+ hash: "8ef8e13dff7e5f12c1d0a7a0e438a24f"
}
Frame {
msec: 5072
- hash: "54fff3170fa43d99eca2c87381ecaf1e"
+ hash: "ef7ef97e56c6b7579e11022861dd3eb5"
}
Frame {
msec: 5088
- hash: "6a8c5c64228b3be521407e00c2b6a1de"
+ hash: "133613dd5ac9242ce0b6926986cd384a"
}
Frame {
msec: 5104
- hash: "f91cea801322d1bc6ac1b9eeae96c704"
+ hash: "eb5125c97b9deca07e999ec7e78986b3"
}
Frame {
msec: 5120
- hash: "d27f2ad3bd9817c23caf01ba64335776"
+ hash: "123c37efefdc1c8e6b27b7eff3bffff8"
}
Frame {
msec: 5136
- hash: "5bda47a6295e500f24b6ba7bf04e9282"
+ hash: "8443d904bcb63ab2d14cbb5a2e2a8fe7"
}
Frame {
msec: 5152
- hash: "d5f2e63bd18b2067221ec80764c7500d"
+ hash: "379826db02c7e5cb8ab9007a419e34f9"
}
Frame {
msec: 5168
- hash: "b10145c10c2bc9d01ec6a49a399f728e"
+ hash: "672d45cdc24a2e1286956e3ce00cab56"
}
Frame {
msec: 5184
- hash: "f0b759a49bf21b0c9b311a1dd02d7807"
+ hash: "cbaa7c4f52b2ebc1176a3bbe3e029487"
}
Frame {
msec: 5200
- hash: "1c5546c3ddbde95d10921c8c32fd2d67"
+ hash: "35d70b84722fecd08b1c03f01c5a9895"
}
Frame {
msec: 5216
- hash: "c2a002588b4b3f89806d6d283c39ea54"
+ hash: "65c1d1c4fc845229853836afd2e7a3c4"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 68; y: 19
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 5232
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "a238ffd4f6de5ca91bcf0e629407ad11"
}
Frame {
msec: 5248
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "42322853eef74b9b849d81d7aa2ea4af"
}
Frame {
msec: 5264
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "25fb0c4c04d9dcda865a8b254970330c"
}
Frame {
msec: 5280
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "565891a25190705df8b424e1e5e73ddd"
}
Frame {
msec: 5296
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "565891a25190705df8b424e1e5e73ddd"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 68; y: 19
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 5312
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "565891a25190705df8b424e1e5e73ddd"
}
Frame {
msec: 5328
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "39e05f846071d4ec9a1413922a928995"
}
Frame {
msec: 5344
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "7040400386930b34d989df4cdf36d125"
}
Frame {
msec: 5360
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "2d3c081a1bbb94952becfd486d455de5"
}
Frame {
msec: 5376
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "7a0719f22b0b74e4139ada77ca8d38d6"
}
Frame {
msec: 5392
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "40d070285de7865fa8f415ff06be69d3"
}
Frame {
msec: 5408
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "875ba6c617a4b5d157c747ead185247c"
}
Frame {
msec: 5424
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "2d0ef679259f503d42cc2267b8d95a4e"
}
Frame {
msec: 5440
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "b2aeceddd4d36e600f617578d64a4c32"
}
Frame {
msec: 5456
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "a065ec04aff7a7c164ed8c152130589f"
}
Frame {
msec: 5472
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "a09d94403ce40a8afb12e390aea3d848"
}
Frame {
msec: 5488
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "34b116228527a669dadbfc75f309d045"
}
Frame {
msec: 5504
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "5bee91cba46537ddaefe87f4e118d3d5"
}
Frame {
msec: 5520
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "d0d8bd32268f3e3a62a08514f0d53799"
}
Frame {
msec: 5536
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "b90c3915255d3f98700f8af0181fa6ee"
}
Frame {
msec: 5552
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5568
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5584
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5600
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5616
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5632
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5648
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5664
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5680
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5696
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5712
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5728
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5744
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5760
- image: "packageviews.5.png"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5776
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ image: "packageviews.6.png"
}
Frame {
msec: 5792
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5808
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5824
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5840
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5856
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5872
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5888
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5904
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5920
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5936
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
Frame {
msec: 5952
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 5968
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 5984
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6000
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6016
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6032
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6048
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6064
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6080
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6096
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6112
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6128
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6144
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6160
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6176
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6192
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6208
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6224
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6240
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6256
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6272
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6288
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6304
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6320
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6336
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6352
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6368
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6384
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6400
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6416
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6432
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6448
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6464
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6480
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6496
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6512
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 177; y: 168
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6528
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6544
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6560
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6576
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 178; y: 168
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6592
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 178; y: 168
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6608
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6624
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6640
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6656
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6672
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6688
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6704
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6720
- image: "packageviews.6.png"
- }
- Frame {
- msec: 6736
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6752
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6768
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6784
- hash: "1eb5d2140ff3c71d55a6e5338dd2853e"
- }
- Frame {
- msec: 6800
- hash: "f6de07972a225d276b4b5c424dc490ef"
- }
- Frame {
- msec: 6816
- hash: "d8c400ca33d590a9b4d9b179b5634d94"
- }
- Frame {
- msec: 6832
- hash: "21ec87c22e52b3daa78bd94b771a105c"
- }
- Frame {
- msec: 6848
- hash: "19a3667f4051e40e944ec58abb16846a"
- }
- Frame {
- msec: 6864
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6880
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6896
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6912
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6928
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6944
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6960
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6976
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 6992
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7008
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7024
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7040
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7056
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7072
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7088
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7104
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7120
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7136
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7152
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7168
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7184
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7200
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7216
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7232
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7248
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7264
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7280
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7296
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7312
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7328
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7344
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7360
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7376
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7392
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7408
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 157; y: 37
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7424
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Frame {
- msec: 7440
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 39
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7456
- hash: "08369a783b1f1f4e64da7dab40df6ef3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 44
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 51
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7472
- hash: "e8ad02d4c2429a03ff0686888e4038bf"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 59
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 67
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7488
- hash: "43dcc86aeff3b8b74ae1b87e735e8963"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 87
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7504
- hash: "96e10ce9e5a80caf626213e5c696d84d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7520
- hash: "3b34cb99481d5418136840afd649807d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 164; y: 134
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 164; y: 134
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7536
- hash: "494cf05eb3d8eb221d0e3c233c936e87"
- }
- Frame {
- msec: 7552
- hash: "e0d5f3aab9fbfac1de47f42202dbeb79"
- }
- Frame {
- msec: 7568
- hash: "8cd6919e15ea4320e00e79d43596ea80"
- }
- Frame {
- msec: 7584
- hash: "395a63aa12928a6b597eabd74f019a03"
- }
- Frame {
- msec: 7600
- hash: "16d4ccbda396a9afcaeac4ddca733012"
- }
- Frame {
- msec: 7616
- hash: "71955518b68a9817a41d5d0f63adcc57"
- }
- Frame {
- msec: 7632
- hash: "152f2569fe8849d5c4289699dba2ee32"
- }
- Frame {
- msec: 7648
- hash: "a1de2cb5acc31a9d73e005c3a44cee4f"
- }
- Frame {
- msec: 7664
- hash: "96ceaad68263b5165a65f557ae19d9cd"
- }
- Frame {
- msec: 7680
- image: "packageviews.7.png"
- }
- Frame {
- msec: 7696
- hash: "9ff5d2774820dac56655a44d965c7742"
- }
- Frame {
- msec: 7712
- hash: "79cdbfb2f93a35680eab38f0df2eaf66"
- }
- Frame {
- msec: 7728
- hash: "19896d510a27871fc589579e27adc0dc"
- }
- Frame {
- msec: 7744
- hash: "71b62e488897345eebf8d9640d50585f"
- }
- Frame {
- msec: 7760
- hash: "4853b95a3f1ae0ebbd468dff3605d595"
- }
- Frame {
- msec: 7776
- hash: "a8030aa0aede17d91758af08256cf39d"
- }
- Frame {
- msec: 7792
- hash: "a2a5e71349060ae262d337d9aa33b549"
- }
- Frame {
- msec: 7808
- hash: "7b5f32f0e53ab102ef6f1eca7da016dd"
- }
- Frame {
- msec: 7824
- hash: "7b5f32f0e53ab102ef6f1eca7da016dd"
- }
- Frame {
- msec: 7840
- hash: "25908df38057c7394135108d9618e28d"
- }
- Frame {
- msec: 7856
- hash: "d3b3ab6e43eef22ca71fc35c36b1f50d"
- }
- Frame {
- msec: 7872
- hash: "c25759db4e12acbe8e4701c7c86d1957"
- }
- Frame {
- msec: 7888
- hash: "fe67a155ead8495d646fa7bbcf5db6b4"
- }
- Frame {
- msec: 7904
- hash: "34e2877a8b84e53e5c85fb1b25d57e2b"
- }
- Frame {
- msec: 7920
- hash: "2fc6c5a0e9bb80e3c8f12553e7e96d02"
- }
- Frame {
- msec: 7936
- hash: "b5122a2530e21a01e93862bd8060e320"
- }
- Frame {
- msec: 7952
- hash: "9c55e0c920bcf5189fb24e1765d221db"
- }
- Frame {
- msec: 7968
- hash: "1106703562135e36ae62130200960fc8"
- }
- Frame {
- msec: 7984
- hash: "c24b57dbf01d2646fbbeb3e66636e220"
- }
- Frame {
- msec: 8000
- hash: "71663a05c04bb77c2e25299a9c6dd9ce"
- }
- Frame {
- msec: 8016
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8032
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8048
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8064
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8080
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8096
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8112
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8128
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8144
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8160
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8176
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8192
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8208
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8224
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8240
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8256
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8272
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8288
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8304
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8320
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8336
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8352
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8368
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8384
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8400
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8416
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8432
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8448
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8464
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8480
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8496
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8512
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8528
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8544
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8560
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8576
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8592
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8608
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8624
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8640
- image: "packageviews.8.png"
- }
- Frame {
- msec: 8656
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8672
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8688
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Frame {
- msec: 8704
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 46; y: 147
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8720
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 146
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8736
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 145
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 143
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8752
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 141
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8768
- hash: "dd6caf22c0cacf5c34686785072da5f7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 138
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 134
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 46; y: 129
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8784
- hash: "7b1354e70befc84c343145987c81562f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 45; y: 122
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8800
- hash: "6107f00c6472d877b5c109dd58d73145"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 45; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 45; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8816
- hash: "47288701643899e26b53d28595d59b29"
- }
- Frame {
- msec: 8832
- hash: "a3b4b613d19c8f21ec1b75c1c660ed1d"
- }
- Frame {
- msec: 8848
- hash: "7a5d9fe471eb673f68b77d97f9108bac"
- }
- Frame {
- msec: 8864
- hash: "20a09795ffcf05276d7a5be24b33e207"
- }
- Frame {
- msec: 8880
- hash: "225e529ac77f225fc8b84ed71cdcd70f"
- }
- Frame {
- msec: 8896
- hash: "e4188406a3d3d1f1b83547d362a187f8"
- }
- Frame {
- msec: 8912
- hash: "82707040aad297885ba1c8c6672dc017"
- }
- Frame {
- msec: 8928
- hash: "a369118e98e2bd67dc4242c5e8c86cb8"
- }
- Frame {
- msec: 8944
- hash: "001ef50f7d2b7db7e0db8d2190137d0c"
- }
- Frame {
- msec: 8960
- hash: "2db473b2bd9fd602ed0298501752dae9"
- }
- Frame {
- msec: 8976
- hash: "f9cdbb4e515abf23721627e3f2748960"
- }
- Frame {
- msec: 8992
- hash: "cbc072c5b117ce156a4d6661ae488a77"
- }
- Frame {
- msec: 9008
- hash: "79acb38cec803e6ebeb570dc4d7bbb30"
- }
- Frame {
- msec: 9024
- hash: "848014437545fc8d2e454a774586a8ca"
- }
- Frame {
- msec: 9040
- hash: "0836f3a48355f6384c6b3f452df1e7d6"
- }
- Frame {
- msec: 9056
- hash: "b3da223cdf138e915fcb424cf9181d6b"
- }
- Frame {
- msec: 9072
- hash: "1a7cf7e7ddaac64eeff0d23997580b8c"
- }
- Frame {
- msec: 9088
- hash: "cfbd055b2f905db503250b49120948db"
- }
- Frame {
- msec: 9104
- hash: "c5b8a4ce51ec806f0ce654a8977fb17d"
- }
- Frame {
- msec: 9120
- hash: "d09ba0ea9e7fed2f50d6463ac74da470"
- }
- Frame {
- msec: 9136
- hash: "47ec5bab098fd88ef5be3703c316717a"
- }
- Frame {
- msec: 9152
- hash: "3ea8c442ed43bd3a2aebc9cc2aacfc01"
- }
- Frame {
- msec: 9168
- hash: "f016f14b0b21781924ac2afe146b1b97"
- }
- Frame {
- msec: 9184
- hash: "7b7b6954cce0ca202585310520bbb3e3"
- }
- Frame {
- msec: 9200
- hash: "b0de94ee3b0ce4845101606d2d512426"
- }
- Frame {
- msec: 9216
- hash: "8dc56bcb2313bd8dd9ef0cbc098b80e5"
- }
- Frame {
- msec: 9232
- hash: "a1692b26fb73ade5a05e03de3f4a8dbe"
- }
- Frame {
- msec: 9248
- hash: "672dd46e629475d823b182104f15aa24"
- }
- Frame {
- msec: 9264
- hash: "2859e53d63c20af7891efc99d5e515b5"
- }
- Frame {
- msec: 9280
- hash: "b44b1c4eaa33fbd09c8e59c1bf2a8f2a"
- }
- Frame {
- msec: 9296
- hash: "d520fa81032ca25ec2cb6c358488049d"
- }
- Frame {
- msec: 9312
- hash: "3676c00bd5c3e9af8c4092afd80f58c2"
- }
- Frame {
- msec: 9328
- hash: "6be4d4c35aba5a8d32a28dd88f32acd1"
- }
- Frame {
- msec: 9344
- hash: "375473d4d838ef937c3164e7451d9391"
- }
- Frame {
- msec: 9360
- hash: "610253e766974af4958c3623547deebd"
- }
- Frame {
- msec: 9376
- hash: "20b79be381a95930c924240815cc63f4"
- }
- Frame {
- msec: 9392
- hash: "88130d7132f472ff8495d640adf290cc"
- }
- Frame {
- msec: 9408
- hash: "2e81f4c9a0221708146adcb508eb2d30"
- }
- Frame {
- msec: 9424
- hash: "977f52ed922ba5db66440f115f7484a2"
- }
- Frame {
- msec: 9440
- hash: "706f99c32d00be14ae67b4866fee0cd9"
- }
- Frame {
- msec: 9456
- hash: "210231604091497b510c4a1d42295574"
- }
- Frame {
- msec: 9472
- hash: "210231604091497b510c4a1d42295574"
- }
- Frame {
- msec: 9488
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9504
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9520
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9536
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9552
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9568
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9584
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9600
- image: "packageviews.9.png"
- }
- Frame {
- msec: 9616
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9632
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9648
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9664
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9680
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9696
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9712
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9728
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9744
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9760
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9776
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9792
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9808
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9824
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9840
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9856
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9872
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9888
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9904
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9920
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9936
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9952
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9968
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 9984
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10000
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10016
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10032
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10048
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10064
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10080
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10096
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10112
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10128
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10144
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10160
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10176
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 48; y: 137
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 10192
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10208
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10224
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10240
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10256
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 48; y: 137
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 10272
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 10288
- hash: "c54f97c72088b6319efba3c79bbef0fa"
- }
- Frame {
- msec: 10304
- hash: "3627adf820bc44f99cca852096f337a0"
- }
- Frame {
- msec: 10320
- hash: "48c0f775534ff9bbe9227e60ad9a3622"
- }
- Frame {
- msec: 10336
- hash: "da5c6fd80ee0dc20e81031c84ede20cf"
- }
- Frame {
- msec: 10352
- hash: "ce7595da55b274259771eb99a42df454"
- }
- Frame {
- msec: 10368
- hash: "c2dd2aa17b9508477699fefe55bfbd06"
- }
- Frame {
- msec: 10384
- hash: "4ee897ddfec1081eef8bc5d799774f82"
- }
- Frame {
- msec: 10400
- hash: "f4da67964a175acf4cde4a24b054c24c"
- }
- Frame {
- msec: 10416
- hash: "e3da951dad465f1a69d8d7c08e888f02"
- }
- Frame {
- msec: 10432
- hash: "ff862073eada170a07d209048367b823"
- }
- Frame {
- msec: 10448
- hash: "cb61d5a89c1acc2b646f3c07214bea4a"
- }
- Frame {
- msec: 10464
- hash: "15d842ac551c15a136c7598adf2fe2b1"
- }
- Frame {
- msec: 10480
- hash: "04b9e85f7418bbc402e51e0ce8149180"
- }
- Frame {
- msec: 10496
- hash: "455dff37edfac66f5e4ae78e10b93cf9"
- }
- Frame {
- msec: 10512
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10528
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10544
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10560
- image: "packageviews.10.png"
- }
- Frame {
- msec: 10576
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10592
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10608
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10624
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10640
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10656
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10672
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10688
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10704
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10720
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10736
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10752
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10768
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10784
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10800
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10816
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10832
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10848
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10864
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10880
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10896
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10912
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10928
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10944
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10960
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10976
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 10992
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11008
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11024
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11040
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11056
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11072
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11088
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11104
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11120
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11136
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11152
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11168
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11184
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11200
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11216
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11232
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11248
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11264
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11280
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11296
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11312
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11328
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11344
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11360
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11376
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11392
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11408
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11424
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11440
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11456
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11472
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11488
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11504
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 47; y: 141
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 11520
- image: "packageviews.11.png"
- }
- Frame {
- msec: 11536
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11552
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11568
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 47; y: 141
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 11584
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11600
- hash: "259e9da7c3b8738db1762128f2c8d4b0"
- }
- Frame {
- msec: 11616
- hash: "cf515f316c197a307a7fb8373df3b107"
- }
- Frame {
- msec: 11632
- hash: "927379ba611284d5c98a3eb5aca04f7c"
- }
- Frame {
- msec: 11648
- hash: "387ad2042589de0a19cb13aa0cac8872"
- }
- Frame {
- msec: 11664
- hash: "6536ad87d1f04b13c28c43ae0fed984f"
- }
- Frame {
- msec: 11680
- hash: "38d77d6610739614e95c70f32736f238"
- }
- Frame {
- msec: 11696
- hash: "9a6c3a95b61d3b9b787417600123b6d8"
- }
- Frame {
- msec: 11712
- hash: "782d907d7d170108beb030c93d9a4d94"
- }
- Frame {
- msec: 11728
- hash: "646ee08d1ffe676ca0363f70e14c2ed6"
- }
- Frame {
- msec: 11744
- hash: "830730ed9990c8f96fa5c7e6b4228884"
- }
- Frame {
- msec: 11760
- hash: "2e678862f358814278d38950c7c5765b"
- }
- Frame {
- msec: 11776
- hash: "c656eb6ace9caf86d417d79452c4ea34"
- }
- Frame {
- msec: 11792
- hash: "227a9bb3644c26622ef654ba2c61ddad"
- }
- Frame {
- msec: 11808
- hash: "bc8188bf8be749bfb28fc64bb5773922"
- }
- Frame {
- msec: 11824
- hash: "f1e90cfd466bdc26ba98632fe1e5360c"
- }
- Frame {
- msec: 11840
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11856
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11872
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11888
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11904
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11920
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11936
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11952
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11968
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 11984
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12000
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12016
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12032
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12048
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12064
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12080
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12096
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12112
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12128
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12144
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12160
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12176
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12192
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12208
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12224
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12240
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12256
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12272
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12288
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12304
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12320
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12336
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12352
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12368
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12384
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12400
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12416
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12432
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12448
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12464
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12480
- image: "packageviews.12.png"
- }
- Frame {
- msec: 12496
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12512
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12528
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12544
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12560
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12576
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12592
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12608
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12624
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12640
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12656
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12672
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12688
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12704
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12720
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12736
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12752
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12768
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12784
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12800
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12816
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12832
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12848
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12864
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12880
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12896
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12912
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12928
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12944
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12960
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12976
- hash: "81795ee4213ac62e073d811aaf6b580c"
- }
- Frame {
- msec: 12992
- hash: "81795ee4213ac62e073d811aaf6b580c"
+ hash: "8d52a504170547407fad6d8785b7199b"
}
}
diff --git a/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml b/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml
index 99379f1515..a9de3f87d4 100644
--- a/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml
+++ b/tests/auto/declarative/qmlvisual/Package_Views/packageviews.qml
@@ -17,18 +17,10 @@ Rectangle {
ListElement { itemColor: "yellow" }
ListElement { itemColor: "slategrey" }
ListElement { itemColor: "cyan" }
- ListElement { itemColor: "red" }
- ListElement { itemColor: "green" }
- ListElement { itemColor: "blue" }
- ListElement { itemColor: "orange" }
- ListElement { itemColor: "purple" }
- ListElement { itemColor: "yellow" }
- ListElement { itemColor: "slategrey" }
- ListElement { itemColor: "cyan" }
}
delegate: Package {
Rectangle {
- id: listItem; Package.name: "list"; width:root.width/2; height: 50; color: "transparent"; border.color: "white"
+ id: listItem; Package.name: "list"; width:root.width/2; height: 25; color: "transparent"; border.color: "white"
MouseArea {
anchors.fill: parent
onClicked: myState.state = myState.state == "list" ? "grid" : "list"
@@ -50,12 +42,12 @@ Rectangle {
State {
name: "list"
ParentChange { target: myContent; parent: listItem }
- PropertyChanges { target: myContent; x: 0; y: 0; width: listItem.width }
+ PropertyChanges { target: myContent; x: 0; y: 0; width: listItem.width; height: listItem.height }
},
State {
name: "grid"
ParentChange { target: myContent; parent: gridItem }
- PropertyChanges { target: myContent; x: 0; y: 0; width: gridItem.width }
+ PropertyChanges { target: myContent; x: 0; y: 0; width: gridItem.width; height: gridItem.height }
}
]
@@ -64,7 +56,7 @@ Rectangle {
from: "*"; to: "*"
SequentialAnimation {
ParentAnimation{
- NumberAnimation { properties: "x,y,width"; easing.type: "InOutQuad" }
+ NumberAnimation { properties: "x,y,width,height"; easing.type: "InOutQuad" }
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/TEST_GUIDELINES b/tests/auto/declarative/qmlvisual/TEST_GUIDELINES
new file mode 100644
index 0000000000..469832f501
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/TEST_GUIDELINES
@@ -0,0 +1,7 @@
+Guidelines for creating new visual tests:
+
+1. Keep it small. All visual tests should be able to run on a device with a screen of at least 640x360 pixels. Smaller than that is even better, because images of this side need to be processed and saved for every test (and even committed to the repository).
+
+2. Keep it short. It is hoped that these tests can be run regularly, perhaps even for every commit, and if you add up ten seconds for every time someone commits a change to QML then we'll be sitting here for a long time. Completeness is more important than haste, but consider the most time efficient ways to achieve said completeness. Do not forget about snapshot mode (tst_qmlvisual -help for details on -recordsnapshot) when testing that a static scene looks right.
+
+3. Avoid text. Text is relatively unstable due to platform specific peculiarities. If you need to identify an area, consider a unique color as opposed to a unique text label. If you must use Text, TextEdit, or TextInput, use the test-friendlier versions in the 'shared' directory. Also keep in mind that text anti-aliasing is disabled during tests for greater consistency, and you should never use point sizes in tests. Text autotests can thus only test some aspects of the elements.
diff --git a/tests/auto/declarative/qmlvisual/animation/bindinganimation/bindinganimation.qml b/tests/auto/declarative/qmlvisual/animation/bindinganimation/bindinganimation.qml
index 611eaf52de..901981263c 100644
--- a/tests/auto/declarative/qmlvisual/animation/bindinganimation/bindinganimation.qml
+++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/bindinganimation.qml
@@ -14,15 +14,12 @@ Rectangle {
}
states: [
State {
+ when: myMouseArea.pressed
name: "hello"
PropertyChanges {
target: myRectangle
x: 50 + 50
}
- PropertyChanges {
- target: myMouseArea
- onClicked: page.state = ''
- }
}
]
transitions: [
@@ -35,6 +32,5 @@ Rectangle {
MouseArea {
id: myMouseArea
anchors.fill: parent
- onClicked: { page.state= 'hello' }
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.0.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.0.png
index 1b08c81c67..24c11beead 100644
--- a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.1.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.1.png
index f3074fc93a..82492d4998 100644
--- a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.1.png
+++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.2.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.2.png
index 1b08c81c67..a31f02a3ed 100644
--- a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.2.png
+++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.3.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.3.png
index e2560e084d..a029af69ed 100644
--- a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.3.png
+++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.4.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.4.png
index 2ddde86c3b..c8367ec3e2 100644
--- a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.4.png
+++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.5.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.5.png
index f3074fc93a..900156f67d 100644
--- a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.5.png
+++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.6.png b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.6.png
deleted file mode 100644
index 1b08c81c67..0000000000
--- a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.qml b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.qml
index dbe02761d2..be0637e47a 100644
--- a/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.qml
+++ b/tests/auto/declarative/qmlvisual/animation/bindinganimation/data/bindinganimation.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ image: "bindinganimation.0.png"
}
Frame {
msec: 32
@@ -132,529 +132,561 @@ VisualTest {
msec: 512
hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 87; y: 129
+ modifiers: 0
+ sendToViewport: true
+ }
Frame {
msec: 528
hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 544
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "a78c9394bf3b81f192f42710cd7218b1"
}
Frame {
msec: 560
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "7f08e8170feb1d02373c9ab42b6e882d"
}
Frame {
msec: 576
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "967fbad8ac664400a3efbe66617d62aa"
}
Frame {
msec: 592
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "abc2ec0bc7a93e75b5823310e6284db1"
}
Frame {
msec: 608
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "afbd5b24e2f86646f5ec2aa22f3a4b5b"
}
Frame {
msec: 624
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "9413dffb7ee853ba0125ac22ab22abbd"
}
Frame {
msec: 640
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "fcae0317f81a3ddd713f4db1349a9da0"
}
Frame {
msec: 656
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "37739777a5979f3ebf85e47e63341660"
}
Frame {
msec: 672
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "72731478d80f024076ea639b55152360"
}
Frame {
msec: 688
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "69058485ced6bc992a1a7c5ee34add4c"
}
Frame {
msec: 704
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "391ad7ff2362e059f6170dfe306f94a7"
}
Frame {
msec: 720
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "f9f74a2e38b52c9266f33e428b6acd9d"
}
Frame {
msec: 736
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "25152412c4ea2aec6caf89486c073484"
}
Frame {
msec: 752
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "ba403842ba3128b1cdf6a9cb28c90751"
}
Frame {
msec: 768
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "e90cd68490cf3ce6ef9fe4e8f92feaa9"
}
Frame {
msec: 784
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 800
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 816
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 832
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 848
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 864
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 880
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 896
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 912
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 928
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 944
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 960
- image: "bindinganimation.0.png"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 976
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ image: "bindinganimation.1.png"
}
Frame {
msec: 992
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 1008
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 1024
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 1040
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 1056
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 1072
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 1088
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 1104
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 1120
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 1136
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 1152
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Mouse {
- type: 2
+ type: 3
button: 1
- buttons: 1
- x: 136; y: 174
+ buttons: 0
+ x: 87; y: 129
modifiers: 0
sendToViewport: true
}
Frame {
msec: 1168
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "383ba6b9efcc58fca512982a207631f6"
}
Frame {
msec: 1184
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "adc501a3a2b8aaf72f58ba985b57424e"
}
Frame {
msec: 1200
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "bfa51b7c19753ef7b16d78afffc7b9dd"
}
Frame {
msec: 1216
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "ffa8471f57765b49fcdb9155393251e5"
}
Frame {
msec: 1232
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "ddb65481469c38f2331546ee03a44206"
}
Frame {
msec: 1248
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "6f48d1a9977b77cafd38a5903017605b"
}
Frame {
msec: 1264
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "4279c814163af3bd069ce21b3cd1c729"
}
Frame {
msec: 1280
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 136; y: 174
- modifiers: 0
- sendToViewport: true
+ hash: "17c46242c17983478f34cb49cb91ca6e"
}
Frame {
msec: 1296
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "42f65c58b1f5f4b5ba70855f4aaa7d2f"
}
Frame {
msec: 1312
- hash: "a78c9394bf3b81f192f42710cd7218b1"
+ hash: "6a74d6dc91a8b370200d3765c55c1136"
}
Frame {
msec: 1328
- hash: "7f08e8170feb1d02373c9ab42b6e882d"
+ hash: "ecda10356cca33901c2acd0a702fee46"
}
Frame {
msec: 1344
- hash: "967fbad8ac664400a3efbe66617d62aa"
+ hash: "4f58226bdbda7339d972eca065f75766"
}
Frame {
msec: 1360
- hash: "abc2ec0bc7a93e75b5823310e6284db1"
+ hash: "a39c80859a7643c9879da9c77b644703"
}
Frame {
msec: 1376
- hash: "afbd5b24e2f86646f5ec2aa22f3a4b5b"
+ hash: "16fe17b15900ff0464ab20ea921e5b1f"
}
Frame {
msec: 1392
- hash: "9413dffb7ee853ba0125ac22ab22abbd"
+ hash: "bc5c83b2014b7260900587ae3637598f"
}
Frame {
msec: 1408
- hash: "fcae0317f81a3ddd713f4db1349a9da0"
+ hash: "96c077e3a572edff04fa9b2f7020ffd0"
}
Frame {
msec: 1424
- hash: "37739777a5979f3ebf85e47e63341660"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1440
- hash: "72731478d80f024076ea639b55152360"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1456
- hash: "69058485ced6bc992a1a7c5ee34add4c"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1472
- hash: "391ad7ff2362e059f6170dfe306f94a7"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1488
- hash: "f9f74a2e38b52c9266f33e428b6acd9d"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1504
- hash: "25152412c4ea2aec6caf89486c073484"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1520
- hash: "ba403842ba3128b1cdf6a9cb28c90751"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1536
- hash: "e90cd68490cf3ce6ef9fe4e8f92feaa9"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1552
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1568
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1584
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1600
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1616
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1632
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1648
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1664
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1680
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1696
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1712
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1728
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1744
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1760
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1776
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1792
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1808
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1824
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1840
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 81; y: 130
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1856
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 1872
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "a78c9394bf3b81f192f42710cd7218b1"
}
Frame {
msec: 1888
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7f08e8170feb1d02373c9ab42b6e882d"
}
Frame {
msec: 1904
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "967fbad8ac664400a3efbe66617d62aa"
}
Frame {
msec: 1920
- image: "bindinganimation.1.png"
+ hash: "abc2ec0bc7a93e75b5823310e6284db1"
}
Frame {
msec: 1936
- hash: "383ba6b9efcc58fca512982a207631f6"
+ image: "bindinganimation.2.png"
}
Frame {
msec: 1952
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "9413dffb7ee853ba0125ac22ab22abbd"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 81; y: 130
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1968
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "9413dffb7ee853ba0125ac22ab22abbd"
}
Frame {
msec: 1984
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "ecda10356cca33901c2acd0a702fee46"
}
Frame {
msec: 2000
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "5fae0bdc65c609cb766ce585b8c649db"
}
Frame {
msec: 2016
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "575d30ac088448b01f49082519bbb3a1"
}
Frame {
msec: 2032
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "ffeb3db6d3f177acf6f92049359a9025"
}
Frame {
msec: 2048
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "abc2ec0bc7a93e75b5823310e6284db1"
}
Frame {
msec: 2064
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "fcb17070ef24575c61046928a8bbe440"
}
Frame {
msec: 2080
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "4ab21e266919fb8d340f87091d8e1f62"
}
Frame {
msec: 2096
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "f141c7c4402c6bacff31d4e77785f5f1"
}
Frame {
msec: 2112
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "29e5f1388c6aaf23abe9f514d7e902d1"
+ }
+ Mouse {
+ type: 4
+ button: 1
+ buttons: 1
+ x: 81; y: 130
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2128
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "29e5f1388c6aaf23abe9f514d7e902d1"
}
Frame {
msec: 2144
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "4ab21e266919fb8d340f87091d8e1f62"
}
Frame {
msec: 2160
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "2d21b4af3780ef2bbccfcec957ce49c8"
}
Frame {
msec: 2176
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "527b1f9e7a222483134675a73f9cf5b7"
}
Frame {
msec: 2192
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "5edaad77f334e6a01982ee89a733b1f8"
}
Frame {
msec: 2208
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "6a74d6dc91a8b370200d3765c55c1136"
}
Frame {
msec: 2224
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "42f65c58b1f5f4b5ba70855f4aaa7d2f"
}
Frame {
msec: 2240
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "3223ed179c828fadb3eca9c6373176c1"
}
Mouse {
- type: 2
+ type: 3
button: 1
- buttons: 1
- x: 122; y: 175
+ buttons: 0
+ x: 81; y: 130
modifiers: 0
sendToViewport: true
}
Frame {
msec: 2256
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "3223ed179c828fadb3eca9c6373176c1"
}
Frame {
msec: 2272
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "516c44b44c23f213f5db01f9eb164b0b"
}
Frame {
msec: 2288
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "4f41101378a104e72228eeb4ba395ca8"
}
Frame {
msec: 2304
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "f9deee3a204c939562b896a6179743d2"
}
Frame {
msec: 2320
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "772396bb23c713f34ea5c23bfbcb115e"
}
Frame {
msec: 2336
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "ecda10356cca33901c2acd0a702fee46"
}
Frame {
msec: 2352
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "527b1f9e7a222483134675a73f9cf5b7"
+ }
+ Frame {
+ msec: 2368
+ hash: "4f58226bdbda7339d972eca065f75766"
}
Mouse {
- type: 3
+ type: 2
button: 1
- buttons: 0
- x: 122; y: 175
+ buttons: 1
+ x: 81; y: 130
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2368
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
msec: 2384
- hash: "adc501a3a2b8aaf72f58ba985b57424e"
+ hash: "4f58226bdbda7339d972eca065f75766"
}
Frame {
msec: 2400
- hash: "bfa51b7c19753ef7b16d78afffc7b9dd"
+ hash: "5fae0bdc65c609cb766ce585b8c649db"
}
Frame {
msec: 2416
- hash: "ffa8471f57765b49fcdb9155393251e5"
+ hash: "9413dffb7ee853ba0125ac22ab22abbd"
}
Frame {
msec: 2432
- hash: "ddb65481469c38f2331546ee03a44206"
+ hash: "6a74d6dc91a8b370200d3765c55c1136"
}
Frame {
msec: 2448
- hash: "6f48d1a9977b77cafd38a5903017605b"
+ hash: "4f41101378a104e72228eeb4ba395ca8"
}
Frame {
msec: 2464
- hash: "4279c814163af3bd069ce21b3cd1c729"
+ hash: "37739777a5979f3ebf85e47e63341660"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 81; y: 130
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2480
- hash: "17c46242c17983478f34cb49cb91ca6e"
+ hash: "37739777a5979f3ebf85e47e63341660"
}
Frame {
msec: 2496
@@ -662,994 +694,362 @@ VisualTest {
}
Frame {
msec: 2512
- hash: "6a74d6dc91a8b370200d3765c55c1136"
+ hash: "fcae0317f81a3ddd713f4db1349a9da0"
}
Frame {
msec: 2528
- hash: "ecda10356cca33901c2acd0a702fee46"
+ hash: "082e0e7650d187a54ef0948ccca98e5a"
}
Frame {
msec: 2544
- hash: "4f58226bdbda7339d972eca065f75766"
+ hash: "9413dffb7ee853ba0125ac22ab22abbd"
}
Frame {
msec: 2560
- hash: "a39c80859a7643c9879da9c77b644703"
+ hash: "d9af30557f99b086bb1a185a946b580d"
}
Frame {
msec: 2576
- hash: "16fe17b15900ff0464ab20ea921e5b1f"
+ hash: "afbd5b24e2f86646f5ec2aa22f3a4b5b"
}
Frame {
msec: 2592
- hash: "bc5c83b2014b7260900587ae3637598f"
+ hash: "ffeb3db6d3f177acf6f92049359a9025"
+ }
+ Mouse {
+ type: 4
+ button: 1
+ buttons: 1
+ x: 81; y: 130
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2608
- hash: "96c077e3a572edff04fa9b2f7020ffd0"
+ hash: "ffeb3db6d3f177acf6f92049359a9025"
}
Frame {
msec: 2624
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "5fae0bdc65c609cb766ce585b8c649db"
}
Frame {
msec: 2640
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "9413dffb7ee853ba0125ac22ab22abbd"
}
Frame {
msec: 2656
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "6a74d6dc91a8b370200d3765c55c1136"
}
Frame {
msec: 2672
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "4f41101378a104e72228eeb4ba395ca8"
}
Frame {
msec: 2688
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "37739777a5979f3ebf85e47e63341660"
}
Frame {
msec: 2704
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "f4fe2cc93d65e086ba8ded1438269eb2"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 81; y: 130
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2720
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "f4fe2cc93d65e086ba8ded1438269eb2"
}
Frame {
msec: 2736
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "56c72b5da44bd5efdc47c3b9c3eac409"
}
Frame {
msec: 2752
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "b08811b237ce7a460c80d285f04d53d8"
}
Frame {
msec: 2768
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "fcae0317f81a3ddd713f4db1349a9da0"
}
Frame {
msec: 2784
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "082e0e7650d187a54ef0948ccca98e5a"
}
Frame {
msec: 2800
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "9413dffb7ee853ba0125ac22ab22abbd"
}
Frame {
msec: 2816
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "d9af30557f99b086bb1a185a946b580d"
}
Frame {
msec: 2832
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "575d30ac088448b01f49082519bbb3a1"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 81; y: 130
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2848
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "575d30ac088448b01f49082519bbb3a1"
}
Frame {
msec: 2864
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "d9af30557f99b086bb1a185a946b580d"
}
Frame {
msec: 2880
- image: "bindinganimation.2.png"
+ hash: "82363265ed2b611a54f8d48b2af22f11"
}
Frame {
msec: 2896
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ image: "bindinganimation.3.png"
}
Frame {
msec: 2912
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "42f65c58b1f5f4b5ba70855f4aaa7d2f"
}
Frame {
msec: 2928
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "56c72b5da44bd5efdc47c3b9c3eac409"
}
Frame {
msec: 2944
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "72731478d80f024076ea639b55152360"
}
Frame {
msec: 2960
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "4279c814163af3bd069ce21b3cd1c729"
}
Frame {
msec: 2976
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "72a0c017a2fa90a4aeadfa6e552ff573"
}
Frame {
msec: 2992
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "391ad7ff2362e059f6170dfe306f94a7"
}
Frame {
msec: 3008
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "0b0c6419e1e5b016d9c22bd98fd452b1"
}
Frame {
msec: 3024
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "365c824c330398d267ea52ae9468b9ee"
}
Frame {
msec: 3040
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "65ad7e0189c096792331bd1bb0daf0db"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 81; y: 130
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3056
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "65ad7e0189c096792331bd1bb0daf0db"
}
Frame {
msec: 3072
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "a21aa1984f068650cce2a124a82c12be"
}
Frame {
msec: 3088
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "8006ceaa02d22b5fdfeab400d39a0caf"
}
Frame {
msec: 3104
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "6f48d1a9977b77cafd38a5903017605b"
}
Frame {
msec: 3120
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "07f751ea4cf877ba72fbb36f9da268d7"
}
Frame {
msec: 3136
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "72731478d80f024076ea639b55152360"
}
Frame {
msec: 3152
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "37739777a5979f3ebf85e47e63341660"
}
Frame {
msec: 3168
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
+ hash: "ed47684a0b21836cd27549e0989e96dd"
}
Frame {
msec: 3184
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "772396bb23c713f34ea5c23bfbcb115e"
}
Frame {
msec: 3200
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "ecda10356cca33901c2acd0a702fee46"
}
Frame {
msec: 3216
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "575d30ac088448b01f49082519bbb3a1"
}
Frame {
msec: 3232
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "2e3f134664df8204a291af2c9f81239a"
}
Frame {
msec: 3248
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "967fbad8ac664400a3efbe66617d62aa"
}
Frame {
msec: 3264
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "2b93a05b0e78e52d8d8bc2c71d898d3e"
}
Frame {
msec: 3280
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
+ hash: "c7a9850ed078eb0cfdb5a7ef11840d64"
}
Frame {
msec: 3296
- hash: "7cb5fc371040e587de9f06ce14a4b29a"
+ hash: "96c077e3a572edff04fa9b2f7020ffd0"
}
Frame {
msec: 3312
- hash: "a78c9394bf3b81f192f42710cd7218b1"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3328
- hash: "7f08e8170feb1d02373c9ab42b6e882d"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3344
- hash: "967fbad8ac664400a3efbe66617d62aa"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3360
- hash: "abc2ec0bc7a93e75b5823310e6284db1"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3376
- hash: "afbd5b24e2f86646f5ec2aa22f3a4b5b"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3392
- hash: "9413dffb7ee853ba0125ac22ab22abbd"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3408
- hash: "fcae0317f81a3ddd713f4db1349a9da0"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3424
- hash: "37739777a5979f3ebf85e47e63341660"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3440
- hash: "72731478d80f024076ea639b55152360"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3456
- hash: "69058485ced6bc992a1a7c5ee34add4c"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3472
- hash: "391ad7ff2362e059f6170dfe306f94a7"
- }
- Mouse {
- type: 4
- button: 1
- buttons: 1
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3488
- hash: "f9f74a2e38b52c9266f33e428b6acd9d"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3504
- hash: "25152412c4ea2aec6caf89486c073484"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3520
- hash: "ba403842ba3128b1cdf6a9cb28c90751"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3536
- hash: "e90cd68490cf3ce6ef9fe4e8f92feaa9"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3552
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3568
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3584
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3600
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3616
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3632
- hash: "adc501a3a2b8aaf72f58ba985b57424e"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3648
- hash: "bfa51b7c19753ef7b16d78afffc7b9dd"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3664
- hash: "ffa8471f57765b49fcdb9155393251e5"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3680
- hash: "ddb65481469c38f2331546ee03a44206"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3696
- hash: "6f48d1a9977b77cafd38a5903017605b"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3712
- hash: "4279c814163af3bd069ce21b3cd1c729"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3728
- hash: "17c46242c17983478f34cb49cb91ca6e"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3744
- hash: "42f65c58b1f5f4b5ba70855f4aaa7d2f"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3760
- hash: "6a74d6dc91a8b370200d3765c55c1136"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3776
- hash: "ecda10356cca33901c2acd0a702fee46"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3792
- hash: "4f58226bdbda7339d972eca065f75766"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
Frame {
msec: 3808
- hash: "4f58226bdbda7339d972eca065f75766"
- }
- Frame {
- msec: 3824
- hash: "5fae0bdc65c609cb766ce585b8c649db"
- }
- Frame {
- msec: 3840
- image: "bindinganimation.3.png"
- }
- Frame {
- msec: 3856
- hash: "6a74d6dc91a8b370200d3765c55c1136"
- }
- Frame {
- msec: 3872
- hash: "4f41101378a104e72228eeb4ba395ca8"
- }
- Frame {
- msec: 3888
- hash: "37739777a5979f3ebf85e47e63341660"
- }
- Frame {
- msec: 3904
- hash: "f4fe2cc93d65e086ba8ded1438269eb2"
- }
- Mouse {
- type: 4
- button: 1
- buttons: 1
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 3920
- hash: "4279c814163af3bd069ce21b3cd1c729"
- }
- Frame {
- msec: 3936
- hash: "72a0c017a2fa90a4aeadfa6e552ff573"
- }
- Frame {
- msec: 3952
- hash: "391ad7ff2362e059f6170dfe306f94a7"
- }
- Frame {
- msec: 3968
- hash: "0b0c6419e1e5b016d9c22bd98fd452b1"
- }
- Frame {
- msec: 3984
- hash: "365c824c330398d267ea52ae9468b9ee"
- }
- Frame {
- msec: 4000
- hash: "65ad7e0189c096792331bd1bb0daf0db"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4016
- hash: "65ad7e0189c096792331bd1bb0daf0db"
- }
- Frame {
- msec: 4032
- hash: "a21aa1984f068650cce2a124a82c12be"
- }
- Frame {
- msec: 4048
- hash: "8006ceaa02d22b5fdfeab400d39a0caf"
- }
- Frame {
- msec: 4064
- hash: "a2cebc35e5c2c709a2cd83e1df6eaeab"
- }
- Frame {
- msec: 4080
- hash: "07f751ea4cf877ba72fbb36f9da268d7"
- }
- Frame {
- msec: 4096
- hash: "72731478d80f024076ea639b55152360"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4112
- hash: "37739777a5979f3ebf85e47e63341660"
- }
- Frame {
- msec: 4128
- hash: "ed47684a0b21836cd27549e0989e96dd"
- }
- Frame {
- msec: 4144
- hash: "772396bb23c713f34ea5c23bfbcb115e"
- }
- Frame {
- msec: 4160
- hash: "d9af30557f99b086bb1a185a946b580d"
- }
- Frame {
- msec: 4176
- hash: "575d30ac088448b01f49082519bbb3a1"
- }
- Frame {
- msec: 4192
- hash: "2e3f134664df8204a291af2c9f81239a"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4208
- hash: "2e3f134664df8204a291af2c9f81239a"
- }
- Frame {
- msec: 4224
- hash: "4f58226bdbda7339d972eca065f75766"
- }
- Frame {
- msec: 4240
- hash: "5fae0bdc65c609cb766ce585b8c649db"
- }
- Frame {
- msec: 4256
- hash: "82363265ed2b611a54f8d48b2af22f11"
- }
- Frame {
- msec: 4272
- hash: "f9deee3a204c939562b896a6179743d2"
- }
- Frame {
- msec: 4288
- hash: "42f65c58b1f5f4b5ba70855f4aaa7d2f"
- }
- Mouse {
- type: 4
- button: 1
- buttons: 1
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4304
- hash: "3223ed179c828fadb3eca9c6373176c1"
- }
- Frame {
- msec: 4320
- hash: "56125a260a79bc38bb0ef44fd65ba49b"
- }
- Frame {
- msec: 4336
- hash: "07f751ea4cf877ba72fbb36f9da268d7"
- }
- Frame {
- msec: 4352
- hash: "6f48d1a9977b77cafd38a5903017605b"
- }
- Frame {
- msec: 4368
- hash: "8006ceaa02d22b5fdfeab400d39a0caf"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4384
- hash: "8006ceaa02d22b5fdfeab400d39a0caf"
- }
- Frame {
- msec: 4400
- hash: "6f48d1a9977b77cafd38a5903017605b"
- }
- Frame {
- msec: 4416
- hash: "69058485ced6bc992a1a7c5ee34add4c"
- }
- Frame {
- msec: 4432
- hash: "dafcce427161a70c3513841ac22aea00"
- }
- Frame {
- msec: 4448
- hash: "3223ed179c828fadb3eca9c6373176c1"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4464
- hash: "b08811b237ce7a460c80d285f04d53d8"
- }
- Frame {
- msec: 4480
- hash: "fcae0317f81a3ddd713f4db1349a9da0"
- }
- Frame {
- msec: 4496
- hash: "772396bb23c713f34ea5c23bfbcb115e"
- }
- Frame {
- msec: 4512
- hash: "ecda10356cca33901c2acd0a702fee46"
- }
- Frame {
- msec: 4528
- hash: "575d30ac088448b01f49082519bbb3a1"
- }
- Frame {
- msec: 4544
- hash: "abc2ec0bc7a93e75b5823310e6284db1"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4560
- hash: "abc2ec0bc7a93e75b5823310e6284db1"
- }
- Frame {
- msec: 4576
- hash: "575d30ac088448b01f49082519bbb3a1"
- }
- Frame {
- msec: 4592
- hash: "ecda10356cca33901c2acd0a702fee46"
- }
- Frame {
- msec: 4608
- hash: "772396bb23c713f34ea5c23bfbcb115e"
- }
- Frame {
- msec: 4624
- hash: "fcae0317f81a3ddd713f4db1349a9da0"
- }
- Frame {
- msec: 4640
- hash: "b08811b237ce7a460c80d285f04d53d8"
- }
- Mouse {
- type: 4
- button: 1
- buttons: 1
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4656
- hash: "17c46242c17983478f34cb49cb91ca6e"
- }
- Frame {
- msec: 4672
- hash: "dafcce427161a70c3513841ac22aea00"
- }
- Frame {
- msec: 4688
- hash: "69058485ced6bc992a1a7c5ee34add4c"
- }
- Frame {
- msec: 4704
- hash: "6f48d1a9977b77cafd38a5903017605b"
- }
- Frame {
- msec: 4720
- hash: "ddb65481469c38f2331546ee03a44206"
- }
- Frame {
- msec: 4736
- hash: "a21aa1984f068650cce2a124a82c12be"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4752
- hash: "a21aa1984f068650cce2a124a82c12be"
- }
- Frame {
- msec: 4768
- hash: "8006ceaa02d22b5fdfeab400d39a0caf"
- }
- Frame {
- msec: 4784
- hash: "6f48d1a9977b77cafd38a5903017605b"
- }
- Frame {
- msec: 4800
- image: "bindinganimation.4.png"
- }
- Frame {
- msec: 4816
- hash: "56125a260a79bc38bb0ef44fd65ba49b"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4832
- hash: "56c72b5da44bd5efdc47c3b9c3eac409"
- }
- Frame {
- msec: 4848
- hash: "42f65c58b1f5f4b5ba70855f4aaa7d2f"
- }
- Frame {
- msec: 4864
- hash: "6a74d6dc91a8b370200d3765c55c1136"
- }
- Frame {
- msec: 4880
- hash: "9413dffb7ee853ba0125ac22ab22abbd"
- }
- Frame {
- msec: 4896
- hash: "527b1f9e7a222483134675a73f9cf5b7"
- }
- Frame {
- msec: 4912
- hash: "ffeb3db6d3f177acf6f92049359a9025"
- }
- Frame {
- msec: 4928
- hash: "a39c80859a7643c9879da9c77b644703"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 122; y: 175
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4944
- hash: "a39c80859a7643c9879da9c77b644703"
- }
- Frame {
- msec: 4960
- hash: "ffeb3db6d3f177acf6f92049359a9025"
- }
- Frame {
- msec: 4976
- hash: "527b1f9e7a222483134675a73f9cf5b7"
- }
- Frame {
- msec: 4992
- hash: "9413dffb7ee853ba0125ac22ab22abbd"
- }
- Frame {
- msec: 5008
- hash: "6a74d6dc91a8b370200d3765c55c1136"
- }
- Frame {
- msec: 5024
- hash: "4f41101378a104e72228eeb4ba395ca8"
- }
- Frame {
- msec: 5040
- hash: "56c72b5da44bd5efdc47c3b9c3eac409"
- }
- Frame {
- msec: 5056
- hash: "72731478d80f024076ea639b55152360"
- }
- Frame {
- msec: 5072
- hash: "07f751ea4cf877ba72fbb36f9da268d7"
- }
- Frame {
- msec: 5088
- hash: "a2cebc35e5c2c709a2cd83e1df6eaeab"
- }
- Frame {
- msec: 5104
- hash: "8006ceaa02d22b5fdfeab400d39a0caf"
- }
- Frame {
- msec: 5120
- hash: "f9f74a2e38b52c9266f33e428b6acd9d"
- }
- Frame {
- msec: 5136
- hash: "a93f930ec8528f954cd4a770c9a8171b"
- }
- Frame {
- msec: 5152
- hash: "bfa51b7c19753ef7b16d78afffc7b9dd"
- }
- Frame {
- msec: 5168
- hash: "df62027b6b53c69a071cb3dc09c3a7ed"
- }
- Frame {
- msec: 5184
- hash: "0d59ac57f8790fe741a31d12c3438abf"
- }
- Frame {
- msec: 5200
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5216
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5232
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5248
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5264
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5280
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5296
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5312
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5328
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5344
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5360
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5376
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5392
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5408
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5424
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5440
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5456
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5472
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5488
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5504
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5520
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5536
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5552
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5568
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5584
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5600
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5616
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5632
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5648
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5664
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5680
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5696
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5712
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 5728
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5744
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5760
- image: "bindinganimation.5.png"
- }
- Frame {
- msec: 5776
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5792
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5808
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5824
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5840
- hash: "383ba6b9efcc58fca512982a207631f6"
- }
- Frame {
- msec: 5856
- hash: "383ba6b9efcc58fca512982a207631f6"
+ hash: "7cb5fc371040e587de9f06ce14a4b29a"
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png
index e6ea16d16b..2a79113d0b 100644
--- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png
index b75ba616fe..ebd1802325 100644
--- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png
index 4320f6f568..9b8ecbbe55 100644
--- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.3.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.3.png
new file mode 100644
index 0000000000..277cb9e513
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml
index 9611d279de..2b664d44e6 100644
--- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml
+++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "acc736435c9f84aa82941ba561bc5dbc"
+ image: "colorAnimation-visual.0.png"
}
Frame {
msec: 32
@@ -258,11 +258,11 @@ VisualTest {
}
Frame {
msec: 960
- image: "colorAnimation-visual.0.png"
+ hash: "2d133e7ee60c97386f57838b3f0976c7"
}
Frame {
msec: 976
- hash: "85b1821cc50f2a9f3ed6944f792b7a2f"
+ image: "colorAnimation-visual.1.png"
}
Frame {
msec: 992
@@ -498,11 +498,11 @@ VisualTest {
}
Frame {
msec: 1920
- image: "colorAnimation-visual.1.png"
+ hash: "02bafb5a81ca66f7670ac93de5123860"
}
Frame {
msec: 1936
- hash: "e7aa6374c73832e57ceb2427a1e258aa"
+ image: "colorAnimation-visual.2.png"
}
Frame {
msec: 1952
@@ -738,11 +738,11 @@ VisualTest {
}
Frame {
msec: 2880
- image: "colorAnimation-visual.2.png"
+ hash: "8c0fcda4f8956394c53fc4ba18caa850"
}
Frame {
msec: 2896
- hash: "8c0fcda4f8956394c53fc4ba18caa850"
+ image: "colorAnimation-visual.3.png"
}
Frame {
msec: 2912
@@ -931,7 +931,7 @@ VisualTest {
Key {
type: 6
key: 16777249
- modifiers: 67108864
+ modifiers: 0
text: ""
autorep: false
count: 1
diff --git a/tests/auto/declarative/qmlvisual/animation/easing/data/easing.0.png b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.0.png
index 4f75bfd2e2..81edfff991 100644
--- a/tests/auto/declarative/qmlvisual/animation/easing/data/easing.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/easing/data/easing.1.png b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.1.png
index dc17765ae3..ebac47f65b 100644
--- a/tests/auto/declarative/qmlvisual/animation/easing/data/easing.1.png
+++ b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/easing/data/easing.2.png b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.2.png
index 7f83548f59..e1200bb14d 100644
--- a/tests/auto/declarative/qmlvisual/animation/easing/data/easing.2.png
+++ b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/easing/data/easing.3.png b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.3.png
index c68e0fa42e..81edfff991 100644
--- a/tests/auto/declarative/qmlvisual/animation/easing/data/easing.3.png
+++ b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/easing/data/easing.qml b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.qml
index 5923222df9..597c3a6bdf 100644
--- a/tests/auto/declarative/qmlvisual/animation/easing/data/easing.qml
+++ b/tests/auto/declarative/qmlvisual/animation/easing/data/easing.qml
@@ -6,774 +6,858 @@ VisualTest {
}
Frame {
msec: 16
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ image: "easing.0.png"
}
Frame {
msec: 32
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 48
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 64
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 80
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 96
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 112
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 128
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 144
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 160
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 176
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 192
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 208
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 224
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 240
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 256
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 272
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 111; y: 419
- modifiers: 0
- sendToViewport: true
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 288
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 304
- hash: "8f4c40d2e2b4f064bcb77c5ae43928c6"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 320
- hash: "8b65094a9b7d5394fc67f92ea058627f"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 336
- hash: "da450826b471a60ba98dabc581631ba1"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 352
- hash: "e820fb4f1bc97152aa940b07db549f1b"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 368
- hash: "b7d8186beca2fa0e37099f72419350f4"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 384
- hash: "8500b93774f214e5e4789e25500262b8"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 400
- hash: "277e1dff70285cca536b3e1fc2590688"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 416
- hash: "b05b18f92c2089c681661566117ae0f5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 432
- hash: "6fec9c6b6ac3e3ea4126e3824a8d7566"
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 28; y: 245
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 448
- hash: "53c6c90dd1eb7ca47721fc116474aebf"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 464
- hash: "cf729c4a31414af3d2705878ba615738"
+ hash: "a74da88fed6727a41b0bef096bd52eea"
}
Frame {
msec: 480
- hash: "f146b8a68960d507f893ef001189220e"
+ hash: "e640a847e36f4a7d322ad7ca0b893d9c"
}
Frame {
msec: 496
- hash: "18ff56b870bb048af246f928ee42a9b0"
+ hash: "3e3fe8581c80dc190108b9844e77fb17"
}
Frame {
msec: 512
- hash: "beee98f73fe7e878ada37b3070fa0c1d"
+ hash: "8ee8ce9f8d9d93997aa8e05efae9b901"
}
Frame {
msec: 528
- hash: "435d389082912950a0be2b5dff480319"
+ hash: "8752f7849a3afa35889f7f1406d79e5c"
}
Frame {
msec: 544
- hash: "dc39b080eaddeaf4e309b90b7d97a835"
+ hash: "df31ed3556e84a4517b26765ea11023c"
}
Frame {
msec: 560
- hash: "666b1cde53f78d7db9c81e21adbe406a"
+ hash: "a35602db546bf5e71fbc7ff7c5895427"
}
Frame {
msec: 576
- hash: "c5c9627f4329e48aa96ebfbc982b6ba6"
+ hash: "c29ee32e39126cb00544cf0326e483d8"
}
Frame {
msec: 592
- hash: "a583042052e5da7e80a4956337d6d1ff"
+ hash: "79b0d26288fd9ca67c6aacacb9bf355f"
}
Frame {
msec: 608
- hash: "a4a5df787e15da6f28275a12898e7620"
+ hash: "aa0b8c9921058be0913c00725c45b287"
}
Frame {
msec: 624
- hash: "02cacec2ccc803ebc03c5540484cbcaa"
+ hash: "964f498603fdd2abb2d3b1cc1b78ffde"
}
Frame {
msec: 640
- hash: "00600df1f006f358feaf43bfae9d32a5"
+ hash: "a3c7226d5b5f91b91d2a1ec21f2cb9ab"
}
Frame {
msec: 656
- hash: "737c884ba0d6d38b66252f4b97a36c33"
+ hash: "d28f5fb2e07c028c9697f8d1e4d7b676"
}
Frame {
msec: 672
- hash: "7eeeade8100c84a6b56efa51cf597baf"
+ hash: "0a1aa6ba2749b1ef5d8c67b5d8d7fba4"
}
Frame {
msec: 688
- hash: "18ab79d495097f0103dcf14db1897a88"
+ hash: "12d926e80c7b4da41ef9c747cf9ca1d4"
}
Frame {
msec: 704
- hash: "21d3b0da00c46a101e09048928cd8027"
+ hash: "2015e4d29b3424a3683d7d8710ef60b4"
}
Frame {
msec: 720
- hash: "a5995b0341872c275ffbc5aaee6eb853"
+ hash: "530924a6f4bdf7e9ab37415109a28e2f"
}
Frame {
msec: 736
- hash: "bb4a37c1bd5e412ebce54d9539017723"
+ hash: "4dd20811ffa8cfb64cebc6ec6f43b029"
}
Frame {
msec: 752
- hash: "63dcde9e2751ca94ed7d739feb359221"
+ hash: "2238138f486a061e32607b130ba505f8"
}
Frame {
msec: 768
- hash: "5790c8407e2e4d1a6a937d86d57d8edb"
+ hash: "a2991487b51b9802f18a975a323dfb32"
}
Frame {
msec: 784
- hash: "3a1c77abf6822030db60a036027dc86e"
+ hash: "9cf19f7c9ee16bfdd56cb889358ab789"
}
Frame {
msec: 800
- hash: "2a13c573ab9846cce60384dd7138b2b4"
+ hash: "32eee6b05e73a36eef878c562badbb8f"
}
Frame {
msec: 816
- hash: "98983c2525265830033495b61071a5aa"
+ hash: "04cbb2d8fe38011c46ff95d84830ed2a"
}
Frame {
msec: 832
- hash: "26d2bba3d77053b410715afb497d4063"
+ hash: "c11c2591ecf40ab31e616f6803e37e95"
}
Frame {
msec: 848
- hash: "fd65d954c16acee425d9de65af68ef40"
+ hash: "a22cdeea89739bdf10850c7251fb62f2"
}
Frame {
msec: 864
- hash: "094fcc18d28b19ac6b452dd8106d813b"
+ hash: "7d13f611bc516cda6afe56a8ec59cbf4"
}
Frame {
msec: 880
- hash: "160105f6f99a960763535e4d51990ef6"
+ hash: "4b3a3469f1c64760bd6ce84ec0bfc2cc"
}
Frame {
msec: 896
- hash: "0d5d1e6a66fc1f49f1106f01fb5a1c52"
+ hash: "e1a3af06282f369427d967cb21771564"
}
Frame {
msec: 912
- hash: "f6abc32680865783a4d94ecb738f9ff6"
+ hash: "e1c90f78a2fe5e7cf43eeb700c867beb"
}
Frame {
msec: 928
- hash: "350509eceb134d5b18647e5ad07dbb47"
+ hash: "e63fbd42405a5d251ea6703d9564b2e0"
}
Frame {
msec: 944
- hash: "a84e4e7c5385dc1f24ca219f45d529a5"
+ hash: "a1b4f08ccf38575f789bdb8968c7cdeb"
}
Frame {
msec: 960
- image: "easing.0.png"
+ hash: "2604313688bddd75b1fbd146415097a7"
}
Frame {
msec: 976
- hash: "efcc5ae79da3fa2f4c7d6eaa35e32d33"
+ image: "easing.1.png"
}
Frame {
msec: 992
- hash: "ff4afce604c8ecb4f08d1ddef8552534"
+ hash: "df391105c7f6e0fbcdb0b4719e5af9e3"
}
Frame {
msec: 1008
- hash: "e2e63e12e9a5f8459720dd8b023ed17b"
+ hash: "33603ef5b2368a7f5a71de0318404ac7"
}
Frame {
msec: 1024
- hash: "991a01f92bcfa9cd9fe98e3f39d192fc"
+ hash: "78cdbf2a2522e057db08aba284bd7a07"
}
Frame {
msec: 1040
- hash: "bc3d2f0f3fac650c981457f3694c2518"
+ hash: "7aac87953a7e1ddf0040769a15878017"
}
Frame {
msec: 1056
- hash: "ee39fc9b1a602bf813d9118aa21901ac"
+ hash: "eae27f47c56ee0c491eeebed0f3855b2"
}
Frame {
msec: 1072
- hash: "42120d098f2adf1e331332b33442dd3e"
+ hash: "0f0c4d8dbc27bc301c993a768afeaa39"
}
Frame {
msec: 1088
- hash: "1660c69b77b800d1ab57b93f0fc12aa5"
+ hash: "ec844dffe8be01b9906ffa10a18784bc"
}
Frame {
msec: 1104
- hash: "0630a3d6b8cb5dece5dc660f05036ec6"
+ hash: "69f6dd26fd9268c474c422c2ce126424"
}
Frame {
msec: 1120
- hash: "9163f0bd9c5888794d7a09d3359bf1e5"
+ hash: "0e3f95c339c1868fc716a542e9acbd49"
}
Frame {
msec: 1136
- hash: "e0b7ad4883f679948c852ff152ba7907"
+ hash: "fa0762f9d8112e5c6889ef3a204d4838"
}
Frame {
msec: 1152
- hash: "f748fc44f99b706e42b899cb18dbaaf7"
+ hash: "18132a9adedd13fcd015ac5c7f741718"
}
Frame {
msec: 1168
- hash: "c84442f0cb1cf0bb50dae7d1c701aaf8"
+ hash: "f07aba4891c1aab84f656b3507d4f31a"
}
Frame {
msec: 1184
- hash: "d7b41567e3f3aa9576fe2793872134b7"
+ hash: "123dfe5bf375b698ae529fe370133d4d"
}
Frame {
msec: 1200
- hash: "a1d10ff1adb85000902486fc8e4faa8d"
+ hash: "d176cacbad1459d18729e99b52ed0c89"
}
Frame {
msec: 1216
- hash: "44b7b5d77068e360ead3af84e7d80232"
+ hash: "21d9f6aeb67b5bfa0d190d305ddbaabd"
}
Frame {
msec: 1232
- hash: "486c0b19c1379d9eefdf575a085e2875"
+ hash: "38884e097938bdd2fecb33a2d782e87e"
}
Frame {
msec: 1248
- hash: "1d474472856d4740d960eb2f788ca5a6"
+ hash: "d0fb3dbb20f4873784dde690c48efd4b"
}
Frame {
msec: 1264
- hash: "c74082553ab0f4ee00f5044e3369580b"
+ hash: "9821efad0c5bfc459029f42a32ad7c85"
}
Frame {
msec: 1280
- hash: "89fcd5514f336075ad32cae69518c1e5"
+ hash: "c19ef8982ffa6d5d1a0b2844d0bd77e1"
}
Frame {
msec: 1296
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "e5d09b511557ac724b488dcaa5079ac7"
}
Frame {
msec: 1312
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "a1bf72e745137dd8ae48ff3e5df22944"
}
Frame {
msec: 1328
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "6319a88b12b431b1715b0231c0b86f9e"
}
Frame {
msec: 1344
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "f69fc6078e0b6c863b19f2306ca22a17"
}
Frame {
msec: 1360
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "e0945fc7aea81263fb84fb5de83b7ffc"
}
Frame {
msec: 1376
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "bae0fc82e69b37d6f0d23faf5d877d9b"
}
Frame {
msec: 1392
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "764e6cf407b66cefb0e867c55b4d214b"
}
Frame {
msec: 1408
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "208a9d634e7c45211a8aea56b7cb17e1"
}
Frame {
msec: 1424
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "5426675426babcfb303d5534b66038e0"
}
Frame {
msec: 1440
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "f9b2505bf94f9ae9a6212aae64a8023f"
}
Frame {
msec: 1456
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1472
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1488
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1504
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1520
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1536
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1552
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1568
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1584
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1600
- hash: "9dd235eb98998d9bdd92e01300297257"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 111; y: 419
- modifiers: 0
- sendToViewport: true
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1616
- hash: "9dd235eb98998d9bdd92e01300297257"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1632
- hash: "b77240f32e83d4f332d815c626f1e560"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1648
- hash: "7d89669231224cf8e02d75338c37c278"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1664
- hash: "a8cf7c179011ee8187a8e1111683e52e"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1680
- hash: "3e87a57e05da09a8260801320431b922"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1696
- hash: "a2b0d99c8a232715fe03e8772a36634c"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1712
- hash: "5b4634cd495ae7bb9c69a5c9c346189e"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1728
- hash: "492f8f2b84af355ef41c1a7cda3a8a73"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 28; y: 245
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1744
- hash: "88e4eb08520fb5acc3d88ac4f0900542"
+ hash: "672e4366f9eb212a3dcb539476ffe83b"
}
Frame {
msec: 1760
- hash: "0c09cdcb906b4ce9840fd7502c39e5b9"
+ hash: "0312cf9bff66e992528cc24211a7a9ef"
}
Frame {
msec: 1776
- hash: "b054083bdd212cc03167a90df2d7eac5"
+ hash: "d29d071c26556302881badd90b1f1135"
}
Frame {
msec: 1792
- hash: "83971c2d37616ab92680364d6ac288a6"
+ hash: "747b398a00dec18a82fb3e2313ba318b"
}
Frame {
msec: 1808
- hash: "a73951d25e2cb7c1d04c88c86dfa0e4d"
+ hash: "1df120f0cc1e8583dd52b02b203ba7ff"
}
Frame {
msec: 1824
- hash: "31fc8b20302abac97e506c37a14bbb7e"
+ hash: "783f4c179f8468055f1b5585108c4c91"
}
Frame {
msec: 1840
- hash: "f760ccd7339e01a9423da7b592498291"
+ hash: "7307344c196f13348e7e23415c8eed1f"
}
Frame {
msec: 1856
- hash: "24dfcd5553f854908396de751fb15b88"
+ hash: "cf97103f94eb6b9e68e095ff5eaf2aeb"
}
Frame {
msec: 1872
- hash: "1daf38a6e6199f980e9494a3eb480047"
+ hash: "df8ef82f145ad55f084c3693cb601577"
}
Frame {
msec: 1888
- hash: "a39e2de1090209e5dbc8cc26577ec97d"
+ hash: "e25a344db6358ac5876cc95eb7ce35e7"
}
Frame {
msec: 1904
- hash: "f4edc780b063e34461263ed3b753be88"
+ hash: "4f4d55823e468ec2c0e73977a6851f5b"
}
Frame {
msec: 1920
- image: "easing.1.png"
+ hash: "894e23e77af266bde42f5ca6ac2184d7"
}
Frame {
msec: 1936
- hash: "a19b0353604491f56f72be0d20d76955"
+ image: "easing.2.png"
}
Frame {
msec: 1952
- hash: "9a70f109eebfcede2311ef77ceb50a44"
+ hash: "a48cc4f2c5282d9d2a8b55e0908324b7"
}
Frame {
msec: 1968
- hash: "7b28313d6860aeefd4a4e136d38d62f8"
+ hash: "f5cd3c873cf57f199ea7439a45f094d8"
}
Frame {
msec: 1984
- hash: "95d84f38473159fe6b38f84ffe371714"
+ hash: "8c6f4c913be02ee21efa551ce9a6544b"
}
Frame {
msec: 2000
- hash: "07f91261794edb0ac1fde9bb4ff36011"
+ hash: "fc979e4e4f6e82d704e0a53d3f9eef6e"
}
Frame {
msec: 2016
- hash: "f9a4a6b92a9c2d265688f1bfac18fa0a"
+ hash: "e8085e2e6741028a9218487181a8cc5b"
}
Frame {
msec: 2032
- hash: "cdec7cc00380fde4f73be997a992251a"
+ hash: "c67a1cec25d25687d369af58018ce213"
}
Frame {
msec: 2048
- hash: "a52b34f84e98fcd8babb1d39979fc9c7"
+ hash: "25b8e080f8fe5525bafa1e760b5845be"
}
Frame {
msec: 2064
- hash: "bf05b3c79a9616f2e6c33d348b30e0ba"
+ hash: "fef16bd6dc6dfa248ab5a33f53229528"
}
Frame {
msec: 2080
- hash: "c5931785685b4f4854d3ddfff5dd5466"
+ hash: "57b7e04b1722feda16fb80269dd51c2c"
}
Frame {
msec: 2096
- hash: "bae163e02b860a9ca19d1bcb60ac1f8e"
+ hash: "f2415e564efe5b5306b33001395a41f4"
}
Frame {
msec: 2112
- hash: "a36295a1ebb35e538f8899ae3ae3b36a"
+ hash: "40116a7a67be4de5b767ee1fe7ae0d02"
}
Frame {
msec: 2128
- hash: "b6448d61803d9b2c05b438aa8ce8bcd5"
+ hash: "52d71e7e8f44e554df361d7d9e281655"
}
Frame {
msec: 2144
- hash: "631bf4caff2d93ef96a426100ffc5b32"
+ hash: "226620a3c624f0a1659ee33616734a28"
}
Frame {
msec: 2160
- hash: "a8777c84a03996493f719f5fcfc80d00"
+ hash: "8849d02547a90ca47748749fc8615179"
}
Frame {
msec: 2176
- hash: "86e1759df103ef776bb03f24941f49da"
+ hash: "5523d277bc7a7161f3bbd79a4099e6c4"
}
Frame {
msec: 2192
- hash: "01a790ea60adeaf368c66bd53aa8fcb3"
+ hash: "6ff2c6b89c3a024e1597d1c110b5f5f3"
}
Frame {
msec: 2208
- hash: "79e5aca8ef6b9764f7f99cdfb51222ae"
+ hash: "732b9e2e601ad7fc11510f3c590dca20"
}
Frame {
msec: 2224
- hash: "82d10cc01b9be4683c5aa76096bd462c"
+ hash: "1ff9abdcb182fca444bc4b36e91b2a13"
}
Frame {
msec: 2240
- hash: "95d961a92c597e432611947f7480796a"
+ hash: "6f851aee4e3c4427fcb8672f37885d2d"
}
Frame {
msec: 2256
- hash: "e8ee89b5313c7e2c66741fe1c2090029"
+ hash: "3572977ef7c618404168514400fc22a4"
}
Frame {
msec: 2272
- hash: "2e3e8cf25dc1a3f09e7bf2a086f8e3bb"
+ hash: "e6e6f7cdf4f2ee1d182d18da482ab6a8"
}
Frame {
msec: 2288
- hash: "68ca8ad381f48db23d2bc5da9da0c17a"
+ hash: "fac4878038516ad0a5601f78ff3d3ab0"
}
Frame {
msec: 2304
- hash: "e29f2411667049e8fae6c080f61c5869"
+ hash: "b37e2cf2fb3b5a91845e50d2ab288572"
}
Frame {
msec: 2320
- hash: "5b0a6fadedf3024e8ecb7f2c73a2277d"
+ hash: "711ea820aa842c46f629f3eb36144ec2"
}
Frame {
msec: 2336
- hash: "af2eac625ef1fd928093ccd60bc0058e"
+ hash: "fcaa0576cbc8d4459b94498f332a4576"
}
Frame {
msec: 2352
- hash: "8a1ff780ebdc9e416e60ea0940e8f2d6"
+ hash: "dfa935d0ac700696a78c139585d2cc3f"
}
Frame {
msec: 2368
- hash: "7eb316c51cfd8ad972b7040247a651eb"
+ hash: "291042d40fc9fa8eebf80225b2cae93e"
}
Frame {
msec: 2384
- hash: "1bac7075c10c87a69e71c3859f0db41d"
+ hash: "4e1d6af5f5f9200b6871dfc63ec8d92e"
}
Frame {
msec: 2400
- hash: "0f16f40567729065cf9ecfcc15395a7b"
+ hash: "9c7ccdf3aba3c28717891e7ef4333aa5"
}
Frame {
msec: 2416
- hash: "719f4e776776f0db5c68ae7c6177e9b7"
+ hash: "b5bfa2eeb932ebc8913381bbea62ea9d"
}
Frame {
msec: 2432
- hash: "75172dbf31fd8d706f54748c59099845"
+ hash: "296bc4fcc206c6563630a6de8be9deac"
}
Frame {
msec: 2448
- hash: "d730b550e05167b05350e0e6636dd97d"
+ hash: "57d39578c1ba3a6a21efdef8c9323965"
}
Frame {
msec: 2464
- hash: "e1f33eb5f023d9d42a99f8bc23223c45"
+ hash: "16352e11b7fd763d82d26fcc02da24a7"
}
Frame {
msec: 2480
- hash: "8a4b0df5bed6c7be73c194ce2bb6a271"
+ hash: "02157cc0e120e1b751a9931ff65edb52"
}
Frame {
msec: 2496
- hash: "44a9ea371f12d4ac3a569121a995ae16"
+ hash: "23554c786732241aa9a59304cb4870b1"
}
Frame {
msec: 2512
- hash: "14747e2e9e072210b9d6db50b4f704a1"
+ hash: "e38f68e818b35b23361a7937b7a37bb7"
}
Frame {
msec: 2528
- hash: "eea52abf430f8cc1adc37e7180036584"
+ hash: "dd39869048e6ccfceb1b2882404ef1b3"
}
Frame {
msec: 2544
- hash: "0a9f6b14bc02e929a45bf4ebb736f9d3"
+ hash: "5587d88f5b8fcb3914efedee9ae3a939"
}
Frame {
msec: 2560
- hash: "a68a6eef0fc8754564c47c88b60d9a2a"
+ hash: "5a23991509d69d400249e403cd3fbe4d"
}
Frame {
msec: 2576
- hash: "eeb469e2fbda131d83538055e88ecdf7"
+ hash: "eed425fb759c92ec9966fcdc625321fb"
}
Frame {
msec: 2592
- hash: "0f7b673472050e807c9d935fde5afd83"
+ hash: "7bbf0748f5fbbf48605287342df8e687"
}
Frame {
msec: 2608
- hash: "80c90cce66bdd2324ca98bc591c22b44"
+ hash: "7722f0d3c358d57f3d614f2850fc23f9"
}
Frame {
msec: 2624
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "3ec5ccb1e6ed677617dcb3b699b10d58"
}
Frame {
msec: 2640
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "303a61969566062d5c77a3a1a65c847a"
}
Frame {
msec: 2656
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "aadf4d4cc978b5f88b97a7e453b21024"
}
Frame {
msec: 2672
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "2d24097717f5ec669e29250af78235fd"
}
Frame {
msec: 2688
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "2a58e7ce319cc1cd7dfcd740bfe59517"
}
Frame {
msec: 2704
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "6a21af6c920588f0f709bf91bb56f548"
}
Frame {
msec: 2720
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "f5a63f241f27c6e7cef969dde6790ac3"
}
Frame {
msec: 2736
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "33b64aad57e117f6b170432843c3c996"
}
Frame {
msec: 2752
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 2768
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 2784
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 2800
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 2816
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 2832
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 2848
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 2864
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 2880
- image: "easing.2.png"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 2896
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ image: "easing.3.png"
}
Frame {
msec: 2912
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 2928
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 2944
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 2960
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 2976
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 2992
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 3008
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
}
Frame {
msec: 3024
- hash: "bb8e2ba14526dc5ad74f74e8ff3d96a5"
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3040
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3056
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3072
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3088
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3104
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3120
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3136
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3152
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3168
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3184
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3200
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3216
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3232
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3248
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3264
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3280
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3296
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3312
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3328
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3344
+ hash: "4f12d90df04192e3f28026249015fa41"
+ }
+ Frame {
+ msec: 3360
+ hash: "4f12d90df04192e3f28026249015fa41"
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/easing/easing.qml b/tests/auto/declarative/qmlvisual/animation/easing/easing.qml
index 35b568a32a..625aeeb9b4 100644
--- a/tests/auto/declarative/qmlvisual/animation/easing/easing.qml
+++ b/tests/auto/declarative/qmlvisual/animation/easing/easing.qml
@@ -1,9 +1,10 @@
import QtQuick 1.0
+/* This test just animates y of a block with every easing curve*/
Rectangle {
id: item
- width: 600
- height: layout.height
+ height: 300
+ width: layout.width
color: "white"
resources: [
ListModel {
@@ -133,10 +134,10 @@ Rectangle {
}
}
]
- Column {
+ Row {
id: layout
- anchors.left: item.left
- anchors.right: item.right
+ anchors.top: item.top
+ anchors.bottom: item.bottom
Repeater {
model: easingtypes
Component {
@@ -149,8 +150,8 @@ Rectangle {
color: index & 1 ? "black" : "white"
opacity: 0 // 1 for debugging
}
- width: 120
- height: 18
+ width: 15
+ height: 30
color: index & 1 ? "red" : "blue"
states: [
State {
@@ -158,7 +159,7 @@ Rectangle {
when: !mouse.pressed
PropertyChanges {
target: block
- x: 0
+ y: 0
}
},
State {
@@ -166,7 +167,7 @@ Rectangle {
when: mouse.pressed
PropertyChanges {
target: block
- x: item.width-block.width
+ y: item.height-block.height
}
}
]
@@ -176,7 +177,7 @@ Rectangle {
to: "to"
reversible: true
NumberAnimation {
- properties: "x"
+ properties: "y"
easing.type: type
duration: 1000
}
diff --git a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.0.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.0.png
index f4301d3759..ca37de9d42 100644
--- a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.1.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.1.png
index ceb0e20b17..a2d87ca8a5 100644
--- a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.1.png
+++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.2.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.2.png
index 197c8c0150..1cb2cb893e 100644
--- a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.2.png
+++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.3.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.3.png
index 3a4327ea37..f58deca6d2 100644
--- a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.3.png
+++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.4.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.4.png
index 239771970a..1936361b37 100644
--- a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.4.png
+++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.5.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.5.png
index 70d91a2e54..758c223180 100644
--- a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.5.png
+++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.6.png b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.6.png
new file mode 100644
index 0000000000..b049e63873
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.qml b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.qml
index 58d0b26565..3cbc0745c4 100644
--- a/tests/auto/declarative/qmlvisual/animation/loop/data/loop.qml
+++ b/tests/auto/declarative/qmlvisual/animation/loop/data/loop.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "eff7cc4b163dceb6084270cc589393f1"
+ image: "loop.0.png"
}
Frame {
msec: 32
@@ -242,11 +242,11 @@ VisualTest {
}
Frame {
msec: 960
- image: "loop.0.png"
+ hash: "0de25d97a43cf1a7551c8e8dd1943039"
}
Frame {
msec: 976
- hash: "2cc40e1119060483ae067f3881af0391"
+ image: "loop.1.png"
}
Frame {
msec: 992
@@ -482,11 +482,11 @@ VisualTest {
}
Frame {
msec: 1920
- image: "loop.1.png"
+ hash: "72c0bf8225504e86ff023242b84513a8"
}
Frame {
msec: 1936
- hash: "7f79dd50a0af8e8871191ee80afcad0f"
+ image: "loop.2.png"
}
Frame {
msec: 1952
@@ -722,11 +722,11 @@ VisualTest {
}
Frame {
msec: 2880
- image: "loop.2.png"
+ hash: "d57e1a10e48938e1f7fc219220fe1204"
}
Frame {
msec: 2896
- hash: "df41be1fa564353ceb2088af209610d3"
+ image: "loop.3.png"
}
Frame {
msec: 2912
@@ -962,11 +962,11 @@ VisualTest {
}
Frame {
msec: 3840
- image: "loop.3.png"
+ hash: "fd7157aef6dfb303472cd33b176f91d8"
}
Frame {
msec: 3856
- hash: "e6521a3c74c190c193af2c913e5326e2"
+ image: "loop.4.png"
}
Frame {
msec: 3872
@@ -1202,11 +1202,11 @@ VisualTest {
}
Frame {
msec: 4800
- image: "loop.4.png"
+ hash: "2fb9e078573ebd1a5cf0f615c97f1d20"
}
Frame {
msec: 4816
- hash: "31fa31ed47ea16390be8ea9d41f483e7"
+ image: "loop.5.png"
}
Frame {
msec: 4832
@@ -1442,11 +1442,11 @@ VisualTest {
}
Frame {
msec: 5760
- image: "loop.5.png"
+ hash: "99789b6e168355a3960986c7d1f21f82"
}
Frame {
msec: 5776
- hash: "ebd37ee719ca460480521fd4ec284a3f"
+ image: "loop.6.png"
}
Frame {
msec: 5792
diff --git a/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation-visual.0.png b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation-visual.0.png
new file mode 100644
index 0000000000..a45e421c88
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation-visual.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation-visual.qml
index 8fd59449ac..f4991cc2fc 100644
--- a/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation-visual.qml
+++ b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation-visual.qml
@@ -6,458 +6,238 @@ VisualTest {
}
Frame {
msec: 16
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ image: "parallelAnimation-visual.0.png"
}
Frame {
msec: 32
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "d5eb647077598cab2f3d0c016fbbb419"
}
Frame {
msec: 48
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "d5eb647077598cab2f3d0c016fbbb419"
}
Frame {
msec: 64
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "d5eb647077598cab2f3d0c016fbbb419"
}
Frame {
msec: 80
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "d5eb647077598cab2f3d0c016fbbb419"
}
Frame {
msec: 96
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "d5eb647077598cab2f3d0c016fbbb419"
}
Frame {
msec: 112
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "d5eb647077598cab2f3d0c016fbbb419"
}
Frame {
msec: 128
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "d5eb647077598cab2f3d0c016fbbb419"
}
Frame {
msec: 144
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "aa22c670b17a7372732f9bc85e41a082"
}
Frame {
msec: 160
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "19d09945e45f74d1edd9935e855369b3"
}
Frame {
msec: 176
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "ed391a3b7eba8e98d2f8e372f42e9210"
}
Frame {
msec: 192
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "ac3f7547a9576e0a313e7060ed7431e9"
}
Frame {
msec: 208
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "ddf41ca7289f44990d0d6d41a838bd6f"
}
Frame {
msec: 224
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "42eb324d288b39fa32bf11795d6633f6"
}
Frame {
msec: 240
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "8447851893d2d8f5661731761b6702fa"
}
Frame {
msec: 256
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "7d86bc9b509bcd45eebf2c7e70151424"
}
Frame {
msec: 272
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "c33a6731151fbce1156888129d53b8ec"
}
Frame {
msec: 288
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "028cd521f75d3ecc810a0baa2e857441"
}
Frame {
msec: 304
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "58e565d78d68a69b864c1d7bb8d6180f"
}
Frame {
msec: 320
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "7f21037b48949c2086e7692723a90abf"
}
Frame {
msec: 336
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "5c5c9101a0594bae2f5f8c5bb534a931"
}
Frame {
msec: 352
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "8c010e7bd746d3865e283cc9f5fb83b7"
}
Frame {
msec: 368
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "0a2b5c4aa4e8ca8b264c774e4cc90f23"
}
Frame {
msec: 384
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "bf18f1e0102f471773de1cbb0b24bfc3"
}
Frame {
msec: 400
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "bc8e1d5a6d38e38284313ede359582bc"
}
Frame {
msec: 416
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "3a34e518882bd28d11ebdd1646737a8b"
}
Frame {
msec: 432
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 448
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 464
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 480
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 496
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 512
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 528
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 544
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 560
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 576
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 592
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 608
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 624
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 640
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 656
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 672
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 688
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 704
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 720
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 736
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 752
- hash: "4faa7727bafeea0771f2db62f0141ac9"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 137; y: 74
- modifiers: 0
- sendToViewport: true
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 768
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 784
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 800
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 816
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 832
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 848
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 864
- hash: "4faa7727bafeea0771f2db62f0141ac9"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 137; y: 74
- modifiers: 0
- sendToViewport: true
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 880
- hash: "4faa7727bafeea0771f2db62f0141ac9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 896
- hash: "0fada111cb977c4de8c7499e44714f38"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 912
- hash: "1817e010332117dcddc1a1b1a2caf52d"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 928
- hash: "e4add6bf93479c9bca571419fe2fabf9"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
Frame {
msec: 944
- hash: "d8812e206d2cbf434d58db6a35439a44"
- }
- Frame {
- msec: 960
- image: "parallelAnimation.0.png"
- }
- Frame {
- msec: 976
- hash: "a238178c584aaf2563d29bff927d5bab"
- }
- Frame {
- msec: 992
- hash: "f583e9fe8feda02e796a61c5fed7b0eb"
- }
- Frame {
- msec: 1008
- hash: "b3a1a4fd85912831e551a8c07da1a561"
- }
- Frame {
- msec: 1024
- hash: "f7c111ee4a04af6c1da958f8b56c28ee"
- }
- Frame {
- msec: 1040
- hash: "f53fa374817d81ee44fb98e64e464b36"
- }
- Frame {
- msec: 1056
- hash: "547ddef13cbcaaf57bb1f4e2bb7bc822"
- }
- Frame {
- msec: 1072
- hash: "8b10ccfef926103a6d67d68eee250f83"
- }
- Frame {
- msec: 1088
- hash: "008bbb50dc659e6f5eea15290680edd7"
- }
- Frame {
- msec: 1104
- hash: "0217e3230d3df44363a023d0d7defc5f"
- }
- Frame {
- msec: 1120
- hash: "ab9907a92452de6878f4c346febe705c"
- }
- Frame {
- msec: 1136
- hash: "7bce31f347a7f0598d2d64026c702f3e"
- }
- Frame {
- msec: 1152
- hash: "032080184907bc5b01db7675802d7dbe"
- }
- Frame {
- msec: 1168
- hash: "2cba43a2e5febcc44bfd1379b9cb2591"
- }
- Frame {
- msec: 1184
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1200
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1216
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1232
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1248
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1264
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1280
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1296
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1312
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1328
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1344
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1360
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1376
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1392
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1408
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1424
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1440
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1456
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1472
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1488
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1504
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1520
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1536
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1552
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1568
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1584
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1600
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1616
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1632
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1648
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1664
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1680
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1696
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1712
- hash: "b901a51b5605621adff7b34c61f8f320"
- }
- Frame {
- msec: 1728
- hash: "b901a51b5605621adff7b34c61f8f320"
+ hash: "df113cd7cd502c0ae8cb2dd0f0c209a0"
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.0.png b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.0.png
deleted file mode 100644
index 82c18d7343..0000000000
--- a/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.1.png b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.1.png
deleted file mode 100644
index b9a3b898ca..0000000000
--- a/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.2.png b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.2.png
deleted file mode 100644
index 789615b54b..0000000000
--- a/tests/auto/declarative/qmlvisual/animation/parallelAnimation/data/parallelAnimation.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parallelAnimation/parallelAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/parallelAnimation-visual.qml
index 9a757631bf..6974adbc33 100644
--- a/tests/auto/declarative/qmlvisual/animation/parallelAnimation/parallelAnimation-visual.qml
+++ b/tests/auto/declarative/qmlvisual/animation/parallelAnimation/parallelAnimation-visual.qml
@@ -9,34 +9,35 @@ import QtQuick 1.0
*/
Rectangle {
- width: 400; height: 200
+ width: 200; height: 100
Rectangle {
id: redRect
- width: 100; height: 100
+ width: 50; height: 50
color: "red"
}
Rectangle {
id: redRect2
- width: 100; height: 100
- y: 100
+ width: 50; height: 50
+ y: 50
color: "red"
}
- MouseArea {
- anchors.fill: parent
- onClicked: parent.state = "state1"
+ Timer{
+ interval: 100
+ running: true
+ onTriggered: parent.state = "state1"
}
states: State {
name: "state1"
PropertyChanges {
target: redRect
- x: 300
+ x: 150
color: "purple"
}
PropertyChanges {
target: redRect2
- x: 300
+ x: 150
color: "purple"
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.0.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.0.png
new file mode 100644
index 0000000000..41d51da07a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.1.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.1.png
new file mode 100644
index 0000000000..953e8bd42f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.2.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.2.png
new file mode 100644
index 0000000000..b311ae1802
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.3.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.3.png
new file mode 100644
index 0000000000..41d51da07a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.4.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.4.png
new file mode 100644
index 0000000000..5b68a73b5f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.qml
index edefd01014..42968831a2 100644
--- a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.qml
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation-visual.qml
@@ -6,1658 +6,1218 @@ VisualTest {
}
Frame {
msec: 16
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ image: "parentAnimation-visual.0.png"
}
Frame {
msec: 32
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 48
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 64
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 80
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 96
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 112
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 128
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 144
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 160
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 176
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 192
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 208
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 224
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 240
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 256
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 272
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 288
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 304
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 320
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 336
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 352
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 368
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 181; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 384
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 400
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "234b795b5dd412e4397f132f03f38175"
}
Frame {
msec: 416
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "eca09aebcc15501fd348b9eb19b54ee2"
}
Frame {
msec: 432
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "6ab63f771ac705439157cf0ed84bc274"
}
Frame {
msec: 448
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "42212db87d03c35e96e38ac200bd9ec2"
}
Frame {
msec: 464
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "46a79ff030b89a4c8791fd853a96b64f"
}
Frame {
msec: 480
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "cdfee36535e491328f5045b6f3378b64"
}
Frame {
msec: 496
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "5cfc7db34110aa39f296fe4475de0c08"
}
Frame {
msec: 512
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "df59e3aa557a661ce513523c3059c41d"
}
Frame {
msec: 528
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "2d2f8fc7d695bcd20ef682b25a22186a"
}
Frame {
msec: 544
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "daac5f2d4b451501669a7767d0a19ccc"
}
Frame {
msec: 560
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "e10801e6c7086eac3eaaa48a3d39bb95"
}
Frame {
msec: 576
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "a5fdf57b20bf4d4aad99f02a13bbfc66"
}
Frame {
msec: 592
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "b48721b169b4a1118b040a9e41c252a1"
}
Frame {
msec: 608
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "242425f06d5706f0483e49812bfb4718"
}
Frame {
msec: 624
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "33bdd4d71b1736055d821ee5040bfaed"
}
Frame {
msec: 640
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 656
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 672
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 688
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 704
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 720
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 736
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 752
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 768
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 784
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 800
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 816
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 832
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 848
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 864
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 880
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 896
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 912
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 928
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 944
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 960
- image: "parentAnimation.0.png"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 976
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ image: "parentAnimation-visual.1.png"
}
Frame {
msec: 992
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 1008
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 1024
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 1040
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 1056
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 1072
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 1088
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 1104
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 1120
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 1136
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 181; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1152
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 1168
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "b985be8701f0bbb73facfe745d43e32f"
}
Frame {
msec: 1184
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "6b3e91ff248516656fd2efe26db6c900"
}
Frame {
msec: 1200
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "40bd9296de59b3abc5b7a204a6ecff3f"
}
Frame {
msec: 1216
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "615817b53baf0d0cd290b18ad9deee4d"
}
Frame {
msec: 1232
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "c990d9afcebfc4dcc35457d555d7e9cb"
}
Frame {
msec: 1248
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "2d1a4687abe3fd7b1911f8e5020c4378"
}
Frame {
msec: 1264
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "b5e1399f1924dafa6782da6b739af882"
}
Frame {
msec: 1280
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "8686a36600410f4f39f558eadfb3479f"
}
Frame {
msec: 1296
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "39f1f7573198f86e1452211f62dc7f1a"
}
Frame {
msec: 1312
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbfbbcb5637c0f90396150abb0aecb14"
}
Frame {
msec: 1328
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "2c071570228d5a121a64c4c01c443ab2"
}
Frame {
msec: 1344
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "4e076ea1d8f566eca9aa5eb55ce02098"
}
Frame {
msec: 1360
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "72fd6c15e76fd6d74a9584be1e82399b"
}
Frame {
msec: 1376
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "b519ad1958ea69fc4682c06e83f22c42"
}
Frame {
msec: 1392
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "155b39717f45fe5d36348c499635e759"
}
Frame {
msec: 1408
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1424
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1440
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1456
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1472
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1488
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1504
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1520
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1536
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 237; y: 299
- modifiers: 0
- sendToViewport: true
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1552
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1568
- hash: "633b5668278295faa57d0cfffe8a29cb"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1584
- hash: "ccbf4505e0f05547d2f7ce874ab941c0"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1600
- hash: "be904489959fa365badb642fa9e85922"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1616
- hash: "de6a97ac6e2677feb223336199cbffe1"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1632
- hash: "997b0a547336a9bb6a67cd9beffe1831"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1648
- hash: "ac9a6e111050b8a7c4492f06c33d3969"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1664
- hash: "7313c0d2ee06e393f486670222c29bb4"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 181; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1680
- hash: "24cea420d03d1fdcddb1b9cf5112cbee"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 1696
- hash: "764688785eeaa01e9c84821476911edb"
+ hash: "234b795b5dd412e4397f132f03f38175"
}
Frame {
msec: 1712
- hash: "b24ae0cb512abfd2606ff9c20a6751bf"
+ hash: "eca09aebcc15501fd348b9eb19b54ee2"
}
Frame {
msec: 1728
- hash: "f1daed3391f10e27435a54222df8d0ab"
+ hash: "6ab63f771ac705439157cf0ed84bc274"
}
Frame {
msec: 1744
- hash: "99704e182267f2c12d0215b9c03f4d68"
+ hash: "42212db87d03c35e96e38ac200bd9ec2"
}
Frame {
msec: 1760
- hash: "143cd9259a41b8af5d41a5b2aaf8de64"
+ hash: "46a79ff030b89a4c8791fd853a96b64f"
}
Frame {
msec: 1776
- hash: "b5f0a0f838b5870c162a24cd767f068b"
+ hash: "cdfee36535e491328f5045b6f3378b64"
}
Frame {
msec: 1792
- hash: "c5c8cdcbfab7466e447eaff582bf7312"
+ hash: "5cfc7db34110aa39f296fe4475de0c08"
}
Frame {
msec: 1808
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "df59e3aa557a661ce513523c3059c41d"
}
Frame {
msec: 1824
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "2d2f8fc7d695bcd20ef682b25a22186a"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 181; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1840
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "2d2f8fc7d695bcd20ef682b25a22186a"
}
Frame {
msec: 1856
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "f611eb7652ce078c81dba533c6c0df5e"
}
Frame {
msec: 1872
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "2a4f853f3eeef5cbacc8fdacfdab3442"
}
Frame {
msec: 1888
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "86a201ea5c4af2a28b4047c0732d33c8"
}
Frame {
msec: 1904
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "e87f15694846a75ff3801aff063d35c7"
}
Frame {
msec: 1920
- image: "parentAnimation.1.png"
+ hash: "c3d42dd4ae49a843f32a3dcc818d0b68"
}
Frame {
msec: 1936
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ image: "parentAnimation-visual.2.png"
}
Frame {
msec: 1952
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "46a79ff030b89a4c8791fd853a96b64f"
+ }
+ Mouse {
+ type: 4
+ button: 1
+ buttons: 1
+ x: 181; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1968
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "46a79ff030b89a4c8791fd853a96b64f"
}
Frame {
msec: 1984
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "079898fb015f88ba9d7cd73f356d2c37"
}
Frame {
msec: 2000
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "5d03ca6d09d241bd686c878d53d9f269"
}
Frame {
msec: 2016
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "d986a00663eb3dafb24bf67b3d6c7a04"
}
Frame {
msec: 2032
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "4e609d8b8921428909a5b78ea1db78b9"
}
Frame {
msec: 2048
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "f611eb7652ce078c81dba533c6c0df5e"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 181; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2064
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "f611eb7652ce078c81dba533c6c0df5e"
}
Frame {
msec: 2080
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "2a4f853f3eeef5cbacc8fdacfdab3442"
}
Frame {
msec: 2096
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "86a201ea5c4af2a28b4047c0732d33c8"
}
Frame {
msec: 2112
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "2d498b4b440cd6bce6e02102dc62996d"
}
Frame {
msec: 2128
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "53c55f9fc1aab5f4c552387e8cae749e"
}
Frame {
msec: 2144
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "8d188a1ab2be377198142f3037d15fc3"
}
Frame {
msec: 2160
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "66550b5102e2803fb3cbd85f4b2543e0"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 181; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2176
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "66550b5102e2803fb3cbd85f4b2543e0"
}
Frame {
msec: 2192
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "e495d8163793da7503b9d29c6721ff6e"
}
Frame {
msec: 2208
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "065e5775930146539ae589782f4e4352"
}
Frame {
msec: 2224
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "7861ff76ec52f1c0408636f7b53b30b6"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 181; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2240
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "7861ff76ec52f1c0408636f7b53b30b6"
}
Frame {
msec: 2256
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "e87f15694846a75ff3801aff063d35c7"
}
Frame {
msec: 2272
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "67edcabe94a3968bbfe3dd1b0b2cd273"
}
Frame {
msec: 2288
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "a0f8e97d347970aca868538f4294a7ce"
}
Frame {
msec: 2304
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "c89421473e754235e209f35dea9afccb"
+ }
+ Mouse {
+ type: 4
+ button: 1
+ buttons: 1
+ x: 181; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2320
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "c89421473e754235e209f35dea9afccb"
}
Frame {
msec: 2336
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "cdfee36535e491328f5045b6f3378b64"
}
Frame {
msec: 2352
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "ab31653cb8a31f753782ffff045e2b07"
}
Frame {
msec: 2368
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "86a201ea5c4af2a28b4047c0732d33c8"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 181; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2384
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "86a201ea5c4af2a28b4047c0732d33c8"
}
Frame {
msec: 2400
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "4bdc37cd35c71d8a25745cb0ff664fea"
}
Frame {
msec: 2416
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "5d03ca6d09d241bd686c878d53d9f269"
}
Frame {
msec: 2432
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "700ff7c6c4ae97b34309bd020807a0e1"
}
Frame {
msec: 2448
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "e812a79fb65142f6855974f87aabdc90"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 181; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2464
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "e812a79fb65142f6855974f87aabdc90"
}
Frame {
msec: 2480
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 237; y: 299
- modifiers: 0
- sendToViewport: true
+ hash: "795809181debf916afbef73c41a66dee"
}
Frame {
msec: 2496
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
+ hash: "b61c0e25fa9f3c15f1caf91c25937d75"
}
Frame {
msec: 2512
- hash: "eaeeb8c51d43e3c38ff7dde632d1f9c8"
+ hash: "9dd01662ee9d0add862b3afadac72929"
}
Frame {
msec: 2528
- hash: "ec0e68c2e7a75fedd1091ce633dadd4f"
+ hash: "0a96c8fec8f6509dbbe16480fe8ebfb7"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 181; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2544
- hash: "a5d60efc176dee9083a2d746e7ad8315"
+ hash: "0a96c8fec8f6509dbbe16480fe8ebfb7"
}
Frame {
msec: 2560
- hash: "48bcbbacf413080247f818e35e496e04"
+ hash: "ce67814de0091d5ab5cc2172a830bc93"
}
Frame {
msec: 2576
- hash: "c521af8efa19fbac39119ad75cd469f5"
+ hash: "d986a00663eb3dafb24bf67b3d6c7a04"
}
Frame {
msec: 2592
- hash: "0e74613c67fc9d9acb21a3d382c5efcd"
+ hash: "69e21aefb8bdbfaaa5e1e7969d827ec3"
}
Frame {
msec: 2608
- hash: "eeb3f4467ebd7ee678c3b7371db28519"
+ hash: "cdfee36535e491328f5045b6f3378b64"
}
Frame {
msec: 2624
- hash: "9c5b9009a35b74d0ddec8fec85f204bf"
+ hash: "cdb20c4866bdf55bd454864a31676053"
}
Frame {
msec: 2640
- hash: "aefc70824e23428aebf0a40830a57469"
+ hash: "46a79ff030b89a4c8791fd853a96b64f"
}
Frame {
msec: 2656
- hash: "1fa9c23760193b74b0063b4e4c434070"
+ hash: "c2535eb78e0cf46151f15cd2ec7c4838"
}
Frame {
msec: 2672
- hash: "8091700d4729163bd87521385853e608"
+ hash: "7a1455f07b916a63e43b89da4311a033"
}
Frame {
msec: 2688
- hash: "a13558e609570f9390f20a85d244fa22"
+ hash: "f9a2c0ef913ecd7026d9775648a063d6"
}
Frame {
msec: 2704
- hash: "7be5e3609bbeb9a2c1df7d52f3953d4d"
+ hash: "5da8f6f7d847c174da393015dfc33537"
}
Frame {
msec: 2720
- hash: "51c8ae31f858121d86ef09cc9a5c5ef3"
+ hash: "1d5f20cb721f1e5cb067095bee1b51fe"
}
Frame {
msec: 2736
- hash: "84ce8f39207f4b07c2c3323425a8c238"
+ hash: "ca7f5fa76264d1eb1182e46e371ee81c"
}
Frame {
msec: 2752
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "2467dc0ffdb051e092c5bfd5d371e6b6"
}
Frame {
msec: 2768
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "0b04e516eb08978914c39ec2d742e161"
}
Frame {
msec: 2784
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "5abec56587da54876c204d2e32efe7ad"
}
Frame {
msec: 2800
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 2816
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 2832
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 2848
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 2864
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 2880
- image: "parentAnimation.2.png"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 2896
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ image: "parentAnimation-visual.3.png"
}
Frame {
msec: 2912
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 2928
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 2944
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 2960
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 2976
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 2992
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 3008
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 3024
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 3040
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 3056
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 3072
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 3088
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 3104
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 181; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3120
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 3136
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "234b795b5dd412e4397f132f03f38175"
}
Frame {
msec: 3152
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "eca09aebcc15501fd348b9eb19b54ee2"
}
Frame {
msec: 3168
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "6ab63f771ac705439157cf0ed84bc274"
}
Frame {
msec: 3184
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "42212db87d03c35e96e38ac200bd9ec2"
}
Frame {
msec: 3200
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "46a79ff030b89a4c8791fd853a96b64f"
}
Frame {
msec: 3216
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "cdfee36535e491328f5045b6f3378b64"
}
Frame {
msec: 3232
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "5cfc7db34110aa39f296fe4475de0c08"
}
Frame {
msec: 3248
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "df59e3aa557a661ce513523c3059c41d"
}
Frame {
msec: 3264
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "2d2f8fc7d695bcd20ef682b25a22186a"
}
Frame {
msec: 3280
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "daac5f2d4b451501669a7767d0a19ccc"
}
Frame {
msec: 3296
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "e10801e6c7086eac3eaaa48a3d39bb95"
}
Frame {
msec: 3312
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "a5fdf57b20bf4d4aad99f02a13bbfc66"
}
Frame {
msec: 3328
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "b48721b169b4a1118b040a9e41c252a1"
}
Frame {
msec: 3344
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "242425f06d5706f0483e49812bfb4718"
}
Frame {
msec: 3360
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "33bdd4d71b1736055d821ee5040bfaed"
}
Frame {
msec: 3376
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 237; y: 299
- modifiers: 0
- sendToViewport: true
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3392
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3408
- hash: "633b5668278295faa57d0cfffe8a29cb"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3424
- hash: "ccbf4505e0f05547d2f7ce874ab941c0"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3440
- hash: "be904489959fa365badb642fa9e85922"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3456
- hash: "de6a97ac6e2677feb223336199cbffe1"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3472
- hash: "997b0a547336a9bb6a67cd9beffe1831"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3488
- hash: "ac9a6e111050b8a7c4492f06c33d3969"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3504
- hash: "7313c0d2ee06e393f486670222c29bb4"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3520
- hash: "24cea420d03d1fdcddb1b9cf5112cbee"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3536
- hash: "764688785eeaa01e9c84821476911edb"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3552
- hash: "b24ae0cb512abfd2606ff9c20a6751bf"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 237; y: 299
- modifiers: 0
- sendToViewport: true
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3568
- hash: "b24ae0cb512abfd2606ff9c20a6751bf"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3584
- hash: "d7bf1b48f1a03974e7f095468e07f037"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3600
- hash: "a59ab4fe1c22d27b5cdde949cf90e6f4"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3616
- hash: "7c3082720e65b8a6217bf5a5fe4d48c0"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3632
- hash: "350d1ff24fb8fba0ab8a6694d99544b3"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 181; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3648
- hash: "81d17a62c33d79ed25968ec47771d292"
+ hash: "dce97e76b2541bbee52b0df1c1bb3d44"
}
Frame {
msec: 3664
- hash: "43fd3ef88bd7a2e5bf4546f088783077"
+ hash: "b985be8701f0bbb73facfe745d43e32f"
}
Frame {
msec: 3680
- hash: "041938ad2e023202db18df28f2329c8f"
+ hash: "6b3e91ff248516656fd2efe26db6c900"
}
Frame {
msec: 3696
- hash: "ec8677eae06cbf77a9508953325b179e"
- }
- Mouse {
- type: 4
- button: 1
- buttons: 1
- x: 237; y: 299
- modifiers: 0
- sendToViewport: true
+ hash: "40bd9296de59b3abc5b7a204a6ecff3f"
}
Frame {
msec: 3712
- hash: "ec8677eae06cbf77a9508953325b179e"
+ hash: "615817b53baf0d0cd290b18ad9deee4d"
}
Frame {
msec: 3728
- hash: "453026339c3901ee286831b4b41088f6"
+ hash: "c990d9afcebfc4dcc35457d555d7e9cb"
}
Frame {
msec: 3744
- hash: "d58a7a41ade691cc0acfb0303bfc3b68"
+ hash: "2d1a4687abe3fd7b1911f8e5020c4378"
}
Frame {
msec: 3760
- hash: "a200b05ef3d7e39e11513fd2f8ff1497"
+ hash: "b5e1399f1924dafa6782da6b739af882"
}
Frame {
msec: 3776
- hash: "faa1223975acdf2d4b48045d7f2ce445"
+ hash: "8686a36600410f4f39f558eadfb3479f"
}
Frame {
msec: 3792
- hash: "964d9b80d82d0fe3d3fb328a1661a60e"
+ hash: "39f1f7573198f86e1452211f62dc7f1a"
}
Frame {
msec: 3808
- hash: "705871bc384de93100354acb19b371b0"
+ hash: "fbfbbcb5637c0f90396150abb0aecb14"
}
Frame {
msec: 3824
- hash: "1a4480463adfc5a3d525916b03c2c3ce"
+ hash: "2c071570228d5a121a64c4c01c443ab2"
}
Frame {
msec: 3840
- image: "parentAnimation.3.png"
+ hash: "4e076ea1d8f566eca9aa5eb55ce02098"
}
Frame {
msec: 3856
- hash: "9a55bdf428f45f02d9c8cf414dcd7754"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 237; y: 299
- modifiers: 0
- sendToViewport: true
+ image: "parentAnimation-visual.4.png"
}
Frame {
msec: 3872
- hash: "9a55bdf428f45f02d9c8cf414dcd7754"
+ hash: "b519ad1958ea69fc4682c06e83f22c42"
}
Frame {
msec: 3888
- hash: "0f6d82d02ce7d79a1bdf6bf81791f321"
+ hash: "155b39717f45fe5d36348c499635e759"
}
Frame {
msec: 3904
- hash: "b145b9d299714020686069baec11cb71"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 3920
- hash: "5dbf5e4151c01f10cf23b07ca1df56ab"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 3936
- hash: "822d4397ac514673ca1015ad05c9b4ac"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 3952
- hash: "461d35e865153d22e9a67bb0ffddefb7"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 3968
- hash: "676fff498e6879144090d5596056c6c8"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 3984
- hash: "854da7ed627237250e20b263f9eb9d90"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4000
- hash: "157ec877797883d329ff329537205d02"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4016
- hash: "613669ca60240fcc490d548fe802390d"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4032
- hash: "803e84f027c773db96f9530511e5fedb"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 237; y: 299
- modifiers: 0
- sendToViewport: true
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4048
- hash: "803e84f027c773db96f9530511e5fedb"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4064
- hash: "f47cfd1f1094b782c08490be2f49c6ed"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4080
- hash: "db5953f3ee4e2db87e33b85464167f74"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4096
- hash: "8313cb750b9abc586a43b9422de08f53"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4112
- hash: "deb390ce992fee85c56733168b4bd1ec"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4128
- hash: "29a1cda3647c49731e9adcd107a2d13c"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4144
- hash: "bfa17a3afa06699107b217df6e4aed43"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4160
- hash: "8e639ef01ab6d8876c3f40adc44928c6"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4176
- hash: "14038aedf42de0ca62d872d317018ee0"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4192
- hash: "c1288465163d44ed40e28f21e0298ea6"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4208
- hash: "d6915f22a905737488d27e8138002f31"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4224
- hash: "5b1621451a5a3af40302603ec31bb8bb"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4240
- hash: "16fd73c0cb615cc717cdc4a6787471c2"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 237; y: 299
- modifiers: 0
- sendToViewport: true
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4256
- hash: "16fd73c0cb615cc717cdc4a6787471c2"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4272
- hash: "db5caf42e11705ecdb2006e1ed6b0c4f"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4288
- hash: "4b7e51e4e9fb1dacb32aac11a4a46ceb"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4304
- hash: "63c93cda9892f733809125991af997b6"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4320
- hash: "0e74613c67fc9d9acb21a3d382c5efcd"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4336
- hash: "58e813a6619828b6c9ec9cf300ff0e2d"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4352
- hash: "181a6e334d745381f091bf1b55fc1690"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4368
- hash: "f25bbc9ddc8cc72036c49d50b45bece8"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4384
- hash: "88e8f0496debfee6bc2426895fe1c3d9"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4400
- hash: "db5953f3ee4e2db87e33b85464167f74"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
Frame {
msec: 4416
- hash: "9818a899adb916b6ba5f7537697ef062"
- }
- Frame {
- msec: 4432
- hash: "3842f40093d70089a4004fb803c05981"
- }
- Frame {
- msec: 4448
- hash: "be904489959fa365badb642fa9e85922"
- }
- Frame {
- msec: 4464
- hash: "cbae27751ff0ebce4fcc164564f4cf1b"
- }
- Frame {
- msec: 4480
- hash: "3a1b468bd3fd747bbe6b069426b170a9"
- }
- Frame {
- msec: 4496
- hash: "57fbcd580eb1607a2a7526a65842dfeb"
- }
- Frame {
- msec: 4512
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 4528
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 4544
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 4560
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 4576
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 4592
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 4608
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 4624
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 237; y: 299
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 4640
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 4656
- hash: "633b5668278295faa57d0cfffe8a29cb"
- }
- Frame {
- msec: 4672
- hash: "ccbf4505e0f05547d2f7ce874ab941c0"
- }
- Frame {
- msec: 4688
- hash: "be904489959fa365badb642fa9e85922"
- }
- Frame {
- msec: 4704
- hash: "de6a97ac6e2677feb223336199cbffe1"
- }
- Frame {
- msec: 4720
- hash: "997b0a547336a9bb6a67cd9beffe1831"
- }
- Frame {
- msec: 4736
- hash: "ac9a6e111050b8a7c4492f06c33d3969"
- }
- Frame {
- msec: 4752
- hash: "7313c0d2ee06e393f486670222c29bb4"
- }
- Frame {
- msec: 4768
- hash: "24cea420d03d1fdcddb1b9cf5112cbee"
- }
- Frame {
- msec: 4784
- hash: "764688785eeaa01e9c84821476911edb"
- }
- Frame {
- msec: 4800
- image: "parentAnimation.4.png"
- }
- Frame {
- msec: 4816
- hash: "f1daed3391f10e27435a54222df8d0ab"
- }
- Frame {
- msec: 4832
- hash: "99704e182267f2c12d0215b9c03f4d68"
- }
- Frame {
- msec: 4848
- hash: "143cd9259a41b8af5d41a5b2aaf8de64"
- }
- Frame {
- msec: 4864
- hash: "b5f0a0f838b5870c162a24cd767f068b"
- }
- Frame {
- msec: 4880
- hash: "c5c8cdcbfab7466e447eaff582bf7312"
- }
- Frame {
- msec: 4896
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 4912
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 4928
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 4944
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 4960
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 4976
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 4992
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5008
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5024
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5040
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5056
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5072
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5088
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5104
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5120
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5136
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5152
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5168
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5184
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5200
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5216
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5232
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5248
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5264
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5280
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5296
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5312
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5328
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5344
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 237; y: 299
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5360
- hash: "f1bc451d1f62cfb5dd60a7ea483d3844"
- }
- Frame {
- msec: 5376
- hash: "eaeeb8c51d43e3c38ff7dde632d1f9c8"
- }
- Frame {
- msec: 5392
- hash: "ec0e68c2e7a75fedd1091ce633dadd4f"
- }
- Frame {
- msec: 5408
- hash: "a5d60efc176dee9083a2d746e7ad8315"
- }
- Frame {
- msec: 5424
- hash: "48bcbbacf413080247f818e35e496e04"
- }
- Frame {
- msec: 5440
- hash: "c521af8efa19fbac39119ad75cd469f5"
- }
- Frame {
- msec: 5456
- hash: "0e74613c67fc9d9acb21a3d382c5efcd"
- }
- Frame {
- msec: 5472
- hash: "eeb3f4467ebd7ee678c3b7371db28519"
- }
- Frame {
- msec: 5488
- hash: "9c5b9009a35b74d0ddec8fec85f204bf"
- }
- Frame {
- msec: 5504
- hash: "aefc70824e23428aebf0a40830a57469"
- }
- Frame {
- msec: 5520
- hash: "1fa9c23760193b74b0063b4e4c434070"
- }
- Frame {
- msec: 5536
- hash: "8091700d4729163bd87521385853e608"
- }
- Frame {
- msec: 5552
- hash: "a13558e609570f9390f20a85d244fa22"
- }
- Frame {
- msec: 5568
- hash: "7be5e3609bbeb9a2c1df7d52f3953d4d"
- }
- Frame {
- msec: 5584
- hash: "51c8ae31f858121d86ef09cc9a5c5ef3"
- }
- Frame {
- msec: 5600
- hash: "84ce8f39207f4b07c2c3323425a8c238"
- }
- Frame {
- msec: 5616
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5632
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5648
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5664
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5680
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5696
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5712
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5728
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5744
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5760
- image: "parentAnimation.5.png"
- }
- Frame {
- msec: 5776
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5792
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5808
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5824
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5840
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5856
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5872
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5888
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5904
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5920
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5936
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5952
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5968
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 5984
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6000
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6016
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 6032
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6048
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6064
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6080
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6096
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6112
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6128
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6144
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6160
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6176
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6192
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6208
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6224
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6240
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6256
- hash: "4135271d78a5c63c3837a09c86f35ebe"
- }
- Frame {
- msec: 6272
- hash: "4135271d78a5c63c3837a09c86f35ebe"
+ hash: "fbf01bb217e393b79a6a2c567750de89"
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.0.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.0.png
deleted file mode 100644
index 7d41abcca0..0000000000
--- a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.1.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.1.png
deleted file mode 100644
index 16b95ab3da..0000000000
--- a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.2.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.2.png
deleted file mode 100644
index 7d41abcca0..0000000000
--- a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.3.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.3.png
deleted file mode 100644
index 800bf12b5a..0000000000
--- a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.4.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.4.png
deleted file mode 100644
index d0155bbb81..0000000000
--- a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.5.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.5.png
deleted file mode 100644
index 7d41abcca0..0000000000
--- a/tests/auto/declarative/qmlvisual/animation/parentAnimation/data/parentAnimation.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation/parentAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/parentAnimation/parentAnimation-visual.qml
index 42cec3a46b..025aa80020 100644
--- a/tests/auto/declarative/qmlvisual/animation/parentAnimation/parentAnimation-visual.qml
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation/parentAnimation-visual.qml
@@ -10,14 +10,14 @@ then a final full transition.
*/
Rectangle {
- width: 800;
- height: 480;
+ width: 400;
+ height: 240;
color: "black";
Rectangle {
id: gr
color: "green"
- width: 100; height: 100
+ width: 50; height: 50
}
MouseArea {
@@ -27,21 +27,21 @@ Rectangle {
Rectangle {
id: np
- x: 300
- width: 300; height: 300
+ x: 150
+ width: 150; height: 150
color: "yellow"
clip: true
Rectangle {
color: "red"
- x: 100; y: 100; height: 100; width: 100
+ x: 50; y: 50; height: 50; width: 50
}
}
Rectangle {
id: vp
- x: 200; y: 200
- width: 100; height: 100
+ x: 100; y: 100
+ width: 50; height: 50
color: "blue"
rotation: 45
scale: 2
@@ -53,7 +53,7 @@ Rectangle {
ParentChange {
target: gr
parent: np
- x: 100; y: 100; width: 200;
+ x: 50; y: 50; width: 100;
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.0.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.0.png
index 135911c2fa..03ae932a97 100644
--- a/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.1.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.1.png
index 0d71292023..175adc3cfb 100644
--- a/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.1.png
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.2.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.2.png
index 920d992319..4dbe6a4f6e 100644
--- a/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.2.png
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.3.png b/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.3.png
index 1c4d89e2bb..b9ea6b8722 100644
--- a/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.3.png
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.qml b/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.qml
index 9e1b923867..1d7817b6da 100644
--- a/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.qml
+++ b/tests/auto/declarative/qmlvisual/animation/parentAnimation2/data/parentAnimation2.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "b3bfd7a06d3e246f4256ab5a267360b0"
+ image: "parentAnimation2.0.png"
}
Frame {
msec: 32
@@ -258,11 +258,11 @@ VisualTest {
}
Frame {
msec: 960
- image: "parentAnimation2.0.png"
+ hash: "5983f3e0800859134bff0182fe9e0142"
}
Frame {
msec: 976
- hash: "95b4fe1e5eeffe1673e199308e8ce76c"
+ image: "parentAnimation2.1.png"
}
Frame {
msec: 992
@@ -514,11 +514,11 @@ VisualTest {
}
Frame {
msec: 1920
- image: "parentAnimation2.1.png"
+ hash: "3210f97ac2799d84fc1d872c4c2994f7"
}
Frame {
msec: 1936
- hash: "60ed700e49bf2c51aba9b44400b56294"
+ image: "parentAnimation2.2.png"
}
Frame {
msec: 1952
@@ -762,11 +762,11 @@ VisualTest {
}
Frame {
msec: 2880
- image: "parentAnimation2.2.png"
+ hash: "acab4a79f22ebc8a45759ae282e8f3db"
}
Frame {
msec: 2896
- hash: "acab4a79f22ebc8a45759ae282e8f3db"
+ image: "parentAnimation2.3.png"
}
Mouse {
type: 3
@@ -1018,6 +1018,6 @@ VisualTest {
}
Frame {
msec: 3840
- image: "parentAnimation2.3.png"
+ hash: "b3bfd7a06d3e246f4256ab5a267360b0"
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.0.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.0.png
new file mode 100644
index 0000000000..cb0971a6ef
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.1.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.1.png
new file mode 100644
index 0000000000..c579dedaa8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.2.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.2.png
new file mode 100644
index 0000000000..49e2b9fe13
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.3.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.3.png
new file mode 100644
index 0000000000..cb0971a6ef
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.4.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.4.png
new file mode 100644
index 0000000000..e62485b362
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.5.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.5.png
new file mode 100644
index 0000000000..61e746317d
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.6.png b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.6.png
new file mode 100644
index 0000000000..8c31e7da5a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.qml
index 8e1e1d7636..34deb9b186 100644
--- a/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.qml
+++ b/tests/auto/declarative/qmlvisual/animation/pauseAnimation/data/pauseAnimation-visual.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "a350b70c5238a340e85fd4a3ec0390a3"
+ image: "pauseAnimation-visual.0.png"
}
Frame {
msec: 32
@@ -242,11 +242,11 @@ VisualTest {
}
Frame {
msec: 960
- image: "pauseAnimation.0.png"
+ hash: "f1e0301430d153fb9d15eaffdfcd5c58"
}
Frame {
msec: 976
- hash: "5f18a81707f23d377e81a27c1fc41ce9"
+ image: "pauseAnimation-visual.1.png"
}
Frame {
msec: 992
@@ -482,11 +482,11 @@ VisualTest {
}
Frame {
msec: 1920
- image: "pauseAnimation.1.png"
+ hash: "3042003c067b257de2cb32f650dde693"
}
Frame {
msec: 1936
- hash: "a725b59b4947357546bbfc7df3d830af"
+ image: "pauseAnimation-visual.2.png"
}
Frame {
msec: 1952
@@ -722,11 +722,11 @@ VisualTest {
}
Frame {
msec: 2880
- image: "pauseAnimation.2.png"
+ hash: "a350b70c5238a340e85fd4a3ec0390a3"
}
Frame {
msec: 2896
- hash: "a350b70c5238a340e85fd4a3ec0390a3"
+ image: "pauseAnimation-visual.3.png"
}
Frame {
msec: 2912
@@ -962,11 +962,11 @@ VisualTest {
}
Frame {
msec: 3840
- image: "pauseAnimation.3.png"
+ hash: "7c27ef654e645679c90520d6cf00b0c4"
}
Frame {
msec: 3856
- hash: "20258f07c613958c32f783466771391a"
+ image: "pauseAnimation-visual.4.png"
}
Frame {
msec: 3872
@@ -1202,11 +1202,11 @@ VisualTest {
}
Frame {
msec: 4800
- image: "pauseAnimation.4.png"
+ hash: "336d31586171f22d541b989d24b95cbb"
}
Frame {
msec: 4816
- hash: "f0d8132489c2f2ef760e905b3c093726"
+ image: "pauseAnimation-visual.5.png"
}
Frame {
msec: 4832
@@ -1442,11 +1442,11 @@ VisualTest {
}
Frame {
msec: 5760
- image: "pauseAnimation.5.png"
+ hash: "ce57e27af329eba4fac3ab891f0407ce"
}
Frame {
msec: 5776
- hash: "41ba853c3403f68a23e708df82e21c53"
+ image: "pauseAnimation-visual.6.png"
}
Frame {
msec: 5792
diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.0.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.0.png
index 64d6b06895..7d2b66ef46 100644
--- a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.1.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.1.png
index f7fce15f46..a02c063eac 100644
--- a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.1.png
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.2.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.2.png
index 3080df5e30..1af3243c15 100644
--- a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.2.png
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.3.png b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.3.png
new file mode 100644
index 0000000000..7d2b66ef46
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml
index 36b39fa678..3c24f5903d 100644
--- a/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/data/propertyAction-visual.qml
@@ -6,934 +6,810 @@ VisualTest {
}
Frame {
msec: 16
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ image: "propertyAction-visual.0.png"
}
Frame {
msec: 32
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 48
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 64
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 80
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 96
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 112
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 128
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 144
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 160
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 176
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 192
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 208
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 224
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 240
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 256
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 272
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 288
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 304
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 320
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 336
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 352
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 368
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 384
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 400
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 416
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 432
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 448
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 464
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 480
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 496
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 512
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 528
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 544
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 560
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 576
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 592
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 608
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 624
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 640
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 656
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 672
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 688
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 704
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 720
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 736
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 27; y: 19
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 752
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 768
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "a858eee4b2753915ec84d2ffa098260c"
}
Frame {
msec: 784
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "a858eee4b2753915ec84d2ffa098260c"
}
Frame {
msec: 800
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "a858eee4b2753915ec84d2ffa098260c"
}
Frame {
msec: 816
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "e8e6b7d7f81895ae556936ba5e0848a5"
}
Frame {
msec: 832
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "b6ee5f74a5e91bcf6b9aad3cbb5d683f"
}
Frame {
msec: 848
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "b6ee5f74a5e91bcf6b9aad3cbb5d683f"
}
Frame {
msec: 864
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "02e3d071d5fc0832041688950d3610b8"
}
Frame {
msec: 880
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "aad38d9678bdeeed750f381a40e22a61"
}
Frame {
msec: 896
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "a8753ac7d026d94224c488fa16d5774a"
}
Frame {
msec: 912
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "9de26e2d70bd285116df820ca87c2e4d"
}
Frame {
msec: 928
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "985c6ee9cb5f259135a4eeb3c2f1d271"
}
Frame {
msec: 944
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "985c6ee9cb5f259135a4eeb3c2f1d271"
}
Frame {
msec: 960
- image: "propertyAction-visual.0.png"
+ hash: "4ba1bf769de9bc45630485d06642dc30"
}
Frame {
msec: 976
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ image: "propertyAction-visual.1.png"
}
Frame {
msec: 992
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "4ba1bf769de9bc45630485d06642dc30"
}
Frame {
msec: 1008
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "9dbe8b62ec467f5b95b4bb8ab9fbab68"
}
Frame {
msec: 1024
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "9dbe8b62ec467f5b95b4bb8ab9fbab68"
}
Frame {
msec: 1040
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "81c157daf3086b21ea2ba39277a31f3d"
}
Frame {
msec: 1056
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "a19d2e389a71472929fed6691dbe40ec"
}
Frame {
msec: 1072
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "0fc67582f36db63dc3df1027bf7ad90b"
}
Frame {
msec: 1088
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c53f1a42113fdc2e525c43460ed40f81"
}
Frame {
msec: 1104
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c8968753e599419bc2d70adb95b643f2"
}
Frame {
msec: 1120
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "449fbda0dc3e45d022832f9d15203466"
}
Frame {
msec: 1136
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "7778e32071419dd53920536bac1eb21a"
}
Frame {
msec: 1152
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "279510c6ca5429a22855a08e88a1b4b5"
}
Frame {
msec: 1168
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "ac86ca53dc52c7c54bd993faa2daf0b9"
}
Frame {
msec: 1184
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "7e20361da8a49f9699e290673bdd60ee"
}
Frame {
msec: 1200
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "aa5f6e188212cee2dbf8d1e52692ac88"
}
Frame {
msec: 1216
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "14018d9d2370c46b5f0c280cb169225e"
}
Frame {
msec: 1232
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1248
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1264
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1280
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1296
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1312
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1328
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1344
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1360
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1376
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1392
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1408
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1424
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1440
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1456
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1472
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1488
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1504
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1520
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1536
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1552
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1568
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1584
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1600
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 109; y: 247
- modifiers: 0
- sendToViewport: true
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1616
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1632
- hash: "c91921dba899d7a86de3cd013773889f"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1648
- hash: "888c0fc86155e10b5fc577ef6ec5755a"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1664
- hash: "7fd61a8910bf7b0d2bf57653a268c5d8"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1680
- hash: "f42f5073f90a423adf011d0e168c8a9b"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1696
- hash: "a3d89deb6cfa2bbbaa1d7d5b5e5b48d5"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 27; y: 19
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1712
- hash: "f10e997d7a17c18251a32d58b018105a"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1728
- hash: "09ffb57d5f67edfa34d6aad36a002554"
+ hash: "29ad10997d8045ccfd69fe78475dd2f3"
}
Frame {
msec: 1744
- hash: "01f3a2f5b9815f1397a907b099339360"
+ hash: "7b99c5dd3750291043f62479314ccb2f"
}
Frame {
msec: 1760
- hash: "58c0910c49748edd2ef8472960179472"
+ hash: "d3409cf579db724440f3f59cfc902974"
}
Frame {
msec: 1776
- hash: "cc82c5f7f93c5bc1af1c6c509268566a"
+ hash: "2ad2a4b3f933e3a27acb232adf06eb7f"
}
Frame {
msec: 1792
- hash: "3ef272c6439b85fbc166375d1b98403c"
+ hash: "35074cf4f2753c77e112092e92630c71"
}
Frame {
msec: 1808
- hash: "98c576f0900e4b8752d1f951bb6bf391"
+ hash: "f7038f7e6d7b6498ff1a4098c79f9d2a"
}
Frame {
msec: 1824
- hash: "4d66dd64d8736ef50163e08723873478"
+ hash: "fec23135661d2368cf3cf64f7d62af73"
}
Frame {
msec: 1840
- hash: "9a5d8455b6763456185625811253e0b1"
+ hash: "4143603bf203319f423d21f204fac3b0"
}
Frame {
msec: 1856
- hash: "77e85731efa786a2492aae19a87523c6"
+ hash: "f3d41bdc8ae60f6fbf109206ac9023de"
}
Frame {
msec: 1872
- hash: "f3199d0c860f1236e0b9472bef8785bc"
+ hash: "41064ea276aabfba45966130d2ec4b06"
}
Frame {
msec: 1888
- hash: "f3199d0c860f1236e0b9472bef8785bc"
+ hash: "dfbe242fc8bc3c70207be901ac2db139"
}
Frame {
msec: 1904
- hash: "32ccdab249268b01d9f1658a736052f1"
+ hash: "a8a9f435774def4255ae433646cc5263"
}
Frame {
msec: 1920
- image: "propertyAction-visual.1.png"
+ hash: "81c157daf3086b21ea2ba39277a31f3d"
}
Frame {
msec: 1936
- hash: "db3010ef552146df938c237f6c92bff5"
+ image: "propertyAction-visual.2.png"
}
Frame {
msec: 1952
- hash: "101e8595d0301e88376ec52ba9361f84"
+ hash: "9dbe8b62ec467f5b95b4bb8ab9fbab68"
}
Frame {
msec: 1968
- hash: "119d548c59baa7e47266d2ceca663288"
+ hash: "4ba1bf769de9bc45630485d06642dc30"
}
Frame {
msec: 1984
- hash: "f141fafe102a0b9a2bf33e8c3fc800ff"
+ hash: "4ba1bf769de9bc45630485d06642dc30"
}
Frame {
msec: 2000
- hash: "b01f9ca8d4fbff17b3d48c70898a044d"
+ hash: "4ba1bf769de9bc45630485d06642dc30"
}
Frame {
msec: 2016
- hash: "cf67954a2d1b22e8d2cfdc26419bafb8"
+ hash: "4ba1bf769de9bc45630485d06642dc30"
}
Frame {
msec: 2032
- hash: "7680b2b5a63dea13d733947297e01355"
+ hash: "985c6ee9cb5f259135a4eeb3c2f1d271"
}
Frame {
msec: 2048
- hash: "af1c017acf6b3c8cff86c9ceb60db3cb"
+ hash: "9de26e2d70bd285116df820ca87c2e4d"
}
Frame {
msec: 2064
- hash: "0b23ec51f71fddae5e2238ab5754f1db"
+ hash: "a8753ac7d026d94224c488fa16d5774a"
}
Frame {
msec: 2080
- hash: "976643961ecbdc86335180ba812b874e"
+ hash: "aad38d9678bdeeed750f381a40e22a61"
}
Frame {
msec: 2096
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "abddb88af9b07e782f6c2103479abe3d"
}
Frame {
msec: 2112
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "02e3d071d5fc0832041688950d3610b8"
}
Frame {
msec: 2128
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "b6ee5f74a5e91bcf6b9aad3cbb5d683f"
}
Frame {
msec: 2144
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "e8e6b7d7f81895ae556936ba5e0848a5"
}
Frame {
msec: 2160
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "a858eee4b2753915ec84d2ffa098260c"
}
Frame {
msec: 2176
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "a858eee4b2753915ec84d2ffa098260c"
}
Frame {
msec: 2192
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "a858eee4b2753915ec84d2ffa098260c"
}
Frame {
msec: 2208
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2224
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2240
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2256
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2272
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2288
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2304
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2320
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2336
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2352
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2368
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2384
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2400
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2416
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2432
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2448
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2464
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2480
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2496
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2512
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2528
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2544
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2560
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2576
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2592
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2608
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2624
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2640
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2656
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2672
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2688
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2704
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2720
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2736
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2752
- hash: "aeed60899abb6c486a5b1df81f9a0224"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 109; y: 247
- modifiers: 0
- sendToViewport: true
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2768
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2784
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2800
- hash: "ab924ae435262e76381c2e4af5d64342"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2816
- hash: "d60758fc12471a19d31c85f058f2ded7"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2832
- hash: "c62e2956f8eb5d2c8cd76ba05c5929d5"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2848
- hash: "f2967ee7e035a9ff258116a2706529f8"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2864
- hash: "885c4705c6c29f69c56c44abc1251d75"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2880
- image: "propertyAction-visual.2.png"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2896
- hash: "f4af6871e522511f95bc4c5abfc2a562"
+ image: "propertyAction-visual.3.png"
}
Frame {
msec: 2912
- hash: "b27e1e7e0d90468525309528ccfe2823"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2928
- hash: "78e7d84a4466258b40315fe61b7ca15c"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2944
- hash: "471013d921d8d6e7468fd6aba0b75c71"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2960
- hash: "856048da893c9136ac5740bc89b64128"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2976
- hash: "32ccdab249268b01d9f1658a736052f1"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 2992
- hash: "2264fa3acd979f104633c1301a0efd8f"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3008
- hash: "f3199d0c860f1236e0b9472bef8785bc"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3024
- hash: "ad899d1ecaa43a5541be7b70413caee5"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3040
- hash: "4e652524c992f5ee1b987275ca509728"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3056
- hash: "a44b3dec2a016694bc8553a51b29d46c"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3072
- hash: "7fbe20346bc3c28c345e0797b55599f3"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3088
- hash: "bcff18ad433bb4f08126ee66efb037d1"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3104
- hash: "836666c64f73c38e87de95944ff2fe72"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3120
- hash: "4379982d23db239b1741b5d72c53e160"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3136
- hash: "0ed9476337214e1493c1510b8a4c90f8"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3152
- hash: "dab637406577a1924c7dbb30680e1af3"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
Frame {
msec: 3168
- hash: "38b7e5894cf49a19ac055264d6447b9f"
- }
- Frame {
- msec: 3184
- hash: "5f207d1dfad4907f200d76104881bf56"
- }
- Frame {
- msec: 3200
- hash: "3434fc7f81e859722585dae97c557864"
- }
- Frame {
- msec: 3216
- hash: "7c775b9be8c5293d4962324574267c22"
- }
- Frame {
- msec: 3232
- hash: "da0ff6955c2e4cd86421bdb9053f56e6"
- }
- Frame {
- msec: 3248
- hash: "a1297d525a3ad41abbbb7c2f15efd4fb"
- }
- Frame {
- msec: 3264
- hash: "5326b220995b2a1eaa308ad10fd353fa"
- }
- Frame {
- msec: 3280
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3296
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3312
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3328
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3344
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 3360
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3376
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3392
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3408
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3424
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3440
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3456
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3472
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3488
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3504
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3520
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3536
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3552
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3568
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3584
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3600
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3616
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Frame {
- msec: 3632
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e5ac43e0f553886bcb2b4016f7e3414"
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction-visual.qml b/tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction-visual.qml
index 6c3e52daf4..3ff4214d8a 100644
--- a/tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction-visual.qml
+++ b/tests/auto/declarative/qmlvisual/animation/propertyAction/propertyAction-visual.qml
@@ -1,17 +1,17 @@
import QtQuick 1.0
/*
-This test starts with a red rectangle at 0,0. It should animate a color change to blue,
+This test starts with a 30x40 rectangle at 0,0. It should animate a width change to 40,
then jump 50 pixels right, and then animate moving 50 pixels down. Afer this it should
do an exact visual reversal (animate up 50 pixels, jump left 50 pixels, and then animate
-a change back to red).
+a change back to 30px wide).
*/
Rectangle {
- width: 400; height: 400
+ width: 100; height: 100
Rectangle {
id: myRect
- width: 100; height: 100
+ width: 30; height: 40
color: "red"
}
MouseArea {
@@ -24,8 +24,7 @@ Rectangle {
when: clickable.pressed
PropertyChanges {
target: myRect
- x: 50; y: 50
- color: "blue"
+ x: 50; y: 50; width: 40
}
}
@@ -33,7 +32,7 @@ Rectangle {
to: "state1"
reversible: true
SequentialAnimation {
- ColorAnimation {}
+ NumberAnimation { properties: "width"; easing.type: "InOutQuad" }
PropertyAction { properties: "x" }
NumberAnimation { properties: "y"; easing.type: "InOutQuad" }
}
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.0.png b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.0.png
index d8be67b465..4af174419a 100644
--- a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.1.png b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.1.png
index 249e0dda19..29ca02a870 100644
--- a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.1.png
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.2.png b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.2.png
index 044f823d88..c7da35979b 100644
--- a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.2.png
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.3.png b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.3.png
index d8be67b465..7373951f78 100644
--- a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.3.png
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.4.png b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.4.png
new file mode 100644
index 0000000000..8552406140
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.qml b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.qml
index dc8e2e211d..05b5c995cf 100644
--- a/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.qml
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug10586/data/qtbug10586.qml
@@ -6,1146 +6,1102 @@ VisualTest {
}
Frame {
msec: 16
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ image: "qtbug10586.0.png"
}
Frame {
msec: 32
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 48
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 64
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 80
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 96
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 112
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 128
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 144
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 160
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 176
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 192
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 208
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 224
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 240
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 256
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 272
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 288
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 304
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 320
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 336
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 352
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 368
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 384
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 400
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 416
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 432
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 448
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 464
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 480
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 496
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 512
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 528
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 544
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 560
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 576
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 592
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 608
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 624
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 640
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 656
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 672
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 688
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 704
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 155; y: 261
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 154; y: 260
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 720
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 153; y: 260
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 144; y: 258
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 736
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 126; y: 254
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 105; y: 249
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 752
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "3e70a9fcacf40284c4bbf6a8376edfec"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 76; y: 247
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 245
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 768
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "3b65fbe0980fabd4bcba5757323c8fcf"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 20; y: 243
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -25; y: 241
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 784
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0a79d810c2ff479fcc42d40125f6ccda"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -68; y: 238
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: -68; y: 238
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 800
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "9e5b85c715a2a573f0dd3bc7e342625f"
}
Frame {
msec: 816
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "371faa0d3bb3815470ef48713f0363b6"
}
Frame {
msec: 832
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "2f948f765ec2d861841439f03e402bcf"
}
Frame {
msec: 848
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "74dbda8d6d005fb8fb307fc4cf146e1e"
}
Frame {
msec: 864
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "bdf1f0db0411a3456ddc0efff0584e9c"
}
Frame {
msec: 880
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "cb5c7c9fc7e4707f1d8b7bbb9f19065d"
}
Frame {
msec: 896
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "f60df4e47f5b9d16b576ab4107a0c11c"
}
Frame {
msec: 912
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "6fcc1b9d2d1829c48cdfefba632c6a91"
}
Frame {
msec: 928
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "e53272919fa23f7023ce66d3b15c2f05"
}
Frame {
msec: 944
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "dc043143bf35a808fcdf2b692753dc86"
}
Frame {
msec: 960
- image: "qtbug10586.0.png"
+ hash: "dff3c85f1bb42138410e9db7be98425b"
}
Frame {
msec: 976
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ image: "qtbug10586.1.png"
}
Frame {
msec: 992
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d4122caf5fc8cfd59e6048b830acc3fb"
}
Frame {
msec: 1008
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1024
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1040
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1056
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1072
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1088
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1104
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1120
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1136
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1152
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1168
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1184
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1200
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1216
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1232
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1248
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1264
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1280
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1296
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1312
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 174; y: 204
- modifiers: 0
- sendToViewport: true
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1328
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1344
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1360
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1376
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "be218d7ebfb01cf288b284cf40337913"
}
Frame {
msec: 1392
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 170; y: 204
- modifiers: 0
- sendToViewport: true
+ hash: "bd1af1e9187a58841b33862047ad4ae3"
}
Frame {
msec: 1408
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 204
- modifiers: 0
- sendToViewport: true
+ hash: "6154c00e9290393daaf1e7a0618874c7"
}
Frame {
msec: 1424
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "6ed42be04df8a4cc15d9d885e4b157f5"
}
Frame {
msec: 1440
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 130; y: 204
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 130; y: 204
- modifiers: 0
- sendToViewport: true
+ hash: "2187c8e798b2b60567284af6923a9418"
}
Frame {
msec: 1456
- hash: "8b7dd0f0a3881f10d76b47cbec4754c3"
+ hash: "39ef8ac3108be3c5b8c85aaa06539952"
}
Frame {
msec: 1472
- hash: "b6fc4990acb245e015c35261a3c6fd75"
+ hash: "a30c2d3bbebdf3ae84c8148dfff53abf"
}
Frame {
msec: 1488
- hash: "849fa4174134804dadc000323141b341"
+ hash: "f9b5ef6675c326a3c6462f8ad173c875"
}
Frame {
msec: 1504
- hash: "35f2d6405ed7d992bb62eb6e24478492"
+ hash: "eab82ad570e59a68c41450df5146aea6"
}
Frame {
msec: 1520
- hash: "673ebb4499522c3f27b775dff1dbbe44"
+ hash: "2caf2dae27a5603de6665c1cafbe6576"
}
Frame {
msec: 1536
- hash: "96945f5489ffd0dc8ab995c96eb5da43"
+ hash: "601b397404250d01ec9e483683c32776"
}
Frame {
msec: 1552
- hash: "2e4543754429ac3db831a2432098c063"
+ hash: "06dd6ec2e0f016fc0cb6bbce27e3dcd3"
}
Frame {
msec: 1568
- hash: "02253fe8a9fd5009a07265c2c6ffc8e4"
+ hash: "9ebba3740bb33db00ebb62706e1d27a5"
}
Frame {
msec: 1584
- hash: "200a89949df1e9ef58d005a139857d2c"
+ hash: "9ebba3740bb33db00ebb62706e1d27a5"
}
Frame {
msec: 1600
- hash: "ceb28be34c7ea8eff5fa00fdea087439"
+ hash: "06dd6ec2e0f016fc0cb6bbce27e3dcd3"
}
Frame {
msec: 1616
- hash: "a9ece475c51f126094c5eff4e20f4a19"
+ hash: "601b397404250d01ec9e483683c32776"
}
Frame {
msec: 1632
- hash: "aa0776f84aef87d6971affdfa2d8dd82"
+ hash: "a80dcdc8ce2c4e2653e01423ea053eba"
}
Frame {
msec: 1648
- hash: "4c74661e1c73fefc9c5154b257239352"
+ hash: "8fe7230266084f07f8fd9c6991461163"
}
Frame {
msec: 1664
- hash: "c10d23df3a75966aad5016bd8ba8e9d8"
+ hash: "5d9ed702af5c520f4b268077b957586a"
}
Frame {
msec: 1680
- hash: "41692977d654a55d3b1d037aea9f2c03"
+ hash: "6cccabc3a6ac3eef95794e6712404234"
}
Frame {
msec: 1696
- hash: "2f1835a1de94f962eb5dc781c85b4c32"
+ hash: "8bfc492064d6c93727b59fd3ca2a8dc8"
}
Frame {
msec: 1712
- hash: "7cb78e2e5f6d35d456c95f2bd8652eb5"
+ hash: "e506cf18d730f4ab1e8e803b7663238a"
}
Frame {
msec: 1728
- hash: "4388aee9b1c8b4fde43634ad08f03557"
+ hash: "2187c8e798b2b60567284af6923a9418"
}
Frame {
msec: 1744
- hash: "1cdc71100fd11cb6e60c9ab7e65e95bf"
+ hash: "6ed42be04df8a4cc15d9d885e4b157f5"
}
Frame {
msec: 1760
- hash: "feddbf269adfc8bb1b1a3656b5b5736d"
+ hash: "b887f64a8e44a243f11e37692d54d2d1"
}
Frame {
msec: 1776
- hash: "76b39ce0ee9b9b4af8aa0141577b8460"
+ hash: "d5f157d073cd8de8cc58124455a38675"
}
Frame {
msec: 1792
- hash: "bac963d3df2841ab7a3770a371f3a94d"
+ hash: "d39f213d4b91229bd76d48589a067623"
}
Frame {
msec: 1808
- hash: "403007bb6c0782fece1cedbd40994550"
+ hash: "7b2413f4fd12fd4d38fc40ebbbd893f3"
}
Frame {
msec: 1824
- hash: "72076c743fdd33fab2ac789c7c22973a"
+ hash: "bd1af1e9187a58841b33862047ad4ae3"
}
Frame {
msec: 1840
- hash: "662be553c32b0145b3f4fee9bb0d659d"
+ hash: "1e54f1b5ef6bb7085a36d433af94a9b3"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 145; y: 286
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 166; y: 286
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 195; y: 288
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1856
- hash: "e6b9049949a0ee4ff8a0fcaf5464f479"
+ hash: "d84bf962449716cc64cb34b285926c48"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 224; y: 290
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 253; y: 290
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1872
- hash: "eb1939458851780b7bb51ee50f0a3bd7"
+ hash: "d84bf962449716cc64cb34b285926c48"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 286; y: 292
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 315; y: 292
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1888
- hash: "41c8d2686ddb882981a7d3a5c8c69005"
+ hash: "d84bf962449716cc64cb34b285926c48"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 346; y: 294
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 385; y: 294
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1904
- hash: "7d3b1fc34082a160cbea4409af85fc9c"
+ hash: "d84bf962449716cc64cb34b285926c48"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 420; y: 294
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 420; y: 294
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1920
- image: "qtbug10586.1.png"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1936
- hash: "17be4a9c3d4d19e93bf1fc3a13a374a2"
+ image: "qtbug10586.2.png"
}
Frame {
msec: 1952
- hash: "d449593024a59487eb92195ee6b77a64"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1968
- hash: "c6ccbc2acec8e32f043f2cfb7b7848a9"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 1984
- hash: "cef9f8e8cdd5e2d33b86a9a6fb64ecb4"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2000
- hash: "2a8956de5ce417431bdb156144985370"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2016
- hash: "73721425a9c658bd9d40eac3fcbe8e25"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2032
- hash: "9a9cf8eee0bf2f09944a4fb3b1c139d5"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2048
- hash: "3673cdee04343ce679ec2cebadc9f512"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2064
- hash: "eedd62019867e3189f9cf6e2b4149c6d"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2080
- hash: "7a66bc37f5cf917e8b121003af0530b0"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2096
- hash: "401667ed0f38858553de27164e9cadb5"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2112
- hash: "b391699437c4092de3ad1684a35bfd30"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2128
- hash: "109c91215f075292910095a25eaded49"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2144
- hash: "c44d3f6ce1fa1ab324dd9ef394f37f87"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2160
- hash: "299d43cb3dcf7b95af8803df3eb17a46"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2176
- hash: "7ddd97266383d954a008fbe7b95a3169"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2192
- hash: "941f2837ff5145a26df9a0d9f6d20bd9"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2208
- hash: "d99d76cba43f3ae953605d7732d6ce21"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2224
- hash: "929f49416f7ca80d7f5f2be3b13b849e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2240
- hash: "929f49416f7ca80d7f5f2be3b13b849e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2256
- hash: "fff9bbf16d1c3f7510ddfc44af616a5e"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2272
- hash: "70b6cdb95ad6723d18c623e1dc79a8db"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2288
- hash: "70b6cdb95ad6723d18c623e1dc79a8db"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2304
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2320
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2336
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2352
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2368
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2384
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2400
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2416
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2432
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2448
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2464
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2480
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2496
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "d84bf962449716cc64cb34b285926c48"
}
Frame {
msec: 2512
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "4c6ff9097308cb3840ef39a081bdc94f"
}
Frame {
msec: 2528
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "93a2b229f21b76354a8cf94f150c69e2"
}
Frame {
msec: 2544
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "e65350b411affe4274499fd577ccf842"
}
Frame {
msec: 2560
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "499968d33068c7e08898a19cce691766"
}
Frame {
msec: 2576
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "fe884e410a8c7b2167f814ebdf7700af"
}
Frame {
msec: 2592
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "c0225009d42b670f5f1ce0871be90db6"
}
Frame {
msec: 2608
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "320d205e147fa6470d71538d686ff458"
}
Frame {
msec: 2624
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "ec0a1fa273e6568d041ee2497a715704"
}
Frame {
msec: 2640
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "159c558e0d1b59db8e9459c4203d56f3"
}
Frame {
msec: 2656
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "00d237cd7ad6df807b4f9281bbc72992"
}
Frame {
msec: 2672
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "c472991635460a93f744538328cd89f4"
}
Frame {
msec: 2688
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "318ba06f590d4e3a1dea6affcc60243b"
}
Frame {
msec: 2704
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "d344b62df42e88e14d45def62565791a"
}
Frame {
msec: 2720
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "5c2658568080a663440e09acbcf2fa8d"
}
Frame {
msec: 2736
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 29; y: 239
- modifiers: 0
- sendToViewport: true
+ hash: "8e64867dabeaeae51149362c5f42545b"
}
Frame {
msec: 2752
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "abd81e11370469803bad5de9a9c77f63"
}
Frame {
msec: 2768
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "1cce356ebd61d7c88edb84c58a564def"
}
Frame {
msec: 2784
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "0ab027423651612ceba2b35e57d75d91"
}
Frame {
msec: 2800
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
+ hash: "515b6375cf0fefc8580d62cd5b2680f7"
}
Frame {
msec: 2816
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 35; y: 241
- modifiers: 0
- sendToViewport: true
+ hash: "f44c12b701e73a7e4d35fd10ea0f5003"
}
Frame {
msec: 2832
- hash: "cdb3c12b1b0b6ab269ba7fcf75320f69"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 63; y: 243
- modifiers: 0
- sendToViewport: true
+ hash: "76bee658c9915fda03967fcb2e595683"
}
Frame {
msec: 2848
- hash: "2732b282b8ac482033694cd04c6f5b7e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 106; y: 244
- modifiers: 0
- sendToViewport: true
+ hash: "064d5525e1fa7c8ec5f571a56e666754"
}
Frame {
msec: 2864
- hash: "7d253797885f8b304d8fb3ba727a3c5d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 243
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 158; y: 243
- modifiers: 0
- sendToViewport: true
+ hash: "ffd23fa2b1281cd120d6b11912bb8641"
}
Frame {
msec: 2880
- image: "qtbug10586.2.png"
+ hash: "7454984bc5316de021b87d04daf0e8bb"
}
Frame {
msec: 2896
- hash: "d85a416e4ddf59dfd0723b0be0e2b418"
+ image: "qtbug10586.3.png"
}
Frame {
msec: 2912
- hash: "f1934f6ca6a3c5ac5df3451596b8d8ba"
+ hash: "1fcf6b150607c0ea807026f8f9e28f61"
}
Frame {
msec: 2928
- hash: "28fc74a76f9eaeeccbd3063dc55a1000"
+ hash: "e16a333231b3c65c85ff498e941f8c05"
}
Frame {
msec: 2944
- hash: "eb8ad8dae734b624664fcf584cda6ba0"
+ hash: "3e49589f1b4a6b8212f5c10d234f8ffa"
}
Frame {
msec: 2960
- hash: "a6d0f4aba3e5ae1e003520f45b75d6dd"
+ hash: "02ce2b719ddbd977bb933882a40024f5"
}
Frame {
msec: 2976
- hash: "4e5a4d04dfa5f06292774e6bf4f86508"
+ hash: "a161119d1f022885db1af71ededa2b8c"
}
Frame {
msec: 2992
- hash: "fc9e16fd8c7379d774a09fe50d4259dc"
+ hash: "62a006aab9629dc1e8359c52664ee34b"
}
Frame {
msec: 3008
- hash: "721ea322d9a5e9d48117336476f568cb"
+ hash: "62a006aab9629dc1e8359c52664ee34b"
}
Frame {
msec: 3024
- hash: "5930448341bce1c50de7acaba1f64ca1"
+ hash: "b98a2c58933bd4f49ed7a1d72bff7e66"
}
Frame {
msec: 3040
- hash: "7194bacd56906f83948844224ce6a3e7"
+ hash: "b98a2c58933bd4f49ed7a1d72bff7e66"
}
Frame {
msec: 3056
- hash: "fcf11cf70b8ac210d4bb2bc716942053"
+ hash: "b98a2c58933bd4f49ed7a1d72bff7e66"
}
Frame {
msec: 3072
- hash: "767d707db4dbb02b6f97153b3822a1d1"
+ hash: "b98a2c58933bd4f49ed7a1d72bff7e66"
}
Frame {
msec: 3088
- hash: "f8eb75b97f5233aa82b887aab34a38e3"
+ hash: "b98a2c58933bd4f49ed7a1d72bff7e66"
}
Frame {
msec: 3104
- hash: "1d3beb06b39fa1d5cabd31ec4297f59f"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3120
- hash: "cadc775e0764afa7b50c5bab782035dd"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3136
- hash: "385f5a6e80da0d3ddf24539a64f26eb9"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3152
- hash: "34204871a684ea251c9d07fb125436da"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3168
- hash: "bc3e496535e66ff0d1e800092b7c78ca"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3184
- hash: "d6c4ff5bf223361be42c78d6d81248c3"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3200
- hash: "cb09d41612df66a8d099153026adcbf3"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3216
- hash: "f82180b8c0389ddc3623107a049c3366"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3232
- hash: "1b0f65e4599c65b8a603abd8da718d48"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3248
- hash: "897391a8206178356858139b3d1a4ce8"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3264
- hash: "b66d268dc7a42a7b1172b1ff566f4eb8"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3280
- hash: "0fe5d38a253dbd1ebcc67cca7ea86dc7"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3296
- hash: "b788f8a7e1e42f768fd1fe1198ca0344"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3312
- hash: "4f7f8b7f5bb78bb9327b6fa8142ce3a2"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3328
- hash: "30f041278c08174671568a0dfb7cbdf7"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3344
- hash: "6ecd90fc89ab9b6c4813fa6a6e9dffdb"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3360
- hash: "6ecd90fc89ab9b6c4813fa6a6e9dffdb"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3376
- hash: "6d79d9d0ba8da0b5654b39768b25591f"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3392
- hash: "6d79d9d0ba8da0b5654b39768b25591f"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3408
- hash: "6d79d9d0ba8da0b5654b39768b25591f"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3424
- hash: "6d79d9d0ba8da0b5654b39768b25591f"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3440
- hash: "6d79d9d0ba8da0b5654b39768b25591f"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3456
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3472
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3488
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3504
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3520
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3536
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3552
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3568
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3584
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3600
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3616
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3632
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3648
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
Frame {
msec: 3664
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3680
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3696
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3712
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3728
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3744
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3760
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3776
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3792
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3808
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3824
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3840
- image: "qtbug10586.3.png"
- }
- Frame {
- msec: 3856
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3872
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3888
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3904
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3920
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3936
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3952
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3968
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 3984
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4000
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4016
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4032
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4048
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4064
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 4080
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4096
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4112
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4128
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4144
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4160
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4176
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
- }
- Frame {
- msec: 4192
- hash: "cba9afe3f351e6cd6dc72d7f263401b0"
+ hash: "0755ae54acb6af587bbf7ca509146e0f"
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug10586/qtbug10586.qml b/tests/auto/declarative/qmlvisual/animation/qtbug10586/qtbug10586.qml
index 9ccebfa07b..65caeddaa8 100644
--- a/tests/auto/declarative/qmlvisual/animation/qtbug10586/qtbug10586.qml
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug10586/qtbug10586.qml
@@ -1,5 +1,6 @@
import QtQuick 1.0
+/* This test checks that animations do occur while the flickable is flicking */
Rectangle {
width: 200
height: 400
@@ -11,11 +12,6 @@ Rectangle {
border.color: "black"
border.width: 10
width: 1000; height: 1000
- rotation: 90
- gradient: Gradient {
- GradientStop { position: 0; color: "black" }
- GradientStop { position: 1; color: "white" }
- }
}
}
Rectangle {
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug13398/data/qtbug13398.0.png b/tests/auto/declarative/qmlvisual/animation/qtbug13398/data/qtbug13398.0.png
index 16adc514df..29f7c750ad 100644
--- a/tests/auto/declarative/qmlvisual/animation/qtbug13398/data/qtbug13398.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug13398/data/qtbug13398.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug13398/data/qtbug13398.1.png b/tests/auto/declarative/qmlvisual/animation/qtbug13398/data/qtbug13398.1.png
new file mode 100644
index 0000000000..d9a9959605
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug13398/data/qtbug13398.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/qtbug13398/data/qtbug13398.qml b/tests/auto/declarative/qmlvisual/animation/qtbug13398/data/qtbug13398.qml
index 0cc98ce8c3..179dbc970d 100644
--- a/tests/auto/declarative/qmlvisual/animation/qtbug13398/data/qtbug13398.qml
+++ b/tests/auto/declarative/qmlvisual/animation/qtbug13398/data/qtbug13398.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "2452007928bf86b9c42e666c7a7afc89"
+ image: "qtbug13398.0.png"
}
Frame {
msec: 32
@@ -266,11 +266,11 @@ VisualTest {
}
Frame {
msec: 960
- image: "qtbug13398.0.png"
+ hash: "e09a359578935b988ac1cc8c40b25547"
}
Frame {
msec: 976
- hash: "e09a359578935b988ac1cc8c40b25547"
+ image: "qtbug13398.1.png"
}
Frame {
msec: 992
diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.0.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.0.png
index 454f6c1413..f08e0489c2 100644
--- a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.0.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.1.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.1.png
index 9dde537866..f08e0489c2 100644
--- a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.1.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.2.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.2.png
index 454f6c1413..9fb2be5e54 100644
--- a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.2.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.3.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.3.png
index 454f6c1413..d229e87239 100644
--- a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.3.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.4.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.4.png
index 043b487ed8..f08e0489c2 100644
--- a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.4.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.5.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.5.png
index 79c791dee8..7d1d2cdac8 100644
--- a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.5.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.6.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.6.png
index 454f6c1413..b537ace22a 100644
--- a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.6.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.7.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.7.png
index 454f6c1413..f08e0489c2 100644
--- a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.7.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.8.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.8.png
index a7d66741a8..d229e87239 100644
--- a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.8.png
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.9.png b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.9.png
new file mode 100644
index 0000000000..432f8144b1
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.qml b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.qml
index b4ee569de4..5146be2131 100644
--- a/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.qml
+++ b/tests/auto/declarative/qmlvisual/animation/reanchor/data/reanchor.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "213811853dbefdc418099721e3bf8651"
+ image: "reanchor.0.png"
}
Frame {
msec: 32
@@ -242,11 +242,11 @@ VisualTest {
}
Frame {
msec: 960
- image: "reanchor.0.png"
+ hash: "213811853dbefdc418099721e3bf8651"
}
Frame {
msec: 976
- hash: "213811853dbefdc418099721e3bf8651"
+ image: "reanchor.1.png"
}
Frame {
msec: 992
@@ -498,11 +498,11 @@ VisualTest {
}
Frame {
msec: 1920
- image: "reanchor.1.png"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1936
- hash: "ad3837dcf3e69274ac2918d796974f29"
+ image: "reanchor.2.png"
}
Frame {
msec: 1952
@@ -770,11 +770,11 @@ VisualTest {
}
Frame {
msec: 2880
- image: "reanchor.2.png"
+ hash: "213811853dbefdc418099721e3bf8651"
}
Frame {
msec: 2896
- hash: "eb3eeb37ab7b26692cbf100adfaf3772"
+ image: "reanchor.3.png"
}
Frame {
msec: 2912
@@ -1026,11 +1026,11 @@ VisualTest {
}
Frame {
msec: 3840
- image: "reanchor.3.png"
+ hash: "213811853dbefdc418099721e3bf8651"
}
Frame {
msec: 3856
- hash: "213811853dbefdc418099721e3bf8651"
+ image: "reanchor.4.png"
}
Frame {
msec: 3872
@@ -1282,11 +1282,11 @@ VisualTest {
}
Frame {
msec: 4800
- image: "reanchor.4.png"
+ hash: "df51ffd71a82742af7c06f8a786f6bf2"
}
Frame {
msec: 4816
- hash: "c4559982aa3f3d291364deed4bd96d65"
+ image: "reanchor.5.png"
}
Frame {
msec: 4832
@@ -1522,11 +1522,11 @@ VisualTest {
}
Frame {
msec: 5760
- image: "reanchor.5.png"
+ hash: "1137e22c68e043950811dee295e19b04"
}
Frame {
msec: 5776
- hash: "1137e22c68e043950811dee295e19b04"
+ image: "reanchor.6.png"
}
Frame {
msec: 5792
@@ -1778,11 +1778,11 @@ VisualTest {
}
Frame {
msec: 6720
- image: "reanchor.6.png"
+ hash: "213811853dbefdc418099721e3bf8651"
}
Frame {
msec: 6736
- hash: "213811853dbefdc418099721e3bf8651"
+ image: "reanchor.7.png"
}
Frame {
msec: 6752
@@ -2034,11 +2034,11 @@ VisualTest {
}
Frame {
msec: 7680
- image: "reanchor.7.png"
+ hash: "213811853dbefdc418099721e3bf8651"
}
Frame {
msec: 7696
- hash: "eb3eeb37ab7b26692cbf100adfaf3772"
+ image: "reanchor.8.png"
}
Frame {
msec: 7712
@@ -2290,11 +2290,11 @@ VisualTest {
}
Frame {
msec: 8640
- image: "reanchor.8.png"
+ hash: "b36a09269dfc9173ff8583a62ae87e8a"
}
Frame {
msec: 8656
- hash: "6ed9b6118a0dc81c22af9fee108b7432"
+ image: "reanchor.9.png"
}
Frame {
msec: 8672
diff --git a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.0.png b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.0.png
new file mode 100644
index 0000000000..5bf32dda58
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.1.png b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.1.png
new file mode 100644
index 0000000000..e7571f24b8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.2.png b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.2.png
new file mode 100644
index 0000000000..60d09e9242
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.qml b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.qml
index d1de5d089f..f93458dc5a 100644
--- a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.qml
+++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction-visual.qml
@@ -6,530 +6,510 @@ VisualTest {
}
Frame {
msec: 16
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ image: "scriptAction-visual.0.png"
}
Frame {
msec: 32
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 48
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 64
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 80
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 96
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 112
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 128
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 144
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 160
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 176
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 192
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 208
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 224
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 240
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 256
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 272
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 288
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 304
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 320
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 336
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 352
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 368
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 384
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 400
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 416
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 432
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 448
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 54; y: 52
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 464
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c5d2b291578c11c11452c29dc02bcad9"
}
Frame {
msec: 480
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "650770d62a63031754b3c68f666a5805"
}
Frame {
msec: 496
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "eb28945becabee0dffe618632d4db061"
}
Frame {
msec: 512
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "6c7b66dff531723362418dacd23ea59e"
}
Frame {
msec: 528
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "093bd3dd02a6d9f4dbd75a329bbf63f5"
}
Frame {
msec: 544
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "5328b1f3932c8bf817a5031102e21c25"
}
Frame {
msec: 560
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "ee2b8dc4ebdaaed41ae820385f56db83"
}
Frame {
msec: 576
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "adf71c703dff4514d6ae247fd6b89030"
}
Frame {
msec: 592
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c93d78e604406a3c61c2b34e5e0893a4"
}
Frame {
msec: 608
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "c91dbb897289d2949d08c6381583ad5e"
}
Frame {
msec: 624
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1e3a370e3d390e8d73731d659fae5908"
}
Frame {
msec: 640
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "e6d3505120260677f5f1355abf0f2b1d"
}
Frame {
msec: 656
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "251d68b91b37ef95ff61055f7b2ba0b5"
}
Frame {
msec: 672
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "333a25691bafa88fbc92a153886c3b47"
}
Frame {
msec: 688
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "e63367e5001732975bc4c002c079dbd8"
}
Frame {
msec: 704
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "04e25f2fd913c38ee24558b52fb3ed37"
}
Frame {
msec: 720
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "739f155ad3d703fa0255afed51baf51c"
}
Frame {
msec: 736
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "739f155ad3d703fa0255afed51baf51c"
}
Frame {
msec: 752
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "16de427e26afa1a1d91541fca1537033"
}
Frame {
msec: 768
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "11a874ab1c429e1bcf5498808f3c42f7"
}
Frame {
msec: 784
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "e97f33a71bf889815782c17067bcd736"
}
Frame {
msec: 800
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "9f2f0728689a5ff76f87b13c92e9fd40"
}
Frame {
msec: 816
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "9186cd14c3d9f2ad560be047cc483b50"
}
Frame {
msec: 832
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "af2eb37824ad3567ce9db0329f647d50"
}
Frame {
msec: 848
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "f09d264ed5f44313c19f2f985a26b9cd"
}
Frame {
msec: 864
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "3ed8b3051d0d603bd514783fe04124a7"
}
Frame {
msec: 880
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "38c7f8d39fd9a77400138da4e3ebb963"
}
Frame {
msec: 896
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "6682f53fdda2d8662a31b725d23b08f6"
}
Frame {
msec: 912
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "0f16d2640b51c9ada08c7aa0e8853d86"
}
Frame {
msec: 928
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "22b9025d523dd1adb87f9b4c89295b29"
}
Frame {
msec: 944
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 960
- image: "scriptAction.0.png"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 976
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ image: "scriptAction-visual.1.png"
}
Frame {
msec: 992
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1008
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1024
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1040
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1056
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1072
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1088
- hash: "55b713dcb7c810bf126e06cc97d26d24"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 146; y: 259
- modifiers: 0
- sendToViewport: true
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1104
- hash: "55b713dcb7c810bf126e06cc97d26d24"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1120
- hash: "9850cd8ed4643900409d1a87ef0bc4cf"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1136
- hash: "1cf03396b01e931e4e7e8e7e57e19c5f"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1152
- hash: "25fe648b85ec2d82621853dcbdbf695a"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1168
- hash: "1ca701e56fe387d5849f6933eb53aee9"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1184
- hash: "b39ecb792659a053a8985e2a849d6d51"
+ hash: "1761f6606bbdf5772594cf96412337ca"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 54; y: 52
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1200
- hash: "9a783432a054beec81cc5687f75a36dc"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1216
- hash: "edbd222d7ba6c6f819ded45fe316d461"
+ hash: "1761f6606bbdf5772594cf96412337ca"
}
Frame {
msec: 1232
- hash: "eaf20159c4b90f90872bbd514d3a0cec"
+ hash: "77ab7b0bad67c80c5f685b02e264d333"
}
Frame {
msec: 1248
- hash: "964807dd9b91e765577a773ef1ce2593"
+ hash: "27c3099b0e9f0607e9ebc983b2613eb9"
}
Frame {
msec: 1264
- hash: "16e12026ab14657b0f36b8315684455d"
+ hash: "81bd467b2314fb877825323a6120de4a"
}
Frame {
msec: 1280
- hash: "d001a6b2fec3c66baaa45d9ff93b3f63"
+ hash: "5cd632ac5399826249137ff2f27ef734"
}
Frame {
msec: 1296
- hash: "fef11eb5f635bc11cd9679b7213b3b92"
+ hash: "3b6732d7539d7b9b6ac13b6f8291b993"
}
Frame {
msec: 1312
- hash: "0a0cd5f5004048d88712cfe6943470c0"
+ hash: "6bde822175f1ee22a8bb0528d6170a5a"
}
Frame {
msec: 1328
- hash: "0d83178afdae5feaa9915d56c24373ad"
+ hash: "a8401f0c19db5c395cf122f3fe6f3be2"
}
Frame {
msec: 1344
- hash: "0a9e6e0b7b23ce93dc4e1f886cf9c7d1"
+ hash: "10e5126a9f97caf19df3d0ec4485222f"
}
Frame {
msec: 1360
- hash: "f3199d0c860f1236e0b9472bef8785bc"
+ hash: "f7b0bde6f4c9e9c9aecdbf11f0ec525c"
}
Frame {
msec: 1376
- hash: "f3199d0c860f1236e0b9472bef8785bc"
+ hash: "7501da757e6b0ba3923635765ef63f5b"
}
Frame {
msec: 1392
- hash: "32ccdab249268b01d9f1658a736052f1"
+ hash: "c66f5f30f7a545fcf0b52debd68d96c1"
}
Frame {
msec: 1408
- hash: "dc98f32a1a2d6e74998123b5232107b0"
+ hash: "ea679c31fd51733076716a325d2d4dc1"
}
Frame {
msec: 1424
- hash: "db3010ef552146df938c237f6c92bff5"
+ hash: "01ffc159e0d0796e4de7cffd46685481"
}
Frame {
msec: 1440
- hash: "101e8595d0301e88376ec52ba9361f84"
+ hash: "c53b75720a772a43a6c7d046ffb4d39b"
}
Frame {
msec: 1456
- hash: "119d548c59baa7e47266d2ceca663288"
+ hash: "1338c0458f32869e35163a2dcb950b8e"
}
Frame {
msec: 1472
- hash: "f141fafe102a0b9a2bf33e8c3fc800ff"
+ hash: "1338c0458f32869e35163a2dcb950b8e"
}
Frame {
msec: 1488
- hash: "b01f9ca8d4fbff17b3d48c70898a044d"
+ hash: "d894739536bb7033d321f8862264b5e6"
}
Frame {
msec: 1504
- hash: "cf67954a2d1b22e8d2cfdc26419bafb8"
+ hash: "52d5556f4b2404ae896ae36e0bc866ed"
}
Frame {
msec: 1520
- hash: "7680b2b5a63dea13d733947297e01355"
+ hash: "5ff9d9ab8099b2b9469df9efe672f46d"
}
Frame {
msec: 1536
- hash: "af1c017acf6b3c8cff86c9ceb60db3cb"
+ hash: "acadb950bd78c6fade9161f8e53628e7"
}
Frame {
msec: 1552
- hash: "0b23ec51f71fddae5e2238ab5754f1db"
+ hash: "7583b99a5f3aede70fc10728d77f57cc"
}
Frame {
msec: 1568
- hash: "976643961ecbdc86335180ba812b874e"
+ hash: "f72881eb92792727985482996bf689f9"
}
Frame {
msec: 1584
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "26e0d64d5afeecdc4d93492f1eaaa54f"
}
Frame {
msec: 1600
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "93206a830cf787d00a6bb2d3c91d40bc"
}
Frame {
msec: 1616
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "af0a99b072a754cd0ecb75a7198849c1"
}
Frame {
msec: 1632
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "84adc92e299feeb494b108a009d1b662"
}
Frame {
msec: 1648
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "4fac6d471517625d4f5ce6ed6aaebe0b"
}
Frame {
msec: 1664
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6952c27025740aca006a13da87379f9f"
}
Frame {
msec: 1680
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "3297ed7bffb48a4f2ca90dd81eaf7c7a"
}
Frame {
msec: 1696
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "3297ed7bffb48a4f2ca90dd81eaf7c7a"
}
Frame {
msec: 1712
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1728
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1744
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1760
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1776
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1792
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1808
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1824
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1840
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1856
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1872
- hash: "aeed60899abb6c486a5b1df81f9a0224"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1888
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1904
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1920
- image: "scriptAction.1.png"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1936
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ image: "scriptAction-visual.2.png"
}
Frame {
msec: 1952
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
Frame {
msec: 1968
- hash: "aeed60899abb6c486a5b1df81f9a0224"
- }
- Frame {
- msec: 1984
- hash: "aeed60899abb6c486a5b1df81f9a0224"
- }
- Frame {
- msec: 2000
- hash: "aeed60899abb6c486a5b1df81f9a0224"
- }
- Frame {
- msec: 2016
- hash: "aeed60899abb6c486a5b1df81f9a0224"
- }
- Frame {
- msec: 2032
- hash: "aeed60899abb6c486a5b1df81f9a0224"
- }
- Frame {
- msec: 2048
- hash: "aeed60899abb6c486a5b1df81f9a0224"
+ hash: "6741d853f099a5a98fcdf87053b69ec8"
}
}
diff --git a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.1.png b/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.1.png
deleted file mode 100644
index 1a25c63ba1..0000000000
--- a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction-visual.qml b/tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction-visual.qml
index 1427c9de73..0a14542acf 100644
--- a/tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction-visual.qml
+++ b/tests/auto/declarative/qmlvisual/animation/scriptAction/scriptAction-visual.qml
@@ -6,10 +6,10 @@ then immediately change blue, and then animate moving 50 pixels down.
*/
Rectangle {
- width: 400; height: 400
+ width: 100; height: 100
Rectangle {
id: myRect
- width: 100; height: 100
+ width: 50; height: 50
color: "red"
}
MouseArea {
diff --git a/tests/auto/declarative/qmlvisual/fillmode/data/fillmode.0.png b/tests/auto/declarative/qmlvisual/fillmode/data/fillmode.0.png
index 02fa5c9b7e..52fd55c37c 100644
--- a/tests/auto/declarative/qmlvisual/fillmode/data/fillmode.0.png
+++ b/tests/auto/declarative/qmlvisual/fillmode/data/fillmode.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/fillmode/face.png b/tests/auto/declarative/qmlvisual/fillmode/face.png
index 9623b1ad15..e087316821 100644
--- a/tests/auto/declarative/qmlvisual/fillmode/face.png
+++ b/tests/auto/declarative/qmlvisual/fillmode/face.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/fillmode/fillmode.qml b/tests/auto/declarative/qmlvisual/fillmode/fillmode.qml
index 2ac98dac47..b2ecfee4b7 100644
--- a/tests/auto/declarative/qmlvisual/fillmode/fillmode.qml
+++ b/tests/auto/declarative/qmlvisual/fillmode/fillmode.qml
@@ -6,16 +6,16 @@ import QtQuick 1.0
*/
Rectangle {
- id: screen; width: 750; height: 600; color: "gray"
+ id: screen; width: 360; height: 200; color: "gray"
property string source: "face.png"
Grid {
columns: 3
- Image { width: 250; height: 300; source: screen.source; fillMode: Image.Stretch }
- Image { width: 250; height: 300; source: screen.source; fillMode: Image.PreserveAspectFit; smooth: true }
- Image { width: 250; height: 300; source: screen.source; fillMode: Image.PreserveAspectCrop }
- Image { width: 250; height: 300; source: screen.source; fillMode: Image.Tile; smooth: true }
- Image { width: 250; height: 300; source: screen.source; fillMode: Image.TileHorizontally }
- Image { width: 250; height: 300; source: screen.source; fillMode: Image.TileVertically }
+ Image { width: 120; height: 100; source: screen.source; fillMode: Image.Stretch }
+ Image { width: 120; height: 100; source: screen.source; fillMode: Image.PreserveAspectFit; smooth: true }
+ Image { width: 120; height: 100; source: screen.source; fillMode: Image.PreserveAspectCrop }
+ Image { width: 120; height: 100; source: screen.source; fillMode: Image.Tile; smooth: true }
+ Image { width: 120; height: 100; source: screen.source; fillMode: Image.TileHorizontally }
+ Image { width: 120; height: 100; source: screen.source; fillMode: Image.TileVertically }
}
}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.0.png
deleted file mode 100644
index 0f33d99ccb..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.1.png
deleted file mode 100644
index 0f33d99ccb..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.2.png
deleted file mode 100644
index 06a3dbd45f..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.3.png
deleted file mode 100644
index e0d02d658b..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.4.png
deleted file mode 100644
index e0d02d658b..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.5.png
deleted file mode 100644
index e0d02d658b..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.qml b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.qml
deleted file mode 100644
index ee9a550b02..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test.qml
+++ /dev/null
@@ -1,1599 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 32
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 48
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 64
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 80
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 96
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 112
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 128
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 144
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 160
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 176
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 192
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 208
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 224
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 240
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 256
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 272
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 288
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 304
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 320
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 336
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 352
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 368
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 384
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 400
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 416
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 432
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 448
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 464
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 480
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 496
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 512
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 528
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 544
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 560
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 576
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 592
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 608
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 624
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 640
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 656
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 672
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 688
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 704
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 720
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 736
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 752
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 768
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 784
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 800
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 816
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 832
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 848
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 864
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 880
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 896
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 912
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 928
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 944
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 960
- image: "test.0.png"
- }
- Frame {
- msec: 976
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 992
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1008
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1024
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1040
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1056
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1072
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1088
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1104
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1120
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1136
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1152
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1168
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1184
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1200
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1216
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1232
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1248
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1264
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1280
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1296
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1312
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1328
- hash: "715a587be7a5803af2827e882236d187"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1344
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1360
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1376
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1392
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1408
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1424
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1440
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1456
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1472
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1488
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1504
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1520
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1536
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1552
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1568
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1584
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1600
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1616
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1632
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1648
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1664
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1680
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1696
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1712
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1728
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1744
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1760
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1776
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1792
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 1808
- hash: "715a587be7a5803af2827e882236d187"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1824
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1840
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1856
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1872
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1888
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1904
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1920
- image: "test.1.png"
- }
- Frame {
- msec: 1936
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1952
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1968
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 1984
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2000
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2016
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2032
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2048
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2064
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2080
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2096
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2112
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2128
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2144
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2160
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2176
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2192
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2208
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2224
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2240
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2256
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2272
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2288
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2304
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2320
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2336
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 2352
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Key {
- type: 6
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2368
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2384
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2400
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2416
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2432
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2448
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2464
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Key {
- type: 7
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2480
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2496
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2512
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2528
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2544
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2560
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2576
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2592
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2608
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2624
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2640
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2656
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2672
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2688
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2704
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2720
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2736
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2752
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2768
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2784
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2800
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2816
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2832
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2848
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2864
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2880
- image: "test.2.png"
- }
- Frame {
- msec: 2896
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2912
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2928
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2944
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2960
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 2976
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Key {
- type: 6
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2992
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3008
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3024
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3040
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3056
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3072
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3088
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Key {
- type: 7
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3104
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3120
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3136
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3152
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3168
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3184
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3200
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3216
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3232
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3248
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3264
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3280
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3296
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3312
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3328
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3344
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3360
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3376
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3392
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3408
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3424
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3440
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3456
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3472
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3488
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3504
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3520
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Frame {
- msec: 3536
- hash: "70f4ce2881f2340167f314b49716707a"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3552
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3568
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3584
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3600
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3616
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3632
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3648
- hash: "715a587be7a5803af2827e882236d187"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3664
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3680
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3696
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3712
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3728
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3744
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3760
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3776
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3792
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3808
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3824
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3840
- image: "test.3.png"
- }
- Frame {
- msec: 3856
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3872
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3888
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3904
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3920
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3936
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3952
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3968
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 3984
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4000
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4016
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4032
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4048
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4064
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4080
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4096
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4112
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4128
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4144
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4160
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4176
- hash: "715a587be7a5803af2827e882236d187"
- }
- Key {
- type: 6
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4192
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4208
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4224
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4240
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4256
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4272
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Key {
- type: 7
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4288
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4304
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4320
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4336
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4352
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4368
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4384
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4400
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4416
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4432
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4448
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4464
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4480
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4496
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4512
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4528
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4544
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4560
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4576
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4592
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4608
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4624
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4640
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4656
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4672
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4688
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4704
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4720
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4736
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4752
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4768
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Frame {
- msec: 4784
- hash: "773f573d4b37181f7a784597a30cd73d"
- }
- Key {
- type: 6
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4800
- image: "test.4.png"
- }
- Frame {
- msec: 4816
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4832
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4848
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4864
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4880
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4896
- hash: "715a587be7a5803af2827e882236d187"
- }
- Key {
- type: 7
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4912
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4928
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4944
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4960
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4976
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 4992
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5008
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5024
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5040
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5056
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5072
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5088
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5104
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5120
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5136
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5152
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5168
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5184
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5200
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5216
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5232
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5248
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5264
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5280
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5296
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5312
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5328
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5344
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5360
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5376
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5392
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5408
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5424
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5440
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5456
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5472
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5488
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5504
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5520
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5536
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5552
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5568
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5584
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5600
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5616
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5632
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5648
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5664
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5680
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5696
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5712
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5728
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5744
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5760
- image: "test.5.png"
- }
- Frame {
- msec: 5776
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5792
- hash: "715a587be7a5803af2827e882236d187"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 5808
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5824
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5840
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5856
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5872
- hash: "715a587be7a5803af2827e882236d187"
- }
- Frame {
- msec: 5888
- hash: "715a587be7a5803af2827e882236d187"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.0.png
deleted file mode 100644
index fa711c1b36..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.1.png
deleted file mode 100644
index fa711c1b36..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.qml b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.qml
deleted file mode 100644
index 5d84bfee0f..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test2.qml
+++ /dev/null
@@ -1,607 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 32
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 48
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 64
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 80
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 96
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 112
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 128
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 144
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 160
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 176
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 192
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 208
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 224
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 240
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 256
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 272
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 288
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 304
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 320
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 336
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 352
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 368
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 384
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 400
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 416
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 432
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 448
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 464
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 480
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 496
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 512
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 528
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 544
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 560
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 576
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 592
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 608
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 624
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 640
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 656
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 672
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 688
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 704
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 720
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 736
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 752
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 768
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 784
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 800
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 816
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 832
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 848
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 864
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 880
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 896
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 912
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 928
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 944
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 960
- image: "test2.0.png"
- }
- Frame {
- msec: 976
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 992
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1008
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1024
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1040
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1056
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1072
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1088
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1104
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1120
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1136
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1152
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1168
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1184
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1200
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1216
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1232
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1248
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1264
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1280
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1296
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1312
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1328
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1344
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1360
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1376
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1392
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1408
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1424
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1440
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1456
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1472
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1488
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1504
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1520
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1536
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1552
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1568
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1584
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1600
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1616
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1632
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1648
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1664
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1680
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1696
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1712
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1728
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1744
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1760
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1776
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1792
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1808
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1824
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1840
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1856
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1872
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1888
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1904
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1920
- image: "test2.1.png"
- }
- Frame {
- msec: 1936
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1952
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1968
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 1984
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2000
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2016
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2032
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2048
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2064
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2080
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2096
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2112
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2128
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2144
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2160
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2176
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2192
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2208
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2224
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2240
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2256
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 2272
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2288
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2304
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2320
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2336
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2352
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
- Frame {
- msec: 2368
- hash: "9ecdd4addcaea53cdca16f3496ceb15c"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png
deleted file mode 100644
index 9309e377bc..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png
deleted file mode 100644
index 20e6c8e062..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png
deleted file mode 100644
index c7559ac646..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png
deleted file mode 100644
index bf2844b7cc..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.4.png
deleted file mode 100644
index beef0bf9ec..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.5.png
deleted file mode 100644
index 1847dc703a..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.6.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.6.png
deleted file mode 100644
index c7559ac646..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.7.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.7.png
deleted file mode 100644
index 20e6c8e062..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.8.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.8.png
deleted file mode 100644
index 9309e377bc..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.8.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.9.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.9.png
deleted file mode 100644
index 7ac879b003..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml
deleted file mode 100644
index cd73a3c4a0..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml
+++ /dev/null
@@ -1,2879 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 32
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 48
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 64
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 80
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 96
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 112
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 128
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 144
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 160
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 176
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 192
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 208
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 224
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 240
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 256
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 272
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 288
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 304
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 320
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 336
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 352
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 368
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 384
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 400
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 416
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 432
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 448
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 464
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 480
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 496
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 512
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 528
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 544
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 560
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 576
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 592
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 608
- hash: "ce962a38caeb7bf7eef05112fbb52f91"
- }
- Frame {
- msec: 624
- hash: "779f0660ce5bc2c2fc9f05d8b86158a8"
- }
- Frame {
- msec: 640
- hash: "615e07a3c83539321befb44aa8fac811"
- }
- Frame {
- msec: 656
- hash: "8a00b9f66ca7fdb0e4975f547025f873"
- }
- Frame {
- msec: 672
- hash: "43bbe82799b1d8453f89a7ef928b1e54"
- }
- Frame {
- msec: 688
- hash: "2cc468d6e14c27ff1c0bd6064ae47509"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 704
- hash: "1dc9d1b95016ccbeaca5b7a867a5cc3a"
- }
- Frame {
- msec: 720
- hash: "f36734c91fe41a7947965dac97393ad4"
- }
- Frame {
- msec: 736
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 752
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 768
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 784
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 800
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 816
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 832
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 848
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 864
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 880
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 896
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 912
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 928
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 944
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 960
- image: "test3.0.png"
- }
- Frame {
- msec: 976
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 992
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 1008
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 1024
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 1040
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 1056
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 1072
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 1088
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1104
- hash: "1c29b3d1086b261c2a9e94d49567484f"
- }
- Frame {
- msec: 1120
- hash: "6ab17a210b45dae1ed99fd1689bb3e46"
- }
- Frame {
- msec: 1136
- hash: "feb504605f7f27ca3a2bf080c1fb1e19"
- }
- Frame {
- msec: 1152
- hash: "bec2d2e2222587a379af12a30e078886"
- }
- Frame {
- msec: 1168
- hash: "39cb2bdc44273023b557a0f56df61d85"
- }
- Frame {
- msec: 1184
- hash: "2cda045b452c4645be1cdb4efd238532"
- }
- Frame {
- msec: 1200
- hash: "1f3efbfadd22734b5fd656596c11885b"
- }
- Frame {
- msec: 1216
- hash: "7277c05a06e481a5af13e4fe39e322f8"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1232
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1248
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1264
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1280
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1296
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1312
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1328
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1344
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1360
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1376
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1392
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1408
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1424
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1440
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1456
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1472
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1488
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1504
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 1520
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1536
- hash: "c5f88e95ead1f4542b766577d80e70fd"
- }
- Frame {
- msec: 1552
- hash: "d38118f26b9c2b68dc8fdb8d2a959134"
- }
- Frame {
- msec: 1568
- hash: "44c483c899220f040aa7808f15fac429"
- }
- Frame {
- msec: 1584
- hash: "02a63967944c8c53a9741318e99a326e"
- }
- Frame {
- msec: 1600
- hash: "7fc10e91212af979e09c8d3b98625c1b"
- }
- Frame {
- msec: 1616
- hash: "d14b69d18adc548dfb68dae1559effdb"
- }
- Frame {
- msec: 1632
- hash: "cb9bce7fa14a367197fa34ad3acc4cdd"
- }
- Frame {
- msec: 1648
- hash: "105a0e3d36296eba16077c4cf93547ae"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1664
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1680
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1696
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1712
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1728
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1744
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1760
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1776
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1792
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1808
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1824
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1840
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1856
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1872
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1888
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1904
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1920
- image: "test3.1.png"
- }
- Frame {
- msec: 1936
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1952
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1968
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 1984
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 2000
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2016
- hash: "6e4e4321cda32abab394419a9e6494dc"
- }
- Frame {
- msec: 2032
- hash: "45b79c56379afa7243547fedfa3260db"
- }
- Frame {
- msec: 2048
- hash: "4635555c632f325a151d340a3eb742b9"
- }
- Frame {
- msec: 2064
- hash: "0255da44fa95548427139073c994234c"
- }
- Frame {
- msec: 2080
- hash: "eac0c428ea7b7aa55a469562d2cb3fd6"
- }
- Frame {
- msec: 2096
- hash: "06ab23a83a5900cfdde98d4563414511"
- }
- Frame {
- msec: 2112
- hash: "808e4a745c58872d52ec6a3e669aea5c"
- }
- Frame {
- msec: 2128
- hash: "e6231b43f93fd6ae3e0990def1168c39"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2144
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2160
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2176
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2192
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2208
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2224
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2240
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2256
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2272
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2288
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2304
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2320
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2336
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2352
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2368
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2384
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2400
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2416
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2432
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2448
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2464
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2480
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2496
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 2512
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2528
- hash: "e1c32968e36cb95be250121187ddf13e"
- }
- Frame {
- msec: 2544
- hash: "70498453babe3ab5e0fec62bcd0ff332"
- }
- Frame {
- msec: 2560
- hash: "76fc1b1e6b22771bf08dfdd16b3f24e9"
- }
- Frame {
- msec: 2576
- hash: "c6be4f26750b8bc1a5b71ff381e462c6"
- }
- Frame {
- msec: 2592
- hash: "986f738d0f0f70b88f951d9f028ef61b"
- }
- Frame {
- msec: 2608
- hash: "2201ad4f92bcf24ab62d0ddb8b2a64c1"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2624
- hash: "27e9a18cb70c8f2ab9e4dd7af321e8e4"
- }
- Frame {
- msec: 2640
- hash: "3a352127f49f8c589b7b7da1232caf6b"
- }
- Frame {
- msec: 2656
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2672
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2688
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2704
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2720
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2736
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2752
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2768
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2784
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2800
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2816
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2832
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2848
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2864
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2880
- image: "test3.2.png"
- }
- Frame {
- msec: 2896
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2912
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2928
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2944
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2960
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 2976
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2992
- hash: "20f96d3fbef9d51d8b8a28a6d58fabb2"
- }
- Frame {
- msec: 3008
- hash: "1e5d888fd4685960b8ae0a79e2287e89"
- }
- Frame {
- msec: 3024
- hash: "2115c2e6689ce6669abf9f3741eb5df1"
- }
- Frame {
- msec: 3040
- hash: "c67949eb5f2210c6b2dad4ff352831ed"
- }
- Frame {
- msec: 3056
- hash: "d982500bee0a6f6fb0861fb3c32319eb"
- }
- Frame {
- msec: 3072
- hash: "ffb111084712d5ecf072ade52103b985"
- }
- Frame {
- msec: 3088
- hash: "e5d594c8f08b9d283a3998648a383332"
- }
- Frame {
- msec: 3104
- hash: "20632ba6a4c14386eb01167059f7b617"
- }
- Frame {
- msec: 3120
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3136
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3152
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3168
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3184
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3200
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3216
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3232
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3248
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3264
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3280
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3296
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3312
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3328
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3344
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3360
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3376
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3392
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3408
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3424
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3440
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3456
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3472
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 3488
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3504
- hash: "f60a72dd52f6f319706dc97f873a484f"
- }
- Frame {
- msec: 3520
- hash: "a21fbcbb3c0ede708f2862959b84654f"
- }
- Frame {
- msec: 3536
- hash: "40e5f7530391e7641498c7870ce986c9"
- }
- Frame {
- msec: 3552
- hash: "809daf15ad3e9f981f1306da18dd6872"
- }
- Frame {
- msec: 3568
- hash: "4b053d234c8c9a5afb7800abe28ea96f"
- }
- Frame {
- msec: 3584
- hash: "e011e3aaf143befc8e207945fdfc9f47"
- }
- Frame {
- msec: 3600
- hash: "55539d51f833b8a98fc14031a4a70c4c"
- }
- Frame {
- msec: 3616
- hash: "07c2b526c022d0deae61acba26d7ea24"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3632
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3648
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3664
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3680
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3696
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3712
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3728
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3744
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3760
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3776
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3792
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3808
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3824
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3840
- image: "test3.3.png"
- }
- Frame {
- msec: 3856
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3872
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3888
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3904
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3920
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3936
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3952
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3968
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 3984
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4000
- hash: "7d2f24d5a68397bedc2f9e3652715126"
- }
- Frame {
- msec: 4016
- hash: "55ff9205bb36d8f8965fb122a8686203"
- }
- Frame {
- msec: 4032
- hash: "8968377cbbdf7a46b6f13690826ac711"
- }
- Frame {
- msec: 4048
- hash: "8ce9afffac571f1a2cc6986d79dd2c8f"
- }
- Frame {
- msec: 4064
- hash: "f75c375cdf8e1b83398e9b18e7c39852"
- }
- Frame {
- msec: 4080
- hash: "20c8db7fb344c056465175ed0fa9518a"
- }
- Frame {
- msec: 4096
- hash: "8135c2cae0dcf8ee6eccbfdd7b711bc0"
- }
- Frame {
- msec: 4112
- hash: "659fc24d328058eb118be5613ea25257"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4128
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4144
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4160
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4176
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4192
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4208
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4224
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4240
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4256
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4272
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4288
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4304
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4320
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4336
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4352
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4368
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4384
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4400
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4416
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4432
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4448
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4464
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4480
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4496
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4512
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4528
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4544
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4560
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4576
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4592
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4608
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4624
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4640
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4656
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4672
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4688
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4704
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4720
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4736
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4752
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4768
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4784
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4800
- image: "test3.4.png"
- }
- Frame {
- msec: 4816
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4832
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4848
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4864
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4880
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4896
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4912
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4928
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4944
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4960
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4976
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 4992
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 5008
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 5024
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 5040
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 5056
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 5072
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 5088
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Frame {
- msec: 5104
- hash: "ef9a34bf49c632be0f88f6658196dfe6"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5120
- hash: "f01088d95d8409f98ae19b7970ecf3ad"
- }
- Frame {
- msec: 5136
- hash: "393987a9e22db77233465e3d08cfb244"
- }
- Frame {
- msec: 5152
- hash: "40e58eac132aa3b5f66f244ab7b189be"
- }
- Frame {
- msec: 5168
- hash: "d60c98c5fafe6bfa73a3d0c55f8f6716"
- }
- Frame {
- msec: 5184
- hash: "775733a71bb1d39f51b9fbc7e28d9ffe"
- }
- Frame {
- msec: 5200
- hash: "a343457f584c6e63aaec36b5db4fb7d0"
- }
- Frame {
- msec: 5216
- hash: "7c416bd1be54135056b037642026251f"
- }
- Frame {
- msec: 5232
- hash: "42813b6c3ef437a7b3ea8f03bb8b1894"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5248
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5264
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5280
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5296
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5312
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5328
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5344
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5360
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5376
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5392
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5408
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5424
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5440
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5456
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5472
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5488
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5504
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5520
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5536
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5552
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5568
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5584
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5600
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5616
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5632
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5648
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5664
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5680
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5696
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Frame {
- msec: 5712
- hash: "cc0ab553f98262662e52191e0b370486"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5728
- hash: "b3af171ca40a5f081e2bfc984b8da551"
- }
- Frame {
- msec: 5744
- hash: "aadbc8c960fbe2e8aac184a99ba818bd"
- }
- Frame {
- msec: 5760
- image: "test3.5.png"
- }
- Frame {
- msec: 5776
- hash: "99fc06589f09cd10cfdf748f032eacbd"
- }
- Frame {
- msec: 5792
- hash: "f7915b1a8b9f7188263180a97c8b355f"
- }
- Frame {
- msec: 5808
- hash: "7fb30728fb764b659bad5bb6c4e71e2c"
- }
- Frame {
- msec: 5824
- hash: "4882459350feffaed89c2296c74b839d"
- }
- Frame {
- msec: 5840
- hash: "917a368858e431bebcd8f2fda67401f8"
- }
- Frame {
- msec: 5856
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5872
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 5888
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 5904
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 5920
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 5936
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 5952
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 5968
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 5984
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6000
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6016
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6032
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6048
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6064
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6080
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6096
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6112
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6128
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6144
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6160
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6176
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6192
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6208
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6224
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6240
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6256
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Frame {
- msec: 6272
- hash: "bfd0497c6505d42aefe6341adb850d89"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6288
- hash: "ada3c3558261701c705ecf79716df56a"
- }
- Frame {
- msec: 6304
- hash: "81c73fd3dd69eb767d8899a54c3088bb"
- }
- Frame {
- msec: 6320
- hash: "d54e7dd1e876666f64b5904240bf8764"
- }
- Frame {
- msec: 6336
- hash: "32bdeac66a43a967d549ca2ad8c59bbd"
- }
- Frame {
- msec: 6352
- hash: "04eec62cc40c8b31d989bead64909f9e"
- }
- Frame {
- msec: 6368
- hash: "cfffdd4edc35303ee260ed32956238b7"
- }
- Frame {
- msec: 6384
- hash: "fb562c38b9d2360517160f8a8ab29ced"
- }
- Frame {
- msec: 6400
- hash: "ba8ec8f0663bf1e62ff426b0c7d0d3b2"
- }
- Frame {
- msec: 6416
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6432
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6448
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6464
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6480
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6496
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6512
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6528
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6544
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6560
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6576
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6592
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6608
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6624
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6640
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6656
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6672
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6688
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6704
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6720
- image: "test3.6.png"
- }
- Frame {
- msec: 6736
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6752
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6768
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6784
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6800
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6816
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6832
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Frame {
- msec: 6848
- hash: "e3b2de8a4e3229880971d2144e55de1b"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6864
- hash: "e6292a001405924f6d5f1a4051c3f6cb"
- }
- Frame {
- msec: 6880
- hash: "0d8a6b740cc7b33659aa0a1cc2bd2aa9"
- }
- Frame {
- msec: 6896
- hash: "07c4267ff499c46977420d4be7529e04"
- }
- Frame {
- msec: 6912
- hash: "f69cd14d97de3ca8d21ace1df1d5a523"
- }
- Frame {
- msec: 6928
- hash: "1572b31fd3ae917d5701d0b8f1d2a2bc"
- }
- Frame {
- msec: 6944
- hash: "e3953027fe269a5d4c6581717d516c65"
- }
- Frame {
- msec: 6960
- hash: "e35e8a5dfa7309696fa20c6f5480ac50"
- }
- Frame {
- msec: 6976
- hash: "77e75e66118f911c8fff084e1a825d77"
- }
- Frame {
- msec: 6992
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7008
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7024
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7040
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7056
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7072
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7088
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7104
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7120
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7136
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7152
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7168
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7184
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7200
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7216
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7232
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7248
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7264
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7280
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7296
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7312
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7328
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7344
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7360
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7376
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7392
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7408
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7424
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Frame {
- msec: 7440
- hash: "e97f921f1c34246fc229c48a4b66466c"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7456
- hash: "8588c30394737cebc5580fe024589b08"
- }
- Frame {
- msec: 7472
- hash: "ca150a32b22cad95696ecfbad0ed3e67"
- }
- Frame {
- msec: 7488
- hash: "7f980e0cf67927918b1244456c38c7c0"
- }
- Frame {
- msec: 7504
- hash: "2bc38fb34a6875aabddce0f460914612"
- }
- Frame {
- msec: 7520
- hash: "328257a4691f341db39ee5ca677693eb"
- }
- Frame {
- msec: 7536
- hash: "05e0d8c986ff81e23f253d56ebdef46e"
- }
- Frame {
- msec: 7552
- hash: "be95d74a42318c52ab73ce694436a58b"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7568
- hash: "eba8512746494f3602d24dab86fb2559"
- }
- Frame {
- msec: 7584
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7600
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7616
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7632
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7648
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7664
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7680
- image: "test3.7.png"
- }
- Frame {
- msec: 7696
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7712
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7728
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7744
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7760
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7776
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7792
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7808
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7824
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7840
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7856
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7872
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7888
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7904
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7920
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7936
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7952
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Frame {
- msec: 7968
- hash: "8f443766efd0f74e96e79ed3c267892c"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7984
- hash: "7b2b3a84e9649370ce282383a820c39b"
- }
- Frame {
- msec: 8000
- hash: "08547adce7e02eec593fa636af004257"
- }
- Frame {
- msec: 8016
- hash: "29789cfbd1b648ce705cf17d03298ffe"
- }
- Frame {
- msec: 8032
- hash: "9e89ef84c86b1fc0531f0bd5ee530ba5"
- }
- Frame {
- msec: 8048
- hash: "21b437a318c5ef87c38f9199772eafa6"
- }
- Frame {
- msec: 8064
- hash: "70c8c8fbcf2d0331ca7ede8641a6068b"
- }
- Frame {
- msec: 8080
- hash: "c277e9d4f89e99d974d03dcfe41a1755"
- }
- Frame {
- msec: 8096
- hash: "54c7a72a3f814e707777c16ddd4532b8"
- }
- Frame {
- msec: 8112
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8128
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8144
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8160
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8176
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8192
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8208
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8224
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8240
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8256
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8272
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8288
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8304
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8320
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8336
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8352
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8368
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8384
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8400
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8416
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8432
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8448
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8464
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8480
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Frame {
- msec: 8496
- hash: "bdf37518633a43d8dc47245f5b68550b"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8512
- hash: "7992512c72fe530fdd92866c96de29a0"
- }
- Frame {
- msec: 8528
- hash: "ad29d3653790efb998ac137538b4ce09"
- }
- Frame {
- msec: 8544
- hash: "f6daf0ad7f7c970ece3dc1898ab9f092"
- }
- Frame {
- msec: 8560
- hash: "417143caa8ed86082ea4e40aca7ca26e"
- }
- Frame {
- msec: 8576
- hash: "5215943d1fbffd5ef7c16d4ca6587628"
- }
- Frame {
- msec: 8592
- hash: "d143c87d3cf7560f911e98869983efef"
- }
- Frame {
- msec: 8608
- hash: "1fcb9b3d3b4c888c65334b88e240d79c"
- }
- Frame {
- msec: 8624
- hash: "61cec1c227eafafe6c03a33591b1825e"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8640
- image: "test3.8.png"
- }
- Frame {
- msec: 8656
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8672
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8688
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8704
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8720
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8736
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8752
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8768
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8784
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8800
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8816
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8832
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8848
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8864
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8880
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8896
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8912
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8928
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8944
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8960
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8976
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 8992
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 9008
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 9024
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 9040
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Frame {
- msec: 9056
- hash: "57e009de047c348d3ae14a6271b2e6f2"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 9072
- hash: "fcbb907bcf41602a5c30e2843a4b1fff"
- }
- Frame {
- msec: 9088
- hash: "5fee95daaa629bbf0cec3e41cd693502"
- }
- Frame {
- msec: 9104
- hash: "b9d721d2a8b0867bab29817b99b8ec2d"
- }
- Frame {
- msec: 9120
- hash: "e518e9872a502d3b2ff74d209626c9ee"
- }
- Frame {
- msec: 9136
- hash: "9c535d7da59ed2f2ce116e70c3e165cf"
- }
- Frame {
- msec: 9152
- hash: "e54fbcb23e01d5842885b92d4493535b"
- }
- Frame {
- msec: 9168
- hash: "7ac2467f24cef06c8842460ffe813ee0"
- }
- Frame {
- msec: 9184
- hash: "276293e289db5c9c7cd9612c73ef7792"
- }
- Frame {
- msec: 9200
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 9216
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9232
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9248
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9264
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9280
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9296
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9312
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9328
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9344
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9360
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9376
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9392
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9408
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9424
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9440
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9456
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9472
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9488
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9504
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9520
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9536
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9552
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9568
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9584
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9600
- image: "test3.9.png"
- }
- Frame {
- msec: 9616
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9632
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9648
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9664
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9680
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9696
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9712
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9728
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9744
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9760
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9776
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9792
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9808
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9824
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9840
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9856
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9872
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9888
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9904
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9920
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9936
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9952
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9968
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 9984
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10000
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10016
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10032
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10048
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10064
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10080
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10096
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10112
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10128
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10144
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10160
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10176
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10192
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10208
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10224
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10240
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10256
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10272
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10288
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10304
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10320
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10336
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10352
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10368
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 10384
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10400
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10416
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
- Frame {
- msec: 10432
- hash: "d38da3f61cd2944eec8bdfbef70c928f"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.0.png
deleted file mode 100644
index f68f7dcf4a..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.1.png
deleted file mode 100644
index f68f7dcf4a..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.2.png
deleted file mode 100644
index e26c0289bb..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.3.png
deleted file mode 100644
index 9c4b2f2c50..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.4.png
deleted file mode 100644
index 9c4b2f2c50..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.5.png
deleted file mode 100644
index 9c4b2f2c50..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.qml b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.qml
deleted file mode 100644
index 8d3620056a..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test.qml
+++ /dev/null
@@ -1,1599 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 32
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 48
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 64
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 80
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 96
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 112
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 128
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 144
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 160
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 176
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 192
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 208
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 224
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 240
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 256
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 272
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 288
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 304
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 320
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 336
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 352
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 368
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 384
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 400
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 416
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 432
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 448
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 464
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 480
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 496
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 512
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 528
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 544
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 560
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 576
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 592
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 608
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 624
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 640
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 656
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 672
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 688
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 704
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 720
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 736
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 752
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 768
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 784
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 800
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 816
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 832
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 848
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 864
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 880
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 896
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 912
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 928
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 944
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 960
- image: "test.0.png"
- }
- Frame {
- msec: 976
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 992
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1008
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1024
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1040
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1056
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1072
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1088
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1104
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1120
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1136
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1152
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1168
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1184
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1200
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1216
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1232
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1248
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1264
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1280
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1296
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1312
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1328
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1344
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1360
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1376
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1392
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1408
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1424
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1440
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1456
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1472
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1488
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1504
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1520
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1536
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1552
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1568
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1584
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1600
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1616
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1632
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1648
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1664
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1680
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1696
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1712
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1728
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1744
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1760
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1776
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1792
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 1808
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1824
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1840
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1856
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1872
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1888
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1904
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1920
- image: "test.1.png"
- }
- Frame {
- msec: 1936
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1952
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1968
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 1984
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2000
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2016
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2032
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2048
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2064
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2080
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2096
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2112
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2128
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2144
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2160
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2176
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2192
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2208
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2224
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2240
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2256
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2272
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2288
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2304
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2320
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2336
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 2352
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Key {
- type: 6
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2368
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2384
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2400
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2416
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2432
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2448
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2464
- hash: "9157e592069482e801a091aa69758d26"
- }
- Key {
- type: 7
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2480
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2496
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2512
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2528
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2544
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2560
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2576
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2592
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2608
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2624
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2640
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2656
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2672
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2688
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2704
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2720
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2736
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2752
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2768
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2784
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2800
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2816
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2832
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2848
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2864
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2880
- image: "test.2.png"
- }
- Frame {
- msec: 2896
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2912
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2928
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2944
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2960
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 2976
- hash: "9157e592069482e801a091aa69758d26"
- }
- Key {
- type: 6
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2992
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3008
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3024
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3040
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3056
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3072
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3088
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Key {
- type: 7
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3104
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3120
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3136
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3152
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3168
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3184
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3200
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3216
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3232
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3248
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3264
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3280
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3296
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3312
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3328
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3344
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3360
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3376
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3392
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3408
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3424
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3440
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3456
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3472
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3488
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3504
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3520
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Frame {
- msec: 3536
- hash: "cd2aced96da9032ddd5e2cacf27d045d"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3552
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3568
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3584
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3600
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3616
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3632
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3648
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3664
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3680
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3696
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3712
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3728
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3744
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3760
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3776
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3792
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3808
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3824
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3840
- image: "test.3.png"
- }
- Frame {
- msec: 3856
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3872
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3888
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3904
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3920
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3936
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3952
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3968
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 3984
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4000
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4016
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4032
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4048
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4064
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4080
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4096
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4112
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4128
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4144
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4160
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4176
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Key {
- type: 6
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4192
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4208
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4224
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4240
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4256
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4272
- hash: "9157e592069482e801a091aa69758d26"
- }
- Key {
- type: 7
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4288
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4304
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4320
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4336
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4352
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4368
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4384
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4400
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4416
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4432
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4448
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4464
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4480
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4496
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4512
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4528
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4544
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4560
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4576
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4592
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4608
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4624
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4640
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4656
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4672
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4688
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4704
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4720
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4736
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4752
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4768
- hash: "9157e592069482e801a091aa69758d26"
- }
- Frame {
- msec: 4784
- hash: "9157e592069482e801a091aa69758d26"
- }
- Key {
- type: 6
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4800
- image: "test.4.png"
- }
- Frame {
- msec: 4816
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4832
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4848
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4864
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4880
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4896
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Key {
- type: 7
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4912
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4928
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4944
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4960
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4976
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 4992
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5008
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5024
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5040
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5056
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5072
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5088
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5104
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5120
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5136
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5152
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5168
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5184
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5200
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5216
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5232
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5248
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5264
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5280
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5296
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5312
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5328
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5344
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5360
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5376
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5392
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5408
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5424
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5440
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5456
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5472
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5488
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5504
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5520
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5536
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5552
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5568
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5584
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5600
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5616
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5632
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5648
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5664
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5680
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5696
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5712
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5728
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5744
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5760
- image: "test.5.png"
- }
- Frame {
- msec: 5776
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5792
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 5808
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5824
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5840
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5856
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5872
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
- Frame {
- msec: 5888
- hash: "0de58b2460574baf17912e90ba8a89b2"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.0.png
deleted file mode 100644
index 6be7aeff8a..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.1.png
deleted file mode 100644
index 6be7aeff8a..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.qml b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.qml
deleted file mode 100644
index 813665d950..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test2.qml
+++ /dev/null
@@ -1,607 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 32
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 48
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 64
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 80
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 96
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 112
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 128
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 144
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 160
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 176
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 192
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 208
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 224
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 240
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 256
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 272
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 288
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 304
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 320
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 336
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 352
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 368
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 384
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 400
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 416
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 432
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 448
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 464
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 480
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 496
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 512
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 528
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 544
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 560
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 576
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 592
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 608
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 624
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 640
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 656
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 672
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 688
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 704
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 720
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 736
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 752
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 768
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 784
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 800
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 816
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 832
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 848
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 864
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 880
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 896
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 912
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 928
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 944
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 960
- image: "test2.0.png"
- }
- Frame {
- msec: 976
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 992
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1008
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1024
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1040
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1056
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1072
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1088
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1104
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1120
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1136
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1152
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1168
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1184
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1200
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1216
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1232
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1248
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1264
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1280
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1296
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1312
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1328
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1344
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1360
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1376
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1392
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1408
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1424
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1440
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1456
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1472
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1488
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1504
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1520
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1536
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1552
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1568
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1584
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1600
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1616
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1632
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1648
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1664
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1680
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1696
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1712
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1728
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1744
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1760
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1776
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1792
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1808
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1824
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1840
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1856
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1872
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1888
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1904
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1920
- image: "test2.1.png"
- }
- Frame {
- msec: 1936
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1952
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1968
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 1984
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2000
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2016
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2032
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2048
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2064
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2080
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2096
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2112
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2128
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2144
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2160
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2176
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2192
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2208
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2224
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2240
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2256
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 2272
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2288
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2304
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2320
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2336
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2352
- hash: "529409797f67656145ea88544bb8cc9f"
- }
- Frame {
- msec: 2368
- hash: "529409797f67656145ea88544bb8cc9f"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.0.png
deleted file mode 100644
index 5f93c67072..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.1.png
deleted file mode 100644
index 3b4e0e68c8..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.2.png
deleted file mode 100644
index 54a393407c..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.3.png
deleted file mode 100644
index 4f08fd29a3..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.4.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.4.png
deleted file mode 100644
index 9aee1f859d..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.5.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.5.png
deleted file mode 100644
index 04eb05cce7..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.6.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.6.png
deleted file mode 100644
index 54a393407c..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.7.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.7.png
deleted file mode 100644
index 3b4e0e68c8..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.8.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.8.png
deleted file mode 100644
index 2df55dfe49..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.8.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.9.png b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.9.png
deleted file mode 100644
index 91816fd58f..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.qml
deleted file mode 100644
index 0fba4517ee..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data-X11/test3.qml
+++ /dev/null
@@ -1,2879 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 32
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 48
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 64
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 80
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 96
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 112
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 128
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 144
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 160
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 176
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 192
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 208
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 224
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 240
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 256
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 272
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 288
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 304
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 320
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 336
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 352
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 368
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 384
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 400
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 416
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 432
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 448
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 464
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 480
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 496
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 512
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 528
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 544
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 560
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 576
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 592
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 608
- hash: "ed71dfbe146870d1a0869d60c35ff9d7"
- }
- Frame {
- msec: 624
- hash: "ed71dfbe146870d1a0869d60c35ff9d7"
- }
- Frame {
- msec: 640
- hash: "34796cef9feb92f7f0e2e8d837d87d34"
- }
- Frame {
- msec: 656
- hash: "64fa8f195b57077aa03ca264fec9554a"
- }
- Frame {
- msec: 672
- hash: "ae33318904415e937363787273ecb566"
- }
- Frame {
- msec: 688
- hash: "67c3e1c8c728e7677a3554aadd9795c9"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 704
- hash: "1857db7aa9eefe429d50e5b2ad87064b"
- }
- Frame {
- msec: 720
- hash: "507883a03bef0bc20755da1474731fdf"
- }
- Frame {
- msec: 736
- hash: "dafe7464394460e04d482c1f7a1e9ad0"
- }
- Frame {
- msec: 752
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 768
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 784
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 800
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 816
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 832
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 848
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 864
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 880
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 896
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 912
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 928
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 944
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 960
- image: "test3.0.png"
- }
- Frame {
- msec: 976
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 992
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 1008
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 1024
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 1040
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 1056
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 1072
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 1088
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1104
- hash: "7fb8cb07b6bca30912706cec43984d92"
- }
- Frame {
- msec: 1120
- hash: "7fb8cb07b6bca30912706cec43984d92"
- }
- Frame {
- msec: 1136
- hash: "c1915978cda982f6062790b2a583211b"
- }
- Frame {
- msec: 1152
- hash: "afdb50d740b3dc7be44021d826be4302"
- }
- Frame {
- msec: 1168
- hash: "4682717b9375b4b02a70378ddca30885"
- }
- Frame {
- msec: 1184
- hash: "aede0eebb3948a4a764e255b892b09be"
- }
- Frame {
- msec: 1200
- hash: "b42a147daec14a3da2548fd4de3a9a44"
- }
- Frame {
- msec: 1216
- hash: "2ff70f916f78fe3c199eb96ceb44ce4e"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1232
- hash: "707ac8e58d317b97113903b45a482f6b"
- }
- Frame {
- msec: 1248
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1264
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1280
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1296
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1312
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1328
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1344
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1360
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1376
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1392
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1408
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1424
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1440
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1456
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1472
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1488
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1504
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 1520
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1536
- hash: "91525556fe23764f58b3a3f38a29cd76"
- }
- Frame {
- msec: 1552
- hash: "91525556fe23764f58b3a3f38a29cd76"
- }
- Frame {
- msec: 1568
- hash: "d1dc625bbf46fc51aaf47969ad27a8a4"
- }
- Frame {
- msec: 1584
- hash: "7d868176c7a8363a79ef8b8f4da56867"
- }
- Frame {
- msec: 1600
- hash: "d239e0b0e118d351680c6b4b2bc5d3b2"
- }
- Frame {
- msec: 1616
- hash: "8f6d1640dbc655eb3b326c66fcb97d3c"
- }
- Frame {
- msec: 1632
- hash: "d52b623b8449d71734f72c7bd661a1c4"
- }
- Frame {
- msec: 1648
- hash: "f7c0c77f3b5ed71321edd6bc7b605512"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 1664
- hash: "8b26397ff1a83baa894f82594a12a190"
- }
- Frame {
- msec: 1680
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1696
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1712
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1728
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1744
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1760
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1776
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1792
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1808
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1824
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1840
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1856
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1872
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1888
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1904
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1920
- image: "test3.1.png"
- }
- Frame {
- msec: 1936
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1952
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1968
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 1984
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 2000
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2016
- hash: "f63308a7cd48a8cb4d413d17120f5a26"
- }
- Frame {
- msec: 2032
- hash: "f63308a7cd48a8cb4d413d17120f5a26"
- }
- Frame {
- msec: 2048
- hash: "2e97db8ed93524dc197e76cc2d270999"
- }
- Frame {
- msec: 2064
- hash: "2b135d90684c0f94b8219c4b835b6da9"
- }
- Frame {
- msec: 2080
- hash: "c700a76932bb3bf72868b9e95d095db2"
- }
- Frame {
- msec: 2096
- hash: "08136d3c3de44ddab23d2d136ba1f310"
- }
- Frame {
- msec: 2112
- hash: "de701d641e004b61a3c0609556f52fe0"
- }
- Frame {
- msec: 2128
- hash: "4f7acd87f4de119ad88a53d2c9881037"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2144
- hash: "deaf3c8a4680ef6f52cb4674a97e0767"
- }
- Frame {
- msec: 2160
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2176
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2192
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2208
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2224
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2240
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2256
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2272
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2288
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2304
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2320
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2336
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2352
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2368
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2384
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2400
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2416
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2432
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2448
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2464
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2480
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2496
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 2512
- hash: "224ade5c942415100b5418a11d043611"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2528
- hash: "fe67b3a48a8a074377be64f619d5922a"
- }
- Frame {
- msec: 2544
- hash: "fe67b3a48a8a074377be64f619d5922a"
- }
- Frame {
- msec: 2560
- hash: "088691f4f46f7a8c9a3b8ea766d9a437"
- }
- Frame {
- msec: 2576
- hash: "bd747ea04c3b36378374f8ea1031458f"
- }
- Frame {
- msec: 2592
- hash: "2ebd0e3373eb75a3ad986e203952f78a"
- }
- Frame {
- msec: 2608
- hash: "b4d89e4f3aef9f351facd13bd83f3022"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2624
- hash: "091de1bd1719e1fa6d914cf9708f4ac6"
- }
- Frame {
- msec: 2640
- hash: "0097d8ed156cb0c78c48dfacc557cba8"
- }
- Frame {
- msec: 2656
- hash: "faeb379e01283cb21ea695e96727918d"
- }
- Frame {
- msec: 2672
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2688
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2704
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2720
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2736
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2752
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2768
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2784
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2800
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2816
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2832
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2848
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2864
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2880
- image: "test3.2.png"
- }
- Frame {
- msec: 2896
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2912
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2928
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2944
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2960
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 2976
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 2992
- hash: "b00a29d67edc26e75f5298b2836d4e47"
- }
- Frame {
- msec: 3008
- hash: "b00a29d67edc26e75f5298b2836d4e47"
- }
- Frame {
- msec: 3024
- hash: "6e47c87b5063877a609e8d23ddf2d314"
- }
- Frame {
- msec: 3040
- hash: "06f147a69c3e903905376ef1229290bf"
- }
- Frame {
- msec: 3056
- hash: "5f02ff1a1207f17efd224ccc800b0057"
- }
- Frame {
- msec: 3072
- hash: "6c0860fdb216bb79fd2da4647792628d"
- }
- Frame {
- msec: 3088
- hash: "eb579f67620adb762722428d44a1d841"
- }
- Frame {
- msec: 3104
- hash: "c579017a82e34a471a95f8a116a20b9e"
- }
- Frame {
- msec: 3120
- hash: "bb5c08ff104b230829579dfb8015bdcc"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3136
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3152
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3168
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3184
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3200
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3216
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3232
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3248
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3264
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3280
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3296
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3312
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3328
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3344
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3360
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3376
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3392
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3408
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3424
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3440
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3456
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3472
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 3488
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3504
- hash: "5aa664f268433f2724a1ab2cea1d6d25"
- }
- Frame {
- msec: 3520
- hash: "5aa664f268433f2724a1ab2cea1d6d25"
- }
- Frame {
- msec: 3536
- hash: "9e4854fd0c533efa75aec7d9a8bc41dd"
- }
- Frame {
- msec: 3552
- hash: "c4eee4eca804007dca6e6d9379cbfb1b"
- }
- Frame {
- msec: 3568
- hash: "c59774f00d54c0353b41202a39fc0dbd"
- }
- Frame {
- msec: 3584
- hash: "910e6b5b05530c60874eee00df0d62cf"
- }
- Frame {
- msec: 3600
- hash: "5b606a7a697c6d53fbe42e33333f96cc"
- }
- Frame {
- msec: 3616
- hash: "e1fce42312e8a31d74add4a447dd3df9"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3632
- hash: "6250cb9ea51309922cf0a6647593bfee"
- }
- Frame {
- msec: 3648
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3664
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3680
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3696
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3712
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3728
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3744
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3760
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3776
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3792
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3808
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3824
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3840
- image: "test3.3.png"
- }
- Frame {
- msec: 3856
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3872
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3888
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3904
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3920
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3936
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3952
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3968
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 3984
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4000
- hash: "d6eecfb695deacae4bb2fe5adb2d5c3d"
- }
- Frame {
- msec: 4016
- hash: "d6eecfb695deacae4bb2fe5adb2d5c3d"
- }
- Frame {
- msec: 4032
- hash: "b48f481a8149c03139e29b619dbb3f3c"
- }
- Frame {
- msec: 4048
- hash: "994ba7fc208bbf081d54384d82d0fc07"
- }
- Frame {
- msec: 4064
- hash: "05d30293c12eb6a3e21cebd42bb1f383"
- }
- Frame {
- msec: 4080
- hash: "f2b4140a5d26f241a27e2a3027785559"
- }
- Frame {
- msec: 4096
- hash: "1189e519fd1611c5603e598fbcadca44"
- }
- Frame {
- msec: 4112
- hash: "ee98893d95e55cb76966c0cfe29d237b"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4128
- hash: "9ff3010efeb8707c864def782405ad4c"
- }
- Frame {
- msec: 4144
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4160
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4176
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4192
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4208
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4224
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4240
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4256
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4272
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4288
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4304
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4320
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4336
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4352
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4368
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4384
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4400
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4416
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4432
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4448
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4464
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4480
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4496
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4512
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4528
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4544
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4560
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4576
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4592
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4608
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4624
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4640
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4656
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4672
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4688
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4704
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4720
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4736
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4752
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4768
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4784
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4800
- image: "test3.4.png"
- }
- Frame {
- msec: 4816
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4832
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4848
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4864
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4880
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4896
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4912
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4928
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4944
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4960
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4976
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 4992
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 5008
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 5024
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 5040
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 5056
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 5072
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 5088
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Frame {
- msec: 5104
- hash: "c842d544f87332bc133833e8966240ee"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5120
- hash: "a857238777462319fcedd4f359ce1a04"
- }
- Frame {
- msec: 5136
- hash: "a857238777462319fcedd4f359ce1a04"
- }
- Frame {
- msec: 5152
- hash: "d9248d1257bf0232dcdf29fca7536ad1"
- }
- Frame {
- msec: 5168
- hash: "0405e029cc4b2fa80761c06fb8898b0d"
- }
- Frame {
- msec: 5184
- hash: "a36fb7e32e6aafbb84b62ef56be3cf70"
- }
- Frame {
- msec: 5200
- hash: "9846c73bbe57277bd36bbca1c489e644"
- }
- Frame {
- msec: 5216
- hash: "8f4840715082c48d520ddb55501cf8eb"
- }
- Frame {
- msec: 5232
- hash: "478fde3a6fd8cecc222b8c16743d231f"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5248
- hash: "b2bb760c93d26c6db21ce6beccd36b66"
- }
- Frame {
- msec: 5264
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5280
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5296
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5312
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5328
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5344
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5360
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5376
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5392
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5408
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5424
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5440
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5456
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5472
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5488
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5504
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5520
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5536
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5552
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5568
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5584
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5600
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5616
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5632
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5648
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5664
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5680
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5696
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Frame {
- msec: 5712
- hash: "1ef605e1a68ff993f4f971a85a6bee97"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5728
- hash: "4780d8094833831f27d1aff3e0f9689f"
- }
- Frame {
- msec: 5744
- hash: "4780d8094833831f27d1aff3e0f9689f"
- }
- Frame {
- msec: 5760
- image: "test3.5.png"
- }
- Frame {
- msec: 5776
- hash: "93c8d7980de378a055b7ca824882ae4e"
- }
- Frame {
- msec: 5792
- hash: "e0abe402f89c5d84e5a02f0e4bcbd5e3"
- }
- Frame {
- msec: 5808
- hash: "067ca20bcfab459a28af7e8dc2830032"
- }
- Frame {
- msec: 5824
- hash: "d27dc1a08c66cf5f4a84efe3be522ec3"
- }
- Frame {
- msec: 5840
- hash: "639f7555adc7958e807c2e774694fe25"
- }
- Frame {
- msec: 5856
- hash: "b55f5fcbc2284736695049b2cdc9c8ce"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5872
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 5888
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 5904
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 5920
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 5936
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 5952
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 5968
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 5984
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6000
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6016
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6032
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6048
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6064
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6080
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6096
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6112
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6128
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6144
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6160
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6176
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6192
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6208
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6224
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6240
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6256
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Frame {
- msec: 6272
- hash: "f209867bbf74dbe0385655a522e322f1"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6288
- hash: "48910947dd160b33251c54ff45f6a0db"
- }
- Frame {
- msec: 6304
- hash: "48910947dd160b33251c54ff45f6a0db"
- }
- Frame {
- msec: 6320
- hash: "20b0f988a1517d67a0d3c78ae8af4e5a"
- }
- Frame {
- msec: 6336
- hash: "355b5b161176c31bcbae198b1581f59b"
- }
- Frame {
- msec: 6352
- hash: "19cbb853a93bd062a53d7908df54bfbd"
- }
- Frame {
- msec: 6368
- hash: "13fbe723f288cffd09f0a86b71457161"
- }
- Frame {
- msec: 6384
- hash: "0014ed3b1a868cf75bfffedb52674c5c"
- }
- Frame {
- msec: 6400
- hash: "a1c444be02b90e69319096b8a508947d"
- }
- Frame {
- msec: 6416
- hash: "b88a3f2f3290e4262757b1f5741cb5ce"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6432
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6448
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6464
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6480
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6496
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6512
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6528
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6544
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6560
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6576
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6592
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6608
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6624
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6640
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6656
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6672
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6688
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6704
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6720
- image: "test3.6.png"
- }
- Frame {
- msec: 6736
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6752
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6768
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6784
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6800
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6816
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6832
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Frame {
- msec: 6848
- hash: "dc708a762ba7f1120eb14105571943f8"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6864
- hash: "a44bb76233c69780c178dddd79cc1968"
- }
- Frame {
- msec: 6880
- hash: "a44bb76233c69780c178dddd79cc1968"
- }
- Frame {
- msec: 6896
- hash: "154b11fd0468aa18d1ef1895f2e2923c"
- }
- Frame {
- msec: 6912
- hash: "fe7ecb02e63fbb7584405e7162f0ee21"
- }
- Frame {
- msec: 6928
- hash: "90b6fea69d106c628a9c7ff23a97e6c2"
- }
- Frame {
- msec: 6944
- hash: "3e233e837e24976d441b6cabc3b74098"
- }
- Frame {
- msec: 6960
- hash: "7a490f7be5c4c0ae09421f884e9adadb"
- }
- Frame {
- msec: 6976
- hash: "462d44603dd661ccf126c81197608056"
- }
- Frame {
- msec: 6992
- hash: "0b7ca73497c37255bccad6787d690236"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7008
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7024
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7040
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7056
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7072
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7088
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7104
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7120
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7136
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7152
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7168
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7184
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7200
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7216
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7232
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7248
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7264
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7280
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7296
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7312
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7328
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7344
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7360
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7376
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7392
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7408
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7424
- hash: "224ade5c942415100b5418a11d043611"
- }
- Frame {
- msec: 7440
- hash: "224ade5c942415100b5418a11d043611"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7456
- hash: "95ff2a535a13fcdded94229d53848f7c"
- }
- Frame {
- msec: 7472
- hash: "95ff2a535a13fcdded94229d53848f7c"
- }
- Frame {
- msec: 7488
- hash: "d2386e4137632f15aa5ba9dd1a138a67"
- }
- Frame {
- msec: 7504
- hash: "9f2c40191c1a81f37543f5bfcb852bdf"
- }
- Frame {
- msec: 7520
- hash: "5facdbcc9d7ab0adfcb2ca9d1812a3f5"
- }
- Frame {
- msec: 7536
- hash: "7bbb08470e4f3eeabe710e0ea327c467"
- }
- Frame {
- msec: 7552
- hash: "630abf60d09d3a685d79e6da627b3aa2"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7568
- hash: "d8aed706508814cdbd1ef0984f112b94"
- }
- Frame {
- msec: 7584
- hash: "d191c2dc3e2edd05bfd649dcfa51029e"
- }
- Frame {
- msec: 7600
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7616
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7632
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7648
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7664
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7680
- image: "test3.7.png"
- }
- Frame {
- msec: 7696
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7712
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7728
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7744
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7760
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7776
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7792
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7808
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7824
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7840
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7856
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7872
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7888
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7904
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7920
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7936
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7952
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Frame {
- msec: 7968
- hash: "7ee37281a3f5788305f779bdd33852e5"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7984
- hash: "fb386abfd73a3feb05b573d16ffa93f9"
- }
- Frame {
- msec: 8000
- hash: "fb386abfd73a3feb05b573d16ffa93f9"
- }
- Frame {
- msec: 8016
- hash: "fa1374155fc5427c72bd09ec5a315172"
- }
- Frame {
- msec: 8032
- hash: "ee35a3edf91865e28b16b9fcab8b4c1c"
- }
- Frame {
- msec: 8048
- hash: "10f2677f7c8efe9f64e401940dec3ef7"
- }
- Frame {
- msec: 8064
- hash: "b2c53bb14a8a6643e69cad2bbb4aacf4"
- }
- Frame {
- msec: 8080
- hash: "7b7c7d167aca55464d1874ed726ec646"
- }
- Frame {
- msec: 8096
- hash: "19a828ca70133801f1f470f6e348857b"
- }
- Frame {
- msec: 8112
- hash: "bc829873ea3cf8ca8484d990d4b80aa2"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8128
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8144
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8160
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8176
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8192
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8208
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8224
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8240
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8256
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8272
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8288
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8304
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8320
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8336
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8352
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8368
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8384
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8400
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8416
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8432
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8448
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8464
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8480
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Frame {
- msec: 8496
- hash: "201b90bc27073e945bb00c85501f4dc8"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8512
- hash: "d0d487fd66bcf4177188d4862bd74bc0"
- }
- Frame {
- msec: 8528
- hash: "d0d487fd66bcf4177188d4862bd74bc0"
- }
- Frame {
- msec: 8544
- hash: "4a4c2e49e4852748916a4d68710e4ae6"
- }
- Frame {
- msec: 8560
- hash: "0135092d8a296b7121495cc3994a0f9d"
- }
- Frame {
- msec: 8576
- hash: "7e004aae70236568d635ba929e085b2b"
- }
- Frame {
- msec: 8592
- hash: "3e6a4f60a57515a6bfe4d803c7c22da8"
- }
- Frame {
- msec: 8608
- hash: "142b866861f539837b0bdabaf48028e7"
- }
- Frame {
- msec: 8624
- hash: "32a4757602c923366566d9005c78f6cf"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8640
- image: "test3.8.png"
- }
- Frame {
- msec: 8656
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8672
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8688
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8704
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8720
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8736
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8752
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8768
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8784
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8800
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8816
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8832
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8848
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8864
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8880
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8896
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8912
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8928
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8944
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8960
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8976
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 8992
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 9008
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 9024
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 9040
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Frame {
- msec: 9056
- hash: "358a3fbfa70526a40f2179cb2fd100d4"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 9072
- hash: "b1dc330f31b064f1e3ff4e913773cde8"
- }
- Frame {
- msec: 9088
- hash: "b1dc330f31b064f1e3ff4e913773cde8"
- }
- Frame {
- msec: 9104
- hash: "a0419dede71451f36c93960c8ef8c00c"
- }
- Frame {
- msec: 9120
- hash: "b8141758fc93aa1b286fd60f91e6fa7e"
- }
- Frame {
- msec: 9136
- hash: "8b0d786f239c545be3f51622c336f1e1"
- }
- Frame {
- msec: 9152
- hash: "25ec52efac83de4f8cade8f257b93b8e"
- }
- Frame {
- msec: 9168
- hash: "5a1476841b9aaa0e85c397c0447be352"
- }
- Frame {
- msec: 9184
- hash: "d648b0911e6ab78e53121fde8b66b50b"
- }
- Frame {
- msec: 9200
- hash: "f552863ff4b76286d03240409c0a928b"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 9216
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9232
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9248
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9264
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9280
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9296
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9312
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9328
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9344
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9360
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9376
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9392
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9408
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9424
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9440
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9456
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9472
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9488
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9504
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9520
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9536
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9552
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9568
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9584
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9600
- image: "test3.9.png"
- }
- Frame {
- msec: 9616
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9632
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9648
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9664
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9680
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9696
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9712
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9728
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9744
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9760
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9776
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9792
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9808
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9824
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9840
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9856
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9872
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9888
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9904
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9920
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9936
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9952
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9968
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 9984
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10000
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10016
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10032
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10048
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10064
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10080
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10096
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10112
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10128
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10144
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10160
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10176
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10192
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10208
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10224
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10240
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10256
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10272
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10288
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10304
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10320
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10336
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10352
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10368
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 10384
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10400
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10416
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
- Frame {
- msec: 10432
- hash: "f3b4cab7975190f756c923f16ce4c298"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test.0.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.0.png
index 67b99e0069..fd28a93152 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test.0.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test.1.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.1.png
index 67b99e0069..986a1646c1 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test.1.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test.2.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.2.png
index 69f036619d..986a1646c1 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test.2.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test.3.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.3.png
index afe0bd95c6..fd28a93152 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test.3.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test.4.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.4.png
deleted file mode 100644
index afe0bd95c6..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test.5.png b/tests/auto/declarative/qmlvisual/focusscope/data/test.5.png
deleted file mode 100644
index afe0bd95c6..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test.qml b/tests/auto/declarative/qmlvisual/focusscope/data/test.qml
index 460ba1aa6e..e2bf23fd60 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test.qml
@@ -6,1594 +6,918 @@ VisualTest {
}
Frame {
msec: 16
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ image: "test.0.png"
}
Frame {
msec: 32
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 48
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 64
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 80
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 96
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 112
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 128
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 144
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 160
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 176
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 192
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 208
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 224
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 240
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 256
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 272
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 288
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 304
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 320
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 336
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 352
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 368
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 384
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 400
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 416
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 432
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 448
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 464
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 480
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 496
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 512
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 528
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 544
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 560
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 576
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
}
Frame {
msec: 592
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "7d929804a37a70ffd487e95a3be8ea5f"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 608
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 624
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 640
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 656
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 672
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 688
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 704
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 720
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 736
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 752
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 768
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 784
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 800
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 816
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 832
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 848
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 864
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 880
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 896
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 912
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 928
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 944
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 960
- image: "test.0.png"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 976
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ image: "test.1.png"
}
Frame {
msec: 992
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1008
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1024
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1040
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1056
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1072
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1088
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1104
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1120
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1136
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1152
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1168
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1184
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1200
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1216
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1232
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 1248
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Key {
type: 6
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
msec: 1264
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1280
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1296
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1312
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1328
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
+ }
+ Frame {
+ msec: 1344
+ hash: "f369109744055d30eadf2832a028a104"
}
Key {
type: 7
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 1344
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
msec: 1360
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1376
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1392
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1408
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1424
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1440
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1456
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1472
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1488
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1504
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1520
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1536
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1552
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1568
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1584
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1600
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1616
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1632
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1648
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1664
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1680
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1696
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1712
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
}
Frame {
msec: 1728
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "0914d1f71cdaf1f1a37b95ea41c57d4f"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1744
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1760
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1776
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1792
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1808
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "f369109744055d30eadf2832a028a104"
}
Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
+ type: 7
+ key: 16777235
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
msec: 1824
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1840
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1856
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1872
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1888
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1904
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1920
- image: "test.1.png"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 1936
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ image: "test.2.png"
}
Frame {
msec: 1952
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
+ }
+ Frame {
+ msec: 1968
+ hash: "f369109744055d30eadf2832a028a104"
}
Key {
- type: 7
+ type: 6
key: 16777234
- modifiers: 536870912
- text: "1c"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 1968
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
msec: 1984
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2000
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2016
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2032
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2048
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2064
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2080
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2096
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2112
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2128
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2144
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2160
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2176
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2192
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2208
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2224
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2240
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2256
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2272
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2288
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2304
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2320
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2336
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
}
Frame {
msec: 2352
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "f369109744055d30eadf2832a028a104"
+ }
+ Frame {
+ msec: 2368
+ hash: "f369109744055d30eadf2832a028a104"
}
Key {
type: 6
- key: 16777237
- modifiers: 536870912
- text: "1f"
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 2368
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
msec: 2384
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2400
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2416
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2432
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2448
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2464
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Key {
type: 7
- key: 16777237
- modifiers: 536870912
- text: "1f"
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
msec: 2480
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2496
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2512
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2528
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2544
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2560
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2576
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2592
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2608
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2624
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2640
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2656
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2672
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2688
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2704
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2720
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2736
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2752
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2768
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2784
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2800
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2816
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2832
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2848
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2864
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2880
- image: "test.2.png"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2896
- hash: "7e4814e27214ecbeb55992e319a88102"
+ image: "test.3.png"
}
Frame {
msec: 2912
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2928
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2944
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2960
- hash: "7e4814e27214ecbeb55992e319a88102"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2976
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Key {
- type: 6
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 2992
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 3008
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
Frame {
msec: 3024
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3040
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3056
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3072
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3088
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Key {
- type: 7
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3104
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3120
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3136
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3152
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3168
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3184
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3200
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3216
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3232
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3248
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3264
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3280
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3296
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3312
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3328
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3344
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3360
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3376
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3392
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3408
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3424
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3440
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3456
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3472
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3488
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3504
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3520
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Frame {
- msec: 3536
- hash: "e7722f02692fbae81b9ec78547e1e4e9"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3552
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3568
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3584
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3600
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3616
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3632
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3648
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
- }
- Frame {
- msec: 3664
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3680
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3696
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3712
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3728
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3744
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3760
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3776
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3792
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3808
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3824
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3840
- image: "test.3.png"
- }
- Frame {
- msec: 3856
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3872
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3888
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3904
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3920
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3936
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3952
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3968
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 3984
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4000
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4016
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4032
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4048
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4064
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4080
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4096
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4112
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4128
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4144
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4160
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4176
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Key {
- type: 6
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4192
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4208
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4224
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4240
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4256
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4272
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Key {
- type: 7
- key: 16777237
- modifiers: 536870912
- text: "1f"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4288
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4304
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4320
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4336
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4352
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4368
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4384
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4400
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4416
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4432
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4448
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4464
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4480
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4496
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4512
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4528
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4544
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4560
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4576
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4592
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4608
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4624
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4640
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4656
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4672
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4688
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4704
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4720
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4736
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4752
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4768
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Frame {
- msec: 4784
- hash: "7e4814e27214ecbeb55992e319a88102"
- }
- Key {
- type: 6
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4800
- image: "test.4.png"
- }
- Frame {
- msec: 4816
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4832
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4848
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4864
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4880
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4896
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Key {
- type: 7
- key: 16777235
- modifiers: 536870912
- text: "1e"
- autorep: false
- count: 1
- }
- Frame {
- msec: 4912
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4928
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4944
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4960
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4976
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 4992
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5008
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5024
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5040
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5056
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5072
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5088
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5104
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5120
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5136
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5152
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5168
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5184
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5200
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5216
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5232
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5248
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5264
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5280
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5296
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5312
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5328
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5344
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5360
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5376
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5392
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5408
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5424
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5440
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5456
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5472
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5488
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5504
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5520
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5536
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5552
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5568
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5584
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5600
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5616
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5632
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5648
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5664
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5680
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5696
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5712
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5728
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5744
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5760
- image: "test.5.png"
- }
- Frame {
- msec: 5776
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5792
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 5808
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5824
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5840
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5856
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5872
- hash: "6f85c2226e6e408f4699762f687b83e1"
- }
- Frame {
- msec: 5888
- hash: "6f85c2226e6e408f4699762f687b83e1"
+ hash: "94675f9c9afb6834b91a69fd0ce35a22"
}
}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png b/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png
index 555a968175..22d7496fb7 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png b/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png
index 555a968175..22d7496fb7 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test2.qml b/tests/auto/declarative/qmlvisual/focusscope/data/test2.qml
index 03ece10d13..62eff17b22 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test2.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test2.qml
@@ -6,602 +6,318 @@ VisualTest {
}
Frame {
msec: 16
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ image: "test2.0.png"
}
Frame {
msec: 32
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 48
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 64
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 80
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 96
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 112
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 128
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 144
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 160
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 176
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 192
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 208
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 224
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 240
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 256
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 272
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 288
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 304
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 320
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 336
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 352
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 368
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 384
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 400
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 416
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 432
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 448
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 464
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 480
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 496
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 512
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 528
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 544
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 560
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 576
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 592
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 608
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 624
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 640
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 656
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 672
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 688
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 704
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 720
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 736
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 752
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 768
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 784
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 800
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 816
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 832
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 848
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 864
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 880
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 896
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 912
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 928
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 944
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 960
- image: "test2.0.png"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 976
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ image: "test2.1.png"
}
Frame {
msec: 992
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1008
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1024
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1040
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1056
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1072
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1088
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1104
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1120
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1136
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1152
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1168
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1184
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1200
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1216
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1232
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1248
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
Frame {
msec: 1264
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1280
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1296
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1312
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1328
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1344
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1360
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1376
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1392
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1408
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1424
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1440
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1456
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1472
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1488
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1504
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1520
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1536
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1552
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1568
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1584
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1600
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1616
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1632
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1648
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1664
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1680
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1696
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1712
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1728
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1744
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1760
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1776
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1792
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1808
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1824
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1840
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1856
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1872
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1888
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1904
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1920
- image: "test2.1.png"
- }
- Frame {
- msec: 1936
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1952
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1968
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 1984
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2000
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2016
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2032
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2048
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2064
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2080
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2096
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2112
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2128
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2144
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2160
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2176
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2192
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2208
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2224
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2240
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2256
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 2272
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2288
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2304
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2320
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2336
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2352
- hash: "bb4131579c66dc948f2e27e236deb4ab"
- }
- Frame {
- msec: 2368
- hash: "bb4131579c66dc948f2e27e236deb4ab"
+ hash: "4823f4520db0c1f64d887f172b3efa17"
}
}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.0.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.0.png
index 374acf556c..c092535211 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.0.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.1.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.1.png
index b75cb10861..861b4592e0 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.1.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.2.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.2.png
index 9b2f919afe..2ede7c904f 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.2.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.3.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.3.png
index bf630326a6..055f184649 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.3.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.4.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.4.png
index 6981a06544..c092535211 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.4.png
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.5.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.5.png
deleted file mode 100644
index 5856325169..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.6.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.6.png
deleted file mode 100644
index 9b2f919afe..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.7.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.7.png
deleted file mode 100644
index b75cb10861..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.8.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.8.png
deleted file mode 100644
index 374acf556c..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.8.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.9.png b/tests/auto/declarative/qmlvisual/focusscope/data/test3.9.png
deleted file mode 100644
index 11a08bdea0..0000000000
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/data/test3.qml
index dd48e39802..8ed9c7dd61 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/data/test3.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/data/test3.qml
@@ -6,2874 +6,1322 @@ VisualTest {
}
Frame {
msec: 16
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ image: "test3.0.png"
}
Frame {
msec: 32
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 48
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 64
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 80
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 96
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 112
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 128
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 144
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 160
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 176
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 192
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 208
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 224
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 240
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 256
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 272
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 288
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 304
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 320
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 336
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 352
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 368
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 384
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 400
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 416
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 432
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 448
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 464
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 480
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 496
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 512
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 528
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 544
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "e24319b7e562a668e86ac17f4914bcb7"
}
Frame {
msec: 560
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "742f87f00d2d7e64b4a579823fa99df2"
}
Frame {
msec: 576
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "db6793df1b6d00f4b6286253173ee2b5"
}
Frame {
msec: 592
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "3da67f52ad1bc0ee55f8d6637286f420"
+ }
+ Frame {
+ msec: 608
+ hash: "89e8c8fd913cb229f5adc221090d789c"
}
Key {
- type: 6
+ type: 7
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 608
- hash: "c114718c158f107e8a7d06bf49d30855"
- }
- Frame {
msec: 624
- hash: "c71bf3c6ef7addc3c1f55e3f92c001ac"
+ hash: "d47cc2fe207628f4deddd58c3697171a"
}
Frame {
msec: 640
- hash: "b075c33ed606041dfb57a03f92cf5574"
+ hash: "9ab1f939324602533b14b20d6160ae57"
}
Frame {
msec: 656
- hash: "1933a060fc0b889082df94054a2d3c7e"
+ hash: "798b200076ec6688cda78fd273a9fde1"
}
Frame {
msec: 672
- hash: "cc4133e796a242493538131c789c392c"
+ hash: "5c485ac62f637db9e3aa327dd1bee801"
}
Frame {
msec: 688
- hash: "cbc16ad8bcb8dcf73ae101ca4899adac"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "5c485ac62f637db9e3aa327dd1bee801"
}
Frame {
msec: 704
- hash: "1a5e008ef5640ad85a19b307244a36f7"
+ hash: "5c485ac62f637db9e3aa327dd1bee801"
}
Frame {
msec: 720
- hash: "6a0c9d0f3ac068d65d590c844dae4ebb"
+ hash: "5c485ac62f637db9e3aa327dd1bee801"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 736
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "75bbe5082eebec814c726adc8fc076ec"
}
Frame {
msec: 752
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "58d8051766872d54831bec4c8c7cbd63"
}
Frame {
msec: 768
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "f474b747b4b7bb2a5b2c418f35aa1b09"
}
Frame {
msec: 784
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "d561cf0dbded0b2bd85c7c88fb3afdd6"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 800
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "49c0616c4d5cedeb9fdb12fb7d7f504d"
}
Frame {
msec: 816
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "9e5c66cfc3af51b7a10f6a969452dafe"
}
Frame {
msec: 832
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "72d765f52ce8ab3748cd43d859285ca7"
}
Frame {
msec: 848
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "732987bbdc421c4650d7503387acd4de"
}
Frame {
msec: 864
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "439456ecedad4674b6ecef415e53334b"
}
Frame {
msec: 880
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "439456ecedad4674b6ecef415e53334b"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 896
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "5f2d5dc55b551713c4219bc55124f7db"
}
Frame {
msec: 912
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "54e2150829c6201b3ba8eb61f4142de7"
}
Frame {
msec: 928
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "f916ac803817b7cd7e29c05ac23449fc"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 944
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "590b45a3fb1571428c8da48f026fab3b"
}
Frame {
msec: 960
- image: "test3.0.png"
+ hash: "b5a811e6d1b956af67c6df4c9eabd0a3"
}
Frame {
msec: 976
- hash: "216a02433edb100e6ff3db4944f6b061"
+ image: "test3.1.png"
}
Frame {
msec: 992
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "877ca6b70b6535f868d3a450045f70a0"
}
Frame {
msec: 1008
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "559a5c06ed2d1030d21f56aaaded8869"
}
Frame {
msec: 1024
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "559a5c06ed2d1030d21f56aaaded8869"
}
Frame {
msec: 1040
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "559a5c06ed2d1030d21f56aaaded8869"
}
Frame {
msec: 1056
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "559a5c06ed2d1030d21f56aaaded8869"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1072
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "f6d3d4fd5d9d1be96646891cbf0740e5"
}
Frame {
msec: 1088
- hash: "216a02433edb100e6ff3db4944f6b061"
+ hash: "2ba5d4da68051a96fed2b54804854a8e"
}
Key {
- type: 6
+ type: 7
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
msec: 1104
- hash: "ac2f6e2f5f379ad8717aa3754f2aab80"
+ hash: "2b1b72dfac63903377b427ef4149dfd7"
}
Frame {
msec: 1120
- hash: "e896c5b5a4fd121e5c25aba0a17c11f3"
+ hash: "7ada77586dd0583a66c801b6faf78e2a"
}
Frame {
msec: 1136
- hash: "1d1228cf0b205e46a969a0016245bb9e"
+ hash: "a5c527fa2095e2d8949d36351994624a"
}
Frame {
msec: 1152
- hash: "d07b1d53655e549c503223fddfa62038"
+ hash: "f89bf3f20d3f7284ba52338c1cfb91e1"
}
Frame {
msec: 1168
- hash: "d774614f13d1a19eff3c451c4abce7e5"
+ hash: "e7de3174a111f26f4d92a273e2c43b61"
}
Frame {
msec: 1184
- hash: "0e8445283c961a41c22ede2f26ab0d0c"
+ hash: "d9ef1156a1f7bfe86f97717a600b31c9"
}
Frame {
msec: 1200
- hash: "f85ced79a9d521b70b093d43d1335914"
+ hash: "0b216b28513d00939531e409aac328e8"
}
Frame {
msec: 1216
- hash: "3f70531768847686f202336827ed5c51"
+ hash: "0b216b28513d00939531e409aac328e8"
}
Key {
- type: 7
+ type: 6
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
msec: 1232
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "d92131f183e9d926a2718559f58f17cb"
}
Frame {
msec: 1248
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "9e5985271ddec748803ea3c72d40ad97"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1264
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "2462ddfcf93f96ad6a3164c7f21e2948"
}
Frame {
msec: 1280
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "4ce27e3e77d9c80982c5197c2a440dc4"
}
Frame {
msec: 1296
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "e4afa6dc35ddd52876af514ec151900e"
}
Frame {
msec: 1312
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "3e542da8a83e53c66fd96d2c003a8b67"
}
Frame {
msec: 1328
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "6b0afb12551ada7501346125ac29071c"
}
Frame {
msec: 1344
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "202d4ca464f73e28a286ebed05e86d9d"
}
Frame {
msec: 1360
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "202d4ca464f73e28a286ebed05e86d9d"
}
Frame {
msec: 1376
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "202d4ca464f73e28a286ebed05e86d9d"
}
Frame {
msec: 1392
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "202d4ca464f73e28a286ebed05e86d9d"
}
Frame {
msec: 1408
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "202d4ca464f73e28a286ebed05e86d9d"
}
Frame {
msec: 1424
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "202d4ca464f73e28a286ebed05e86d9d"
}
Frame {
msec: 1440
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "202d4ca464f73e28a286ebed05e86d9d"
}
Frame {
msec: 1456
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "202d4ca464f73e28a286ebed05e86d9d"
}
Frame {
msec: 1472
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "202d4ca464f73e28a286ebed05e86d9d"
}
Frame {
msec: 1488
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "202d4ca464f73e28a286ebed05e86d9d"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1504
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "ca6c00b583f88efb6efe285a0903392b"
}
Frame {
msec: 1520
- hash: "30c5f9005238542c83b2d994cb61de16"
+ hash: "2a2fcb90a6a7ae6d3d08f49c7a7177c0"
+ }
+ Frame {
+ msec: 1536
+ hash: "3a7cd960ff367793e09d73302e57b6e4"
}
Key {
- type: 6
+ type: 7
key: 16777236
- modifiers: 536870912
- text: "1d"
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 1536
- hash: "c59557a62fb22756ecae00bf36589f19"
- }
- Frame {
msec: 1552
- hash: "c2938aac121e121eb138b2cdc485a23c"
+ hash: "581121ab5334a6122bf9ca4489c9b971"
}
Frame {
msec: 1568
- hash: "aa582bd07789a0ce000bb014b4924969"
+ hash: "8690456fa25a12ef28f014b86cc94c81"
}
Frame {
msec: 1584
- hash: "59d7a7fed20a11ecb12de08c77f0f303"
+ hash: "27a395e2e25eedba8f361a20f917590b"
}
Frame {
msec: 1600
- hash: "9a1d7649e44e2c2436855b92abbae030"
+ hash: "5eae6bbdd6acd7f21eccf277f21f4893"
}
Frame {
msec: 1616
- hash: "e46c47a221da37bbdffcdf671e84774b"
+ hash: "f5ebab53b77dcea32e821c8e551077e4"
}
Frame {
msec: 1632
- hash: "85ff7ef61ef08dc97065b0536f9f8766"
+ hash: "738278d39b73bfa15fc8b19b5720bbd7"
}
Frame {
msec: 1648
- hash: "1159f274e5c2947875484d04a3ac6694"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "738278d39b73bfa15fc8b19b5720bbd7"
}
Frame {
msec: 1664
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "738278d39b73bfa15fc8b19b5720bbd7"
}
Frame {
msec: 1680
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "738278d39b73bfa15fc8b19b5720bbd7"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1696
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "7c83c13e1d9e6456023ba7e2a1f3875c"
}
Frame {
msec: 1712
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "f12f6c5111de654e90d462a4d44f12ec"
}
Frame {
msec: 1728
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "dcb7712d8320bf4096a3af794facad4d"
}
Frame {
msec: 1744
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "84f7c046592d31f403b56ee1fd6fcbc4"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1760
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "1b05381e85ec8bbf69edacbedce01fb8"
}
Frame {
msec: 1776
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "b2c148675ffe1ef5110602f7a4feab74"
}
Frame {
msec: 1792
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "d082931d05d2b2dc24ccfa5d7a703291"
}
Frame {
msec: 1808
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "99783e2541d03a7ce9ee4e69a2b21993"
}
Frame {
msec: 1824
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "503ff7e940ac59006c1486e3d2027d35"
}
Frame {
msec: 1840
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "503ff7e940ac59006c1486e3d2027d35"
}
Frame {
msec: 1856
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "503ff7e940ac59006c1486e3d2027d35"
}
Frame {
msec: 1872
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "503ff7e940ac59006c1486e3d2027d35"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1888
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "06fbf3d840cbf170c94377d767d1d49f"
}
Frame {
msec: 1904
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "34f538738046a1d6932ef1a6f59eb6be"
}
Frame {
msec: 1920
- image: "test3.1.png"
+ hash: "2553f91e5ea5a4da70eb3825a0cdfa10"
}
Frame {
msec: 1936
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ image: "test3.2.png"
}
Frame {
msec: 1952
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "115f1c37d6492bbc4848cc4be6ddd2b0"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1968
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "40d5255e7e5ca12b90f5cbede1e9b2cd"
}
Frame {
msec: 1984
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
+ hash: "3a6f6b4cee75f8b1b0b2b5674c3df0a8"
}
Frame {
msec: 2000
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "2c24eab593d56a7554f9ba925f858d5b"
}
Frame {
msec: 2016
- hash: "26e5e7612374c7a4f7ac26a284c735b4"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2032
- hash: "03c63a8bab380ebcd02f2bf2f588df85"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2048
- hash: "1a7c4738de4f1123c7e639c935095476"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2064
- hash: "8362cb8a253dcb2e9ef7fb070579d639"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2080
- hash: "8fae548ad1f2e16738c14636b905efef"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2096
- hash: "05fca78fea63817204b2303495baaec7"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2112
- hash: "5bf7b04177db667f23f1bc4f0066bc44"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2128
- hash: "aa10d0614604f0563d4fc458b7bb9260"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2144
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2160
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2176
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2192
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2208
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2224
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2240
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2256
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2272
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2288
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2304
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2320
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2336
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2352
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2368
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2384
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2400
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2416
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2432
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2448
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
}
Frame {
msec: 2464
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "bb10ef1703674147351968121ebe0154"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2480
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "1e61fbb8c054c6b8fdb895d236514bfa"
}
Frame {
msec: 2496
- hash: "0461d0e31648d2c155bee0145094c153"
+ hash: "3a1b093963a0cb898a68f87a3c2056a9"
}
Frame {
msec: 2512
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "9fe3eb5cbc621401be9ab7bc7d28bb24"
}
Frame {
msec: 2528
- hash: "1823a5c00778550c6b46416e6a2b730f"
+ hash: "1bb16e3d17506913e295d68e8d4ffa88"
}
Frame {
msec: 2544
- hash: "7ca64f71eee9d3a926335de026be5fe2"
+ hash: "19389ae4da2ad3bc7076632366db55c7"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2560
- hash: "5f9e44b8374a490793b479440ce3b701"
+ hash: "5f1731dd62f61ddafb7cfe66167b7408"
}
Frame {
msec: 2576
- hash: "b0969884a9654d87da9941fb9eb4c99a"
+ hash: "e37b8399f9ea92a91b0d98b01a4ef72b"
}
Frame {
msec: 2592
- hash: "aeadf244a67b3c9e5c119b52aa0f15a0"
+ hash: "e1282e3afc46fa8828a138e4722707b5"
}
Frame {
msec: 2608
- hash: "2d990e5ae8d3660079bdea7f2b5245a7"
+ hash: "503ff7e940ac59006c1486e3d2027d35"
+ }
+ Frame {
+ msec: 2624
+ hash: "503ff7e940ac59006c1486e3d2027d35"
}
Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 2624
- hash: "5998faffa17f9ffbf1cb39cdc09cdd54"
- }
- Frame {
msec: 2640
- hash: "bf8089df5d863f627cd44294f322d796"
+ hash: "925852b350354bb596d749fe31828147"
}
Frame {
msec: 2656
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "1e302775a002185b888b590cc6533b28"
}
Frame {
msec: 2672
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "b147169c3688148bda5b82afa1f5d2dc"
}
Frame {
msec: 2688
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "34964e45ff808595845f4a868be3782e"
}
Frame {
msec: 2704
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "b86ef7d97f20c3894dc5a551f41ab9c4"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2720
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "dc9981cb1833b34fc4fc9b833281348e"
}
Frame {
msec: 2736
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "b28644e06195849afd44143bd60aa27d"
}
Frame {
msec: 2752
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "738278d39b73bfa15fc8b19b5720bbd7"
}
Frame {
msec: 2768
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "738278d39b73bfa15fc8b19b5720bbd7"
}
Frame {
msec: 2784
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "738278d39b73bfa15fc8b19b5720bbd7"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2800
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "745230d107911d033ebeb58dc8a94445"
}
Frame {
msec: 2816
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "81cc4ac88a51518cf50cd6b46c3e0cb7"
}
Frame {
msec: 2832
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "10b7cff34298222ee305c9895bcdef21"
}
Frame {
msec: 2848
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "622a027091c1577a646ece0331016783"
}
Frame {
msec: 2864
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "ab527747f9918774c7a4cfb476cc31f4"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2880
- image: "test3.2.png"
+ hash: "1bf8a37b5aeb9df37f97083ce19a0c1a"
}
Frame {
msec: 2896
- hash: "f75305426b87e1cdc325ae6668367be9"
+ image: "test3.3.png"
}
Frame {
msec: 2912
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "19a2f59bfe96a0a33ff45ab72cc2a2fc"
}
Frame {
msec: 2928
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "202d4ca464f73e28a286ebed05e86d9d"
}
Frame {
msec: 2944
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "202d4ca464f73e28a286ebed05e86d9d"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2960
- hash: "f75305426b87e1cdc325ae6668367be9"
+ hash: "6b172121f35f9667f40b0006d5875685"
}
Frame {
msec: 2976
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "6e65dfe717a69de65d58e059904bb00a"
}
Frame {
msec: 2992
- hash: "d707cb6e2587eecba275d1e7ceb9d020"
+ hash: "e660212f2d7d477213ef8b8262e8f2b1"
}
Frame {
msec: 3008
- hash: "fddd144d4d2e475330ff87f4e6febe35"
+ hash: "df1e770a7177b7871cf734c47e1227ba"
}
Frame {
msec: 3024
- hash: "06115e65296d1a77ab956cd3984303ee"
+ hash: "9d103d49ea30b04f3e97ecad3c13a816"
}
Frame {
msec: 3040
- hash: "6881ec448625fdc23f1241bd60362460"
+ hash: "4602aaf8b65c4ff5b9c8d4ba8d5b89d5"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3056
- hash: "d94fdfd178377328e3b840c32f774958"
+ hash: "bf029f1cb5ddf0dc3931b47895a2141d"
}
Frame {
msec: 3072
- hash: "d2cba0b3aac8002aa2de51f7b1442985"
+ hash: "0b216b28513d00939531e409aac328e8"
}
Frame {
msec: 3088
- hash: "c0ea81cddf6b1f5b4b4157dade6b8ca0"
+ hash: "0b216b28513d00939531e409aac328e8"
}
Frame {
msec: 3104
- hash: "964a80740cc7ba474d5d10b76cca1b14"
+ hash: "0b216b28513d00939531e409aac328e8"
}
Frame {
msec: 3120
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "0b216b28513d00939531e409aac328e8"
+ }
+ Frame {
+ msec: 3136
+ hash: "0b216b28513d00939531e409aac328e8"
}
Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
- msec: 3136
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
msec: 3152
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "807fe46158fdc72c45cd6c8024ce705d"
}
Frame {
msec: 3168
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "58dc1ca8e39488479acdb79762000ad5"
}
Frame {
msec: 3184
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "48dd97d986ee545f6727128b7a06529f"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3200
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "a7f0c00cb4bbbd65c02b3949c90564ad"
}
Frame {
msec: 3216
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "3f1c40e8d17b83ff3a251d9284bd4282"
}
Frame {
msec: 3232
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "d7527558128467c64cf0a07289158238"
}
Frame {
msec: 3248
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "3af9f7618d0c9ffedb942ae422d61dcb"
}
Frame {
msec: 3264
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "eb1703107106afc54d47d8600ea40f18"
}
Frame {
msec: 3280
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "559a5c06ed2d1030d21f56aaaded8869"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3296
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "c9a69d9ad499e6537ef047382dc01460"
}
Frame {
msec: 3312
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "594911681db91c825b93633b6aa3fe1f"
}
Frame {
msec: 3328
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "f566d5e728e9a45c7d339282c0c6709c"
}
Frame {
msec: 3344
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "49f1d0164a1ae3c361421635a2038697"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3360
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "a22b4ea9973c03042a3cfa5d23a79c86"
}
Frame {
msec: 3376
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "abab27079cd52caaaf421d1b4d8d8066"
}
Frame {
msec: 3392
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "e528a9ab6ae13518fa541d7f2c6e09a8"
}
Frame {
msec: 3408
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "439456ecedad4674b6ecef415e53334b"
}
Frame {
msec: 3424
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "439456ecedad4674b6ecef415e53334b"
}
Frame {
msec: 3440
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "439456ecedad4674b6ecef415e53334b"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3456
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "57543f91e958840efcad1948a19aa8e1"
}
Frame {
msec: 3472
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 3488
- hash: "3e44d7064e55c510401b5008a06d9b82"
+ hash: "534fc45fdace49ebf444e393b57c1315"
}
Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
autorep: false
count: 1
}
Frame {
+ msec: 3488
+ hash: "0eee986f096e3ebddf61d3b0a18f2eff"
+ }
+ Frame {
msec: 3504
- hash: "56634199c96e5c4588c2954f0595fcaa"
+ hash: "74f702ca61d97d31f79d8ce3be53eee7"
}
Frame {
msec: 3520
- hash: "a51221b77045e51cba2b0913546961cb"
+ hash: "1f0b630548fe93f93550439b4945bdda"
}
Frame {
msec: 3536
- hash: "9910569a15164882056802e5ecfaef42"
+ hash: "1eb442ca5e7e1f476d8297c3bdb7bbd1"
}
Frame {
msec: 3552
- hash: "17080817e0b23212828d2cee23eff98f"
+ hash: "1689cba06c74a6204d80cc651b1d2150"
}
Frame {
msec: 3568
- hash: "791fee9758645fe21fe52918e5435f7d"
+ hash: "8711b6647c4146dfa3e3c680fbd1bf08"
}
Frame {
msec: 3584
- hash: "e0fcea2889a4825075322524025a4bdf"
+ hash: "5c485ac62f637db9e3aa327dd1bee801"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3600
- hash: "825f58093f328182fa32b3cbc573101f"
+ hash: "0ac2726d000ba2ef1097a49f37d5c209"
}
Frame {
msec: 3616
- hash: "550972282584bd52108728290bd4aa5e"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "83d00571e499039b7f577e393eed881a"
}
Frame {
msec: 3632
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "46724d427a8f6d7737abcacd76701259"
}
Frame {
msec: 3648
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "a63554a4839e8874cbebe5204d43c6d5"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3664
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "5946c98c4204d454a41575242db5fd45"
}
Frame {
msec: 3680
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "a3d0107e71a6b454f8fdc7557eb9ce18"
}
Frame {
msec: 3696
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "86d9ad1831acc4a73075e6792efb7db4"
}
Frame {
msec: 3712
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3728
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3744
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3760
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3776
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3792
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3808
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3824
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3840
- image: "test3.3.png"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3856
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ image: "test3.4.png"
}
Frame {
msec: 3872
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3888
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3904
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3920
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3936
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3952
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3968
- hash: "0cf213791ef1263f9dfc867df96e8211"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 3984
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4000
- hash: "a2386a0135e8ffd9f2ac12345ede3553"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4016
- hash: "9550cdc0032bc3ea0a611f2584f43cca"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4032
- hash: "3f39909102a04f0e41a97b10dde4425a"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4048
- hash: "535d56a4d450cf0222f94573a88bbf80"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4064
- hash: "c4b782cfb9399689b0cbfc2a97305984"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4080
- hash: "23604b04198d53e0ba4a0955d8bcf124"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4096
- hash: "a440962d680f70eb47af38a91390b8c0"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4112
- hash: "da4b079f00248a073ce49f749ff0cc77"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 536870912
- text: "1d"
- autorep: false
- count: 1
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4128
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4144
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4160
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4176
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4192
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4208
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4224
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4240
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
Frame {
msec: 4256
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4272
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4288
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4304
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4320
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4336
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4352
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4368
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4384
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4400
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4416
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4432
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4448
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4464
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4480
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4496
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4512
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4528
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4544
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4560
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4576
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4592
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4608
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4624
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4640
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4656
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4672
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4688
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4704
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4720
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4736
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4752
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4768
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4784
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4800
- image: "test3.4.png"
- }
- Frame {
- msec: 4816
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4832
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4848
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4864
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4880
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4896
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4912
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4928
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4944
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4960
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4976
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 4992
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 5008
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 5024
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 5040
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 5056
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 5072
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 5088
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Frame {
- msec: 5104
- hash: "861a8438a60e8a937d96f6b11fa1e3b3"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5120
- hash: "58be5253b74ac1cecf08714e670e30af"
- }
- Frame {
- msec: 5136
- hash: "a8e15f6e28a67941730f9cfe8ea7f0ff"
- }
- Frame {
- msec: 5152
- hash: "f1bfd2e2cd3a3ff08ae36e785d33e626"
- }
- Frame {
- msec: 5168
- hash: "b61fd5c58ddaf806e72d77bed92e91f3"
- }
- Frame {
- msec: 5184
- hash: "f192f6b779fa6bdfd4bc9c8671dd3147"
- }
- Frame {
- msec: 5200
- hash: "1cf034cfdfe3cafa832e28950c90d67b"
- }
- Frame {
- msec: 5216
- hash: "b0d2223f7f2c302784654f03cb3a5c1c"
- }
- Frame {
- msec: 5232
- hash: "19d089ac37fd42c1be99facd38a954e3"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5248
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5264
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5280
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5296
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5312
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5328
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5344
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5360
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5376
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5392
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5408
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5424
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5440
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5456
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5472
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5488
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5504
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5520
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5536
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5552
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5568
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5584
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5600
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5616
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5632
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5648
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5664
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5680
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5696
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Frame {
- msec: 5712
- hash: "0cf213791ef1263f9dfc867df96e8211"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5728
- hash: "51db47388acad98d18a8a2aaca279dba"
- }
- Frame {
- msec: 5744
- hash: "c83747a4356fa12593020452dbf43fe8"
- }
- Frame {
- msec: 5760
- image: "test3.5.png"
- }
- Frame {
- msec: 5776
- hash: "39d476722de92703d0a2259b5c62554e"
- }
- Frame {
- msec: 5792
- hash: "3f01e465470c3d5ab58b52f3e1517374"
- }
- Frame {
- msec: 5808
- hash: "63570753ba8c5f1525bf4cee38e8cad8"
- }
- Frame {
- msec: 5824
- hash: "31beab91ef4cadcf0b379b32786530ac"
- }
- Frame {
- msec: 5840
- hash: "46cd2e22eb4ef988752e2b3441bdd450"
- }
- Frame {
- msec: 5856
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 5872
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 5888
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 5904
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 5920
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 5936
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 5952
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 5968
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 5984
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6000
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6016
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6032
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6048
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6064
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6080
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6096
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6112
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6128
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6144
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6160
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6176
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6192
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6208
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6224
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6240
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6256
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Frame {
- msec: 6272
- hash: "3e44d7064e55c510401b5008a06d9b82"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6288
- hash: "78c4aaf2427e0aa9b6d11ddf95df55f7"
- }
- Frame {
- msec: 6304
- hash: "d4859df2de6afa90c1997b1b4d6448ab"
- }
- Frame {
- msec: 6320
- hash: "f885e6a8cc09d06985a83f60e29a0a34"
- }
- Frame {
- msec: 6336
- hash: "41f27dbf80b0bc00498962162a5fe9db"
- }
- Frame {
- msec: 6352
- hash: "41800797032deeed5ccc87375b4093cb"
- }
- Frame {
- msec: 6368
- hash: "253276d23d8a0f195155361a27403496"
- }
- Frame {
- msec: 6384
- hash: "274bf40aacababde8fde71abf065d1aa"
- }
- Frame {
- msec: 6400
- hash: "86071a6486d35d3c10f318ab6bac7577"
- }
- Frame {
- msec: 6416
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6432
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6448
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6464
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6480
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6496
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6512
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6528
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6544
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6560
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6576
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6592
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6608
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6624
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6640
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6656
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6672
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6688
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6704
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6720
- image: "test3.6.png"
- }
- Frame {
- msec: 6736
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6752
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6768
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6784
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6800
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6816
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6832
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Frame {
- msec: 6848
- hash: "f75305426b87e1cdc325ae6668367be9"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 6864
- hash: "eea514e956369c55f9fe9bfc5b8bbda4"
- }
- Frame {
- msec: 6880
- hash: "b28436abb5ce17310b63ed96a7034000"
- }
- Frame {
- msec: 6896
- hash: "40c656f467200785a951dd8f98cf28f5"
- }
- Frame {
- msec: 6912
- hash: "38c6c6b29c9a7f0eba87a538a336c338"
- }
- Frame {
- msec: 6928
- hash: "b3f939577616f8ded1e11ee6e6dce882"
- }
- Frame {
- msec: 6944
- hash: "d72b00208712f039a5d7a06fbfacd4bd"
- }
- Frame {
- msec: 6960
- hash: "c7a079a37f6bd7a8da706e6ba5d048ee"
- }
- Frame {
- msec: 6976
- hash: "561cdf098bdc35fc852fbe8fff2471e2"
- }
- Frame {
- msec: 6992
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7008
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7024
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7040
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7056
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7072
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7088
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7104
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7120
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7136
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7152
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7168
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7184
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7200
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7216
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7232
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7248
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7264
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7280
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7296
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7312
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7328
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7344
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7360
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7376
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7392
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7408
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7424
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Frame {
- msec: 7440
- hash: "0461d0e31648d2c155bee0145094c153"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7456
- hash: "096530df53ed21214cf93381ac0d23ea"
- }
- Frame {
- msec: 7472
- hash: "36e7cee0725fb16c5d7e08875a3b88f7"
- }
- Frame {
- msec: 7488
- hash: "a2b68c7e9e4ef04c1429190d01a3288b"
- }
- Frame {
- msec: 7504
- hash: "6ee23f5d2c0ddc21499c8685ae46df64"
- }
- Frame {
- msec: 7520
- hash: "dc423d32154882b99b7bde596697c83a"
- }
- Frame {
- msec: 7536
- hash: "e82852d1d2a21f67029870601b00b124"
- }
- Frame {
- msec: 7552
- hash: "7cd2773c33d7f34feb3b1e4752f63753"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7568
- hash: "2371f0ddf1b0ddcdb36f24e72b62d3a5"
- }
- Frame {
- msec: 7584
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7600
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7616
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7632
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7648
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7664
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7680
- image: "test3.7.png"
- }
- Frame {
- msec: 7696
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7712
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7728
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7744
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7760
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7776
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7792
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7808
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7824
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7840
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7856
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7872
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7888
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7904
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7920
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7936
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7952
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Frame {
- msec: 7968
- hash: "113dd40f9b5c9869ad04a00dda9078c6"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 7984
- hash: "93fd3abe0b99ed76d880f6f059636335"
- }
- Frame {
- msec: 8000
- hash: "a273ec355c79968013c70aca1b2d5737"
- }
- Frame {
- msec: 8016
- hash: "6b2df83c0645530ca007cde136838725"
- }
- Frame {
- msec: 8032
- hash: "47d5ed89f7e9c89df33bab14ca967f77"
- }
- Frame {
- msec: 8048
- hash: "c777e0d1a1f03e7a1bc16483f98c0622"
- }
- Frame {
- msec: 8064
- hash: "ac7e693d7dbc8e8ff2318cb611b68b76"
- }
- Frame {
- msec: 8080
- hash: "593e9711ae94a5b4f49544e0cf26d188"
- }
- Frame {
- msec: 8096
- hash: "afce51158cb19dd6ae8c72ce19964251"
- }
- Frame {
- msec: 8112
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8128
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8144
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8160
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8176
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8192
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8208
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8224
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8240
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8256
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8272
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8288
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8304
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8320
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8336
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8352
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8368
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8384
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8400
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8416
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8432
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8448
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8464
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8480
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Frame {
- msec: 8496
- hash: "30c5f9005238542c83b2d994cb61de16"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8512
- hash: "136c689aca9aa0cf957035137a926653"
- }
- Frame {
- msec: 8528
- hash: "b7418e46bca4bc8c953c15b03c23ec89"
- }
- Frame {
- msec: 8544
- hash: "e99575fe130e741f13329704303b76ca"
- }
- Frame {
- msec: 8560
- hash: "a2b7d528f9c145c4db0845bc76b3571f"
- }
- Frame {
- msec: 8576
- hash: "77f8beccd0134b8991ddb2ac92d64ecb"
- }
- Frame {
- msec: 8592
- hash: "fc359bc56852093020084af44987746a"
- }
- Frame {
- msec: 8608
- hash: "9f3479a702bc79062fff916678e974f1"
- }
- Frame {
- msec: 8624
- hash: "55c8c91ff26671f9f3049f1e1aaf5958"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 8640
- image: "test3.8.png"
- }
- Frame {
- msec: 8656
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8672
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8688
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8704
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8720
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8736
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8752
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8768
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8784
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8800
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8816
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8832
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8848
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8864
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8880
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8896
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8912
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8928
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8944
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8960
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8976
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 8992
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 9008
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 9024
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 9040
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Frame {
- msec: 9056
- hash: "216a02433edb100e6ff3db4944f6b061"
- }
- Key {
- type: 6
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 9072
- hash: "367ee34ab6a6cb0197e064db85638be7"
- }
- Frame {
- msec: 9088
- hash: "c61db7f2c0402a63efe779bec816a7db"
- }
- Frame {
- msec: 9104
- hash: "29d4d2679a502a1cb8a21807c43153c2"
- }
- Frame {
- msec: 9120
- hash: "3f531d4111efbbac256d4281db1fdeba"
- }
- Frame {
- msec: 9136
- hash: "9f343d8b4dc12cc7ab5ae1ff08067baf"
- }
- Frame {
- msec: 9152
- hash: "eb29b7d6ef2b5507425b2c30ddb58fa8"
- }
- Frame {
- msec: 9168
- hash: "883c0d35567deb6de9125441da89a1fe"
- }
- Frame {
- msec: 9184
- hash: "7c25e95ea2b38288b5ba5737108ef5d1"
- }
- Frame {
- msec: 9200
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 536870912
- text: "1c"
- autorep: false
- count: 1
- }
- Frame {
- msec: 9216
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9232
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9248
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9264
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9280
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9296
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9312
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9328
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9344
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9360
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9376
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9392
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9408
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9424
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9440
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9456
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9472
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9488
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9504
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9520
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9536
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9552
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9568
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9584
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9600
- image: "test3.9.png"
- }
- Frame {
- msec: 9616
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9632
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9648
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9664
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9680
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9696
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9712
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9728
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9744
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9760
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9776
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9792
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9808
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9824
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9840
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9856
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9872
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9888
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9904
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9920
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9936
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9952
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9968
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 9984
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10000
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10016
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10032
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10048
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10064
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10080
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10096
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10112
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10128
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10144
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10160
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10176
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10192
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10208
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10224
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10240
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10256
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10272
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10288
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10304
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10320
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10336
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10352
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10368
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 10384
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10400
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10416
- hash: "f192b84337784a6d31c309af7e32b5f7"
- }
- Frame {
- msec: 10432
- hash: "f192b84337784a6d31c309af7e32b5f7"
+ hash: "cb3a3cca07a49fadf8bb00834ea24f73"
}
}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/test.qml b/tests/auto/declarative/qmlvisual/focusscope/test.qml
index 6b2ee2599c..7342e353db 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/test.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/test.qml
@@ -1,9 +1,16 @@
import QtQuick 1.0
+/*
+ Blue border indicates scoped focus
+ Black border indicates NOT scoped focus
+ Red box indicates active focus
+ Use arrow keys to navigate
+ Press "9" to print currently focused item
+*/
Rectangle {
color: "white"
- width: 800
- height: 600
+ width: 480
+ height: 480
Keys.onDigit9Pressed: console.log("Error - Root")
@@ -55,8 +62,6 @@ Rectangle {
KeyNavigation.down: item3
}
- Text { x:100; y:170; text: "Blue border indicates scoped focus\nBlack border indicates NOT scoped focus\nRed box indicates active focus\nUse arrow keys to navigate\nPress \"9\" to print currently focused item" }
-
Rectangle {
id: item3
x: 10; y: 300
diff --git a/tests/auto/declarative/qmlvisual/focusscope/test2.qml b/tests/auto/declarative/qmlvisual/focusscope/test2.qml
index 4df75cfebe..072eddbf2d 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/test2.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/test2.qml
@@ -2,35 +2,33 @@ import QtQuick 1.0
Rectangle {
color: "white"
- width: 800
- height: 600
-
- Text { text: "All five rectangles should be red" }
+ width: 400
+ height: 50
+ //All five rectangles should be red
FocusScope {
- y: 100
focus: true
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
+ Rectangle { width: 40; height: 40; color: parent.activeFocus?"red":"blue" }
FocusScope {
- y: 100
+ x: 80
focus: true
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
+ Rectangle { width: 40; height: 40; color: parent.activeFocus?"red":"blue" }
FocusScope {
- y: 100
+ x: 80
focus: true
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
+ Rectangle { width: 40; height: 40; color: parent.activeFocus?"red":"blue" }
FocusScope {
- y: 100
+ x: 80
focus: true
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
+ Rectangle { width: 40; height: 40; color: parent.activeFocus?"red":"blue" }
FocusScope {
- y: 100
+ x: 80
focus: true
- Rectangle { width: 50; height: 50; color: parent.activeFocus?"red":"blue" }
+ Rectangle { width: 40; height: 40; color: parent.activeFocus?"red":"blue" }
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/focusscope/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/test3.qml
index 184763add7..90c23573df 100644
--- a/tests/auto/declarative/qmlvisual/focusscope/test3.qml
+++ b/tests/auto/declarative/qmlvisual/focusscope/test3.qml
@@ -1,21 +1,26 @@
import QtQuick 1.0
+/*
+ Currently selected element should be red
+ Pressing "9" should print the number of the currently selected item
+ Be sure to scroll all the way to the right, pause, and then all the way to the left
+*/
Rectangle {
color: "white"
- width: 800
- height: 600
+ width: 400
+ height: 100
ListModel {
id: model
- ListElement { name: "1" }
- ListElement { name: "2" }
- ListElement { name: "3" }
- ListElement { name: "4" }
- ListElement { name: "5" }
- ListElement { name: "6" }
- ListElement { name: "7" }
- ListElement { name: "8" }
- ListElement { name: "9" }
+ ListElement { name: "red" }
+ ListElement { name: "orange" }
+ ListElement { name: "yellow" }
+ ListElement { name: "green" }
+ ListElement { name: "cyan" }
+ ListElement { name: "blue" }
+ ListElement { name: "indigo" }
+ ListElement { name: "violet" }
+ ListElement { name: "pink" }
}
Component {
@@ -28,8 +33,7 @@ Rectangle {
focus: true
Keys.onDigit9Pressed: console.log(name)
width: 50; height: 50;
- color: root.ListView.isCurrentItem?"red":"green"
- Text { text: name; anchors.centerIn: parent }
+ color: root.ListView.isCurrentItem?"black":name
}
}
}
@@ -45,8 +49,4 @@ Rectangle {
}
- Text {
- y: 100; x: 50
- text: "Currently selected element should be red\nPressing \"9\" should print the number of the currently selected item\nBe sure to scroll all the way to the right, pause, and then all the way to the left."
- }
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated-smooth.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated-smooth.qml
index 8c21cee2bb..33d8cb8566 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated-smooth.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated-smooth.qml
@@ -4,52 +4,63 @@ import "content"
Rectangle {
id: page
color: "white"
- width: 1030; height: 540
-
- MyBorderImage {
- x: 20; y: 20; minWidth: 120; maxWidth: 240
- minHeight: 120; maxHeight: 240
- source: "content/colors.png"; margin: 30; antialiased: true
- }
- MyBorderImage {
- x: 270; y: 20; minWidth: 120; maxWidth: 240
- minHeight: 120; maxHeight: 240; antialiased: true
- source: "content/colors.png"; margin: 30
- horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat
- }
- MyBorderImage {
- x: 520; y: 20; minWidth: 120; maxWidth: 240
- minHeight: 120; maxHeight: 240; antialiased: true
- source: "content/colors.png"; margin: 30
- horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat
- }
- MyBorderImage {
- x: 770; y: 20; minWidth: 120; maxWidth: 240
- minHeight: 120; maxHeight: 240; antialiased: true
- source: "content/colors.png"; margin: 30
- horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round
- }
- MyBorderImage {
- x: 20; y: 280; minWidth: 60; maxWidth: 200
- minHeight: 40; maxHeight: 200; antialiased: true
- source: "content/bw.png"; margin: 10
- }
- MyBorderImage {
- x: 270; y: 280; minWidth: 60; maxWidth: 200
- minHeight: 40; maxHeight: 200; antialiased: true
- source: "content/bw.png"; margin: 10
- horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat
- }
- MyBorderImage {
- x: 520; y: 280; minWidth: 60; maxWidth: 200
- minHeight: 40; maxHeight: 200; antialiased: true
- source: "content/bw.png"; margin: 10
- horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat
- }
- MyBorderImage {
- x: 770; y: 280; minWidth: 60; maxWidth: 200
- minHeight: 40; maxHeight: 200; antialiased: true
- source: "content/bw.png"; margin: 10
- horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round
+ width: 520; height: 260
+ Grid{
+ columns: 4
+ spacing: 4
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 60; maxHeight: 120
+ source: "content/colors.png"; margin: 15
+ antialiased: true
+ }
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 60; maxHeight: 120
+ source: "content/colors.png"; margin: 15
+ horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat
+ antialiased: true
+ }
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 60; maxHeight: 120
+ source: "content/colors.png"; margin: 15
+ horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat
+ antialiased: true
+ }
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 60; maxHeight: 120
+ source: "content/colors.png"; margin: 15
+ horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round
+ antialiased: true
+ }
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 40; maxHeight: 120
+ source: "content/bw.png"; margin: 10
+ antialiased: true
+ }
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 40; maxHeight: 120
+ source: "content/bw.png"; margin: 10
+ horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat
+ antialiased: true
+ }
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 40; maxHeight: 120
+ source: "content/bw.png"; margin: 10
+ horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat
+ antialiased: true
+ }
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 40; maxHeight: 120
+ source: "content/bw.png"; margin: 10
+ horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round
+ antialiased: true
+ }
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated.qml
index fb5cac08cf..21f6b5f90b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/animated.qml
@@ -4,52 +4,55 @@ import "content"
Rectangle {
id: page
color: "white"
- width: 1030; height: 540
-
- MyBorderImage {
- x: 20; y: 20; minWidth: 120; maxWidth: 240
- minHeight: 120; maxHeight: 240
- source: "content/colors.png"; margin: 30
- }
- MyBorderImage {
- x: 270; y: 20; minWidth: 120; maxWidth: 240
- minHeight: 120; maxHeight: 240
- source: "content/colors.png"; margin: 30
- horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat
- }
- MyBorderImage {
- x: 520; y: 20; minWidth: 120; maxWidth: 240
- minHeight: 120; maxHeight: 240
- source: "content/colors.png"; margin: 30
- horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat
- }
- MyBorderImage {
- x: 770; y: 20; minWidth: 120; maxWidth: 240
- minHeight: 120; maxHeight: 240
- source: "content/colors.png"; margin: 30
- horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round
- }
- MyBorderImage {
- x: 20; y: 280; minWidth: 60; maxWidth: 200
- minHeight: 40; maxHeight: 200
- source: "content/bw.png"; margin: 10
- }
- MyBorderImage {
- x: 270; y: 280; minWidth: 60; maxWidth: 200
- minHeight: 40; maxHeight: 200
- source: "content/bw.png"; margin: 10
- horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat
- }
- MyBorderImage {
- x: 520; y: 280; minWidth: 60; maxWidth: 200
- minHeight: 40; maxHeight: 200
- source: "content/bw.png"; margin: 10
- horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat
- }
- MyBorderImage {
- x: 770; y: 280; minWidth: 60; maxWidth: 200
- minHeight: 40; maxHeight: 200
- source: "content/bw.png"; margin: 10
- horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round
+ width: 520; height: 260
+ Grid{
+ columns: 4
+ spacing: 4
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 60; maxHeight: 120
+ source: "content/colors.png"; margin: 15
+ }
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 60; maxHeight: 120
+ source: "content/colors.png"; margin: 15
+ horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat
+ }
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 60; maxHeight: 120
+ source: "content/colors.png"; margin: 15
+ horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat
+ }
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 60; maxHeight: 120
+ source: "content/colors.png"; margin: 15
+ horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round
+ }
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 40; maxHeight: 120
+ source: "content/bw.png"; margin: 10
+ }
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 40; maxHeight: 120
+ source: "content/bw.png"; margin: 10
+ horizontalMode: BorderImage.Repeat; verticalMode: BorderImage.Repeat
+ }
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 40; maxHeight: 120
+ source: "content/bw.png"; margin: 10
+ horizontalMode: BorderImage.Stretch; verticalMode: BorderImage.Repeat
+ }
+ MyBorderImage {
+ minWidth: 60; maxWidth: 120
+ minHeight: 40; maxHeight: 120
+ source: "content/bw.png"; margin: 10
+ horizontalMode: BorderImage.Round; verticalMode: BorderImage.Round
+ }
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml
index f4ead540da..923db47b4a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/MyBorderImage.qml
@@ -13,21 +13,21 @@ Item {
property int margin
id: container
- width: 240; height: 240
+ width: maxWidth; height: maxHeight
BorderImage {
id: image; x: container.width / 2 - width / 2; y: container.height / 2 - height / 2
SequentialAnimation on width {
loops: Animation.Infinite
- NumberAnimation { from: container.minWidth; to: container.maxWidth; duration: 2000; easing.type: "InOutQuad"}
- NumberAnimation { from: container.maxWidth; to: container.minWidth; duration: 2000; easing.type: "InOutQuad" }
+ NumberAnimation { from: container.minWidth; to: container.maxWidth; duration: 600; easing.type: "InOutQuad"}
+ NumberAnimation { from: container.maxWidth; to: container.minWidth; duration: 600; easing.type: "InOutQuad" }
}
SequentialAnimation on height {
loops: Animation.Infinite
- NumberAnimation { from: container.minHeight; to: container.maxHeight; duration: 2000; easing.type: "InOutQuad"}
- NumberAnimation { from: container.maxHeight; to: container.minHeight; duration: 2000; easing.type: "InOutQuad" }
+ NumberAnimation { from: container.minHeight; to: container.maxHeight; duration: 600; easing.type: "InOutQuad"}
+ NumberAnimation { from: container.maxHeight; to: container.minHeight; duration: 600; easing.type: "InOutQuad" }
}
border.top: container.margin
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-round.sci b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-round.sci
index 506f6f5f99..0d91764551 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-round.sci
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-round.sci
@@ -1,7 +1,7 @@
-border.left:30
-border.top:30
-border.right:30
-border.bottom:30
+border.left:15
+border.top:15
+border.right:15
+border.bottom:15
horizontalTileRule:Round
verticalTileRule:Round
source:colors.png
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-stretch.sci b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-stretch.sci
index e4989a723c..16ac8ccd21 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-stretch.sci
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors-stretch.sci
@@ -1,5 +1,5 @@
-border.left:30
-border.top:30
-border.right:30
-border.bottom:30
+border.left:15
+border.top:15
+border.right:15
+border.bottom:15
source:colors.png
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors.png
index dfb62f3d64..116907d2c5 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/colors.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/qmldir b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/qmldir
new file mode 100644
index 0000000000..0c732d2dcb
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/content/qmldir
@@ -0,0 +1 @@
+MyBorderImage 1.0 MyBorderImage.qml
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.0.png
index 9a6b079fdb..b7d06e48d7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png
index 4366d531e9..d904aa0d13 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.2.png
deleted file mode 100644
index 85a2729d2b..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.3.png
deleted file mode 100644
index de6ff7c3f9..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.4.png
deleted file mode 100644
index fe7d3dd1eb..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.5.png
deleted file mode 100644
index e73bef53f3..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.6.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.6.png
deleted file mode 100644
index 0c75422191..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml
index e974234b6f..6c7a940828 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated-smooth.qml
@@ -6,1818 +6,314 @@ VisualTest {
}
Frame {
msec: 16
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ image: "animated-smooth.0.png"
}
Frame {
msec: 32
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "a2467396d7318a93d35aa314896d3d05"
}
Frame {
msec: 48
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "a2467396d7318a93d35aa314896d3d05"
}
Frame {
msec: 64
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "8ba2cebd7b80bd58612ce46470e7763b"
}
Frame {
msec: 80
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "9ab9c8f788bbca58552bbb6009386d69"
}
Frame {
msec: 96
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "7f4b50df7848ad07fb75cb19f2c4b04a"
}
Frame {
msec: 112
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "425e48ae492190eb6b8028be11352d7e"
}
Frame {
msec: 128
- hash: "cd2180be80101c2aa4350b51b7a6f502"
+ hash: "183e1f8321edb7b8d1cc2cc858039360"
}
Frame {
msec: 144
- hash: "de471829f8ad3b43bf1b4df9d1d65a4d"
+ hash: "83d82bc27b0e3387dddb8e7e09380e02"
}
Frame {
msec: 160
- hash: "ed9f2ca797894612600bc4b7fbaecb84"
+ hash: "bca94a64a283e7e30ec8c1fe3249f981"
}
Frame {
msec: 176
- hash: "59470d71fa4426d0283e86371f2bfc2a"
+ hash: "26cbcf6233c8fd222a857a8ae801749a"
}
Frame {
msec: 192
- hash: "9a2f92efb51bcc6293d6a8e82d5314ea"
+ hash: "ac1d21dba648ab729e1670ead441b173"
}
Frame {
msec: 208
- hash: "7b66e21652a7d0982226e281a48411a9"
+ hash: "e42811f8029c6cd70041f8492a31ff27"
}
Frame {
msec: 224
- hash: "a716c8d2c94433dee719f92f0822c8ec"
+ hash: "f0b06b2ccf1be47ab7c5f6863ccdc495"
}
Frame {
msec: 240
- hash: "f22a47b846cfee96ebdf39bbce2e6d51"
+ hash: "9b398166d385facb2d02c86cd92ab85f"
}
Frame {
msec: 256
- hash: "5a8932d13d624932a65694fd19ec05cd"
+ hash: "a4414a5ae4e44320383d49441d7acb51"
}
Frame {
msec: 272
- hash: "48e62dd171f5da82b5aa26c765e4042c"
+ hash: "f09208fa210f3b0b271af9ef6f3741e8"
}
Frame {
msec: 288
- hash: "63d3c47f7dec1236440a05e0a8380900"
+ hash: "054f7aebcef583f9c8469aaa2e62f9ea"
}
Frame {
msec: 304
- hash: "323af110731b7af0c30f8862ff59b833"
+ hash: "1331b1218fa6134922ab248bfde5d3f6"
}
Frame {
msec: 320
- hash: "83c029e328e80af83158c37089cf0ece"
+ hash: "601b97220c77c185d9ed3ae3726815a5"
}
Frame {
msec: 336
- hash: "3f9a09ae19be34348bb2552915360cf7"
+ hash: "487c739f3849834e3d7fa2885bb28375"
}
Frame {
msec: 352
- hash: "df624d70cae1bcefda8d69c0ff055d83"
+ hash: "c41dc19ab7f3c80349ac52ab2c3b410d"
}
Frame {
msec: 368
- hash: "d671a3b971468e1d8aa30ab655e020a9"
+ hash: "c6e8b055e5919aecbf2ef4d88de6cabd"
}
Frame {
msec: 384
- hash: "74c837b29f7f05b615123f0e608b523f"
+ hash: "f9d99999cccd8a3a9d7cb74cadb08059"
}
Frame {
msec: 400
- hash: "277ef98ea859fb7685fe6cd44a538a7d"
+ hash: "c466c57cda1c7666a46bab9478031c86"
}
Frame {
msec: 416
- hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9"
+ hash: "02f9c85d8cbd9041ed18d2fe0071c526"
}
Frame {
msec: 432
- hash: "456be9c208d690c479ba12bf6325dde0"
+ hash: "355d2b1b30a721a26f80c414bd9164f6"
}
Frame {
msec: 448
- hash: "10307beea6d99ab0ff5863f8e35555ed"
+ hash: "bfc8b1bdb53f4a4c44285a5c10819ae7"
}
Frame {
msec: 464
- hash: "170a1d5fe3422cf5223a78015a6a45fd"
+ hash: "c272ac121fe5392f12ef3180d4c694c8"
}
Frame {
msec: 480
- hash: "64ecb03aa538e74d0b99c6dec7751401"
+ hash: "83324ab9209ac5246c39274ecec2dbcf"
}
Frame {
msec: 496
- hash: "f3a7e74a1839f9366f9eeec4d2b80d1e"
+ hash: "b128fd583f5fa460bcd1c062226274fb"
}
Frame {
msec: 512
- hash: "0f347763f25350ebb62dda1536372b45"
+ hash: "f46f1f1069806b1e17f340140e82bfd3"
}
Frame {
msec: 528
- hash: "0af81ee0d76ff8335a0e347dc086ca37"
+ hash: "dff621d5da5f4d008a8f874914f90637"
}
Frame {
msec: 544
- hash: "061406edcbd2d4930ab89c3fcab63c7f"
+ hash: "c5920a84e215f4bbda3032bbfbca4070"
}
Frame {
msec: 560
- hash: "31d65134f340d82dd40f2401bda3fb7e"
+ hash: "ecc23f198a4bf346bf6eee51f7adea69"
}
Frame {
msec: 576
- hash: "16c16c77c65b36d1e0954d5ead2642be"
+ hash: "dcc8f5b1b6aac31c3c5856560b37c501"
}
Frame {
msec: 592
- hash: "61c16009b65a55bffb63e27727e1615e"
+ hash: "203fa4bd23440aa88fc2a27b66ee091d"
}
Frame {
msec: 608
- hash: "e1474c2cdd8768ca1ef45bf3bc5234ca"
+ hash: "a2662209c8f9aa7bd9c5b4066b289cde"
}
Frame {
msec: 624
- hash: "89c159ef00d273ecfe61332e1bf7244d"
+ hash: "a2662209c8f9aa7bd9c5b4066b289cde"
}
Frame {
msec: 640
- hash: "f4d0d3bca25e67908b38910f47b4757e"
+ hash: "203fa4bd23440aa88fc2a27b66ee091d"
}
Frame {
msec: 656
- hash: "0e0c40f8e11a7bd499c80562ac6f8a82"
+ hash: "dcc8f5b1b6aac31c3c5856560b37c501"
}
Frame {
msec: 672
- hash: "4310a4c3037d845f088f21ad608f366a"
+ hash: "ecc23f198a4bf346bf6eee51f7adea69"
}
Frame {
msec: 688
- hash: "3d518cd0348d6202243364af1dd6ce89"
+ hash: "c5920a84e215f4bbda3032bbfbca4070"
}
Frame {
msec: 704
- hash: "41987e6b4248d7944c0dbc6eb3862023"
+ hash: "dff621d5da5f4d008a8f874914f90637"
}
Frame {
msec: 720
- hash: "3e81338d38723d56f2d6c428271f81c1"
+ hash: "f46f1f1069806b1e17f340140e82bfd3"
}
Frame {
msec: 736
- hash: "74af3457583fbaf73f14556aeccc8403"
+ hash: "b128fd583f5fa460bcd1c062226274fb"
}
Frame {
msec: 752
- hash: "efc119983701908a904deb24108c59cb"
+ hash: "83324ab9209ac5246c39274ecec2dbcf"
}
Frame {
msec: 768
- hash: "3a77785cfd7755f567619d8e04583f6a"
+ hash: "c272ac121fe5392f12ef3180d4c694c8"
}
Frame {
msec: 784
- hash: "fd85d1dd931033973283a408b5e328a8"
+ hash: "bfc8b1bdb53f4a4c44285a5c10819ae7"
}
Frame {
msec: 800
- hash: "5d3e85acabe5e5ff802eb7731676274f"
+ hash: "355d2b1b30a721a26f80c414bd9164f6"
}
Frame {
msec: 816
- hash: "ae12f1f37a746e16b06e6b869c89fac1"
+ hash: "02f9c85d8cbd9041ed18d2fe0071c526"
}
Frame {
msec: 832
- hash: "d2ed2cf3a12e41bac299399cc35abe6a"
+ hash: "c466c57cda1c7666a46bab9478031c86"
}
Frame {
msec: 848
- hash: "84ef6dda8318b623832f58c46d762e89"
+ hash: "f9d99999cccd8a3a9d7cb74cadb08059"
}
Frame {
msec: 864
- hash: "b699285764f5e8866a9996f4a0dccc69"
+ hash: "c6e8b055e5919aecbf2ef4d88de6cabd"
}
Frame {
msec: 880
- hash: "ddd8a006ef048c8d929144aa9fcd7c5a"
+ hash: "c41dc19ab7f3c80349ac52ab2c3b410d"
}
Frame {
msec: 896
- hash: "177666cb3bb784c83196886b2c6cf6b6"
+ hash: "487c739f3849834e3d7fa2885bb28375"
}
Frame {
msec: 912
- hash: "9cd29b4b023a8b92573575fb3c3dda83"
+ hash: "601b97220c77c185d9ed3ae3726815a5"
}
Frame {
msec: 928
- hash: "adc670a9aa0326744cb23e4f5912e6c7"
+ hash: "1331b1218fa6134922ab248bfde5d3f6"
}
Frame {
msec: 944
- hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6"
+ hash: "054f7aebcef583f9c8469aaa2e62f9ea"
}
Frame {
msec: 960
- image: "animated-smooth.0.png"
+ hash: "f09208fa210f3b0b271af9ef6f3741e8"
}
Frame {
msec: 976
- hash: "64b21b89576fdd0083f60a26f57b9c11"
+ image: "animated-smooth.1.png"
}
Frame {
msec: 992
- hash: "0d407ee07692d0e5a480a60952807b3c"
+ hash: "9b398166d385facb2d02c86cd92ab85f"
}
Frame {
msec: 1008
- hash: "845170815a87565dc4229792032b3357"
+ hash: "f0b06b2ccf1be47ab7c5f6863ccdc495"
}
Frame {
msec: 1024
- hash: "8b8120cfc14de03e048632fdea61be21"
+ hash: "e42811f8029c6cd70041f8492a31ff27"
}
Frame {
msec: 1040
- hash: "b0070117f1c24a4da87434725d4bb989"
+ hash: "ac1d21dba648ab729e1670ead441b173"
}
Frame {
msec: 1056
- hash: "0239d697642ca1d1b1d1daa3ea048e1e"
+ hash: "26cbcf6233c8fd222a857a8ae801749a"
}
Frame {
msec: 1072
- hash: "3df54504f8891306fa8f1e9e2075a5e2"
+ hash: "bca94a64a283e7e30ec8c1fe3249f981"
}
Frame {
msec: 1088
- hash: "853429387cc639496c7338244de7e1b7"
+ hash: "83d82bc27b0e3387dddb8e7e09380e02"
}
Frame {
msec: 1104
- hash: "bd70500fbdfe5aa2fe4362a97a1dee2d"
+ hash: "183e1f8321edb7b8d1cc2cc858039360"
}
Frame {
msec: 1120
- hash: "b375e723b2396b13b8f55cfc0c81c3c3"
+ hash: "425e48ae492190eb6b8028be11352d7e"
}
Frame {
msec: 1136
- hash: "53f05993ba3b426949badd2e4cd66d84"
+ hash: "7f4b50df7848ad07fb75cb19f2c4b04a"
}
Frame {
msec: 1152
- hash: "23291a0239c69ea07db959e709b1ff5f"
+ hash: "9ab9c8f788bbca58552bbb6009386d69"
}
Frame {
msec: 1168
- hash: "85ef33fcb3f91e4fc20391bf94455984"
+ hash: "8ba2cebd7b80bd58612ce46470e7763b"
}
Frame {
msec: 1184
- hash: "d6615fc345831a3cc5b9a7196284b632"
+ hash: "a2467396d7318a93d35aa314896d3d05"
}
Frame {
msec: 1200
- hash: "07acba64dc608439a8a54fcb080379e8"
+ hash: "a2467396d7318a93d35aa314896d3d05"
}
Frame {
msec: 1216
- hash: "2a1fcfb753ca237b518da26e67c928e5"
+ hash: "a2467396d7318a93d35aa314896d3d05"
}
Frame {
msec: 1232
- hash: "1f964c6c9bebdc9945dc69a6095400f7"
+ hash: "a2467396d7318a93d35aa314896d3d05"
}
Frame {
msec: 1248
- hash: "bd045f4532d78bba0ef1b64118fd9f24"
- }
- Frame {
- msec: 1264
- hash: "2084ccc60ddd493399c128717816d33b"
- }
- Frame {
- msec: 1280
- hash: "0640fcb0b24d3ba4ab8695f78271a438"
- }
- Frame {
- msec: 1296
- hash: "7c9a98e2101c33e17c1bd7e6c2d921ff"
- }
- Frame {
- msec: 1312
- hash: "fce2648975106bc5c0ca9a4530f7f748"
- }
- Frame {
- msec: 1328
- hash: "39cc17ee2e889f17dd07179fda99e431"
- }
- Frame {
- msec: 1344
- hash: "39c46d85d20f7ef3eca1d09c7eb6a068"
- }
- Frame {
- msec: 1360
- hash: "d65d50fbb920e683b041a1c72238225b"
- }
- Frame {
- msec: 1376
- hash: "45d891d804609ebbe1d5ac3f826d0c17"
- }
- Frame {
- msec: 1392
- hash: "05cbce0eaa80b4610a9067af8c40f819"
- }
- Frame {
- msec: 1408
- hash: "00ab7798bcd77a99886dff0414f35382"
- }
- Frame {
- msec: 1424
- hash: "5cc90d798786c270ddd2616512f4459f"
- }
- Frame {
- msec: 1440
- hash: "e5df07ea21e8e415c3ec82560f2d0f34"
- }
- Frame {
- msec: 1456
- hash: "ddf1f5c0b97fe4821719ec5bf4bd091b"
- }
- Frame {
- msec: 1472
- hash: "c61d2aa7f934fb5a9f9f7883e063b51c"
- }
- Frame {
- msec: 1488
- hash: "29ddde3300d0520a4c01b5536d8b9e7a"
- }
- Frame {
- msec: 1504
- hash: "2fede2f5d871654f3f8a6e9d890adeac"
- }
- Frame {
- msec: 1520
- hash: "deed4c06c9b713834490832b88e7acaf"
- }
- Frame {
- msec: 1536
- hash: "c2edb016cfdd47c192d1c48281ee76ed"
- }
- Frame {
- msec: 1552
- hash: "a261be47ae89e6b53e6bc1c1197154ae"
- }
- Frame {
- msec: 1568
- hash: "e860e97ebd73b7d1d5d5d90458b34bfe"
- }
- Frame {
- msec: 1584
- hash: "a087b532ecb2f28e4ee60819228c2522"
- }
- Frame {
- msec: 1600
- hash: "64df51b4c1bf744b2aae1c6d908c2cc3"
- }
- Frame {
- msec: 1616
- hash: "880640372bf584955627f6835f24be13"
- }
- Frame {
- msec: 1632
- hash: "d1110817827c318ceb0c112e8c2bfc1d"
- }
- Frame {
- msec: 1648
- hash: "705d9c8de05c859a42769f73761c6a63"
- }
- Frame {
- msec: 1664
- hash: "3bae40654ec551d69e7c8c72f631c7a5"
- }
- Frame {
- msec: 1680
- hash: "774740a393f3e9b8f12b81cce8da8280"
- }
- Frame {
- msec: 1696
- hash: "64cd225202ed6c91b02c368a9160a656"
- }
- Frame {
- msec: 1712
- hash: "2b7eb8a9fe26b032be8b4b9c00995912"
- }
- Frame {
- msec: 1728
- hash: "47e920e3884ccf2f0f49e78070af6929"
- }
- Frame {
- msec: 1744
- hash: "fe899138116774df4c4441687e3019c5"
- }
- Frame {
- msec: 1760
- hash: "5d9ee853f083d514fbe51d6953d8e000"
- }
- Frame {
- msec: 1776
- hash: "5736362b42bc2d801e02edabb983663a"
- }
- Frame {
- msec: 1792
- hash: "c3ea530de646612f9203c5800cad884b"
- }
- Frame {
- msec: 1808
- hash: "48952ffa5e300778eafa768b9fe7df0c"
- }
- Frame {
- msec: 1824
- hash: "fe04cae65aeec18697eca4f3f83a40e9"
- }
- Frame {
- msec: 1840
- hash: "382d454f2366c1fb4ca472faa3bfa5e9"
- }
- Frame {
- msec: 1856
- hash: "89022a8e2feb3dcb845de69aafc333ad"
- }
- Frame {
- msec: 1872
- hash: "25506557c853a0020e98cf3992956989"
- }
- Frame {
- msec: 1888
- hash: "9a64706c52c9e962816953e32950b8ba"
- }
- Frame {
- msec: 1904
- hash: "3cbfded47413172ada64095e65c55e8a"
- }
- Frame {
- msec: 1920
- image: "animated-smooth.1.png"
- }
- Frame {
- msec: 1936
- hash: "c5e399e29b988148913e62ee208b3326"
- }
- Frame {
- msec: 1952
- hash: "b980703c1d0018937e83a8ba8862469e"
- }
- Frame {
- msec: 1968
- hash: "05312f9529c94d3331ace7d73c544284"
- }
- Frame {
- msec: 1984
- hash: "a94de4e90a8f8eb4ec33fe902afd226c"
- }
- Frame {
- msec: 2000
- hash: "ee297a2d68c9e58157d9bf189d353713"
- }
- Frame {
- msec: 2016
- hash: "00f3c9b8b37cb104cf2a7701639bc61f"
- }
- Frame {
- msec: 2032
- hash: "ee297a2d68c9e58157d9bf189d353713"
- }
- Frame {
- msec: 2048
- hash: "a94de4e90a8f8eb4ec33fe902afd226c"
- }
- Frame {
- msec: 2064
- hash: "05312f9529c94d3331ace7d73c544284"
- }
- Frame {
- msec: 2080
- hash: "b980703c1d0018937e83a8ba8862469e"
- }
- Frame {
- msec: 2096
- hash: "c5e399e29b988148913e62ee208b3326"
- }
- Frame {
- msec: 2112
- hash: "3b7b83e97d17440b42e6ef4b962076d8"
- }
- Frame {
- msec: 2128
- hash: "3cbfded47413172ada64095e65c55e8a"
- }
- Frame {
- msec: 2144
- hash: "9a64706c52c9e962816953e32950b8ba"
- }
- Frame {
- msec: 2160
- hash: "25506557c853a0020e98cf3992956989"
- }
- Frame {
- msec: 2176
- hash: "89022a8e2feb3dcb845de69aafc333ad"
- }
- Frame {
- msec: 2192
- hash: "382d454f2366c1fb4ca472faa3bfa5e9"
- }
- Frame {
- msec: 2208
- hash: "fe04cae65aeec18697eca4f3f83a40e9"
- }
- Frame {
- msec: 2224
- hash: "48952ffa5e300778eafa768b9fe7df0c"
- }
- Frame {
- msec: 2240
- hash: "c3ea530de646612f9203c5800cad884b"
- }
- Frame {
- msec: 2256
- hash: "5736362b42bc2d801e02edabb983663a"
- }
- Frame {
- msec: 2272
- hash: "5d9ee853f083d514fbe51d6953d8e000"
- }
- Frame {
- msec: 2288
- hash: "fe899138116774df4c4441687e3019c5"
- }
- Frame {
- msec: 2304
- hash: "47e920e3884ccf2f0f49e78070af6929"
- }
- Frame {
- msec: 2320
- hash: "2b7eb8a9fe26b032be8b4b9c00995912"
- }
- Frame {
- msec: 2336
- hash: "64cd225202ed6c91b02c368a9160a656"
- }
- Frame {
- msec: 2352
- hash: "774740a393f3e9b8f12b81cce8da8280"
- }
- Frame {
- msec: 2368
- hash: "3bae40654ec551d69e7c8c72f631c7a5"
- }
- Frame {
- msec: 2384
- hash: "705d9c8de05c859a42769f73761c6a63"
- }
- Frame {
- msec: 2400
- hash: "d1110817827c318ceb0c112e8c2bfc1d"
- }
- Frame {
- msec: 2416
- hash: "880640372bf584955627f6835f24be13"
- }
- Frame {
- msec: 2432
- hash: "64df51b4c1bf744b2aae1c6d908c2cc3"
- }
- Frame {
- msec: 2448
- hash: "a087b532ecb2f28e4ee60819228c2522"
- }
- Frame {
- msec: 2464
- hash: "e860e97ebd73b7d1d5d5d90458b34bfe"
- }
- Frame {
- msec: 2480
- hash: "a261be47ae89e6b53e6bc1c1197154ae"
- }
- Frame {
- msec: 2496
- hash: "c2edb016cfdd47c192d1c48281ee76ed"
- }
- Frame {
- msec: 2512
- hash: "deed4c06c9b713834490832b88e7acaf"
- }
- Frame {
- msec: 2528
- hash: "2fede2f5d871654f3f8a6e9d890adeac"
- }
- Frame {
- msec: 2544
- hash: "29ddde3300d0520a4c01b5536d8b9e7a"
- }
- Frame {
- msec: 2560
- hash: "c61d2aa7f934fb5a9f9f7883e063b51c"
- }
- Frame {
- msec: 2576
- hash: "ddf1f5c0b97fe4821719ec5bf4bd091b"
- }
- Frame {
- msec: 2592
- hash: "e5df07ea21e8e415c3ec82560f2d0f34"
- }
- Frame {
- msec: 2608
- hash: "5cc90d798786c270ddd2616512f4459f"
- }
- Frame {
- msec: 2624
- hash: "00ab7798bcd77a99886dff0414f35382"
- }
- Frame {
- msec: 2640
- hash: "05cbce0eaa80b4610a9067af8c40f819"
- }
- Frame {
- msec: 2656
- hash: "45d891d804609ebbe1d5ac3f826d0c17"
- }
- Frame {
- msec: 2672
- hash: "d65d50fbb920e683b041a1c72238225b"
- }
- Frame {
- msec: 2688
- hash: "39c46d85d20f7ef3eca1d09c7eb6a068"
- }
- Frame {
- msec: 2704
- hash: "39cc17ee2e889f17dd07179fda99e431"
- }
- Frame {
- msec: 2720
- hash: "fce2648975106bc5c0ca9a4530f7f748"
- }
- Frame {
- msec: 2736
- hash: "7c9a98e2101c33e17c1bd7e6c2d921ff"
- }
- Frame {
- msec: 2752
- hash: "0640fcb0b24d3ba4ab8695f78271a438"
- }
- Frame {
- msec: 2768
- hash: "2084ccc60ddd493399c128717816d33b"
- }
- Frame {
- msec: 2784
- hash: "bd045f4532d78bba0ef1b64118fd9f24"
- }
- Frame {
- msec: 2800
- hash: "1f964c6c9bebdc9945dc69a6095400f7"
- }
- Frame {
- msec: 2816
- hash: "2a1fcfb753ca237b518da26e67c928e5"
- }
- Frame {
- msec: 2832
- hash: "07acba64dc608439a8a54fcb080379e8"
- }
- Frame {
- msec: 2848
- hash: "d6615fc345831a3cc5b9a7196284b632"
- }
- Frame {
- msec: 2864
- hash: "85ef33fcb3f91e4fc20391bf94455984"
- }
- Frame {
- msec: 2880
- image: "animated-smooth.2.png"
- }
- Frame {
- msec: 2896
- hash: "53f05993ba3b426949badd2e4cd66d84"
- }
- Frame {
- msec: 2912
- hash: "b375e723b2396b13b8f55cfc0c81c3c3"
- }
- Frame {
- msec: 2928
- hash: "bd70500fbdfe5aa2fe4362a97a1dee2d"
- }
- Frame {
- msec: 2944
- hash: "853429387cc639496c7338244de7e1b7"
- }
- Frame {
- msec: 2960
- hash: "3df54504f8891306fa8f1e9e2075a5e2"
- }
- Frame {
- msec: 2976
- hash: "0239d697642ca1d1b1d1daa3ea048e1e"
- }
- Frame {
- msec: 2992
- hash: "b0070117f1c24a4da87434725d4bb989"
- }
- Frame {
- msec: 3008
- hash: "8b8120cfc14de03e048632fdea61be21"
- }
- Frame {
- msec: 3024
- hash: "845170815a87565dc4229792032b3357"
- }
- Frame {
- msec: 3040
- hash: "0d407ee07692d0e5a480a60952807b3c"
- }
- Frame {
- msec: 3056
- hash: "64b21b89576fdd0083f60a26f57b9c11"
- }
- Frame {
- msec: 3072
- hash: "d7e96278583f83ab636ed68fa130e4d2"
- }
- Frame {
- msec: 3088
- hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6"
- }
- Frame {
- msec: 3104
- hash: "adc670a9aa0326744cb23e4f5912e6c7"
- }
- Frame {
- msec: 3120
- hash: "9cd29b4b023a8b92573575fb3c3dda83"
- }
- Frame {
- msec: 3136
- hash: "177666cb3bb784c83196886b2c6cf6b6"
- }
- Frame {
- msec: 3152
- hash: "ddd8a006ef048c8d929144aa9fcd7c5a"
- }
- Frame {
- msec: 3168
- hash: "b699285764f5e8866a9996f4a0dccc69"
- }
- Frame {
- msec: 3184
- hash: "84ef6dda8318b623832f58c46d762e89"
- }
- Frame {
- msec: 3200
- hash: "d2ed2cf3a12e41bac299399cc35abe6a"
- }
- Frame {
- msec: 3216
- hash: "ae12f1f37a746e16b06e6b869c89fac1"
- }
- Frame {
- msec: 3232
- hash: "5d3e85acabe5e5ff802eb7731676274f"
- }
- Frame {
- msec: 3248
- hash: "fd85d1dd931033973283a408b5e328a8"
- }
- Frame {
- msec: 3264
- hash: "3a77785cfd7755f567619d8e04583f6a"
- }
- Frame {
- msec: 3280
- hash: "efc119983701908a904deb24108c59cb"
- }
- Frame {
- msec: 3296
- hash: "74af3457583fbaf73f14556aeccc8403"
- }
- Frame {
- msec: 3312
- hash: "3e81338d38723d56f2d6c428271f81c1"
- }
- Frame {
- msec: 3328
- hash: "41987e6b4248d7944c0dbc6eb3862023"
- }
- Frame {
- msec: 3344
- hash: "3d518cd0348d6202243364af1dd6ce89"
- }
- Frame {
- msec: 3360
- hash: "4310a4c3037d845f088f21ad608f366a"
- }
- Frame {
- msec: 3376
- hash: "0e0c40f8e11a7bd499c80562ac6f8a82"
- }
- Frame {
- msec: 3392
- hash: "f4d0d3bca25e67908b38910f47b4757e"
- }
- Frame {
- msec: 3408
- hash: "89c159ef00d273ecfe61332e1bf7244d"
- }
- Frame {
- msec: 3424
- hash: "e1474c2cdd8768ca1ef45bf3bc5234ca"
- }
- Frame {
- msec: 3440
- hash: "61c16009b65a55bffb63e27727e1615e"
- }
- Frame {
- msec: 3456
- hash: "16c16c77c65b36d1e0954d5ead2642be"
- }
- Frame {
- msec: 3472
- hash: "31d65134f340d82dd40f2401bda3fb7e"
- }
- Frame {
- msec: 3488
- hash: "061406edcbd2d4930ab89c3fcab63c7f"
- }
- Frame {
- msec: 3504
- hash: "0af81ee0d76ff8335a0e347dc086ca37"
- }
- Frame {
- msec: 3520
- hash: "0f347763f25350ebb62dda1536372b45"
- }
- Frame {
- msec: 3536
- hash: "f3a7e74a1839f9366f9eeec4d2b80d1e"
- }
- Frame {
- msec: 3552
- hash: "64ecb03aa538e74d0b99c6dec7751401"
- }
- Frame {
- msec: 3568
- hash: "170a1d5fe3422cf5223a78015a6a45fd"
- }
- Frame {
- msec: 3584
- hash: "10307beea6d99ab0ff5863f8e35555ed"
- }
- Frame {
- msec: 3600
- hash: "456be9c208d690c479ba12bf6325dde0"
- }
- Frame {
- msec: 3616
- hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9"
- }
- Frame {
- msec: 3632
- hash: "277ef98ea859fb7685fe6cd44a538a7d"
- }
- Frame {
- msec: 3648
- hash: "74c837b29f7f05b615123f0e608b523f"
- }
- Frame {
- msec: 3664
- hash: "d671a3b971468e1d8aa30ab655e020a9"
- }
- Frame {
- msec: 3680
- hash: "df624d70cae1bcefda8d69c0ff055d83"
- }
- Frame {
- msec: 3696
- hash: "3f9a09ae19be34348bb2552915360cf7"
- }
- Frame {
- msec: 3712
- hash: "83c029e328e80af83158c37089cf0ece"
- }
- Frame {
- msec: 3728
- hash: "323af110731b7af0c30f8862ff59b833"
- }
- Frame {
- msec: 3744
- hash: "63d3c47f7dec1236440a05e0a8380900"
- }
- Frame {
- msec: 3760
- hash: "48e62dd171f5da82b5aa26c765e4042c"
- }
- Frame {
- msec: 3776
- hash: "5a8932d13d624932a65694fd19ec05cd"
- }
- Frame {
- msec: 3792
- hash: "f22a47b846cfee96ebdf39bbce2e6d51"
- }
- Frame {
- msec: 3808
- hash: "a716c8d2c94433dee719f92f0822c8ec"
- }
- Frame {
- msec: 3824
- hash: "7b66e21652a7d0982226e281a48411a9"
- }
- Frame {
- msec: 3840
- image: "animated-smooth.3.png"
- }
- Frame {
- msec: 3856
- hash: "59470d71fa4426d0283e86371f2bfc2a"
- }
- Frame {
- msec: 3872
- hash: "ed9f2ca797894612600bc4b7fbaecb84"
- }
- Frame {
- msec: 3888
- hash: "de471829f8ad3b43bf1b4df9d1d65a4d"
- }
- Frame {
- msec: 3904
- hash: "cd2180be80101c2aa4350b51b7a6f502"
- }
- Frame {
- msec: 3920
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3936
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3952
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3968
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3984
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4000
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4016
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4032
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4048
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4064
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4080
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4096
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4112
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4128
- hash: "cd2180be80101c2aa4350b51b7a6f502"
- }
- Frame {
- msec: 4144
- hash: "de471829f8ad3b43bf1b4df9d1d65a4d"
- }
- Frame {
- msec: 4160
- hash: "ed9f2ca797894612600bc4b7fbaecb84"
- }
- Frame {
- msec: 4176
- hash: "59470d71fa4426d0283e86371f2bfc2a"
- }
- Frame {
- msec: 4192
- hash: "9a2f92efb51bcc6293d6a8e82d5314ea"
- }
- Frame {
- msec: 4208
- hash: "7b66e21652a7d0982226e281a48411a9"
- }
- Frame {
- msec: 4224
- hash: "a716c8d2c94433dee719f92f0822c8ec"
- }
- Frame {
- msec: 4240
- hash: "f22a47b846cfee96ebdf39bbce2e6d51"
- }
- Frame {
- msec: 4256
- hash: "5a8932d13d624932a65694fd19ec05cd"
- }
- Frame {
- msec: 4272
- hash: "48e62dd171f5da82b5aa26c765e4042c"
- }
- Frame {
- msec: 4288
- hash: "63d3c47f7dec1236440a05e0a8380900"
- }
- Frame {
- msec: 4304
- hash: "323af110731b7af0c30f8862ff59b833"
- }
- Frame {
- msec: 4320
- hash: "83c029e328e80af83158c37089cf0ece"
- }
- Frame {
- msec: 4336
- hash: "3f9a09ae19be34348bb2552915360cf7"
- }
- Frame {
- msec: 4352
- hash: "df624d70cae1bcefda8d69c0ff055d83"
- }
- Frame {
- msec: 4368
- hash: "d671a3b971468e1d8aa30ab655e020a9"
- }
- Frame {
- msec: 4384
- hash: "74c837b29f7f05b615123f0e608b523f"
- }
- Frame {
- msec: 4400
- hash: "277ef98ea859fb7685fe6cd44a538a7d"
- }
- Frame {
- msec: 4416
- hash: "0a8da7a3f57c3e06e4be5ea1d8a83ae9"
- }
- Frame {
- msec: 4432
- hash: "456be9c208d690c479ba12bf6325dde0"
- }
- Frame {
- msec: 4448
- hash: "10307beea6d99ab0ff5863f8e35555ed"
- }
- Frame {
- msec: 4464
- hash: "170a1d5fe3422cf5223a78015a6a45fd"
- }
- Frame {
- msec: 4480
- hash: "64ecb03aa538e74d0b99c6dec7751401"
- }
- Frame {
- msec: 4496
- hash: "f3a7e74a1839f9366f9eeec4d2b80d1e"
- }
- Frame {
- msec: 4512
- hash: "0f347763f25350ebb62dda1536372b45"
- }
- Frame {
- msec: 4528
- hash: "0af81ee0d76ff8335a0e347dc086ca37"
- }
- Frame {
- msec: 4544
- hash: "061406edcbd2d4930ab89c3fcab63c7f"
- }
- Frame {
- msec: 4560
- hash: "31d65134f340d82dd40f2401bda3fb7e"
- }
- Frame {
- msec: 4576
- hash: "16c16c77c65b36d1e0954d5ead2642be"
- }
- Frame {
- msec: 4592
- hash: "61c16009b65a55bffb63e27727e1615e"
- }
- Frame {
- msec: 4608
- hash: "e1474c2cdd8768ca1ef45bf3bc5234ca"
- }
- Frame {
- msec: 4624
- hash: "89c159ef00d273ecfe61332e1bf7244d"
- }
- Frame {
- msec: 4640
- hash: "f4d0d3bca25e67908b38910f47b4757e"
- }
- Frame {
- msec: 4656
- hash: "0e0c40f8e11a7bd499c80562ac6f8a82"
- }
- Frame {
- msec: 4672
- hash: "4310a4c3037d845f088f21ad608f366a"
- }
- Frame {
- msec: 4688
- hash: "3d518cd0348d6202243364af1dd6ce89"
- }
- Frame {
- msec: 4704
- hash: "41987e6b4248d7944c0dbc6eb3862023"
- }
- Frame {
- msec: 4720
- hash: "3e81338d38723d56f2d6c428271f81c1"
- }
- Frame {
- msec: 4736
- hash: "74af3457583fbaf73f14556aeccc8403"
- }
- Frame {
- msec: 4752
- hash: "efc119983701908a904deb24108c59cb"
- }
- Frame {
- msec: 4768
- hash: "3a77785cfd7755f567619d8e04583f6a"
- }
- Frame {
- msec: 4784
- hash: "fd85d1dd931033973283a408b5e328a8"
- }
- Frame {
- msec: 4800
- image: "animated-smooth.4.png"
- }
- Frame {
- msec: 4816
- hash: "ae12f1f37a746e16b06e6b869c89fac1"
- }
- Frame {
- msec: 4832
- hash: "d2ed2cf3a12e41bac299399cc35abe6a"
- }
- Frame {
- msec: 4848
- hash: "84ef6dda8318b623832f58c46d762e89"
- }
- Frame {
- msec: 4864
- hash: "b699285764f5e8866a9996f4a0dccc69"
- }
- Frame {
- msec: 4880
- hash: "ddd8a006ef048c8d929144aa9fcd7c5a"
- }
- Frame {
- msec: 4896
- hash: "177666cb3bb784c83196886b2c6cf6b6"
- }
- Frame {
- msec: 4912
- hash: "9cd29b4b023a8b92573575fb3c3dda83"
- }
- Frame {
- msec: 4928
- hash: "adc670a9aa0326744cb23e4f5912e6c7"
- }
- Frame {
- msec: 4944
- hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6"
- }
- Frame {
- msec: 4960
- hash: "d7e96278583f83ab636ed68fa130e4d2"
- }
- Frame {
- msec: 4976
- hash: "64b21b89576fdd0083f60a26f57b9c11"
- }
- Frame {
- msec: 4992
- hash: "0d407ee07692d0e5a480a60952807b3c"
- }
- Frame {
- msec: 5008
- hash: "845170815a87565dc4229792032b3357"
- }
- Frame {
- msec: 5024
- hash: "8b8120cfc14de03e048632fdea61be21"
- }
- Frame {
- msec: 5040
- hash: "b0070117f1c24a4da87434725d4bb989"
- }
- Frame {
- msec: 5056
- hash: "0239d697642ca1d1b1d1daa3ea048e1e"
- }
- Frame {
- msec: 5072
- hash: "3df54504f8891306fa8f1e9e2075a5e2"
- }
- Frame {
- msec: 5088
- hash: "853429387cc639496c7338244de7e1b7"
- }
- Frame {
- msec: 5104
- hash: "bd70500fbdfe5aa2fe4362a97a1dee2d"
- }
- Frame {
- msec: 5120
- hash: "b375e723b2396b13b8f55cfc0c81c3c3"
- }
- Frame {
- msec: 5136
- hash: "53f05993ba3b426949badd2e4cd66d84"
- }
- Frame {
- msec: 5152
- hash: "23291a0239c69ea07db959e709b1ff5f"
- }
- Frame {
- msec: 5168
- hash: "85ef33fcb3f91e4fc20391bf94455984"
- }
- Frame {
- msec: 5184
- hash: "d6615fc345831a3cc5b9a7196284b632"
- }
- Frame {
- msec: 5200
- hash: "07acba64dc608439a8a54fcb080379e8"
- }
- Frame {
- msec: 5216
- hash: "2a1fcfb753ca237b518da26e67c928e5"
- }
- Frame {
- msec: 5232
- hash: "1f964c6c9bebdc9945dc69a6095400f7"
- }
- Frame {
- msec: 5248
- hash: "bd045f4532d78bba0ef1b64118fd9f24"
- }
- Frame {
- msec: 5264
- hash: "2084ccc60ddd493399c128717816d33b"
- }
- Frame {
- msec: 5280
- hash: "0640fcb0b24d3ba4ab8695f78271a438"
- }
- Frame {
- msec: 5296
- hash: "7c9a98e2101c33e17c1bd7e6c2d921ff"
- }
- Frame {
- msec: 5312
- hash: "fce2648975106bc5c0ca9a4530f7f748"
- }
- Frame {
- msec: 5328
- hash: "39cc17ee2e889f17dd07179fda99e431"
- }
- Frame {
- msec: 5344
- hash: "39c46d85d20f7ef3eca1d09c7eb6a068"
- }
- Frame {
- msec: 5360
- hash: "d65d50fbb920e683b041a1c72238225b"
- }
- Frame {
- msec: 5376
- hash: "45d891d804609ebbe1d5ac3f826d0c17"
- }
- Frame {
- msec: 5392
- hash: "05cbce0eaa80b4610a9067af8c40f819"
- }
- Frame {
- msec: 5408
- hash: "00ab7798bcd77a99886dff0414f35382"
- }
- Frame {
- msec: 5424
- hash: "5cc90d798786c270ddd2616512f4459f"
- }
- Frame {
- msec: 5440
- hash: "e5df07ea21e8e415c3ec82560f2d0f34"
- }
- Frame {
- msec: 5456
- hash: "ddf1f5c0b97fe4821719ec5bf4bd091b"
- }
- Frame {
- msec: 5472
- hash: "c61d2aa7f934fb5a9f9f7883e063b51c"
- }
- Frame {
- msec: 5488
- hash: "29ddde3300d0520a4c01b5536d8b9e7a"
- }
- Frame {
- msec: 5504
- hash: "2fede2f5d871654f3f8a6e9d890adeac"
- }
- Frame {
- msec: 5520
- hash: "deed4c06c9b713834490832b88e7acaf"
- }
- Frame {
- msec: 5536
- hash: "c2edb016cfdd47c192d1c48281ee76ed"
- }
- Frame {
- msec: 5552
- hash: "a261be47ae89e6b53e6bc1c1197154ae"
- }
- Frame {
- msec: 5568
- hash: "e860e97ebd73b7d1d5d5d90458b34bfe"
- }
- Frame {
- msec: 5584
- hash: "a087b532ecb2f28e4ee60819228c2522"
- }
- Frame {
- msec: 5600
- hash: "64df51b4c1bf744b2aae1c6d908c2cc3"
- }
- Frame {
- msec: 5616
- hash: "880640372bf584955627f6835f24be13"
- }
- Frame {
- msec: 5632
- hash: "d1110817827c318ceb0c112e8c2bfc1d"
- }
- Frame {
- msec: 5648
- hash: "705d9c8de05c859a42769f73761c6a63"
- }
- Frame {
- msec: 5664
- hash: "3bae40654ec551d69e7c8c72f631c7a5"
- }
- Frame {
- msec: 5680
- hash: "774740a393f3e9b8f12b81cce8da8280"
- }
- Frame {
- msec: 5696
- hash: "64cd225202ed6c91b02c368a9160a656"
- }
- Frame {
- msec: 5712
- hash: "2b7eb8a9fe26b032be8b4b9c00995912"
- }
- Frame {
- msec: 5728
- hash: "47e920e3884ccf2f0f49e78070af6929"
- }
- Frame {
- msec: 5744
- hash: "fe899138116774df4c4441687e3019c5"
- }
- Frame {
- msec: 5760
- image: "animated-smooth.5.png"
- }
- Frame {
- msec: 5776
- hash: "5736362b42bc2d801e02edabb983663a"
- }
- Frame {
- msec: 5792
- hash: "c3ea530de646612f9203c5800cad884b"
- }
- Frame {
- msec: 5808
- hash: "48952ffa5e300778eafa768b9fe7df0c"
- }
- Frame {
- msec: 5824
- hash: "fe04cae65aeec18697eca4f3f83a40e9"
- }
- Frame {
- msec: 5840
- hash: "382d454f2366c1fb4ca472faa3bfa5e9"
- }
- Frame {
- msec: 5856
- hash: "89022a8e2feb3dcb845de69aafc333ad"
- }
- Frame {
- msec: 5872
- hash: "25506557c853a0020e98cf3992956989"
- }
- Frame {
- msec: 5888
- hash: "9a64706c52c9e962816953e32950b8ba"
- }
- Frame {
- msec: 5904
- hash: "3cbfded47413172ada64095e65c55e8a"
- }
- Frame {
- msec: 5920
- hash: "3b7b83e97d17440b42e6ef4b962076d8"
- }
- Frame {
- msec: 5936
- hash: "c5e399e29b988148913e62ee208b3326"
- }
- Frame {
- msec: 5952
- hash: "b980703c1d0018937e83a8ba8862469e"
- }
- Frame {
- msec: 5968
- hash: "05312f9529c94d3331ace7d73c544284"
- }
- Frame {
- msec: 5984
- hash: "a94de4e90a8f8eb4ec33fe902afd226c"
- }
- Frame {
- msec: 6000
- hash: "ee297a2d68c9e58157d9bf189d353713"
- }
- Frame {
- msec: 6016
- hash: "00f3c9b8b37cb104cf2a7701639bc61f"
- }
- Frame {
- msec: 6032
- hash: "ee297a2d68c9e58157d9bf189d353713"
- }
- Frame {
- msec: 6048
- hash: "a94de4e90a8f8eb4ec33fe902afd226c"
- }
- Frame {
- msec: 6064
- hash: "05312f9529c94d3331ace7d73c544284"
- }
- Frame {
- msec: 6080
- hash: "b980703c1d0018937e83a8ba8862469e"
- }
- Frame {
- msec: 6096
- hash: "c5e399e29b988148913e62ee208b3326"
- }
- Frame {
- msec: 6112
- hash: "3b7b83e97d17440b42e6ef4b962076d8"
- }
- Frame {
- msec: 6128
- hash: "3cbfded47413172ada64095e65c55e8a"
- }
- Frame {
- msec: 6144
- hash: "9a64706c52c9e962816953e32950b8ba"
- }
- Frame {
- msec: 6160
- hash: "25506557c853a0020e98cf3992956989"
- }
- Frame {
- msec: 6176
- hash: "89022a8e2feb3dcb845de69aafc333ad"
- }
- Frame {
- msec: 6192
- hash: "382d454f2366c1fb4ca472faa3bfa5e9"
- }
- Frame {
- msec: 6208
- hash: "fe04cae65aeec18697eca4f3f83a40e9"
- }
- Frame {
- msec: 6224
- hash: "48952ffa5e300778eafa768b9fe7df0c"
- }
- Frame {
- msec: 6240
- hash: "c3ea530de646612f9203c5800cad884b"
- }
- Frame {
- msec: 6256
- hash: "5736362b42bc2d801e02edabb983663a"
- }
- Frame {
- msec: 6272
- hash: "5d9ee853f083d514fbe51d6953d8e000"
- }
- Frame {
- msec: 6288
- hash: "fe899138116774df4c4441687e3019c5"
- }
- Frame {
- msec: 6304
- hash: "47e920e3884ccf2f0f49e78070af6929"
- }
- Frame {
- msec: 6320
- hash: "2b7eb8a9fe26b032be8b4b9c00995912"
- }
- Frame {
- msec: 6336
- hash: "64cd225202ed6c91b02c368a9160a656"
- }
- Frame {
- msec: 6352
- hash: "774740a393f3e9b8f12b81cce8da8280"
- }
- Frame {
- msec: 6368
- hash: "3bae40654ec551d69e7c8c72f631c7a5"
- }
- Frame {
- msec: 6384
- hash: "705d9c8de05c859a42769f73761c6a63"
- }
- Frame {
- msec: 6400
- hash: "d1110817827c318ceb0c112e8c2bfc1d"
- }
- Frame {
- msec: 6416
- hash: "880640372bf584955627f6835f24be13"
- }
- Frame {
- msec: 6432
- hash: "64df51b4c1bf744b2aae1c6d908c2cc3"
- }
- Frame {
- msec: 6448
- hash: "a087b532ecb2f28e4ee60819228c2522"
- }
- Frame {
- msec: 6464
- hash: "e860e97ebd73b7d1d5d5d90458b34bfe"
- }
- Frame {
- msec: 6480
- hash: "a261be47ae89e6b53e6bc1c1197154ae"
- }
- Frame {
- msec: 6496
- hash: "c2edb016cfdd47c192d1c48281ee76ed"
- }
- Frame {
- msec: 6512
- hash: "deed4c06c9b713834490832b88e7acaf"
- }
- Frame {
- msec: 6528
- hash: "2fede2f5d871654f3f8a6e9d890adeac"
- }
- Frame {
- msec: 6544
- hash: "29ddde3300d0520a4c01b5536d8b9e7a"
- }
- Frame {
- msec: 6560
- hash: "c61d2aa7f934fb5a9f9f7883e063b51c"
- }
- Frame {
- msec: 6576
- hash: "ddf1f5c0b97fe4821719ec5bf4bd091b"
- }
- Frame {
- msec: 6592
- hash: "e5df07ea21e8e415c3ec82560f2d0f34"
- }
- Frame {
- msec: 6608
- hash: "5cc90d798786c270ddd2616512f4459f"
- }
- Frame {
- msec: 6624
- hash: "00ab7798bcd77a99886dff0414f35382"
- }
- Frame {
- msec: 6640
- hash: "05cbce0eaa80b4610a9067af8c40f819"
- }
- Frame {
- msec: 6656
- hash: "45d891d804609ebbe1d5ac3f826d0c17"
- }
- Frame {
- msec: 6672
- hash: "d65d50fbb920e683b041a1c72238225b"
- }
- Frame {
- msec: 6688
- hash: "39c46d85d20f7ef3eca1d09c7eb6a068"
- }
- Frame {
- msec: 6704
- hash: "39cc17ee2e889f17dd07179fda99e431"
- }
- Frame {
- msec: 6720
- image: "animated-smooth.6.png"
- }
- Frame {
- msec: 6736
- hash: "7c9a98e2101c33e17c1bd7e6c2d921ff"
- }
- Frame {
- msec: 6752
- hash: "0640fcb0b24d3ba4ab8695f78271a438"
- }
- Frame {
- msec: 6768
- hash: "2084ccc60ddd493399c128717816d33b"
- }
- Frame {
- msec: 6784
- hash: "bd045f4532d78bba0ef1b64118fd9f24"
- }
- Frame {
- msec: 6800
- hash: "1f964c6c9bebdc9945dc69a6095400f7"
- }
- Frame {
- msec: 6816
- hash: "2a1fcfb753ca237b518da26e67c928e5"
- }
- Frame {
- msec: 6832
- hash: "07acba64dc608439a8a54fcb080379e8"
- }
- Frame {
- msec: 6848
- hash: "d6615fc345831a3cc5b9a7196284b632"
- }
- Frame {
- msec: 6864
- hash: "85ef33fcb3f91e4fc20391bf94455984"
- }
- Frame {
- msec: 6880
- hash: "23291a0239c69ea07db959e709b1ff5f"
- }
- Frame {
- msec: 6896
- hash: "53f05993ba3b426949badd2e4cd66d84"
- }
- Frame {
- msec: 6912
- hash: "b375e723b2396b13b8f55cfc0c81c3c3"
- }
- Frame {
- msec: 6928
- hash: "bd70500fbdfe5aa2fe4362a97a1dee2d"
- }
- Frame {
- msec: 6944
- hash: "853429387cc639496c7338244de7e1b7"
- }
- Frame {
- msec: 6960
- hash: "3df54504f8891306fa8f1e9e2075a5e2"
- }
- Frame {
- msec: 6976
- hash: "0239d697642ca1d1b1d1daa3ea048e1e"
- }
- Frame {
- msec: 6992
- hash: "b0070117f1c24a4da87434725d4bb989"
- }
- Frame {
- msec: 7008
- hash: "8b8120cfc14de03e048632fdea61be21"
- }
- Frame {
- msec: 7024
- hash: "845170815a87565dc4229792032b3357"
- }
- Frame {
- msec: 7040
- hash: "0d407ee07692d0e5a480a60952807b3c"
- }
- Frame {
- msec: 7056
- hash: "64b21b89576fdd0083f60a26f57b9c11"
- }
- Frame {
- msec: 7072
- hash: "d7e96278583f83ab636ed68fa130e4d2"
- }
- Frame {
- msec: 7088
- hash: "48db9a5e6aad9a9563a3cd35fb7fa9b6"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 7104
- hash: "adc670a9aa0326744cb23e4f5912e6c7"
- }
- Frame {
- msec: 7120
- hash: "9cd29b4b023a8b92573575fb3c3dda83"
- }
- Frame {
- msec: 7136
- hash: "177666cb3bb784c83196886b2c6cf6b6"
- }
- Frame {
- msec: 7152
- hash: "ddd8a006ef048c8d929144aa9fcd7c5a"
- }
- Frame {
- msec: 7168
- hash: "b699285764f5e8866a9996f4a0dccc69"
- }
- Frame {
- msec: 7184
- hash: "84ef6dda8318b623832f58c46d762e89"
- }
- Frame {
- msec: 7200
- hash: "d2ed2cf3a12e41bac299399cc35abe6a"
- }
- Frame {
- msec: 7216
- hash: "ae12f1f37a746e16b06e6b869c89fac1"
- }
- Frame {
- msec: 7232
- hash: "5d3e85acabe5e5ff802eb7731676274f"
+ hash: "a2467396d7318a93d35aa314896d3d05"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.png
index 99228f9908..b7d06e48d7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.png
index a2dcd00aaa..a0081a95d7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.2.png
deleted file mode 100644
index 8a8002067c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.3.png
deleted file mode 100644
index 02b57ef241..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.4.png
deleted file mode 100644
index df0f6cc57c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.5.png
deleted file mode 100644
index 0add64df61..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.6.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.6.png
deleted file mode 100644
index 08862076e2..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.7.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.7.png
deleted file mode 100644
index bc1a7b0675..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.qml b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.qml
index 630a6d2ec7..87be9f069e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/animated.qml
@@ -6,2086 +6,338 @@ VisualTest {
}
Frame {
msec: 16
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ image: "animated.0.png"
}
Frame {
msec: 32
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "a2467396d7318a93d35aa314896d3d05"
}
Frame {
msec: 48
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "a2467396d7318a93d35aa314896d3d05"
}
Frame {
msec: 64
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "ed19378ea8f51f5ecbd4c89ee5c905c2"
}
Frame {
msec: 80
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "3dc69d5d1b6c524a74e7cec619df5ee3"
}
Frame {
msec: 96
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "ab8d9aa7290be2134a6ef10ca1e1bfe7"
}
Frame {
msec: 112
- hash: "aec13bcab337e55832b0a02fb5c6b526"
+ hash: "8091f4ff6f68e178b7a2a76ba2b38df3"
}
Frame {
msec: 128
- hash: "4c60d345821f515c7811f3b69eb94607"
+ hash: "a94ad01eb63609b5e4a9e6570e1dc25c"
}
Frame {
msec: 144
- hash: "aacf9ae3c23d174a1c1cda493600e355"
+ hash: "21692407cdfeeb20ff81d5d8a8ba3b7e"
}
Frame {
msec: 160
- hash: "228d5312c261d1a5455faf69ec2f2520"
+ hash: "b1d5e860ea311dce4a46fd6d46f9ed58"
}
Frame {
msec: 176
- hash: "465ec993948f7b75aeb5759976f4620d"
+ hash: "a2ef453b88ee01c70a4312ab6dd26685"
}
Frame {
msec: 192
- hash: "755cfccc38bababc468fe6e1076804bb"
+ hash: "6ce1f7da3994a51ad06afa0afb789752"
}
Frame {
msec: 208
- hash: "b63e4d1686057828fd8781f1c33585f5"
+ hash: "dccf9c55dfe7ae652b0e659893465158"
}
Frame {
msec: 224
- hash: "c5b3dede34b0d1d78135e39c41d117c6"
+ hash: "18b00b462711676fdf61ef1819f9f73a"
}
Frame {
msec: 240
- hash: "4d45d70f997c2c67166905c97a900d2e"
+ hash: "981011b01c3dbde098b1a3d0de4026cd"
}
Frame {
msec: 256
- hash: "7b4d12e5a877507e7454aa1b8ed87c2d"
+ hash: "86389b057e84c4dd4cf75d4e33d5e282"
}
Frame {
msec: 272
- hash: "08b9be66e23c7b6f6f629c7470394601"
+ hash: "6802146ad90b2921856c103246f4bca9"
}
Frame {
msec: 288
- hash: "3dac1d9632378bd18c1c938a4868e3fb"
+ hash: "7ab7d71199e883192e28fc150646128c"
}
Frame {
msec: 304
- hash: "406224b535b4425d2708df0083acdc8e"
+ hash: "3d2298cc655318029a2467813f8d75f4"
}
Frame {
msec: 320
- hash: "482bb92d4f0ad5d7c7e379b9e1ad326e"
+ hash: "74a1ed7250f85e7ed4d811b5b697ecb3"
}
Frame {
msec: 336
- hash: "8419f1d75b14130730bcfec4e3a9b058"
+ hash: "2cc6d5e8f4ebde059ffe31fffb2b359d"
}
Frame {
msec: 352
- hash: "a85ee8be6a47bbd1b14137803ce606ec"
+ hash: "b08aec6d9f82e0d530d57f592c25e91a"
}
Frame {
msec: 368
- hash: "c1936628aec13e08e9581dcd2c6d5717"
+ hash: "9f4272d24685a9fbe5c48186932cac07"
}
Frame {
msec: 384
- hash: "75c9bf83ca3fe24612c245698c089430"
+ hash: "4cde877841640aa89949c1369c3b6fd0"
}
Frame {
msec: 400
- hash: "8c66a33d26eec2a1133f4362710a5fab"
+ hash: "bdbbd0b6a309b63d152b7f9b34b51d80"
}
Frame {
msec: 416
- hash: "2266df495ab5265e7514a506d3bf5bc6"
+ hash: "531708677915c1e094ece6f1acac6d1f"
}
Frame {
msec: 432
- hash: "01947e631c3db43f7c5b4427229bc0c8"
+ hash: "7213628b1f66f1dc47fa63eb2aad2d81"
}
Frame {
msec: 448
- hash: "3f62f032239d412d3637198f5e3e83d6"
+ hash: "0ff58a47d524fae956431efc21364ed2"
}
Frame {
msec: 464
- hash: "06d8d8a1a41893d4e27725948a75caf4"
+ hash: "1e940cc44e00f05bad28bcf934b40b1c"
}
Frame {
msec: 480
- hash: "6b48bfd0c7993f746d6301c2a0f61d23"
+ hash: "0f76be39637e8b6ac15c40ea95890189"
}
Frame {
msec: 496
- hash: "ac8f096e8c7cc23bfb01de69cf3e266e"
+ hash: "e23cf00dbd05677815e7e38f6f8e3a4a"
}
Frame {
msec: 512
- hash: "dd4c9e63001bc6e0e63ea4db2d85301f"
+ hash: "3d7e81620d169800f6a251fa3875f23d"
}
Frame {
msec: 528
- hash: "2a7bed775824968e318c3d40fbc5b1c2"
+ hash: "9e04076e283a3a71407488e94d84861f"
}
Frame {
msec: 544
- hash: "3152e5f29015ece423fbdd11a2b382b8"
+ hash: "f4fc58740d6b5cf392e117164d859c0b"
}
Frame {
msec: 560
- hash: "f1a7a4a67a21f5025294af4bea3f8998"
+ hash: "8f041ba2a82618c1545aac6f50c95384"
}
Frame {
msec: 576
- hash: "a40014d842471784e1222eb205395f6f"
+ hash: "759368622bc25c7ae1cb8d2c44affe6a"
}
Frame {
msec: 592
- hash: "18c2f321a149e38b258ac264d40c2376"
+ hash: "90314671aab8165c7c1b35dcf5aaa6b9"
}
Frame {
msec: 608
- hash: "4ae120bb6dc2bd5ff81cc99ae03c191e"
+ hash: "ecd1d2fe087a36fc58290c0c249a7ea0"
}
Frame {
msec: 624
- hash: "19d05a96f3ae7388e854bbf1075b51c1"
+ hash: "ecd1d2fe087a36fc58290c0c249a7ea0"
}
Frame {
msec: 640
- hash: "e418b5f54705515dce5ce3b4cbc45d19"
+ hash: "90314671aab8165c7c1b35dcf5aaa6b9"
}
Frame {
msec: 656
- hash: "554e1d360463871e7c05cfe6f8abe1dd"
+ hash: "759368622bc25c7ae1cb8d2c44affe6a"
}
Frame {
msec: 672
- hash: "153237f8cf37e29ad2f32f7a8a6aecdb"
+ hash: "8f041ba2a82618c1545aac6f50c95384"
}
Frame {
msec: 688
- hash: "60f158382f75103c78e2b9b408e0fe65"
+ hash: "f4fc58740d6b5cf392e117164d859c0b"
}
Frame {
msec: 704
- hash: "4e60300cfab8634e04dcd1b556251d31"
+ hash: "9e04076e283a3a71407488e94d84861f"
}
Frame {
msec: 720
- hash: "6a521f952e05d91b86ad78fd6f5de4f9"
+ hash: "3d7e81620d169800f6a251fa3875f23d"
}
Frame {
msec: 736
- hash: "b74521d6ac531414aeeca0fb28379d11"
+ hash: "e23cf00dbd05677815e7e38f6f8e3a4a"
}
Frame {
msec: 752
- hash: "a6f17da2dd581bdc249ff62f833dc025"
+ hash: "0f76be39637e8b6ac15c40ea95890189"
}
Frame {
msec: 768
- hash: "93d9f0a7c387cbe653a9a088f8f4ef2b"
+ hash: "1e940cc44e00f05bad28bcf934b40b1c"
}
Frame {
msec: 784
- hash: "1ea07ee309ce2c52cbc36370b75a872f"
+ hash: "0ff58a47d524fae956431efc21364ed2"
}
Frame {
msec: 800
- hash: "593a8a45c3a0cd7ce1cb6bd1913136ba"
+ hash: "7213628b1f66f1dc47fa63eb2aad2d81"
}
Frame {
msec: 816
- hash: "c7eb7837dce71c914186326216214eeb"
+ hash: "531708677915c1e094ece6f1acac6d1f"
}
Frame {
msec: 832
- hash: "0cba07ca38c7f0483244832a42d9ac53"
+ hash: "bdbbd0b6a309b63d152b7f9b34b51d80"
}
Frame {
msec: 848
- hash: "93cf31eabb454ec536c638a506be0648"
+ hash: "4cde877841640aa89949c1369c3b6fd0"
}
Frame {
msec: 864
- hash: "e8a61d3858244127cb2b2812f04f5ce9"
+ hash: "9f4272d24685a9fbe5c48186932cac07"
}
Frame {
msec: 880
- hash: "1ac8c393f084aa1894c26610b7f40ea6"
+ hash: "b08aec6d9f82e0d530d57f592c25e91a"
}
Frame {
msec: 896
- hash: "8861bf848da5c96b35addff736b01520"
+ hash: "2cc6d5e8f4ebde059ffe31fffb2b359d"
}
Frame {
msec: 912
- hash: "f04e84ad3579d6334077abe73101d206"
+ hash: "74a1ed7250f85e7ed4d811b5b697ecb3"
}
Frame {
msec: 928
- hash: "eac4600372f0fdfadee88896ac915a48"
+ hash: "3d2298cc655318029a2467813f8d75f4"
}
Frame {
msec: 944
- hash: "ff0928dfd16b2da9811a172c19817a97"
+ hash: "7ab7d71199e883192e28fc150646128c"
}
Frame {
msec: 960
- image: "animated.0.png"
+ hash: "6802146ad90b2921856c103246f4bca9"
}
Frame {
msec: 976
- hash: "7383209c80b403b93da3264eadbc047f"
+ image: "animated.1.png"
}
Frame {
msec: 992
- hash: "86360bd58bba5fdd901c105ddb2e3ade"
+ hash: "981011b01c3dbde098b1a3d0de4026cd"
}
Frame {
msec: 1008
- hash: "bc747167dfb3388ac63e9e68a86b9a03"
+ hash: "18b00b462711676fdf61ef1819f9f73a"
}
Frame {
msec: 1024
- hash: "bccb4b8a494bd45bd70c2524a02a9dc3"
+ hash: "dccf9c55dfe7ae652b0e659893465158"
}
Frame {
msec: 1040
- hash: "ae48da4a66f93c806725ce749700aac8"
+ hash: "6ce1f7da3994a51ad06afa0afb789752"
}
Frame {
msec: 1056
- hash: "c763f56728e17fc119539a4d45dfccc3"
+ hash: "a2ef453b88ee01c70a4312ab6dd26685"
}
Frame {
msec: 1072
- hash: "956429472da133324c970774f77784f5"
+ hash: "b1d5e860ea311dce4a46fd6d46f9ed58"
}
Frame {
msec: 1088
- hash: "a4ddb4956d71fd642d54757938100cf3"
+ hash: "21692407cdfeeb20ff81d5d8a8ba3b7e"
}
Frame {
msec: 1104
- hash: "ec0aea8dc8c269d1f0aee5817347ac55"
+ hash: "a94ad01eb63609b5e4a9e6570e1dc25c"
}
Frame {
msec: 1120
- hash: "68dae343cf324391ec6721cea14575f7"
+ hash: "8091f4ff6f68e178b7a2a76ba2b38df3"
}
Frame {
msec: 1136
- hash: "81d2fc6727dc7449d1a87b4abea9b704"
+ hash: "ab8d9aa7290be2134a6ef10ca1e1bfe7"
}
Frame {
msec: 1152
- hash: "c3a1f12febc979150028737722d6d045"
+ hash: "3dc69d5d1b6c524a74e7cec619df5ee3"
}
Frame {
msec: 1168
- hash: "80ebac4d923f67fb8dba3d133ce657ba"
+ hash: "ed19378ea8f51f5ecbd4c89ee5c905c2"
}
Frame {
msec: 1184
- hash: "7c22fc3e30377cc14326833bdd23ddd8"
+ hash: "a2467396d7318a93d35aa314896d3d05"
}
Frame {
msec: 1200
- hash: "5359f5e45e5467c62c2d9521c8199c48"
+ hash: "a2467396d7318a93d35aa314896d3d05"
}
Frame {
msec: 1216
- hash: "30f84a7f67b13a945ba6d5935ea92da5"
+ hash: "a2467396d7318a93d35aa314896d3d05"
}
Frame {
msec: 1232
- hash: "08f55088cdce741c67539f73291e53ab"
+ hash: "a2467396d7318a93d35aa314896d3d05"
}
Frame {
msec: 1248
- hash: "93128906d054e44bfd126fc22bdc3102"
+ hash: "a2467396d7318a93d35aa314896d3d05"
}
Frame {
msec: 1264
- hash: "97f7a2175dcf9ac2581a92d614d72f88"
+ hash: "ed19378ea8f51f5ecbd4c89ee5c905c2"
}
Frame {
msec: 1280
- hash: "587cb6e05048579088e88e0180e3ad48"
+ hash: "3dc69d5d1b6c524a74e7cec619df5ee3"
}
Frame {
msec: 1296
- hash: "985868869ef2c332da379460a2f3a71b"
+ hash: "ab8d9aa7290be2134a6ef10ca1e1bfe7"
}
Frame {
msec: 1312
- hash: "94084ca4998fcda408f6987f52c34185"
+ hash: "8091f4ff6f68e178b7a2a76ba2b38df3"
}
Frame {
msec: 1328
- hash: "e91bb914c1eb63cd4269b30a220a128a"
+ hash: "a94ad01eb63609b5e4a9e6570e1dc25c"
}
Frame {
msec: 1344
- hash: "e880d93963c80e4fab5173554c9600fc"
- }
- Frame {
- msec: 1360
- hash: "84c94704c16e246df1048f958cc8cefb"
- }
- Frame {
- msec: 1376
- hash: "4f1eace868a6688e5b24ce48a1f0fd18"
- }
- Frame {
- msec: 1392
- hash: "99de44f74f8e1f79652ab46afb4bb59e"
- }
- Frame {
- msec: 1408
- hash: "44072400ca3f0237d1aebae28a94becc"
- }
- Frame {
- msec: 1424
- hash: "a1bd4e995365e79389dba80f9e3b7af8"
- }
- Frame {
- msec: 1440
- hash: "95d776c84fe155617fc4ee51bdb45b7e"
- }
- Frame {
- msec: 1456
- hash: "3b95eb8cbfc831e1ebee2e456b026ab4"
- }
- Frame {
- msec: 1472
- hash: "826c7741ba0c51de407bb799e8f360b5"
- }
- Frame {
- msec: 1488
- hash: "11673a112566a64aca3c7010b9cc9c4d"
- }
- Frame {
- msec: 1504
- hash: "e1e6c7a7f51bcccd749710dbbf9e97f6"
- }
- Frame {
- msec: 1520
- hash: "5b027815ea3c1ea54e1a02c798c468db"
- }
- Frame {
- msec: 1536
- hash: "65c514c9e926affe1da0b4826d2754c7"
- }
- Frame {
- msec: 1552
- hash: "73c5f23f51797a33f4d2898738e6356e"
- }
- Frame {
- msec: 1568
- hash: "acd9a2e76b22ab0ff809fd3ec3a018ec"
- }
- Frame {
- msec: 1584
- hash: "fb17df681d99d5de05f6329bba697ea5"
- }
- Frame {
- msec: 1600
- hash: "1bf7a98884b506b38326f59f85a53f41"
- }
- Frame {
- msec: 1616
- hash: "0b1a741975e3d9ef8f5e78f371c89441"
- }
- Frame {
- msec: 1632
- hash: "a6937ee49648ed0cb409063bf1da3b87"
- }
- Frame {
- msec: 1648
- hash: "a790f0e884ab85f7802dd094e4ef550f"
- }
- Frame {
- msec: 1664
- hash: "3b644aac161f0a75bfb64f5075373190"
- }
- Frame {
- msec: 1680
- hash: "b12faa76c07adc21634cd8f8cb8436ae"
- }
- Frame {
- msec: 1696
- hash: "3fb20f9dbd40b4729235e13af9643afc"
- }
- Frame {
- msec: 1712
- hash: "f57727419bb51fb1e589b960ddeb20ae"
- }
- Frame {
- msec: 1728
- hash: "7b78cba247f2c209ed81e003ca25d0a5"
- }
- Frame {
- msec: 1744
- hash: "8172e076b05d95248d89e815fde820ef"
- }
- Frame {
- msec: 1760
- hash: "a88d6fc324ef48aa52c642a1662ec679"
- }
- Frame {
- msec: 1776
- hash: "74c1e71378b502bc1b732a55806a10f1"
- }
- Frame {
- msec: 1792
- hash: "6eae517ad33f0609c31ef1f8f80ba899"
- }
- Frame {
- msec: 1808
- hash: "a67e9a0f55512fb1c55f13c6b483923b"
- }
- Frame {
- msec: 1824
- hash: "4887cd34d9926a361f3ca2e75be53ea6"
- }
- Frame {
- msec: 1840
- hash: "13ca95adab171d9fad9ee8b75d0226bc"
- }
- Frame {
- msec: 1856
- hash: "affab9fb48c889a2680eb81458d400f9"
- }
- Frame {
- msec: 1872
- hash: "7aa0cbf73f7999be7cde4ec739efbc33"
- }
- Frame {
- msec: 1888
- hash: "36c054064c9a76f4072492e55c70fb6c"
- }
- Frame {
- msec: 1904
- hash: "d1ed4916cb1ecff60277d74369ff311b"
- }
- Frame {
- msec: 1920
- image: "animated.1.png"
- }
- Frame {
- msec: 1936
- hash: "29245946cbd811fe6bf6b2b41cc13002"
- }
- Frame {
- msec: 1952
- hash: "8a9dd7a2d10771633e6896f3f4a722ae"
- }
- Frame {
- msec: 1968
- hash: "058c918e83bfdd665cd836566b53959b"
- }
- Frame {
- msec: 1984
- hash: "fdf3b7a0391119e2fe77be8d6a17481d"
- }
- Frame {
- msec: 2000
- hash: "ed5d80c33dbf72624385b1cf43784626"
- }
- Frame {
- msec: 2016
- hash: "911591db1519ba264847f09868e38e0e"
- }
- Frame {
- msec: 2032
- hash: "ed5d80c33dbf72624385b1cf43784626"
- }
- Frame {
- msec: 2048
- hash: "fdf3b7a0391119e2fe77be8d6a17481d"
- }
- Frame {
- msec: 2064
- hash: "058c918e83bfdd665cd836566b53959b"
- }
- Frame {
- msec: 2080
- hash: "8a9dd7a2d10771633e6896f3f4a722ae"
- }
- Frame {
- msec: 2096
- hash: "29245946cbd811fe6bf6b2b41cc13002"
- }
- Frame {
- msec: 2112
- hash: "63ebaa4869728f5e2891d068e4b0091c"
- }
- Frame {
- msec: 2128
- hash: "d1ed4916cb1ecff60277d74369ff311b"
- }
- Frame {
- msec: 2144
- hash: "36c054064c9a76f4072492e55c70fb6c"
- }
- Frame {
- msec: 2160
- hash: "7aa0cbf73f7999be7cde4ec739efbc33"
- }
- Frame {
- msec: 2176
- hash: "affab9fb48c889a2680eb81458d400f9"
- }
- Frame {
- msec: 2192
- hash: "13ca95adab171d9fad9ee8b75d0226bc"
- }
- Frame {
- msec: 2208
- hash: "4887cd34d9926a361f3ca2e75be53ea6"
- }
- Frame {
- msec: 2224
- hash: "a67e9a0f55512fb1c55f13c6b483923b"
- }
- Frame {
- msec: 2240
- hash: "6eae517ad33f0609c31ef1f8f80ba899"
- }
- Frame {
- msec: 2256
- hash: "74c1e71378b502bc1b732a55806a10f1"
- }
- Frame {
- msec: 2272
- hash: "a88d6fc324ef48aa52c642a1662ec679"
- }
- Frame {
- msec: 2288
- hash: "8172e076b05d95248d89e815fde820ef"
- }
- Frame {
- msec: 2304
- hash: "7b78cba247f2c209ed81e003ca25d0a5"
- }
- Frame {
- msec: 2320
- hash: "f57727419bb51fb1e589b960ddeb20ae"
- }
- Frame {
- msec: 2336
- hash: "3fb20f9dbd40b4729235e13af9643afc"
- }
- Frame {
- msec: 2352
- hash: "b12faa76c07adc21634cd8f8cb8436ae"
- }
- Frame {
- msec: 2368
- hash: "3b644aac161f0a75bfb64f5075373190"
- }
- Frame {
- msec: 2384
- hash: "a790f0e884ab85f7802dd094e4ef550f"
- }
- Frame {
- msec: 2400
- hash: "a6937ee49648ed0cb409063bf1da3b87"
- }
- Frame {
- msec: 2416
- hash: "0b1a741975e3d9ef8f5e78f371c89441"
- }
- Frame {
- msec: 2432
- hash: "1bf7a98884b506b38326f59f85a53f41"
- }
- Frame {
- msec: 2448
- hash: "fb17df681d99d5de05f6329bba697ea5"
- }
- Frame {
- msec: 2464
- hash: "acd9a2e76b22ab0ff809fd3ec3a018ec"
- }
- Frame {
- msec: 2480
- hash: "73c5f23f51797a33f4d2898738e6356e"
- }
- Frame {
- msec: 2496
- hash: "65c514c9e926affe1da0b4826d2754c7"
- }
- Frame {
- msec: 2512
- hash: "5b027815ea3c1ea54e1a02c798c468db"
- }
- Frame {
- msec: 2528
- hash: "e1e6c7a7f51bcccd749710dbbf9e97f6"
- }
- Frame {
- msec: 2544
- hash: "11673a112566a64aca3c7010b9cc9c4d"
- }
- Frame {
- msec: 2560
- hash: "826c7741ba0c51de407bb799e8f360b5"
- }
- Frame {
- msec: 2576
- hash: "3b95eb8cbfc831e1ebee2e456b026ab4"
- }
- Frame {
- msec: 2592
- hash: "95d776c84fe155617fc4ee51bdb45b7e"
- }
- Frame {
- msec: 2608
- hash: "a1bd4e995365e79389dba80f9e3b7af8"
- }
- Frame {
- msec: 2624
- hash: "44072400ca3f0237d1aebae28a94becc"
- }
- Frame {
- msec: 2640
- hash: "99de44f74f8e1f79652ab46afb4bb59e"
- }
- Frame {
- msec: 2656
- hash: "4f1eace868a6688e5b24ce48a1f0fd18"
- }
- Frame {
- msec: 2672
- hash: "84c94704c16e246df1048f958cc8cefb"
- }
- Frame {
- msec: 2688
- hash: "e880d93963c80e4fab5173554c9600fc"
- }
- Frame {
- msec: 2704
- hash: "e91bb914c1eb63cd4269b30a220a128a"
- }
- Frame {
- msec: 2720
- hash: "94084ca4998fcda408f6987f52c34185"
- }
- Frame {
- msec: 2736
- hash: "985868869ef2c332da379460a2f3a71b"
- }
- Frame {
- msec: 2752
- hash: "587cb6e05048579088e88e0180e3ad48"
- }
- Frame {
- msec: 2768
- hash: "97f7a2175dcf9ac2581a92d614d72f88"
- }
- Frame {
- msec: 2784
- hash: "93128906d054e44bfd126fc22bdc3102"
- }
- Frame {
- msec: 2800
- hash: "08f55088cdce741c67539f73291e53ab"
- }
- Frame {
- msec: 2816
- hash: "30f84a7f67b13a945ba6d5935ea92da5"
- }
- Frame {
- msec: 2832
- hash: "5359f5e45e5467c62c2d9521c8199c48"
- }
- Frame {
- msec: 2848
- hash: "7c22fc3e30377cc14326833bdd23ddd8"
- }
- Frame {
- msec: 2864
- hash: "80ebac4d923f67fb8dba3d133ce657ba"
- }
- Frame {
- msec: 2880
- image: "animated.2.png"
- }
- Frame {
- msec: 2896
- hash: "81d2fc6727dc7449d1a87b4abea9b704"
- }
- Frame {
- msec: 2912
- hash: "68dae343cf324391ec6721cea14575f7"
- }
- Frame {
- msec: 2928
- hash: "ec0aea8dc8c269d1f0aee5817347ac55"
- }
- Frame {
- msec: 2944
- hash: "a4ddb4956d71fd642d54757938100cf3"
- }
- Frame {
- msec: 2960
- hash: "956429472da133324c970774f77784f5"
- }
- Frame {
- msec: 2976
- hash: "c763f56728e17fc119539a4d45dfccc3"
- }
- Frame {
- msec: 2992
- hash: "ae48da4a66f93c806725ce749700aac8"
- }
- Frame {
- msec: 3008
- hash: "bccb4b8a494bd45bd70c2524a02a9dc3"
- }
- Frame {
- msec: 3024
- hash: "bc747167dfb3388ac63e9e68a86b9a03"
- }
- Frame {
- msec: 3040
- hash: "86360bd58bba5fdd901c105ddb2e3ade"
- }
- Frame {
- msec: 3056
- hash: "7383209c80b403b93da3264eadbc047f"
- }
- Frame {
- msec: 3072
- hash: "280288a7988736e30a2a3e4289ac3b0c"
- }
- Frame {
- msec: 3088
- hash: "ff0928dfd16b2da9811a172c19817a97"
- }
- Frame {
- msec: 3104
- hash: "eac4600372f0fdfadee88896ac915a48"
- }
- Frame {
- msec: 3120
- hash: "f04e84ad3579d6334077abe73101d206"
- }
- Frame {
- msec: 3136
- hash: "8861bf848da5c96b35addff736b01520"
- }
- Frame {
- msec: 3152
- hash: "1ac8c393f084aa1894c26610b7f40ea6"
- }
- Frame {
- msec: 3168
- hash: "e8a61d3858244127cb2b2812f04f5ce9"
- }
- Frame {
- msec: 3184
- hash: "93cf31eabb454ec536c638a506be0648"
- }
- Frame {
- msec: 3200
- hash: "0cba07ca38c7f0483244832a42d9ac53"
- }
- Frame {
- msec: 3216
- hash: "c7eb7837dce71c914186326216214eeb"
- }
- Frame {
- msec: 3232
- hash: "593a8a45c3a0cd7ce1cb6bd1913136ba"
- }
- Frame {
- msec: 3248
- hash: "1ea07ee309ce2c52cbc36370b75a872f"
- }
- Frame {
- msec: 3264
- hash: "93d9f0a7c387cbe653a9a088f8f4ef2b"
- }
- Frame {
- msec: 3280
- hash: "a6f17da2dd581bdc249ff62f833dc025"
- }
- Frame {
- msec: 3296
- hash: "b74521d6ac531414aeeca0fb28379d11"
- }
- Frame {
- msec: 3312
- hash: "6a521f952e05d91b86ad78fd6f5de4f9"
- }
- Frame {
- msec: 3328
- hash: "4e60300cfab8634e04dcd1b556251d31"
- }
- Frame {
- msec: 3344
- hash: "60f158382f75103c78e2b9b408e0fe65"
- }
- Frame {
- msec: 3360
- hash: "153237f8cf37e29ad2f32f7a8a6aecdb"
- }
- Frame {
- msec: 3376
- hash: "554e1d360463871e7c05cfe6f8abe1dd"
- }
- Frame {
- msec: 3392
- hash: "e418b5f54705515dce5ce3b4cbc45d19"
- }
- Frame {
- msec: 3408
- hash: "19d05a96f3ae7388e854bbf1075b51c1"
- }
- Frame {
- msec: 3424
- hash: "4ae120bb6dc2bd5ff81cc99ae03c191e"
- }
- Frame {
- msec: 3440
- hash: "18c2f321a149e38b258ac264d40c2376"
- }
- Frame {
- msec: 3456
- hash: "a40014d842471784e1222eb205395f6f"
- }
- Frame {
- msec: 3472
- hash: "f1a7a4a67a21f5025294af4bea3f8998"
- }
- Frame {
- msec: 3488
- hash: "3152e5f29015ece423fbdd11a2b382b8"
- }
- Frame {
- msec: 3504
- hash: "2a7bed775824968e318c3d40fbc5b1c2"
- }
- Frame {
- msec: 3520
- hash: "dd4c9e63001bc6e0e63ea4db2d85301f"
- }
- Frame {
- msec: 3536
- hash: "ac8f096e8c7cc23bfb01de69cf3e266e"
- }
- Frame {
- msec: 3552
- hash: "6b48bfd0c7993f746d6301c2a0f61d23"
- }
- Frame {
- msec: 3568
- hash: "06d8d8a1a41893d4e27725948a75caf4"
- }
- Frame {
- msec: 3584
- hash: "3f62f032239d412d3637198f5e3e83d6"
- }
- Frame {
- msec: 3600
- hash: "01947e631c3db43f7c5b4427229bc0c8"
- }
- Frame {
- msec: 3616
- hash: "2266df495ab5265e7514a506d3bf5bc6"
- }
- Frame {
- msec: 3632
- hash: "8c66a33d26eec2a1133f4362710a5fab"
- }
- Frame {
- msec: 3648
- hash: "75c9bf83ca3fe24612c245698c089430"
- }
- Frame {
- msec: 3664
- hash: "c1936628aec13e08e9581dcd2c6d5717"
- }
- Frame {
- msec: 3680
- hash: "a85ee8be6a47bbd1b14137803ce606ec"
- }
- Frame {
- msec: 3696
- hash: "8419f1d75b14130730bcfec4e3a9b058"
- }
- Frame {
- msec: 3712
- hash: "482bb92d4f0ad5d7c7e379b9e1ad326e"
- }
- Frame {
- msec: 3728
- hash: "406224b535b4425d2708df0083acdc8e"
- }
- Frame {
- msec: 3744
- hash: "3dac1d9632378bd18c1c938a4868e3fb"
- }
- Frame {
- msec: 3760
- hash: "08b9be66e23c7b6f6f629c7470394601"
- }
- Frame {
- msec: 3776
- hash: "7b4d12e5a877507e7454aa1b8ed87c2d"
- }
- Frame {
- msec: 3792
- hash: "4d45d70f997c2c67166905c97a900d2e"
- }
- Frame {
- msec: 3808
- hash: "c5b3dede34b0d1d78135e39c41d117c6"
- }
- Frame {
- msec: 3824
- hash: "b63e4d1686057828fd8781f1c33585f5"
- }
- Frame {
- msec: 3840
- image: "animated.3.png"
- }
- Frame {
- msec: 3856
- hash: "465ec993948f7b75aeb5759976f4620d"
- }
- Frame {
- msec: 3872
- hash: "228d5312c261d1a5455faf69ec2f2520"
- }
- Frame {
- msec: 3888
- hash: "aacf9ae3c23d174a1c1cda493600e355"
- }
- Frame {
- msec: 3904
- hash: "4c60d345821f515c7811f3b69eb94607"
- }
- Frame {
- msec: 3920
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3936
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3952
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3968
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 3984
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4000
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4016
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4032
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4048
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4064
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4080
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4096
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4112
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 4128
- hash: "4c60d345821f515c7811f3b69eb94607"
- }
- Frame {
- msec: 4144
- hash: "aacf9ae3c23d174a1c1cda493600e355"
- }
- Frame {
- msec: 4160
- hash: "228d5312c261d1a5455faf69ec2f2520"
- }
- Frame {
- msec: 4176
- hash: "465ec993948f7b75aeb5759976f4620d"
- }
- Frame {
- msec: 4192
- hash: "755cfccc38bababc468fe6e1076804bb"
- }
- Frame {
- msec: 4208
- hash: "b63e4d1686057828fd8781f1c33585f5"
- }
- Frame {
- msec: 4224
- hash: "c5b3dede34b0d1d78135e39c41d117c6"
- }
- Frame {
- msec: 4240
- hash: "4d45d70f997c2c67166905c97a900d2e"
- }
- Frame {
- msec: 4256
- hash: "7b4d12e5a877507e7454aa1b8ed87c2d"
- }
- Frame {
- msec: 4272
- hash: "08b9be66e23c7b6f6f629c7470394601"
- }
- Frame {
- msec: 4288
- hash: "3dac1d9632378bd18c1c938a4868e3fb"
- }
- Frame {
- msec: 4304
- hash: "406224b535b4425d2708df0083acdc8e"
- }
- Frame {
- msec: 4320
- hash: "482bb92d4f0ad5d7c7e379b9e1ad326e"
- }
- Frame {
- msec: 4336
- hash: "8419f1d75b14130730bcfec4e3a9b058"
- }
- Frame {
- msec: 4352
- hash: "a85ee8be6a47bbd1b14137803ce606ec"
- }
- Frame {
- msec: 4368
- hash: "c1936628aec13e08e9581dcd2c6d5717"
- }
- Frame {
- msec: 4384
- hash: "75c9bf83ca3fe24612c245698c089430"
- }
- Frame {
- msec: 4400
- hash: "8c66a33d26eec2a1133f4362710a5fab"
- }
- Frame {
- msec: 4416
- hash: "2266df495ab5265e7514a506d3bf5bc6"
- }
- Frame {
- msec: 4432
- hash: "01947e631c3db43f7c5b4427229bc0c8"
- }
- Frame {
- msec: 4448
- hash: "3f62f032239d412d3637198f5e3e83d6"
- }
- Frame {
- msec: 4464
- hash: "06d8d8a1a41893d4e27725948a75caf4"
- }
- Frame {
- msec: 4480
- hash: "6b48bfd0c7993f746d6301c2a0f61d23"
- }
- Frame {
- msec: 4496
- hash: "ac8f096e8c7cc23bfb01de69cf3e266e"
- }
- Frame {
- msec: 4512
- hash: "dd4c9e63001bc6e0e63ea4db2d85301f"
- }
- Frame {
- msec: 4528
- hash: "2a7bed775824968e318c3d40fbc5b1c2"
- }
- Frame {
- msec: 4544
- hash: "3152e5f29015ece423fbdd11a2b382b8"
- }
- Frame {
- msec: 4560
- hash: "f1a7a4a67a21f5025294af4bea3f8998"
- }
- Frame {
- msec: 4576
- hash: "a40014d842471784e1222eb205395f6f"
- }
- Frame {
- msec: 4592
- hash: "18c2f321a149e38b258ac264d40c2376"
- }
- Frame {
- msec: 4608
- hash: "4ae120bb6dc2bd5ff81cc99ae03c191e"
- }
- Frame {
- msec: 4624
- hash: "19d05a96f3ae7388e854bbf1075b51c1"
- }
- Frame {
- msec: 4640
- hash: "e418b5f54705515dce5ce3b4cbc45d19"
- }
- Frame {
- msec: 4656
- hash: "554e1d360463871e7c05cfe6f8abe1dd"
- }
- Frame {
- msec: 4672
- hash: "153237f8cf37e29ad2f32f7a8a6aecdb"
- }
- Frame {
- msec: 4688
- hash: "60f158382f75103c78e2b9b408e0fe65"
- }
- Frame {
- msec: 4704
- hash: "4e60300cfab8634e04dcd1b556251d31"
- }
- Frame {
- msec: 4720
- hash: "6a521f952e05d91b86ad78fd6f5de4f9"
- }
- Frame {
- msec: 4736
- hash: "b74521d6ac531414aeeca0fb28379d11"
- }
- Frame {
- msec: 4752
- hash: "a6f17da2dd581bdc249ff62f833dc025"
- }
- Frame {
- msec: 4768
- hash: "93d9f0a7c387cbe653a9a088f8f4ef2b"
- }
- Frame {
- msec: 4784
- hash: "1ea07ee309ce2c52cbc36370b75a872f"
- }
- Frame {
- msec: 4800
- image: "animated.4.png"
- }
- Frame {
- msec: 4816
- hash: "c7eb7837dce71c914186326216214eeb"
- }
- Frame {
- msec: 4832
- hash: "0cba07ca38c7f0483244832a42d9ac53"
- }
- Frame {
- msec: 4848
- hash: "93cf31eabb454ec536c638a506be0648"
- }
- Frame {
- msec: 4864
- hash: "e8a61d3858244127cb2b2812f04f5ce9"
- }
- Frame {
- msec: 4880
- hash: "1ac8c393f084aa1894c26610b7f40ea6"
- }
- Frame {
- msec: 4896
- hash: "8861bf848da5c96b35addff736b01520"
- }
- Frame {
- msec: 4912
- hash: "f04e84ad3579d6334077abe73101d206"
- }
- Frame {
- msec: 4928
- hash: "eac4600372f0fdfadee88896ac915a48"
- }
- Frame {
- msec: 4944
- hash: "ff0928dfd16b2da9811a172c19817a97"
- }
- Frame {
- msec: 4960
- hash: "280288a7988736e30a2a3e4289ac3b0c"
- }
- Frame {
- msec: 4976
- hash: "7383209c80b403b93da3264eadbc047f"
- }
- Frame {
- msec: 4992
- hash: "86360bd58bba5fdd901c105ddb2e3ade"
- }
- Frame {
- msec: 5008
- hash: "bc747167dfb3388ac63e9e68a86b9a03"
- }
- Frame {
- msec: 5024
- hash: "bccb4b8a494bd45bd70c2524a02a9dc3"
- }
- Frame {
- msec: 5040
- hash: "ae48da4a66f93c806725ce749700aac8"
- }
- Frame {
- msec: 5056
- hash: "c763f56728e17fc119539a4d45dfccc3"
- }
- Frame {
- msec: 5072
- hash: "956429472da133324c970774f77784f5"
- }
- Frame {
- msec: 5088
- hash: "a4ddb4956d71fd642d54757938100cf3"
- }
- Frame {
- msec: 5104
- hash: "ec0aea8dc8c269d1f0aee5817347ac55"
- }
- Frame {
- msec: 5120
- hash: "68dae343cf324391ec6721cea14575f7"
- }
- Frame {
- msec: 5136
- hash: "81d2fc6727dc7449d1a87b4abea9b704"
- }
- Frame {
- msec: 5152
- hash: "c3a1f12febc979150028737722d6d045"
- }
- Frame {
- msec: 5168
- hash: "80ebac4d923f67fb8dba3d133ce657ba"
- }
- Frame {
- msec: 5184
- hash: "7c22fc3e30377cc14326833bdd23ddd8"
- }
- Frame {
- msec: 5200
- hash: "5359f5e45e5467c62c2d9521c8199c48"
- }
- Frame {
- msec: 5216
- hash: "30f84a7f67b13a945ba6d5935ea92da5"
- }
- Frame {
- msec: 5232
- hash: "08f55088cdce741c67539f73291e53ab"
- }
- Frame {
- msec: 5248
- hash: "93128906d054e44bfd126fc22bdc3102"
- }
- Frame {
- msec: 5264
- hash: "97f7a2175dcf9ac2581a92d614d72f88"
- }
- Frame {
- msec: 5280
- hash: "587cb6e05048579088e88e0180e3ad48"
- }
- Frame {
- msec: 5296
- hash: "985868869ef2c332da379460a2f3a71b"
- }
- Frame {
- msec: 5312
- hash: "94084ca4998fcda408f6987f52c34185"
- }
- Frame {
- msec: 5328
- hash: "e91bb914c1eb63cd4269b30a220a128a"
- }
- Frame {
- msec: 5344
- hash: "e880d93963c80e4fab5173554c9600fc"
- }
- Frame {
- msec: 5360
- hash: "84c94704c16e246df1048f958cc8cefb"
- }
- Frame {
- msec: 5376
- hash: "4f1eace868a6688e5b24ce48a1f0fd18"
- }
- Frame {
- msec: 5392
- hash: "99de44f74f8e1f79652ab46afb4bb59e"
- }
- Frame {
- msec: 5408
- hash: "44072400ca3f0237d1aebae28a94becc"
- }
- Frame {
- msec: 5424
- hash: "a1bd4e995365e79389dba80f9e3b7af8"
- }
- Frame {
- msec: 5440
- hash: "95d776c84fe155617fc4ee51bdb45b7e"
- }
- Frame {
- msec: 5456
- hash: "3b95eb8cbfc831e1ebee2e456b026ab4"
- }
- Frame {
- msec: 5472
- hash: "826c7741ba0c51de407bb799e8f360b5"
- }
- Frame {
- msec: 5488
- hash: "11673a112566a64aca3c7010b9cc9c4d"
- }
- Frame {
- msec: 5504
- hash: "e1e6c7a7f51bcccd749710dbbf9e97f6"
- }
- Frame {
- msec: 5520
- hash: "5b027815ea3c1ea54e1a02c798c468db"
- }
- Frame {
- msec: 5536
- hash: "65c514c9e926affe1da0b4826d2754c7"
- }
- Frame {
- msec: 5552
- hash: "73c5f23f51797a33f4d2898738e6356e"
- }
- Frame {
- msec: 5568
- hash: "acd9a2e76b22ab0ff809fd3ec3a018ec"
- }
- Frame {
- msec: 5584
- hash: "fb17df681d99d5de05f6329bba697ea5"
- }
- Frame {
- msec: 5600
- hash: "1bf7a98884b506b38326f59f85a53f41"
- }
- Frame {
- msec: 5616
- hash: "0b1a741975e3d9ef8f5e78f371c89441"
- }
- Frame {
- msec: 5632
- hash: "a6937ee49648ed0cb409063bf1da3b87"
- }
- Frame {
- msec: 5648
- hash: "a790f0e884ab85f7802dd094e4ef550f"
- }
- Frame {
- msec: 5664
- hash: "3b644aac161f0a75bfb64f5075373190"
- }
- Frame {
- msec: 5680
- hash: "b12faa76c07adc21634cd8f8cb8436ae"
- }
- Frame {
- msec: 5696
- hash: "3fb20f9dbd40b4729235e13af9643afc"
- }
- Frame {
- msec: 5712
- hash: "f57727419bb51fb1e589b960ddeb20ae"
- }
- Frame {
- msec: 5728
- hash: "7b78cba247f2c209ed81e003ca25d0a5"
- }
- Frame {
- msec: 5744
- hash: "8172e076b05d95248d89e815fde820ef"
- }
- Frame {
- msec: 5760
- image: "animated.5.png"
- }
- Frame {
- msec: 5776
- hash: "74c1e71378b502bc1b732a55806a10f1"
- }
- Frame {
- msec: 5792
- hash: "6eae517ad33f0609c31ef1f8f80ba899"
- }
- Frame {
- msec: 5808
- hash: "a67e9a0f55512fb1c55f13c6b483923b"
- }
- Frame {
- msec: 5824
- hash: "4887cd34d9926a361f3ca2e75be53ea6"
- }
- Frame {
- msec: 5840
- hash: "13ca95adab171d9fad9ee8b75d0226bc"
- }
- Frame {
- msec: 5856
- hash: "affab9fb48c889a2680eb81458d400f9"
- }
- Frame {
- msec: 5872
- hash: "7aa0cbf73f7999be7cde4ec739efbc33"
- }
- Frame {
- msec: 5888
- hash: "36c054064c9a76f4072492e55c70fb6c"
- }
- Frame {
- msec: 5904
- hash: "d1ed4916cb1ecff60277d74369ff311b"
- }
- Frame {
- msec: 5920
- hash: "63ebaa4869728f5e2891d068e4b0091c"
- }
- Frame {
- msec: 5936
- hash: "29245946cbd811fe6bf6b2b41cc13002"
- }
- Frame {
- msec: 5952
- hash: "8a9dd7a2d10771633e6896f3f4a722ae"
- }
- Frame {
- msec: 5968
- hash: "058c918e83bfdd665cd836566b53959b"
- }
- Frame {
- msec: 5984
- hash: "fdf3b7a0391119e2fe77be8d6a17481d"
- }
- Frame {
- msec: 6000
- hash: "ed5d80c33dbf72624385b1cf43784626"
- }
- Frame {
- msec: 6016
- hash: "911591db1519ba264847f09868e38e0e"
- }
- Frame {
- msec: 6032
- hash: "ed5d80c33dbf72624385b1cf43784626"
- }
- Frame {
- msec: 6048
- hash: "fdf3b7a0391119e2fe77be8d6a17481d"
- }
- Frame {
- msec: 6064
- hash: "058c918e83bfdd665cd836566b53959b"
- }
- Frame {
- msec: 6080
- hash: "8a9dd7a2d10771633e6896f3f4a722ae"
- }
- Frame {
- msec: 6096
- hash: "29245946cbd811fe6bf6b2b41cc13002"
- }
- Frame {
- msec: 6112
- hash: "63ebaa4869728f5e2891d068e4b0091c"
- }
- Frame {
- msec: 6128
- hash: "d1ed4916cb1ecff60277d74369ff311b"
- }
- Frame {
- msec: 6144
- hash: "36c054064c9a76f4072492e55c70fb6c"
- }
- Frame {
- msec: 6160
- hash: "7aa0cbf73f7999be7cde4ec739efbc33"
- }
- Frame {
- msec: 6176
- hash: "affab9fb48c889a2680eb81458d400f9"
- }
- Frame {
- msec: 6192
- hash: "13ca95adab171d9fad9ee8b75d0226bc"
- }
- Frame {
- msec: 6208
- hash: "4887cd34d9926a361f3ca2e75be53ea6"
- }
- Frame {
- msec: 6224
- hash: "a67e9a0f55512fb1c55f13c6b483923b"
- }
- Frame {
- msec: 6240
- hash: "6eae517ad33f0609c31ef1f8f80ba899"
- }
- Frame {
- msec: 6256
- hash: "74c1e71378b502bc1b732a55806a10f1"
- }
- Frame {
- msec: 6272
- hash: "a88d6fc324ef48aa52c642a1662ec679"
- }
- Frame {
- msec: 6288
- hash: "8172e076b05d95248d89e815fde820ef"
- }
- Frame {
- msec: 6304
- hash: "7b78cba247f2c209ed81e003ca25d0a5"
- }
- Frame {
- msec: 6320
- hash: "f57727419bb51fb1e589b960ddeb20ae"
- }
- Frame {
- msec: 6336
- hash: "3fb20f9dbd40b4729235e13af9643afc"
- }
- Frame {
- msec: 6352
- hash: "b12faa76c07adc21634cd8f8cb8436ae"
- }
- Frame {
- msec: 6368
- hash: "3b644aac161f0a75bfb64f5075373190"
- }
- Frame {
- msec: 6384
- hash: "a790f0e884ab85f7802dd094e4ef550f"
- }
- Frame {
- msec: 6400
- hash: "a6937ee49648ed0cb409063bf1da3b87"
- }
- Frame {
- msec: 6416
- hash: "0b1a741975e3d9ef8f5e78f371c89441"
- }
- Frame {
- msec: 6432
- hash: "1bf7a98884b506b38326f59f85a53f41"
- }
- Frame {
- msec: 6448
- hash: "fb17df681d99d5de05f6329bba697ea5"
- }
- Frame {
- msec: 6464
- hash: "acd9a2e76b22ab0ff809fd3ec3a018ec"
- }
- Frame {
- msec: 6480
- hash: "73c5f23f51797a33f4d2898738e6356e"
- }
- Frame {
- msec: 6496
- hash: "65c514c9e926affe1da0b4826d2754c7"
- }
- Frame {
- msec: 6512
- hash: "5b027815ea3c1ea54e1a02c798c468db"
- }
- Frame {
- msec: 6528
- hash: "e1e6c7a7f51bcccd749710dbbf9e97f6"
- }
- Frame {
- msec: 6544
- hash: "11673a112566a64aca3c7010b9cc9c4d"
- }
- Frame {
- msec: 6560
- hash: "826c7741ba0c51de407bb799e8f360b5"
- }
- Frame {
- msec: 6576
- hash: "3b95eb8cbfc831e1ebee2e456b026ab4"
- }
- Frame {
- msec: 6592
- hash: "95d776c84fe155617fc4ee51bdb45b7e"
- }
- Frame {
- msec: 6608
- hash: "a1bd4e995365e79389dba80f9e3b7af8"
- }
- Frame {
- msec: 6624
- hash: "44072400ca3f0237d1aebae28a94becc"
- }
- Frame {
- msec: 6640
- hash: "99de44f74f8e1f79652ab46afb4bb59e"
- }
- Frame {
- msec: 6656
- hash: "4f1eace868a6688e5b24ce48a1f0fd18"
- }
- Frame {
- msec: 6672
- hash: "84c94704c16e246df1048f958cc8cefb"
- }
- Frame {
- msec: 6688
- hash: "e880d93963c80e4fab5173554c9600fc"
- }
- Frame {
- msec: 6704
- hash: "e91bb914c1eb63cd4269b30a220a128a"
- }
- Frame {
- msec: 6720
- image: "animated.6.png"
- }
- Frame {
- msec: 6736
- hash: "985868869ef2c332da379460a2f3a71b"
- }
- Frame {
- msec: 6752
- hash: "587cb6e05048579088e88e0180e3ad48"
- }
- Frame {
- msec: 6768
- hash: "97f7a2175dcf9ac2581a92d614d72f88"
- }
- Frame {
- msec: 6784
- hash: "93128906d054e44bfd126fc22bdc3102"
- }
- Frame {
- msec: 6800
- hash: "08f55088cdce741c67539f73291e53ab"
- }
- Frame {
- msec: 6816
- hash: "30f84a7f67b13a945ba6d5935ea92da5"
- }
- Frame {
- msec: 6832
- hash: "5359f5e45e5467c62c2d9521c8199c48"
- }
- Frame {
- msec: 6848
- hash: "7c22fc3e30377cc14326833bdd23ddd8"
- }
- Frame {
- msec: 6864
- hash: "80ebac4d923f67fb8dba3d133ce657ba"
- }
- Frame {
- msec: 6880
- hash: "c3a1f12febc979150028737722d6d045"
- }
- Frame {
- msec: 6896
- hash: "81d2fc6727dc7449d1a87b4abea9b704"
- }
- Frame {
- msec: 6912
- hash: "68dae343cf324391ec6721cea14575f7"
- }
- Frame {
- msec: 6928
- hash: "ec0aea8dc8c269d1f0aee5817347ac55"
- }
- Frame {
- msec: 6944
- hash: "a4ddb4956d71fd642d54757938100cf3"
- }
- Frame {
- msec: 6960
- hash: "956429472da133324c970774f77784f5"
- }
- Frame {
- msec: 6976
- hash: "c763f56728e17fc119539a4d45dfccc3"
- }
- Frame {
- msec: 6992
- hash: "ae48da4a66f93c806725ce749700aac8"
- }
- Frame {
- msec: 7008
- hash: "bccb4b8a494bd45bd70c2524a02a9dc3"
- }
- Frame {
- msec: 7024
- hash: "bc747167dfb3388ac63e9e68a86b9a03"
- }
- Frame {
- msec: 7040
- hash: "86360bd58bba5fdd901c105ddb2e3ade"
- }
- Frame {
- msec: 7056
- hash: "7383209c80b403b93da3264eadbc047f"
- }
- Frame {
- msec: 7072
- hash: "280288a7988736e30a2a3e4289ac3b0c"
- }
- Frame {
- msec: 7088
- hash: "ff0928dfd16b2da9811a172c19817a97"
- }
- Frame {
- msec: 7104
- hash: "eac4600372f0fdfadee88896ac915a48"
- }
- Frame {
- msec: 7120
- hash: "f04e84ad3579d6334077abe73101d206"
- }
- Frame {
- msec: 7136
- hash: "8861bf848da5c96b35addff736b01520"
- }
- Frame {
- msec: 7152
- hash: "1ac8c393f084aa1894c26610b7f40ea6"
- }
- Frame {
- msec: 7168
- hash: "e8a61d3858244127cb2b2812f04f5ce9"
- }
- Frame {
- msec: 7184
- hash: "93cf31eabb454ec536c638a506be0648"
- }
- Frame {
- msec: 7200
- hash: "0cba07ca38c7f0483244832a42d9ac53"
- }
- Frame {
- msec: 7216
- hash: "c7eb7837dce71c914186326216214eeb"
- }
- Frame {
- msec: 7232
- hash: "593a8a45c3a0cd7ce1cb6bd1913136ba"
- }
- Frame {
- msec: 7248
- hash: "1ea07ee309ce2c52cbc36370b75a872f"
- }
- Frame {
- msec: 7264
- hash: "93d9f0a7c387cbe653a9a088f8f4ef2b"
- }
- Frame {
- msec: 7280
- hash: "a6f17da2dd581bdc249ff62f833dc025"
- }
- Frame {
- msec: 7296
- hash: "b74521d6ac531414aeeca0fb28379d11"
- }
- Frame {
- msec: 7312
- hash: "6a521f952e05d91b86ad78fd6f5de4f9"
- }
- Frame {
- msec: 7328
- hash: "4e60300cfab8634e04dcd1b556251d31"
- }
- Frame {
- msec: 7344
- hash: "60f158382f75103c78e2b9b408e0fe65"
- }
- Frame {
- msec: 7360
- hash: "153237f8cf37e29ad2f32f7a8a6aecdb"
- }
- Frame {
- msec: 7376
- hash: "554e1d360463871e7c05cfe6f8abe1dd"
- }
- Frame {
- msec: 7392
- hash: "e418b5f54705515dce5ce3b4cbc45d19"
- }
- Frame {
- msec: 7408
- hash: "19d05a96f3ae7388e854bbf1075b51c1"
- }
- Frame {
- msec: 7424
- hash: "4ae120bb6dc2bd5ff81cc99ae03c191e"
- }
- Frame {
- msec: 7440
- hash: "18c2f321a149e38b258ac264d40c2376"
- }
- Frame {
- msec: 7456
- hash: "a40014d842471784e1222eb205395f6f"
- }
- Frame {
- msec: 7472
- hash: "f1a7a4a67a21f5025294af4bea3f8998"
- }
- Frame {
- msec: 7488
- hash: "3152e5f29015ece423fbdd11a2b382b8"
- }
- Frame {
- msec: 7504
- hash: "2a7bed775824968e318c3d40fbc5b1c2"
- }
- Frame {
- msec: 7520
- hash: "dd4c9e63001bc6e0e63ea4db2d85301f"
- }
- Frame {
- msec: 7536
- hash: "ac8f096e8c7cc23bfb01de69cf3e266e"
- }
- Frame {
- msec: 7552
- hash: "6b48bfd0c7993f746d6301c2a0f61d23"
- }
- Frame {
- msec: 7568
- hash: "06d8d8a1a41893d4e27725948a75caf4"
- }
- Frame {
- msec: 7584
- hash: "3f62f032239d412d3637198f5e3e83d6"
- }
- Frame {
- msec: 7600
- hash: "01947e631c3db43f7c5b4427229bc0c8"
- }
- Frame {
- msec: 7616
- hash: "2266df495ab5265e7514a506d3bf5bc6"
- }
- Frame {
- msec: 7632
- hash: "8c66a33d26eec2a1133f4362710a5fab"
- }
- Frame {
- msec: 7648
- hash: "75c9bf83ca3fe24612c245698c089430"
- }
- Frame {
- msec: 7664
- hash: "c1936628aec13e08e9581dcd2c6d5717"
- }
- Frame {
- msec: 7680
- image: "animated.7.png"
- }
- Frame {
- msec: 7696
- hash: "8419f1d75b14130730bcfec4e3a9b058"
- }
- Frame {
- msec: 7712
- hash: "482bb92d4f0ad5d7c7e379b9e1ad326e"
- }
- Frame {
- msec: 7728
- hash: "406224b535b4425d2708df0083acdc8e"
- }
- Frame {
- msec: 7744
- hash: "3dac1d9632378bd18c1c938a4868e3fb"
- }
- Frame {
- msec: 7760
- hash: "08b9be66e23c7b6f6f629c7470394601"
- }
- Frame {
- msec: 7776
- hash: "7b4d12e5a877507e7454aa1b8ed87c2d"
- }
- Frame {
- msec: 7792
- hash: "4d45d70f997c2c67166905c97a900d2e"
- }
- Frame {
- msec: 7808
- hash: "c5b3dede34b0d1d78135e39c41d117c6"
- }
- Frame {
- msec: 7824
- hash: "b63e4d1686057828fd8781f1c33585f5"
- }
- Frame {
- msec: 7840
- hash: "755cfccc38bababc468fe6e1076804bb"
- }
- Frame {
- msec: 7856
- hash: "465ec993948f7b75aeb5759976f4620d"
- }
- Frame {
- msec: 7872
- hash: "228d5312c261d1a5455faf69ec2f2520"
- }
- Frame {
- msec: 7888
- hash: "aacf9ae3c23d174a1c1cda493600e355"
- }
- Frame {
- msec: 7904
- hash: "4c60d345821f515c7811f3b69eb94607"
- }
- Frame {
- msec: 7920
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 7936
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 7952
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 7968
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 7984
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8000
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8016
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8032
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8048
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8064
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8080
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8096
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8112
- hash: "aec13bcab337e55832b0a02fb5c6b526"
- }
- Frame {
- msec: 8128
- hash: "4c60d345821f515c7811f3b69eb94607"
- }
- Frame {
- msec: 8144
- hash: "aacf9ae3c23d174a1c1cda493600e355"
- }
- Frame {
- msec: 8160
- hash: "228d5312c261d1a5455faf69ec2f2520"
- }
- Frame {
- msec: 8176
- hash: "465ec993948f7b75aeb5759976f4620d"
- }
- Frame {
- msec: 8192
- hash: "755cfccc38bababc468fe6e1076804bb"
- }
- Frame {
- msec: 8208
- hash: "b63e4d1686057828fd8781f1c33585f5"
- }
- Frame {
- msec: 8224
- hash: "c5b3dede34b0d1d78135e39c41d117c6"
- }
- Frame {
- msec: 8240
- hash: "4d45d70f997c2c67166905c97a900d2e"
- }
- Frame {
- msec: 8256
- hash: "7b4d12e5a877507e7454aa1b8ed87c2d"
- }
- Frame {
- msec: 8272
- hash: "08b9be66e23c7b6f6f629c7470394601"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 8288
- hash: "3dac1d9632378bd18c1c938a4868e3fb"
- }
- Frame {
- msec: 8304
- hash: "406224b535b4425d2708df0083acdc8e"
+ hash: "21692407cdfeeb20ff81d5d8a8ba3b7e"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.0.png
index bb9dfbb916..8d4355410d 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeborderimage/data/borders.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.0.png
new file mode 100644
index 0000000000..9a81b29aa4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.1.png
new file mode 100644
index 0000000000..2d9c4fdfb4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.2.png
new file mode 100644
index 0000000000..2bb0cb0fe5
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.3.png
index 87c2e07ec3..8260a65df3 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/hAlign.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.4.png
new file mode 100644
index 0000000000..0abcbc2f4d
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.qml
new file mode 100644
index 0000000000..f1bb428295
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.qml
@@ -0,0 +1,1575 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "flickable-horizontal.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 48
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 64
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 80
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 96
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 112
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 128
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 144
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 160
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 176
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 192
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 208
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 224
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 240
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 256
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 272
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 288
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 304
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 320
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 336
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 352
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 368
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 384
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 400
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 416
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 432
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 448
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 464
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 480
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 496
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 512
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 528
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 544
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 560
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 576
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 592
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 608
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 624
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 640
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 656
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 672
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 688
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 704
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 720
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 447; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 736
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 752
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 768
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 446; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 784
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 440; y: 146
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 800
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 425; y: 151
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 407; y: 157
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 816
+ hash: "c92e345e4ffdb30c28d9d5aa5400bd30"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 359; y: 169
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 832
+ hash: "90f94986ab44ab59618e9a5da17b8cc9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 309; y: 181
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 848
+ hash: "0154a65f8693b98576101ac1c2fc8761"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 282; y: 187
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 282; y: 187
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 864
+ hash: "792c1b5267f14c891dae2348a8188a92"
+ }
+ Frame {
+ msec: 880
+ hash: "15ce9e88d4ad2e698bf167d1432c0b8a"
+ }
+ Frame {
+ msec: 896
+ hash: "8f4109ef4c24d286d73f689565a0d056"
+ }
+ Frame {
+ msec: 912
+ hash: "f5728190bf5c94742686f063b4a4b09b"
+ }
+ Frame {
+ msec: 928
+ hash: "a38c7527a9a818b7bc25466b0e4939f9"
+ }
+ Frame {
+ msec: 944
+ hash: "ed3902455fc31a4e3232308b815a4daa"
+ }
+ Frame {
+ msec: 960
+ hash: "a2093589363ac2d50491412e99e0193a"
+ }
+ Frame {
+ msec: 976
+ image: "flickable-horizontal.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "c32349580e3a9586cc1133c935607cf0"
+ }
+ Frame {
+ msec: 1008
+ hash: "cd2068492e346eb20d50aee69e3a3559"
+ }
+ Frame {
+ msec: 1024
+ hash: "f43a1a38894b8ffad009ba995d84b0ee"
+ }
+ Frame {
+ msec: 1040
+ hash: "2d5c4a73df2a054801571f1ce119e31f"
+ }
+ Frame {
+ msec: 1056
+ hash: "b8825cc6bdca8102a655d797ea41b5b1"
+ }
+ Frame {
+ msec: 1072
+ hash: "3f0be15b85220743d004f2d54b6e137c"
+ }
+ Frame {
+ msec: 1088
+ hash: "4b0952d33149b44ffa0a06723a4116c7"
+ }
+ Frame {
+ msec: 1104
+ hash: "9056bda43259e92cfe56fdf394e2ca54"
+ }
+ Frame {
+ msec: 1120
+ hash: "82ec9f09d2303e5b0b9c05b9a10a84db"
+ }
+ Frame {
+ msec: 1136
+ hash: "751a9b3054c09d900364d7c9cac8bc2b"
+ }
+ Frame {
+ msec: 1152
+ hash: "17dfdfef20f9da7e8b6f16df974baea9"
+ }
+ Frame {
+ msec: 1168
+ hash: "108e6d9a5a81df32823bfd7a90a000a7"
+ }
+ Frame {
+ msec: 1184
+ hash: "71dd0d55a3e837d3a8e4b4e318579ade"
+ }
+ Frame {
+ msec: 1200
+ hash: "8013cdb2615bca89134ea040409af509"
+ }
+ Frame {
+ msec: 1216
+ hash: "4b2826ad4c755690bd837994133f5fac"
+ }
+ Frame {
+ msec: 1232
+ hash: "52d0da7f138bd37ac587a448d6402aca"
+ }
+ Frame {
+ msec: 1248
+ hash: "e634724c5bb294d338210845bf64d2cf"
+ }
+ Frame {
+ msec: 1264
+ hash: "59bc5f0d057ee431f289806377f19213"
+ }
+ Frame {
+ msec: 1280
+ hash: "6ef2c5f7766c2cc77b30d636bfaa4422"
+ }
+ Frame {
+ msec: 1296
+ hash: "578d056c3db094420dbaa51bd08ced20"
+ }
+ Frame {
+ msec: 1312
+ hash: "14c6f7a04a52caffefa07af556ccb262"
+ }
+ Frame {
+ msec: 1328
+ hash: "7cb63d56fec144d0509ce219fc6fe459"
+ }
+ Frame {
+ msec: 1344
+ hash: "462dafa7f6427aecf6c28a5dcf5a10cc"
+ }
+ Frame {
+ msec: 1360
+ hash: "45360814f985ed780a443568a91fc170"
+ }
+ Frame {
+ msec: 1376
+ hash: "0d18ceb2436e4f7eb56a3443fab706e6"
+ }
+ Frame {
+ msec: 1392
+ hash: "1d83f367ba9f7f1d4496208271e925ed"
+ }
+ Frame {
+ msec: 1408
+ hash: "fdbd00ee4c122aef779df42ea53f403a"
+ }
+ Frame {
+ msec: 1424
+ hash: "bedd1cb304efd4851813b39a746198a4"
+ }
+ Frame {
+ msec: 1440
+ hash: "9aa7bed86efa9634466736f20ee0ab5b"
+ }
+ Frame {
+ msec: 1456
+ hash: "00fc8186a7ae44e10195a7b13defa0d2"
+ }
+ Frame {
+ msec: 1472
+ hash: "42d6e8e0bbed879ed63644c83e61e7bd"
+ }
+ Frame {
+ msec: 1488
+ hash: "df074f8c210249e5ef652349479b6325"
+ }
+ Frame {
+ msec: 1504
+ hash: "4f94020437e35cf44dd3576997990ab7"
+ }
+ Frame {
+ msec: 1520
+ hash: "8ca6c3b4fa3be73ac35073356b680a35"
+ }
+ Frame {
+ msec: 1536
+ hash: "c25eee1c5791383ebc59974e7754eacb"
+ }
+ Frame {
+ msec: 1552
+ hash: "f4917ada78942428cc6b9aa5e56c013d"
+ }
+ Frame {
+ msec: 1568
+ hash: "23e1e607101fc7260a4ac841344f5fe0"
+ }
+ Frame {
+ msec: 1584
+ hash: "2dcc7d187d8e0493e5766efbf09ef37c"
+ }
+ Frame {
+ msec: 1600
+ hash: "c1e5602753e80cf44d7b330140c6912e"
+ }
+ Frame {
+ msec: 1616
+ hash: "febaf72d01a3763461b4b7d2ddd7a23e"
+ }
+ Frame {
+ msec: 1632
+ hash: "071262b911b61576f451be25691a57cf"
+ }
+ Frame {
+ msec: 1648
+ hash: "44705db9289fd8753b9d63e8bc963b38"
+ }
+ Frame {
+ msec: 1664
+ hash: "0c41d7b7d36bd083abfc0b83b862cad9"
+ }
+ Frame {
+ msec: 1680
+ hash: "0c41d7b7d36bd083abfc0b83b862cad9"
+ }
+ Frame {
+ msec: 1696
+ hash: "071262b911b61576f451be25691a57cf"
+ }
+ Frame {
+ msec: 1712
+ hash: "a00aa90e894b48203b0446ca287ee712"
+ }
+ Frame {
+ msec: 1728
+ hash: "26c9ca53ee4b084c6595ad65bf4880df"
+ }
+ Frame {
+ msec: 1744
+ hash: "f4917ada78942428cc6b9aa5e56c013d"
+ }
+ Frame {
+ msec: 1760
+ hash: "ffedee7bf2d8099e361b8b1706b03f88"
+ }
+ Frame {
+ msec: 1776
+ hash: "1778ef1629ce977015b641448b46634f"
+ }
+ Frame {
+ msec: 1792
+ hash: "42d6e8e0bbed879ed63644c83e61e7bd"
+ }
+ Frame {
+ msec: 1808
+ hash: "99e843ec69b79b79b0792e0a2f28cd1b"
+ }
+ Frame {
+ msec: 1824
+ hash: "8b3ebca70b50a6a93823e015ea80f0f9"
+ }
+ Frame {
+ msec: 1840
+ hash: "8eaa7f076064ce55051237b04861e408"
+ }
+ Frame {
+ msec: 1856
+ hash: "6acc0ca5e5808d911287edfa78c8ac02"
+ }
+ Frame {
+ msec: 1872
+ hash: "e9f05899e0b53c21f6efe834095a3ea4"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 91; y: 208
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 93; y: 209
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1888
+ hash: "e9f05899e0b53c21f6efe834095a3ea4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 99; y: 210
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 108; y: 210
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1904
+ hash: "d2dece405f5f6ed1de2acb6615a931de"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 142; y: 214
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1920
+ hash: "21e0f21edc77424e8327c9a3350ecc1d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 198; y: 216
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1936
+ image: "flickable-horizontal.2.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 229; y: 218
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 266; y: 220
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1952
+ hash: "c10c8b0c94f899414d8b3ef0b7c97646"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 322; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 322; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1968
+ hash: "807aff4e6c96a9d0de7fa55e233446b1"
+ }
+ Frame {
+ msec: 1984
+ hash: "dbd02848cefacbb26f4bcb7d8f073d6c"
+ }
+ Frame {
+ msec: 2000
+ hash: "9a60608d8ea1b39fa2d3851873f2f08e"
+ }
+ Frame {
+ msec: 2016
+ hash: "e7b3e3a40281f63889808211d6746374"
+ }
+ Frame {
+ msec: 2032
+ hash: "188c225c46ec00105df230bfeea09974"
+ }
+ Frame {
+ msec: 2048
+ hash: "e2e977b42e91d8c5dee57fd8245692eb"
+ }
+ Frame {
+ msec: 2064
+ hash: "ca2f12fb173c405f95e608858ab982ad"
+ }
+ Frame {
+ msec: 2080
+ hash: "fa86ee5f25fa425cf2569c8ef570b9d8"
+ }
+ Frame {
+ msec: 2096
+ hash: "9b74656866fb8c7394bbbecec6414aca"
+ }
+ Frame {
+ msec: 2112
+ hash: "87147326d1baab174c0f9a5ccdc2cb84"
+ }
+ Frame {
+ msec: 2128
+ hash: "c0d00f98c71bf3f8e5954b45fbab95a8"
+ }
+ Frame {
+ msec: 2144
+ hash: "c087d1d62e56e573b55c1d8599bba8a6"
+ }
+ Frame {
+ msec: 2160
+ hash: "dd5a94c6febdee58e8f115cb75131aaa"
+ }
+ Frame {
+ msec: 2176
+ hash: "a7465d6137f865f512ce65ceb29533b4"
+ }
+ Frame {
+ msec: 2192
+ hash: "409086f6bb661aab8b548fea56d7e6b1"
+ }
+ Frame {
+ msec: 2208
+ hash: "6a22911e0fb58df31271baa463ff599d"
+ }
+ Frame {
+ msec: 2224
+ hash: "c4f6dd30d5fdfcf91a8b29cf5c622423"
+ }
+ Frame {
+ msec: 2240
+ hash: "5a95b83f237c7243a198a43e9a587179"
+ }
+ Frame {
+ msec: 2256
+ hash: "d79ed290efc6dbd976d574bf0b14a6a3"
+ }
+ Frame {
+ msec: 2272
+ hash: "a7bcb436e96d7c981852239462573495"
+ }
+ Frame {
+ msec: 2288
+ hash: "f63cc82e351daab503e316f8b516990f"
+ }
+ Frame {
+ msec: 2304
+ hash: "4ea63cd25a1424042ffc60549a78563c"
+ }
+ Frame {
+ msec: 2320
+ hash: "ef0fb776012575b3b0dbf6e5f4dee571"
+ }
+ Frame {
+ msec: 2336
+ hash: "e2508faec7737be2666d87ad715b5f74"
+ }
+ Frame {
+ msec: 2352
+ hash: "9fe4e897c6b853f774d11817a0eb53bf"
+ }
+ Frame {
+ msec: 2368
+ hash: "c122ce2e73cbfedcc99d649c21d91f9d"
+ }
+ Frame {
+ msec: 2384
+ hash: "883b8b180853f1f432ae98ddfe1b6ce3"
+ }
+ Frame {
+ msec: 2400
+ hash: "d0808284e431da60f61d571c257a3011"
+ }
+ Frame {
+ msec: 2416
+ hash: "df90f19450bf4d9496aab987a89e3a02"
+ }
+ Frame {
+ msec: 2432
+ hash: "5640c1e64556b90e7fbd4448fa9db462"
+ }
+ Frame {
+ msec: 2448
+ hash: "6d9b5c2f7d0dedbbc444e69bb39fed08"
+ }
+ Frame {
+ msec: 2464
+ hash: "485c4a8049068cf73bf22db5fd3618be"
+ }
+ Frame {
+ msec: 2480
+ hash: "9e25da59c9e7e4cf7796902e8e2ff92a"
+ }
+ Frame {
+ msec: 2496
+ hash: "bd45e8f2442d7c1a1b16a762bc29e7cf"
+ }
+ Frame {
+ msec: 2512
+ hash: "ec1013d23e581dbb39b1549d2e1b3b32"
+ }
+ Frame {
+ msec: 2528
+ hash: "1ea3c2fde8ee3a14406e027f2124d793"
+ }
+ Frame {
+ msec: 2544
+ hash: "3c3f31a05fb2f32538872c9fa158aaab"
+ }
+ Frame {
+ msec: 2560
+ hash: "05a84d9c55e634ec01edd2a63e13613b"
+ }
+ Frame {
+ msec: 2576
+ hash: "0f7ccd2da58e2e73b0ab18bb681dafd5"
+ }
+ Frame {
+ msec: 2592
+ hash: "e481ff78029f8bc4bf7c697db6824f6a"
+ }
+ Frame {
+ msec: 2608
+ hash: "efb92b8b7a90acabeb4a8d5cae52fe3c"
+ }
+ Frame {
+ msec: 2624
+ hash: "4728dd0fac4edf40cfd5ef5a422b4ed9"
+ }
+ Frame {
+ msec: 2640
+ hash: "27641dcd772c979ae22d12bfbadbb67f"
+ }
+ Frame {
+ msec: 2656
+ hash: "26268714105bc4832d336a38a859fc50"
+ }
+ Frame {
+ msec: 2672
+ hash: "caf0d351d3b6914ca52853a30643ea48"
+ }
+ Frame {
+ msec: 2688
+ hash: "319824b1143925162f04aaddcfaa65d9"
+ }
+ Frame {
+ msec: 2704
+ hash: "73aa36815f34bf5e005000e7da38555e"
+ }
+ Frame {
+ msec: 2720
+ hash: "73aa36815f34bf5e005000e7da38555e"
+ }
+ Frame {
+ msec: 2736
+ hash: "319824b1143925162f04aaddcfaa65d9"
+ }
+ Frame {
+ msec: 2752
+ hash: "caf0d351d3b6914ca52853a30643ea48"
+ }
+ Frame {
+ msec: 2768
+ hash: "6608412ee80d14e13a1a05fb4716e719"
+ }
+ Frame {
+ msec: 2784
+ hash: "f4f6f002fb76407a5120329972285dc4"
+ }
+ Frame {
+ msec: 2800
+ hash: "474d8b566b9e4ef7dc125a8df30ccbb1"
+ }
+ Frame {
+ msec: 2816
+ hash: "0133138f30be4ffc7f3af3d9f477c4b4"
+ }
+ Frame {
+ msec: 2832
+ hash: "e9ee9d7d0ab9dcea3f28ae71ee19270f"
+ }
+ Frame {
+ msec: 2848
+ hash: "9fd9eb665a42b48583bc28c6c0118799"
+ }
+ Frame {
+ msec: 2864
+ hash: "94231107bc4a7e900fe5f4eb823bd9bf"
+ }
+ Frame {
+ msec: 2880
+ hash: "6011b10728fb1c83f10d3c27366ea3a5"
+ }
+ Frame {
+ msec: 2896
+ image: "flickable-horizontal.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "e456c5fddb5fbcb02662716f19755622"
+ }
+ Frame {
+ msec: 2928
+ hash: "88cef15940302e2b8b43e73234fd7b9c"
+ }
+ Frame {
+ msec: 2944
+ hash: "041aecec2b0b0d59a56e1dd26b45cab1"
+ }
+ Frame {
+ msec: 2960
+ hash: "0d519463c713f3da46ecacd155e1a0f3"
+ }
+ Frame {
+ msec: 2976
+ hash: "5dd0c855b97d298244fb599c9f781651"
+ }
+ Frame {
+ msec: 2992
+ hash: "8677cec5e559e51095d89abfeda8e542"
+ }
+ Frame {
+ msec: 3008
+ hash: "b05fb6e798ab3fed940b5ac4d88ca378"
+ }
+ Frame {
+ msec: 3024
+ hash: "6bc9cc0d3b11ea91856296b0ec934a8b"
+ }
+ Frame {
+ msec: 3040
+ hash: "f4e63f3af69dacbf2d1d719d4d03a266"
+ }
+ Frame {
+ msec: 3056
+ hash: "31ab08997eb86fab062a3128aecbccb5"
+ }
+ Frame {
+ msec: 3072
+ hash: "90736b240ba1e634bd0ea86423908e16"
+ }
+ Frame {
+ msec: 3088
+ hash: "90736b240ba1e634bd0ea86423908e16"
+ }
+ Frame {
+ msec: 3104
+ hash: "e74982557dc06aac572078840c7e889a"
+ }
+ Frame {
+ msec: 3120
+ hash: "e74982557dc06aac572078840c7e889a"
+ }
+ Frame {
+ msec: 3136
+ hash: "ca30c14c7344d1711a35c707f8804f6e"
+ }
+ Frame {
+ msec: 3152
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 3168
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 3184
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 3200
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 412; y: 214
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3216
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 3232
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 3248
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 408; y: 214
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 407; y: 214
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3264
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 403; y: 214
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3280
+ hash: "1991cbb0fb053937f922731d5716032c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 398; y: 214
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3296
+ hash: "df447575a4734bb5bd9badc6e27d98e4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 391; y: 214
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3312
+ hash: "0fbfe1e0d7fb54450188398aa40690cd"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 383; y: 214
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3328
+ hash: "cb62e60296046c73d301d7186e14faed"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 369; y: 213
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3344
+ hash: "909cbd1292476584554e22232cb43639"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 352; y: 211
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3360
+ hash: "e63b7e502dfb2834c06a969b683b9bd3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 331; y: 210
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3376
+ hash: "4ea63cd25a1424042ffc60549a78563c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 314; y: 210
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3392
+ hash: "77e39d2d4bfcacecdae4f014e4506d71"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 300; y: 210
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3408
+ hash: "db576eca8bad67cb8b994f12fc448969"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 288; y: 210
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3424
+ hash: "efeb3f616da9d78505c3c82fc34ee31c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 278; y: 210
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3440
+ hash: "e4f8bb02f8ac6bc40e1801cc8f360078"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 266; y: 210
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3456
+ hash: "82118ef71809e3867717232c4d9c5518"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 252; y: 208
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3472
+ hash: "5363451c696f6c6eb792b23d086243d7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 238; y: 208
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3488
+ hash: "fe6afe8ae8a7c216a1cffc5515f273d5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 227; y: 206
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3504
+ hash: "9b165741d86c70380c15e15cff3fabb6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 224; y: 206
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3520
+ hash: "f5e176355468f4fa224d4dfcdd7525a3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 222; y: 206
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3536
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
+ }
+ Frame {
+ msec: 3552
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
+ }
+ Frame {
+ msec: 3568
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
+ }
+ Frame {
+ msec: 3584
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
+ }
+ Frame {
+ msec: 3600
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
+ }
+ Frame {
+ msec: 3616
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 224; y: 206
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3632
+ hash: "f5e176355468f4fa224d4dfcdd7525a3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 232; y: 204
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3648
+ hash: "acf538fce5f1b90b83474d9898b7cdd7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 246; y: 203
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3664
+ hash: "5a0ee016b8732fbc36064e8a35d91215"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 265; y: 203
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3680
+ hash: "8fd06a14c1de175813845ce8f07db6ec"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 292; y: 201
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3696
+ hash: "26b0ff6ffda0725e0800f7ea3af510ef"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 310; y: 201
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3712
+ hash: "80443f134511be0356a687c9b542b3e7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 321; y: 199
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3728
+ hash: "3eeb98a829d29b3dc52f3d145ac49d58"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 323; y: 199
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3744
+ hash: "f4d43069b16f41a30e5549aae911d4cd"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 324; y: 199
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3760
+ hash: "661c89fa832f0abdcf4ae0c9e8e2d18f"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 324; y: 199
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3776
+ hash: "661c89fa832f0abdcf4ae0c9e8e2d18f"
+ }
+ Frame {
+ msec: 3792
+ hash: "1520f54b6c8606b9e8372c5c06180453"
+ }
+ Frame {
+ msec: 3808
+ hash: "0fcf5e2ce47348cbb5bb485f101fe5ac"
+ }
+ Frame {
+ msec: 3824
+ hash: "2eb070e69de07c89830543e0475fc110"
+ }
+ Frame {
+ msec: 3840
+ hash: "d73c1059219c0655968af268d22e2c18"
+ }
+ Frame {
+ msec: 3856
+ image: "flickable-horizontal.4.png"
+ }
+ Frame {
+ msec: 3872
+ hash: "cc969b2c64839ca6d3b5069c0ed938d0"
+ }
+ Frame {
+ msec: 3888
+ hash: "1f819e18d1297a1c7eeebb7b040bdef8"
+ }
+ Frame {
+ msec: 3904
+ hash: "3643b99afbd8af0953cb39b2c8c04b9f"
+ }
+ Frame {
+ msec: 3920
+ hash: "713fd2e2fa38ab27604cb9cae59f1777"
+ }
+ Frame {
+ msec: 3936
+ hash: "e2508faec7737be2666d87ad715b5f74"
+ }
+ Frame {
+ msec: 3952
+ hash: "fc33b1c7479caeff676ffd885a18d618"
+ }
+ Frame {
+ msec: 3968
+ hash: "aca01143db4f870a56bb7546e84cbc5e"
+ }
+ Frame {
+ msec: 3984
+ hash: "442b58c39fd3745c61a1eb5043fcbb53"
+ }
+ Frame {
+ msec: 4000
+ hash: "7983d7183cc11d6819fa0a006c2d67b4"
+ }
+ Frame {
+ msec: 4016
+ hash: "9fe4e897c6b853f774d11817a0eb53bf"
+ }
+ Frame {
+ msec: 4032
+ hash: "43f528c81ccfa5b9921dfa3564a24c68"
+ }
+ Frame {
+ msec: 4048
+ hash: "dfe04ff0b3ccf205bb38beeab58a4411"
+ }
+ Frame {
+ msec: 4064
+ hash: "32ff30b50b500e9feb51e8eef205783c"
+ }
+ Frame {
+ msec: 4080
+ hash: "7d83ab4c336b05bcf2cde4e7d8031f6c"
+ }
+ Frame {
+ msec: 4096
+ hash: "c92e345e4ffdb30c28d9d5aa5400bd30"
+ }
+ Frame {
+ msec: 4112
+ hash: "02eec604d0c00965aae4ac61b91bdc22"
+ }
+ Frame {
+ msec: 4128
+ hash: "df447575a4734bb5bd9badc6e27d98e4"
+ }
+ Frame {
+ msec: 4144
+ hash: "bac10d8f94a39573313b3b8b2f871c49"
+ }
+ Frame {
+ msec: 4160
+ hash: "e5944c5dc6dec8f0c28b7ec3cd58723d"
+ }
+ Frame {
+ msec: 4176
+ hash: "1991cbb0fb053937f922731d5716032c"
+ }
+ Frame {
+ msec: 4192
+ hash: "50d6538bcaffc343f6626635a3e5899c"
+ }
+ Frame {
+ msec: 4208
+ hash: "f3613f57cdb9ed38d8e3fa636962aa99"
+ }
+ Frame {
+ msec: 4224
+ hash: "10a89da9887cb4bbd812c090a8a56797"
+ }
+ Frame {
+ msec: 4240
+ hash: "89ba74d46970ad2edff701475c059ec8"
+ }
+ Frame {
+ msec: 4256
+ hash: "6e8b84c70e81578a2216e9e975b35434"
+ }
+ Frame {
+ msec: 4272
+ hash: "6e8b84c70e81578a2216e9e975b35434"
+ }
+ Frame {
+ msec: 4288
+ hash: "883b8b180853f1f432ae98ddfe1b6ce3"
+ }
+ Frame {
+ msec: 4304
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4320
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4336
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4352
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4368
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4384
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4400
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4416
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4432
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4448
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4464
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4480
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4496
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4512
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4528
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4544
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4560
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4576
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4592
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4608
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4624
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4640
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4656
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4672
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4688
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4704
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.0.png
index 016902bdb0..e1b0967d11 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.1.png
index a65493670f..c7d4e1d4cb 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.2.png
index cfd5517750..9373fae463 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.3.png
index 016902bdb0..7a30196c14 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.4.png
new file mode 100644
index 0000000000..4c4d17c9e3
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml
index 289af88601..a94aca8c71 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml
@@ -6,309 +6,277 @@ VisualTest {
}
Frame {
msec: 16
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ image: "flickable-horizontal.0.png"
}
Frame {
msec: 32
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 48
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 64
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 80
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 96
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 112
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 128
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 144
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 160
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 176
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 192
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 208
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 224
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 240
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 256
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 272
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 288
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 304
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 320
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 336
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 352
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 368
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 384
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 400
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 416
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 432
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 448
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 464
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 480
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 496
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 512
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 528
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 544
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 560
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 576
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 592
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 608
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 624
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 640
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 656
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 672
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 688
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 704
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 720
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 447; y: 145
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 736
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 752
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 768
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 784
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 800
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 816
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 832
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 848
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 864
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 880
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 896
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 912
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 928
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Frame {
- msec: 944
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 477; y: 171
+ x: 446; y: 145
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 960
- image: "flickable-horizontal.0.png"
+ msec: 784
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 473; y: 171
+ x: 440; y: 146
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 976
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ msec: 800
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 463; y: 171
+ x: 425; y: 151
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 992
- hash: "c4d91a9e7f785ccd50db55f697d75cb9"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 407; y: 157
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 1008
- hash: "c4d91a9e7f785ccd50db55f697d75cb9"
+ msec: 816
+ hash: "c92e345e4ffdb30c28d9d5aa5400bd30"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 449; y: 171
+ x: 359; y: 169
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 1024
- hash: "4f054038668f56cf3fc46dee08504b24"
+ msec: 832
+ hash: "90f94986ab44ab59618e9a5da17b8cc9"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 425; y: 172
+ x: 309; y: 181
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 1040
- hash: "e6ae6e2a8e5fb7204ae1f559b5dc4a63"
+ msec: 848
+ hash: "0154a65f8693b98576101ac1c2fc8761"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 393; y: 172
+ x: 282; y: 187
modifiers: 0
sendToViewport: true
}
@@ -316,884 +284,1292 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 393; y: 172
+ x: 282; y: 187
modifiers: 0
sendToViewport: true
}
Frame {
+ msec: 864
+ hash: "792c1b5267f14c891dae2348a8188a92"
+ }
+ Frame {
+ msec: 880
+ hash: "15ce9e88d4ad2e698bf167d1432c0b8a"
+ }
+ Frame {
+ msec: 896
+ hash: "8f4109ef4c24d286d73f689565a0d056"
+ }
+ Frame {
+ msec: 912
+ hash: "f5728190bf5c94742686f063b4a4b09b"
+ }
+ Frame {
+ msec: 928
+ hash: "a38c7527a9a818b7bc25466b0e4939f9"
+ }
+ Frame {
+ msec: 944
+ hash: "ed3902455fc31a4e3232308b815a4daa"
+ }
+ Frame {
+ msec: 960
+ hash: "a2093589363ac2d50491412e99e0193a"
+ }
+ Frame {
+ msec: 976
+ image: "flickable-horizontal.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "c32349580e3a9586cc1133c935607cf0"
+ }
+ Frame {
+ msec: 1008
+ hash: "cd2068492e346eb20d50aee69e3a3559"
+ }
+ Frame {
+ msec: 1024
+ hash: "f43a1a38894b8ffad009ba995d84b0ee"
+ }
+ Frame {
+ msec: 1040
+ hash: "2d5c4a73df2a054801571f1ce119e31f"
+ }
+ Frame {
msec: 1056
- hash: "3bfaaef12ca852421ad179d8598a306d"
+ hash: "b8825cc6bdca8102a655d797ea41b5b1"
}
Frame {
msec: 1072
- hash: "e00ff5e13a9a97bc11e041f89e4782f5"
+ hash: "3f0be15b85220743d004f2d54b6e137c"
}
Frame {
msec: 1088
- hash: "ae10ada837b21365936672e9a4b4b175"
+ hash: "4b0952d33149b44ffa0a06723a4116c7"
}
Frame {
msec: 1104
- hash: "63566d7f1707025c9ec37e398d0e69ef"
+ hash: "9056bda43259e92cfe56fdf394e2ca54"
}
Frame {
msec: 1120
- hash: "20e9d299cd867d680cf85f99e06cd200"
+ hash: "82ec9f09d2303e5b0b9c05b9a10a84db"
}
Frame {
msec: 1136
- hash: "4d3a19b3c50a20ba1d93a8bcd178a424"
+ hash: "751a9b3054c09d900364d7c9cac8bc2b"
}
Frame {
msec: 1152
- hash: "d373ab5240e438e8234ae05f935c1ef8"
+ hash: "17dfdfef20f9da7e8b6f16df974baea9"
}
Frame {
msec: 1168
- hash: "2f9c00aa1f8a8cc5d10e6c6a0baee366"
+ hash: "108e6d9a5a81df32823bfd7a90a000a7"
}
Frame {
msec: 1184
- hash: "0fd8203b0a33fd8243ecd878f04f9b42"
+ hash: "71dd0d55a3e837d3a8e4b4e318579ade"
}
Frame {
msec: 1200
- hash: "24a197df4209c7076d68031e5dd4fd9e"
+ hash: "8013cdb2615bca89134ea040409af509"
}
Frame {
msec: 1216
- hash: "9e4271eacdc875183e3c8e7a1eb098c2"
+ hash: "4b2826ad4c755690bd837994133f5fac"
}
Frame {
msec: 1232
- hash: "cdf7aac4ff7e5df806977eb38392f5bc"
+ hash: "52d0da7f138bd37ac587a448d6402aca"
}
Frame {
msec: 1248
- hash: "1ace4a1312cad6f173a04c388624a97f"
+ hash: "e634724c5bb294d338210845bf64d2cf"
}
Frame {
msec: 1264
- hash: "193d6d6838ac1d5ddb941fbb340ec506"
+ hash: "59bc5f0d057ee431f289806377f19213"
}
Frame {
msec: 1280
- hash: "ed82807a48f28610ba9bda0c7ab91ce4"
+ hash: "6ef2c5f7766c2cc77b30d636bfaa4422"
}
Frame {
msec: 1296
- hash: "e1168bb9a88a972decb0c537d86d7758"
+ hash: "578d056c3db094420dbaa51bd08ced20"
}
Frame {
msec: 1312
- hash: "828ba428b04826687c6ef19b72318924"
+ hash: "14c6f7a04a52caffefa07af556ccb262"
}
Frame {
msec: 1328
- hash: "7dae52c428253cf44045ffaabaadd2f4"
+ hash: "7cb63d56fec144d0509ce219fc6fe459"
}
Frame {
msec: 1344
- hash: "06e2a81e1a2421523642cfcf17ec22e4"
+ hash: "462dafa7f6427aecf6c28a5dcf5a10cc"
}
Frame {
msec: 1360
- hash: "283997835a54e80c0ab8a0321bd03ce7"
+ hash: "45360814f985ed780a443568a91fc170"
}
Frame {
msec: 1376
- hash: "6354f9379b7b25c8fabda4e5bc3cdf6a"
+ hash: "0d18ceb2436e4f7eb56a3443fab706e6"
}
Frame {
msec: 1392
- hash: "6bc87dfd21d59efd3397e3cfb0d00d25"
+ hash: "1d83f367ba9f7f1d4496208271e925ed"
}
Frame {
msec: 1408
- hash: "4f97fc9aa1f79a6b007a00459386b9ff"
+ hash: "fdbd00ee4c122aef779df42ea53f403a"
}
Frame {
msec: 1424
- hash: "2b5c711ede124c9e97d3ef83a3fdcc8b"
+ hash: "bedd1cb304efd4851813b39a746198a4"
}
Frame {
msec: 1440
- hash: "5a8cbd4ac3fcd920f2aea6e2cfa96467"
+ hash: "9aa7bed86efa9634466736f20ee0ab5b"
}
Frame {
msec: 1456
- hash: "5b32961cb36e519f5b1d50386e796d3e"
+ hash: "00fc8186a7ae44e10195a7b13defa0d2"
}
Frame {
msec: 1472
- hash: "c91f95cccd38cbd1a16ee65abffd40ab"
+ hash: "42d6e8e0bbed879ed63644c83e61e7bd"
}
Frame {
msec: 1488
- hash: "25108050298d3ffc850113971bcf54da"
+ hash: "df074f8c210249e5ef652349479b6325"
}
Frame {
msec: 1504
- hash: "6a236881f2a1cb487ee1945c279e020b"
+ hash: "4f94020437e35cf44dd3576997990ab7"
}
Frame {
msec: 1520
- hash: "2df1824df1cf20022595f64d26adb4ad"
+ hash: "8ca6c3b4fa3be73ac35073356b680a35"
}
Frame {
msec: 1536
- hash: "4ca4a0a4b4fd9f9c4846adebcdc8fd67"
+ hash: "c25eee1c5791383ebc59974e7754eacb"
}
Frame {
msec: 1552
- hash: "1696ef0862ff4772f960d203c43fbddf"
+ hash: "f4917ada78942428cc6b9aa5e56c013d"
}
Frame {
msec: 1568
- hash: "c5846835b8eb5d98c481ee5811344ea1"
+ hash: "23e1e607101fc7260a4ac841344f5fe0"
}
Frame {
msec: 1584
- hash: "fbcb044ee53302de573321b43f068e65"
+ hash: "2dcc7d187d8e0493e5766efbf09ef37c"
}
Frame {
msec: 1600
- hash: "d369e0a6c4a3e63102be29a7362ef9eb"
+ hash: "c1e5602753e80cf44d7b330140c6912e"
}
Frame {
msec: 1616
- hash: "e93131b881805d4aa44949c69f486821"
+ hash: "febaf72d01a3763461b4b7d2ddd7a23e"
}
Frame {
msec: 1632
- hash: "b7aeee9e5065f1d4656e451b542ecf6a"
+ hash: "071262b911b61576f451be25691a57cf"
}
Frame {
msec: 1648
- hash: "05521ca19960c070d5f3dd72c5ade0e4"
+ hash: "44705db9289fd8753b9d63e8bc963b38"
}
Frame {
msec: 1664
- hash: "2c68cb3291cf1f892c8b8eb28b409e4d"
+ hash: "0c41d7b7d36bd083abfc0b83b862cad9"
}
Frame {
msec: 1680
- hash: "5a0908aea91df2b9e65d222829c2b0ba"
+ hash: "0c41d7b7d36bd083abfc0b83b862cad9"
}
Frame {
msec: 1696
- hash: "0d4ff147517eee8b3dbcd51a708b2aa7"
+ hash: "071262b911b61576f451be25691a57cf"
}
Frame {
msec: 1712
- hash: "521e1075de1de89c6e25f469d2728ab7"
+ hash: "a00aa90e894b48203b0446ca287ee712"
}
Frame {
msec: 1728
- hash: "c543447f98ae608058c6c02c8c8665e6"
+ hash: "26c9ca53ee4b084c6595ad65bf4880df"
}
Frame {
msec: 1744
- hash: "ac259db754b7dfb8cce8548527c72e4b"
+ hash: "f4917ada78942428cc6b9aa5e56c013d"
}
Frame {
msec: 1760
- hash: "bc5b68d5ecfb583ae41001e326b7aa9b"
+ hash: "ffedee7bf2d8099e361b8b1706b03f88"
}
Frame {
msec: 1776
- hash: "e08051cb1ab2d8f979a52dc86411f78f"
+ hash: "1778ef1629ce977015b641448b46634f"
}
Frame {
msec: 1792
- hash: "b1746ad9563359f0d70a1aaee62e9bd8"
+ hash: "42d6e8e0bbed879ed63644c83e61e7bd"
}
Frame {
msec: 1808
- hash: "5d6bc33ff2857fb8db582362bf7c19c7"
+ hash: "99e843ec69b79b79b0792e0a2f28cd1b"
}
Frame {
msec: 1824
- hash: "83f2c3a7124f9be4dbe883a27ca7df8e"
+ hash: "8b3ebca70b50a6a93823e015ea80f0f9"
}
Frame {
msec: 1840
- hash: "189f7cfb5ede1f8380b1a05b7e3d942e"
+ hash: "8eaa7f076064ce55051237b04861e408"
}
Frame {
msec: 1856
- hash: "07b1a4e5ca156e6aa1f3e76b825807ce"
+ hash: "6acc0ca5e5808d911287edfa78c8ac02"
}
Frame {
msec: 1872
- hash: "48b25f0acfe6eb3bc2cb9eb16e6595d0"
+ hash: "e9f05899e0b53c21f6efe834095a3ea4"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 91; y: 208
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 93; y: 209
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1888
- hash: "15ae05f5ed098021073c4593587949ea"
+ hash: "e9f05899e0b53c21f6efe834095a3ea4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 99; y: 210
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 108; y: 210
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1904
- hash: "b300f2c75f4aebcf84ed37ad424ca9fa"
+ hash: "d2dece405f5f6ed1de2acb6615a931de"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 142; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1920
- image: "flickable-horizontal.1.png"
+ hash: "21e0f21edc77424e8327c9a3350ecc1d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 198; y: 216
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1936
- hash: "7d8ea492fb1c664502e95e085896c569"
+ image: "flickable-horizontal.2.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 229; y: 218
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 266; y: 220
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1952
- hash: "7513b077e073d78b387309b56e1fd44c"
+ hash: "c10c8b0c94f899414d8b3ef0b7c97646"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 322; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 322; y: 223
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1968
- hash: "ed1ac5cf6d4b081983a8e16258f431bf"
+ hash: "807aff4e6c96a9d0de7fa55e233446b1"
}
Frame {
msec: 1984
- hash: "fbb31f23ba6e5d02011363abfb4b3f18"
+ hash: "dbd02848cefacbb26f4bcb7d8f073d6c"
}
Frame {
msec: 2000
- hash: "6f01df424b38036b9921b4ee1491a1c1"
+ hash: "9a60608d8ea1b39fa2d3851873f2f08e"
}
Frame {
msec: 2016
- hash: "11f706dfacbec5c0be0c2f3c5442f717"
+ hash: "e7b3e3a40281f63889808211d6746374"
}
Frame {
msec: 2032
- hash: "0a70348986f4987f43db3e55af63fca5"
+ hash: "188c225c46ec00105df230bfeea09974"
}
Frame {
msec: 2048
- hash: "6f8b7aaad846f83c6349836d7af34662"
+ hash: "e2e977b42e91d8c5dee57fd8245692eb"
}
Frame {
msec: 2064
- hash: "44723b22aad6d2d814e074ff9324f3c4"
+ hash: "ca2f12fb173c405f95e608858ab982ad"
}
Frame {
msec: 2080
- hash: "44723b22aad6d2d814e074ff9324f3c4"
+ hash: "fa86ee5f25fa425cf2569c8ef570b9d8"
}
Frame {
msec: 2096
- hash: "44723b22aad6d2d814e074ff9324f3c4"
+ hash: "9b74656866fb8c7394bbbecec6414aca"
}
Frame {
msec: 2112
- hash: "1c12d2c68223324f040b7a693cef2074"
+ hash: "87147326d1baab174c0f9a5ccdc2cb84"
}
Frame {
msec: 2128
- hash: "0a70348986f4987f43db3e55af63fca5"
+ hash: "c0d00f98c71bf3f8e5954b45fbab95a8"
}
Frame {
msec: 2144
- hash: "bf4de7baf2730cdaf83887d50d577986"
+ hash: "c087d1d62e56e573b55c1d8599bba8a6"
}
Frame {
msec: 2160
- hash: "23ddb2c0793d7161a0d8c5b2a777dceb"
+ hash: "dd5a94c6febdee58e8f115cb75131aaa"
}
Frame {
msec: 2176
- hash: "7513b077e073d78b387309b56e1fd44c"
+ hash: "a7465d6137f865f512ce65ceb29533b4"
}
Frame {
msec: 2192
- hash: "83fa82362057466dff6a243a95d423db"
+ hash: "409086f6bb661aab8b548fea56d7e6b1"
}
Frame {
msec: 2208
- hash: "0e60b632ce511109cb01d2e5ff6945f8"
+ hash: "6a22911e0fb58df31271baa463ff599d"
}
Frame {
msec: 2224
- hash: "78c25194827c4243a16807491f798cdf"
+ hash: "c4f6dd30d5fdfcf91a8b29cf5c622423"
}
Frame {
msec: 2240
- hash: "4c9dc46794d4a32e654395bb9d78409e"
+ hash: "5a95b83f237c7243a198a43e9a587179"
}
Frame {
msec: 2256
- hash: "e996d4f3a0b3a4a4ed29ec23a1ad5615"
+ hash: "d79ed290efc6dbd976d574bf0b14a6a3"
}
Frame {
msec: 2272
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "a7bcb436e96d7c981852239462573495"
}
Frame {
msec: 2288
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "f63cc82e351daab503e316f8b516990f"
}
Frame {
msec: 2304
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "4ea63cd25a1424042ffc60549a78563c"
}
Frame {
msec: 2320
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "ef0fb776012575b3b0dbf6e5f4dee571"
}
Frame {
msec: 2336
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "e2508faec7737be2666d87ad715b5f74"
}
Frame {
msec: 2352
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "9fe4e897c6b853f774d11817a0eb53bf"
}
Frame {
msec: 2368
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "c122ce2e73cbfedcc99d649c21d91f9d"
}
Frame {
msec: 2384
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "883b8b180853f1f432ae98ddfe1b6ce3"
}
Frame {
msec: 2400
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "d0808284e431da60f61d571c257a3011"
}
Frame {
msec: 2416
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "df90f19450bf4d9496aab987a89e3a02"
}
Frame {
msec: 2432
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "5640c1e64556b90e7fbd4448fa9db462"
}
Frame {
msec: 2448
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "6d9b5c2f7d0dedbbc444e69bb39fed08"
}
Frame {
msec: 2464
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "485c4a8049068cf73bf22db5fd3618be"
}
Frame {
msec: 2480
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "9e25da59c9e7e4cf7796902e8e2ff92a"
}
Frame {
msec: 2496
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "bd45e8f2442d7c1a1b16a762bc29e7cf"
}
Frame {
msec: 2512
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "ec1013d23e581dbb39b1549d2e1b3b32"
}
Frame {
msec: 2528
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "1ea3c2fde8ee3a14406e027f2124d793"
}
Frame {
msec: 2544
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "3c3f31a05fb2f32538872c9fa158aaab"
}
Frame {
msec: 2560
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "05a84d9c55e634ec01edd2a63e13613b"
}
Frame {
msec: 2576
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "0f7ccd2da58e2e73b0ab18bb681dafd5"
}
Frame {
msec: 2592
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "e481ff78029f8bc4bf7c697db6824f6a"
}
Frame {
msec: 2608
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "efb92b8b7a90acabeb4a8d5cae52fe3c"
}
Frame {
msec: 2624
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "4728dd0fac4edf40cfd5ef5a422b4ed9"
}
Frame {
msec: 2640
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "27641dcd772c979ae22d12bfbadbb67f"
}
Frame {
msec: 2656
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "26268714105bc4832d336a38a859fc50"
}
Frame {
msec: 2672
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "caf0d351d3b6914ca52853a30643ea48"
}
Frame {
msec: 2688
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "319824b1143925162f04aaddcfaa65d9"
}
Frame {
msec: 2704
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "73aa36815f34bf5e005000e7da38555e"
}
Frame {
msec: 2720
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "73aa36815f34bf5e005000e7da38555e"
}
Frame {
msec: 2736
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "319824b1143925162f04aaddcfaa65d9"
}
Frame {
msec: 2752
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "caf0d351d3b6914ca52853a30643ea48"
}
Frame {
msec: 2768
- hash: "cd6770afe63f28517a93f0961cf9c26e"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 152; y: 189
- modifiers: 0
- sendToViewport: true
+ hash: "c87ba4dda0a5c931d0c7ae74a0fb2896"
}
Frame {
msec: 2784
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "ab551561ad8a3937558afc080b3e6130"
}
Frame {
msec: 2800
- hash: "cd6770afe63f28517a93f0961cf9c26e"
+ hash: "474d8b566b9e4ef7dc125a8df30ccbb1"
}
Frame {
msec: 2816
- hash: "cd6770afe63f28517a93f0961cf9c26e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 190
- modifiers: 0
- sendToViewport: true
+ hash: "cc7dfbcfafa12d40210a4d5fa7f60862"
}
Frame {
msec: 2832
- hash: "cd6770afe63f28517a93f0961cf9c26e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 169; y: 191
- modifiers: 0
- sendToViewport: true
+ hash: "3c3f31a05fb2f32538872c9fa158aaab"
}
Frame {
msec: 2848
- hash: "edd015434d7ead96c03a51a2b1c9e527"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 202; y: 192
- modifiers: 0
- sendToViewport: true
+ hash: "9705c0dd30c3f381084ec29242bebb2f"
}
Frame {
msec: 2864
- hash: "ea0eda505daea4171e27aac358aa6a4a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 256; y: 192
- modifiers: 0
- sendToViewport: true
+ hash: "917579854722d6e6711811e10cbe229f"
}
Frame {
msec: 2880
- image: "flickable-horizontal.2.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 331; y: 192
- modifiers: 0
- sendToViewport: true
+ hash: "43fa578250e214ed9ad6894329a27c54"
}
Frame {
msec: 2896
- hash: "34f70dfe1c226e63300112aa9a4a6968"
+ image: "flickable-horizontal.3.png"
}
Frame {
msec: 2912
- hash: "34f70dfe1c226e63300112aa9a4a6968"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 395; y: 194
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 395; y: 194
- modifiers: 0
- sendToViewport: true
+ hash: "5640c1e64556b90e7fbd4448fa9db462"
}
Frame {
msec: 2928
- hash: "dd61e0ae58d7a344908a10bb97cfcb39"
+ hash: "88cef15940302e2b8b43e73234fd7b9c"
}
Frame {
msec: 2944
- hash: "14a384c4bdd3e89808761d1e86976170"
+ hash: "041aecec2b0b0d59a56e1dd26b45cab1"
}
Frame {
msec: 2960
- hash: "0e82a4920a53239f117448cd0e0b27f2"
+ hash: "0d519463c713f3da46ecacd155e1a0f3"
}
Frame {
msec: 2976
- hash: "711e29bf6fbbeb7882064adb0619f4ac"
+ hash: "5dd0c855b97d298244fb599c9f781651"
}
Frame {
msec: 2992
- hash: "43307cbfe1688daf300fafc8df0082b8"
+ hash: "bfc51621e9bc95d2d46cec632a3fae12"
}
Frame {
msec: 3008
- hash: "46d788d926c03d85a68b66252e73ae90"
+ hash: "b05fb6e798ab3fed940b5ac4d88ca378"
}
Frame {
msec: 3024
- hash: "a0042935ad2d5557c906050d4a3581c9"
+ hash: "6bc9cc0d3b11ea91856296b0ec934a8b"
}
Frame {
msec: 3040
- hash: "b618a40490ca0aea310f08b452fa8c68"
+ hash: "f4e63f3af69dacbf2d1d719d4d03a266"
}
Frame {
msec: 3056
- hash: "e2aaad7f160a6d77dd788c76bb8cb8a7"
+ hash: "31ab08997eb86fab062a3128aecbccb5"
}
Frame {
msec: 3072
- hash: "ab5c27fa790c67a6678db0bbae1ae477"
+ hash: "90736b240ba1e634bd0ea86423908e16"
}
Frame {
msec: 3088
- hash: "b43ed7af838cd6edd32393fc56cf8fb1"
+ hash: "90736b240ba1e634bd0ea86423908e16"
}
Frame {
msec: 3104
- hash: "88ac50602c9f27fb5b882ad32d14ff46"
+ hash: "e74982557dc06aac572078840c7e889a"
}
Frame {
msec: 3120
- hash: "259af2e080ed93e16cb633fa940c7c08"
+ hash: "e74982557dc06aac572078840c7e889a"
}
Frame {
msec: 3136
- hash: "d05bec2351068d552b7bbbf47cf82fad"
+ hash: "ca30c14c7344d1711a35c707f8804f6e"
}
Frame {
msec: 3152
- hash: "5354b8e07f1ed22950687187ee7a0290"
+ hash: "e616110d39009f0d636b816828cc0ccb"
}
Frame {
msec: 3168
- hash: "3bfaaef12ca852421ad179d8598a306d"
+ hash: "e616110d39009f0d636b816828cc0ccb"
}
Frame {
msec: 3184
- hash: "40d3a77fce7a9a9ca7ae6023fc4cfc10"
+ hash: "e616110d39009f0d636b816828cc0ccb"
}
Frame {
msec: 3200
- hash: "5837c0122aa6b28518f1b7043ead99a9"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 412; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3216
- hash: "9514d8530275e4642810ac441e8de353"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 3232
- hash: "3b720882f52340549d8e1b9659443461"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
Frame {
msec: 3248
- hash: "4de5b95c8f4949a4f1ee9a119940e80a"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 408; y: 214
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 407; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3264
- hash: "a35097c00483e0b481222e4ad220c7a4"
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 403; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3280
- hash: "82ac348a63a4e358a877a2e45d48e2b1"
+ hash: "1991cbb0fb053937f922731d5716032c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 398; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3296
- hash: "1322108409d1fa87d128f0c44c81ab4b"
+ hash: "df447575a4734bb5bd9badc6e27d98e4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 391; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3312
- hash: "f6b030effcca891ab20073f106b22d73"
+ hash: "0fbfe1e0d7fb54450188398aa40690cd"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 383; y: 214
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3328
- hash: "a7ccd998ac2ff2777d9423d704ddef48"
+ hash: "cb62e60296046c73d301d7186e14faed"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 369; y: 213
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3344
- hash: "b6d971a4f3321b7f3632e778ce733589"
+ hash: "909cbd1292476584554e22232cb43639"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 352; y: 211
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3360
- hash: "b6d971a4f3321b7f3632e778ce733589"
+ hash: "e63b7e502dfb2834c06a969b683b9bd3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 331; y: 210
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3376
- hash: "b6d971a4f3321b7f3632e778ce733589"
+ hash: "4ea63cd25a1424042ffc60549a78563c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 314; y: 210
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3392
- hash: "82ef6700a513e39508fb6de5ef07f1e7"
+ hash: "77e39d2d4bfcacecdae4f014e4506d71"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 300; y: 210
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3408
- hash: "9e4c4d479bc0b1a61566eae12416bea6"
+ hash: "db576eca8bad67cb8b994f12fc448969"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 288; y: 210
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3424
- hash: "f6b030effcca891ab20073f106b22d73"
+ hash: "efeb3f616da9d78505c3c82fc34ee31c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 278; y: 210
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3440
- hash: "8968acd022a9ba6fcc3ea52bdd7268c4"
+ hash: "e4f8bb02f8ac6bc40e1801cc8f360078"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 266; y: 210
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3456
- hash: "de8f1a1fd680af475173d5f81e85b26c"
+ hash: "82118ef71809e3867717232c4d9c5518"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 252; y: 208
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3472
- hash: "82e8c0c7cb7c2b1e8d7a5fc019533e6b"
+ hash: "5363451c696f6c6eb792b23d086243d7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 238; y: 208
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3488
- hash: "f820d250252cd910af97e5c9be181457"
+ hash: "fe6afe8ae8a7c216a1cffc5515f273d5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 227; y: 206
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3504
- hash: "a40558c1fbf328d3c891b473b2454020"
+ hash: "9b165741d86c70380c15e15cff3fabb6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 224; y: 206
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3520
- hash: "0ef9e64bad67670102e1e4d9ef0e96f3"
+ hash: "f5e176355468f4fa224d4dfcdd7525a3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 222; y: 206
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3536
- hash: "1d8013765ac2d3fe09ccaa6db098a208"
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
}
Frame {
msec: 3552
- hash: "1d8013765ac2d3fe09ccaa6db098a208"
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
}
Frame {
msec: 3568
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
}
Frame {
msec: 3584
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
}
Frame {
msec: 3600
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
}
Frame {
msec: 3616
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "8c5a14a76e052cc6503a3e78245d1da3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 224; y: 206
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3632
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "f5e176355468f4fa224d4dfcdd7525a3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 232; y: 204
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3648
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "acf538fce5f1b90b83474d9898b7cdd7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 246; y: 203
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3664
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "5a0ee016b8732fbc36064e8a35d91215"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 265; y: 203
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3680
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "8fd06a14c1de175813845ce8f07db6ec"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 292; y: 201
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3696
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "26b0ff6ffda0725e0800f7ea3af510ef"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 310; y: 201
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3712
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "80443f134511be0356a687c9b542b3e7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 321; y: 199
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3728
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "3eeb98a829d29b3dc52f3d145ac49d58"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 323; y: 199
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3744
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "f4d43069b16f41a30e5549aae911d4cd"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 324; y: 199
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3760
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "661c89fa832f0abdcf4ae0c9e8e2d18f"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 324; y: 199
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3776
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "661c89fa832f0abdcf4ae0c9e8e2d18f"
}
Frame {
msec: 3792
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "1520f54b6c8606b9e8372c5c06180453"
}
Frame {
msec: 3808
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "0fcf5e2ce47348cbb5bb485f101fe5ac"
}
Frame {
msec: 3824
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "2eb070e69de07c89830543e0475fc110"
}
Frame {
msec: 3840
- image: "flickable-horizontal.3.png"
+ hash: "d73c1059219c0655968af268d22e2c18"
}
Frame {
msec: 3856
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ image: "flickable-horizontal.4.png"
}
Frame {
msec: 3872
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "cc969b2c64839ca6d3b5069c0ed938d0"
}
Frame {
msec: 3888
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "1f819e18d1297a1c7eeebb7b040bdef8"
}
Frame {
msec: 3904
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "3643b99afbd8af0953cb39b2c8c04b9f"
}
Frame {
msec: 3920
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "713fd2e2fa38ab27604cb9cae59f1777"
}
Frame {
msec: 3936
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "e2508faec7737be2666d87ad715b5f74"
}
Frame {
msec: 3952
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "fc33b1c7479caeff676ffd885a18d618"
}
Frame {
msec: 3968
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "aca01143db4f870a56bb7546e84cbc5e"
}
Frame {
msec: 3984
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "442b58c39fd3745c61a1eb5043fcbb53"
}
Frame {
msec: 4000
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "7983d7183cc11d6819fa0a006c2d67b4"
}
Frame {
msec: 4016
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "9fe4e897c6b853f774d11817a0eb53bf"
}
Frame {
msec: 4032
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "43f528c81ccfa5b9921dfa3564a24c68"
}
Frame {
msec: 4048
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "dfe04ff0b3ccf205bb38beeab58a4411"
}
Frame {
msec: 4064
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "32ff30b50b500e9feb51e8eef205783c"
}
Frame {
msec: 4080
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "7d83ab4c336b05bcf2cde4e7d8031f6c"
}
Frame {
msec: 4096
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "c92e345e4ffdb30c28d9d5aa5400bd30"
}
Frame {
msec: 4112
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "02eec604d0c00965aae4ac61b91bdc22"
}
Frame {
msec: 4128
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "df447575a4734bb5bd9badc6e27d98e4"
}
Frame {
msec: 4144
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "bac10d8f94a39573313b3b8b2f871c49"
}
Frame {
msec: 4160
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
+ hash: "e5944c5dc6dec8f0c28b7ec3cd58723d"
}
Frame {
msec: 4176
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "1991cbb0fb053937f922731d5716032c"
}
Frame {
msec: 4192
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "50d6538bcaffc343f6626635a3e5899c"
}
Frame {
msec: 4208
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "f3613f57cdb9ed38d8e3fa636962aa99"
}
Frame {
msec: 4224
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "10a89da9887cb4bbd812c090a8a56797"
}
Frame {
msec: 4240
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "89ba74d46970ad2edff701475c059ec8"
}
Frame {
msec: 4256
- hash: "0fa60818532d1e5c20cd82ce3d61e3f7"
+ hash: "6e8b84c70e81578a2216e9e975b35434"
+ }
+ Frame {
+ msec: 4272
+ hash: "6e8b84c70e81578a2216e9e975b35434"
+ }
+ Frame {
+ msec: 4288
+ hash: "883b8b180853f1f432ae98ddfe1b6ce3"
+ }
+ Frame {
+ msec: 4304
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4320
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4336
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4352
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4368
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4384
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4400
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4416
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4432
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4448
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4464
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4480
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4496
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4512
+ hash: "e616110d39009f0d636b816828cc0ccb"
+ }
+ Frame {
+ msec: 4528
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4544
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4560
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4576
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4592
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4608
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4624
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4640
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4656
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4672
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4688
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
+ }
+ Frame {
+ msec: 4704
+ hash: "244c12e82ee0b2528a0dbb02a8b8134a"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.0.png
index 18fef53434..2af1a3ec78 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.1.png
index 18fef53434..8334a3f0e8 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.10.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.10.png
deleted file mode 100644
index b352c68c1b..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.10.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.11.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.11.png
deleted file mode 100644
index ce7ee68dac..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.11.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.12.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.12.png
deleted file mode 100644
index d8cdacfa4c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.12.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.13.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.13.png
deleted file mode 100644
index 0c2fa7b064..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.13.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.14.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.14.png
deleted file mode 100644
index e9b30282df..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.14.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.15.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.15.png
deleted file mode 100644
index 2186a8b147..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.15.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.16.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.16.png
deleted file mode 100644
index b4590af80b..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.16.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.17.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.17.png
deleted file mode 100644
index fe29f19702..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.17.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.18.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.18.png
deleted file mode 100644
index fe29f19702..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.18.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.19.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.19.png
deleted file mode 100644
index 4f8587fa9b..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.19.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.2.png
index 0a7cc039fa..c7058490bb 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.20.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.20.png
deleted file mode 100644
index 4f8587fa9b..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.20.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.21.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.21.png
deleted file mode 100644
index c0b0bdfae5..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.21.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.22.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.22.png
deleted file mode 100644
index 4168c3b54f..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.22.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.23.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.23.png
deleted file mode 100644
index 18fef53434..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.23.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.24.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.24.png
deleted file mode 100644
index e69de29bb2..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.24.png
+++ /dev/null
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.3.png
index fc6669d666..c7058490bb 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.4.png
index c0b0bdfae5..349dca2f91 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.5.png
index 2ffa96e05b..a0e84e3ead 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.6.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.6.png
index f550b89209..e5c15833a6 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.7.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.7.png
index f550b89209..2af1a3ec78 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.8.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.8.png
index f550b89209..06468e40d9 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.9.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.9.png
deleted file mode 100644
index f550b89209..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml
index a5ca4511ed..920a48fc15 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml
@@ -6,625 +6,789 @@ VisualTest {
}
Frame {
msec: 16
- hash: "8443c45791c906a9fe23831844f48a1c"
+ image: "flickable-vertical.0.png"
}
Frame {
msec: 32
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 48
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 64
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 80
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 96
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 112
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 128
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 144
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 160
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 176
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 192
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 208
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 224
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 240
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 256
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 272
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
msec: 288
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 159; y: 207
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 304
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "3d1b648229210ae5b57a0be51cc02f67"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 159; y: 206
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 320
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "3d1b648229210ae5b57a0be51cc02f67"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 159; y: 205
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 159; y: 203
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 336
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "3d1b648229210ae5b57a0be51cc02f67"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 159; y: 199
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 157; y: 190
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 352
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 155; y: 176
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 153; y: 158
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 368
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "57fa1d842d37df12004b493c1c5761f3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 151; y: 141
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 148; y: 118
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 384
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "521a8188877551a97cd3ea82d209e8ae"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 146; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 141; y: 70
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 400
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "ce126aaade1532e22a35416fd7203dde"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 136; y: 46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 136; y: 46
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 416
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "aa9c4301332240ccc00ec99a05b7f9c9"
}
Frame {
msec: 432
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "db0a670d61133a3420a3581ecb532773"
}
Frame {
msec: 448
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b34de164d5ec0294ca27281e1e5e3cd6"
}
Frame {
msec: 464
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "8636af4591c61c4b4a548f3a38749413"
}
Frame {
msec: 480
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "eee4fa336149528dfb16565b856ca692"
}
Frame {
msec: 496
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "85eeaeaf359ed87417be68dc18c06d0c"
}
Frame {
msec: 512
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "d5db4af6cf35c61146bd24646d82ab83"
}
Frame {
msec: 528
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "2189fc03c337fe41f3d9f51929c9860f"
}
Frame {
msec: 544
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "4e3e283fb402dc4ec79f65878a513747"
}
Frame {
msec: 560
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "62f4281d8e049bc12b636b7ebe3862df"
}
Frame {
msec: 576
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "cf9a0a968459a1283fff91102eb29ba3"
}
Frame {
msec: 592
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "c432221928096cff3b76c8034db26b43"
}
Frame {
msec: 608
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "3df59808e56955c3c161609b72d93c7f"
}
Frame {
msec: 624
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "c497bcbe500905b8a69fd310fd7c7e1a"
}
Frame {
msec: 640
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "7dceef52fab6dc38d140e3097e39a271"
}
Frame {
msec: 656
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "c7bbd81b452db98fb8fd892762a23df6"
}
Frame {
msec: 672
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "17efc9793ef2966722544d561312b17a"
}
Frame {
msec: 688
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "1bf05b272ad6b8e5d134c94d9ba62030"
}
Frame {
msec: 704
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "cad61ba68fdfb26cfb136f22a2f8cc0c"
}
Frame {
msec: 720
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "0ce5ff1a1d9a6193ef763affa39cb790"
}
Frame {
msec: 736
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "880bce9130454aaf1261842b8f9b9a57"
}
Frame {
msec: 752
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "ab78cadac88156d9755d8b70d26384e8"
}
Frame {
msec: 768
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "4a22e502c105a7df0845ca75cbdfb0ec"
}
Frame {
msec: 784
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "d6209a0b9b9e0f2072179a4623c70fbd"
}
Frame {
msec: 800
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "85e85567831cf57df1f013f5bf3beb86"
}
Frame {
msec: 816
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "602d2e02029178faeb99748e2f70827e"
}
Frame {
msec: 832
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "fd4dbb6f47f6681af98eb6781ae7de58"
}
Frame {
msec: 848
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "faf3be40e402768724703f5d0051249f"
}
Frame {
msec: 864
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bc650ca5b7a3bdc1f0f051b9481faf29"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 109; y: 69
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 880
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bc650ca5b7a3bdc1f0f051b9481faf29"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 110; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 110; y: 71
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 896
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bc650ca5b7a3bdc1f0f051b9481faf29"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 110; y: 74
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 111; y: 79
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 912
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "f2a679f2b7585245d4f1896fed4e0d1e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 111; y: 89
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 113; y: 104
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 928
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "721b5fa42f583c1e1e1a751fc8aad270"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 115; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 115; y: 135
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 944
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "7e3ddefca9a99d6b9103ffd4524bc593"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 118; y: 160
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 120; y: 183
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 960
- image: "flickable-vertical.0.png"
+ hash: "7858d23cb4c206676eca51c1c09802b5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 122; y: 205
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 124; y: 230
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 124; y: 230
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 976
- hash: "8443c45791c906a9fe23831844f48a1c"
+ image: "flickable-vertical.1.png"
}
Frame {
msec: 992
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "e723da5ecaffe31f03b1d5ca6765229b"
}
Frame {
msec: 1008
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "73d169bf6bdfce801b824b7b560c3fad"
}
Frame {
msec: 1024
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "4e3e283fb402dc4ec79f65878a513747"
}
Frame {
msec: 1040
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "38c2e2835c20dbee55c69d0211a0be2d"
}
Frame {
msec: 1056
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "84e668ba374ff0004dd7222933a635cf"
}
Frame {
msec: 1072
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "349c7a84ff8f9b52d39dba1282353167"
}
Frame {
msec: 1088
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b63218110c65b6d7b4bc2d63155204cd"
}
Frame {
msec: 1104
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "aad65a7070aa668dd8ce4a3cc0f0f117"
}
Frame {
msec: 1120
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "c4ae97e1d1f2efbc998f9b57c2373201"
}
Frame {
msec: 1136
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "94701ffaa4f45924ad89f92a30157c7d"
}
Frame {
msec: 1152
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "eee4fa336149528dfb16565b856ca692"
}
Frame {
msec: 1168
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "ff1a053c0af99c51353503002515843d"
}
Frame {
msec: 1184
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "118494c60034b0e265e28b34e3128d00"
}
Frame {
msec: 1200
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "bf693bffb37d7554a437eca21bdec7c1"
}
Frame {
msec: 1216
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "880f60263cd79fb6a1bff7252d2373bb"
}
Frame {
msec: 1232
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b34de164d5ec0294ca27281e1e5e3cd6"
}
Frame {
msec: 1248
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "e1609c4e40fb9e043a9fff683b94c6c4"
}
Frame {
msec: 1264
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "2450b61b84c24727232c779114e6a474"
}
Frame {
msec: 1280
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "cf5ac4a5e3d42b3d4e171ed3227cfa85"
}
Frame {
msec: 1296
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "5cb5576ab347647ca881d4d450732df3"
}
Frame {
msec: 1312
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "34dc672ebfd75ec017d0c2f0bd435cd8"
}
Frame {
msec: 1328
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "aa9c4301332240ccc00ec99a05b7f9c9"
}
Frame {
msec: 1344
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "3f98121997a1613bd49d22003d1a1887"
}
Frame {
msec: 1360
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "86732d3e900877ae7a8615b7448afaaa"
}
Frame {
msec: 1376
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "7e2f2786d3c0540a0b6559fffe06ad3c"
}
Frame {
msec: 1392
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "79e00bbe77f0a178e8db30023a881c3f"
}
Frame {
msec: 1408
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "5f611226b3aa38f9aa3cd6a2dbd01f12"
}
Frame {
msec: 1424
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "4f4cd776b76272cfe79b86a108bd6b6e"
}
Frame {
msec: 1440
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "a746404a1a26e2a25b8d364dbef46eef"
}
Frame {
msec: 1456
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "9124d97d120de1806d86c8f437ec4ed2"
}
Frame {
msec: 1472
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "4fda328eafe6ec2d02d939517d6d82e3"
}
Frame {
msec: 1488
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "6afb6abe291c9e9628fd0b8c3da5d9db"
}
Frame {
msec: 1504
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "cb5962fe94c5d3ef754ff45f905a5c88"
}
Frame {
msec: 1520
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "57b5fc47ed700831b3dc3f2afbb1c3ed"
}
Frame {
msec: 1536
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "38793fb8a19c9566c8dd9d23c9a15b5d"
}
Frame {
msec: 1552
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "2e311a5dc484e9f4bc7bd85d32a693b1"
}
Frame {
msec: 1568
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "69d1eed68fba918e831899c8b84374a1"
}
Frame {
msec: 1584
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "c872391012e6ab2a6d1eb98c7f47f9e8"
}
Frame {
msec: 1600
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "cf12f90835d823550cd83d472b4f022f"
}
Frame {
msec: 1616
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "fbb2f03ddbd87ed419386eb2942bccac"
}
Frame {
msec: 1632
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "0788a0fdb51cedba0f8b597a4cc38ebe"
}
Frame {
msec: 1648
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "b6595edf06fba22f3258c9b433af6ab8"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 44; y: 282
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1664
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "521a8188877551a97cd3ea82d209e8ae"
}
Frame {
msec: 1680
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "4d923cd520c00f5cd985283d62cf17ec"
}
Frame {
msec: 1696
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "7ccff14d344c7090fa634f6defd6511e"
}
Frame {
msec: 1712
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 44; y: 282
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1728
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1744
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1760
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1776
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1792
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1808
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1824
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1840
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1856
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1872
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1888
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1904
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1920
- image: "flickable-vertical.1.png"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1936
- hash: "8443c45791c906a9fe23831844f48a1c"
+ image: "flickable-vertical.2.png"
}
Frame {
msec: 1952
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1968
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 1984
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 2000
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 2016
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 2032
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 2048
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 2064
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
msec: 2080
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2096
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2112
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2128
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2144
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2160
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2176
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2192
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2208
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2224
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2240
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2256
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2272
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2288
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2304
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2320
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2336
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2352
- hash: "8443c45791c906a9fe23831844f48a1c"
- }
- Frame {
- msec: 2368
- hash: "8443c45791c906a9fe23831844f48a1c"
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 143; y: 387
+ x: 95; y: 222
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 2384
- hash: "a21e65718bc7a0cdcbeb058d0cbd2977"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 144; y: 386
+ x: 95; y: 221
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2400
- hash: "a21e65718bc7a0cdcbeb058d0cbd2977"
+ msec: 2096
+ hash: "888c68103c4eef2f65ef32a93be8286a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 145; y: 386
+ x: 95; y: 220
modifiers: 0
sendToViewport: true
}
@@ -632,43 +796,39 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 147; y: 380
+ x: 95; y: 218
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2416
- hash: "a21e65718bc7a0cdcbeb058d0cbd2977"
+ msec: 2112
+ hash: "888c68103c4eef2f65ef32a93be8286a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 151; y: 372
+ x: 95; y: 216
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 2432
- hash: "90d9c65705a006741671657d00ab9dba"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 159; y: 346
+ x: 95; y: 212
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2448
- hash: "8c6301fb7409a22fda85072d48e838c8"
+ msec: 2128
+ hash: "888c68103c4eef2f65ef32a93be8286a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 161; y: 328
+ x: 96; y: 205
modifiers: 0
sendToViewport: true
}
@@ -676,763 +836,39 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 161; y: 304
+ x: 96; y: 195
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2464
- hash: "f5121fd6b0f20844d13cd8625a1a5047"
+ msec: 2144
+ hash: "888c68103c4eef2f65ef32a93be8286a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 159; y: 276
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 159; y: 276
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 2480
- hash: "0d64b804b3b7e3ee052395f612d62bcf"
- }
- Frame {
- msec: 2496
- hash: "17b68429dfaf80bb3313e78bb01d6c4e"
- }
- Frame {
- msec: 2512
- hash: "e86ea3b103a7d9f95f7484f3579a95b5"
- }
- Frame {
- msec: 2528
- hash: "884d3842f4aa2a38ff73511b143789a0"
- }
- Frame {
- msec: 2544
- hash: "646d1dd3003ccac06b7251e8ce1beb2f"
- }
- Frame {
- msec: 2560
- hash: "ff66db77c56bf6830bc39211b3441e69"
- }
- Frame {
- msec: 2576
- hash: "8ff9c081cf823adaf6b17014fc582f12"
- }
- Frame {
- msec: 2592
- hash: "7b1563aed6f030003e04f19bb6e91a51"
- }
- Frame {
- msec: 2608
- hash: "3661b26f082e44cbc38e6033c28e99cb"
- }
- Frame {
- msec: 2624
- hash: "8e0f117dc1f2527d6b2b3f0c849fbda1"
- }
- Frame {
- msec: 2640
- hash: "5a13b0045bc132ec6c917a6d7ddf9c7a"
- }
- Frame {
- msec: 2656
- hash: "06f332d287ed14b29dd0a252d59565a2"
- }
- Frame {
- msec: 2672
- hash: "7b1512aabac1fb17ecc8e0c771e2477f"
- }
- Frame {
- msec: 2688
- hash: "22b62a7b42df6bbafad76d99001616c7"
- }
- Frame {
- msec: 2704
- hash: "0f6588fc79fa06097b2ba9bf6b1d6d14"
- }
- Frame {
- msec: 2720
- hash: "c7849941c7572b3581a7eb9423838d90"
- }
- Frame {
- msec: 2736
- hash: "8ddd8e9dc33698ecca6e19f2318e1c2e"
- }
- Frame {
- msec: 2752
- hash: "1606eb49c73e60445d9eca11e23a33f9"
- }
- Frame {
- msec: 2768
- hash: "6a7e58d27492742bf3d853ee37144dae"
- }
- Frame {
- msec: 2784
- hash: "a55ba5b7ccdabd39385c6cb32e8e1b26"
- }
- Frame {
- msec: 2800
- hash: "afe5705e8ebc240babee4a88a4321189"
- }
- Frame {
- msec: 2816
- hash: "807d92ab4b8d2295f3abfd3508258dd5"
- }
- Frame {
- msec: 2832
- hash: "ae95ed79eee246c74535d9ca97878ce6"
- }
- Frame {
- msec: 2848
- hash: "c8cf5d07a06646552d5595603532b786"
- }
- Frame {
- msec: 2864
- hash: "45971fd130662a263fcd86513aee222d"
- }
- Frame {
- msec: 2880
- image: "flickable-vertical.2.png"
- }
- Frame {
- msec: 2896
- hash: "8e78a9098ebd02cc828b76609c58d6b9"
- }
- Frame {
- msec: 2912
- hash: "7f4d7a1c8e0a5494bf7f37a0a165d02b"
- }
- Frame {
- msec: 2928
- hash: "881ed825133259e731b71cf6251ed862"
- }
- Frame {
- msec: 2944
- hash: "8fb86c54b4e0280de18eb2d4f1c55e68"
- }
- Frame {
- msec: 2960
- hash: "58ad7494c0bddc0de86bfd041f45a5d3"
- }
- Frame {
- msec: 2976
- hash: "87489ba1390ee152a7de023e8ba25c72"
- }
- Frame {
- msec: 2992
- hash: "b1f06b26110799e88837781cdf4688a7"
- }
- Frame {
- msec: 3008
- hash: "d23e94ef53ce3b8143a716028ab729f9"
- }
- Frame {
- msec: 3024
- hash: "1c5fdf8d85537836b698a50fcab58a4e"
- }
- Frame {
- msec: 3040
- hash: "bd9c6ea06278efa4d491519734d0032f"
- }
- Frame {
- msec: 3056
- hash: "b533e6543ca4efb34e187d540e4ed7e0"
- }
- Frame {
- msec: 3072
- hash: "65f4ff7328ce366671436512da44a094"
- }
- Frame {
- msec: 3088
- hash: "e7afcc4c29cd1868bcf1ebea1d19fca1"
- }
- Frame {
- msec: 3104
- hash: "ddaf80f4b1d98b07fe4bf8282e13b2a8"
- }
- Frame {
- msec: 3120
- hash: "d4888df20b11e30a7d613a32e603cea5"
- }
- Frame {
- msec: 3136
- hash: "ac74be483173b08cb41b8d63e3e4d073"
- }
- Frame {
- msec: 3152
- hash: "35c65757fe27f68e35c438269c00ba53"
- }
- Frame {
- msec: 3168
- hash: "b8a28356b50362f2dabd0ab4a0d1d621"
- }
- Frame {
- msec: 3184
- hash: "71205ebfcce9e3a018fe2c30f7f3ee92"
- }
- Frame {
- msec: 3200
- hash: "0ef526ebcc23342ba4b8dfa8ed41e7de"
- }
- Frame {
- msec: 3216
- hash: "9caaec9ca80b5da75e5e1231635c2f37"
- }
- Frame {
- msec: 3232
- hash: "bb6b951e8c2252d873828e9ef1c9b625"
- }
- Frame {
- msec: 3248
- hash: "15faa58fbb91f80a8c1256e5627e7777"
- }
- Frame {
- msec: 3264
- hash: "bf2d0f512ade00ee44adb6624573daf9"
- }
- Frame {
- msec: 3280
- hash: "5af713203ef673d40c69b014dcaf242f"
- }
- Frame {
- msec: 3296
- hash: "970972470176fbd64208a3b25d4f5f65"
- }
- Frame {
- msec: 3312
- hash: "135a4356d91e594ee2b71132ecf9a606"
- }
- Frame {
- msec: 3328
- hash: "8a6364c0e033d517180ec287e61b3c9d"
- }
- Frame {
- msec: 3344
- hash: "71c7d7eddd49b77e8f96f3b7a6e8470f"
- }
- Frame {
- msec: 3360
- hash: "59667814b3e1a2d832b895235a9cdaf6"
- }
- Frame {
- msec: 3376
- hash: "a324de5e8d115862b9908aba881df913"
- }
- Frame {
- msec: 3392
- hash: "300902de67507207465a74bf6404c1c4"
- }
- Frame {
- msec: 3408
- hash: "63f40e307d9f0c14bab111e833047ee1"
- }
- Frame {
- msec: 3424
- hash: "53f54f5a4745043ef616ac21583416ef"
- }
- Frame {
- msec: 3440
- hash: "851e6eebe48034d3185674f6908932af"
- }
- Frame {
- msec: 3456
- hash: "06ef04a044394ab55fe2806a50db2abf"
- }
- Frame {
- msec: 3472
- hash: "88c82d8bb518b18a174f55c647395de1"
- }
- Frame {
- msec: 3488
- hash: "e62b84c87e1d73028305b9038915c53d"
- }
- Frame {
- msec: 3504
- hash: "fdb38aa631cd6967585dd23e20f866a9"
- }
- Frame {
- msec: 3520
- hash: "edabcd9bee25b1abcabced3b0b3dff1e"
- }
- Frame {
- msec: 3536
- hash: "6f0a2dc3151c018846b13fd2e11d0fab"
- }
- Frame {
- msec: 3552
- hash: "5101944e7867260ffdd3134436c6373a"
- }
- Frame {
- msec: 3568
- hash: "a04f231f840571734f8dab609b2f82fd"
- }
- Frame {
- msec: 3584
- hash: "87c22f82c659b405fd4e81640ce0b166"
- }
- Frame {
- msec: 3600
- hash: "2273564228baea48cac343a4f30d6a59"
- }
- Frame {
- msec: 3616
- hash: "8a4d1fc12743e6153c0f47e1fce9d55f"
- }
- Frame {
- msec: 3632
- hash: "944cd812097868935a686211551ccd35"
- }
- Frame {
- msec: 3648
- hash: "a2f1a14510a1cfe3c2c45fa10b0442b4"
- }
- Frame {
- msec: 3664
- hash: "d754cc64c12ef8cc2db0ddf99381e88c"
- }
- Frame {
- msec: 3680
- hash: "168487c8ca6f3463b3aa4433cfc99792"
- }
- Frame {
- msec: 3696
- hash: "67a82c1516b0d8d953c7055f07a9fdc7"
- }
- Frame {
- msec: 3712
- hash: "0df1592631b8cc1986f905a049b40bf0"
- }
- Frame {
- msec: 3728
- hash: "8677472d35e17d7bd5fe40f7841bb01d"
- }
- Frame {
- msec: 3744
- hash: "4472a8412e41377e0795d51706fb9180"
- }
- Frame {
- msec: 3760
- hash: "84533717ec1419617895f2ec646fb1c0"
- }
- Frame {
- msec: 3776
- hash: "ad50bd7708be94c6b8e63077e589ae48"
- }
- Frame {
- msec: 3792
- hash: "a37fb5d7cec3fbff8e12157c88e08833"
- }
- Frame {
- msec: 3808
- hash: "df1ca02b5bb76338ff24a561876f89f2"
- }
- Frame {
- msec: 3824
- hash: "df1ca02b5bb76338ff24a561876f89f2"
- }
- Frame {
- msec: 3840
- image: "flickable-vertical.3.png"
- }
- Frame {
- msec: 3856
- hash: "a37fb5d7cec3fbff8e12157c88e08833"
- }
- Frame {
- msec: 3872
- hash: "3c8a94d2e139a9e84eaa6bf522250756"
- }
- Frame {
- msec: 3888
- hash: "23647f577ee83bc500ca1078eea2be90"
- }
- Frame {
- msec: 3904
- hash: "c1a52221113c162e963a2a165b8d08a5"
- }
- Frame {
- msec: 3920
- hash: "993c57d4ed9026f8615c68ef5d8c5c16"
- }
- Frame {
- msec: 3936
- hash: "3d843eac108e047b6fe9ac21d8866fdd"
- }
- Frame {
- msec: 3952
- hash: "5be1fa7cb99fda017cd5cdcf91a18525"
- }
- Frame {
- msec: 3968
- hash: "c68ef5177f4568eb77c0f4135ba65e44"
- }
- Frame {
- msec: 3984
- hash: "f047939a56a0ecee5deefcd3d2bf1710"
- }
- Frame {
- msec: 4000
- hash: "4af748f59c6a62156a228ae635ec2d9c"
- }
- Frame {
- msec: 4016
- hash: "b69b045557a8eada80a24eb4caa7ea4e"
- }
- Frame {
- msec: 4032
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4048
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4064
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4080
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4096
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4112
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4128
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4144
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4160
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4176
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4192
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4208
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4224
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4240
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4256
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4272
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4288
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4304
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4320
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4336
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4352
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4368
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4384
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4400
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4416
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4432
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4448
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4464
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4480
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4496
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4512
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4528
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4544
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4560
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4576
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4592
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4608
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4624
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4640
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4656
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4672
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4688
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4704
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4720
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4736
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4752
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4768
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4784
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4800
- image: "flickable-vertical.4.png"
- }
- Frame {
- msec: 4816
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4832
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4848
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4864
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4880
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4896
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4912
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4928
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4944
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4960
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4976
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 4992
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5008
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5024
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5040
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5056
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5072
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5088
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5104
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5120
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5136
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5152
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5168
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5184
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5200
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5216
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5232
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5248
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5264
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 5280
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 173; y: 85
+ x: 97; y: 184
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 5296
- hash: "06472b42bc00fcaf7f84cd4ac613bbd2"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 173; y: 86
+ x: 97; y: 168
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 5312
- hash: "06472b42bc00fcaf7f84cd4ac613bbd2"
+ msec: 2160
+ hash: "888c68103c4eef2f65ef32a93be8286a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 173; y: 89
+ x: 99; y: 153
modifiers: 0
sendToViewport: true
}
@@ -1440,19 +876,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 173; y: 101
+ x: 99; y: 139
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 5328
- hash: "0031f6edee383e97a3a31fe4268ff778"
+ msec: 2176
+ hash: "888c68103c4eef2f65ef32a93be8286a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 175; y: 117
+ x: 101; y: 125
modifiers: 0
sendToViewport: true
}
@@ -1460,51 +896,39 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 179; y: 137
+ x: 101; y: 112
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 5344
- hash: "e594c62fe10165ae08e3dd8b33b9f584"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 183; y: 159
- modifiers: 0
- sendToViewport: true
+ msec: 2192
+ hash: "888c68103c4eef2f65ef32a93be8286a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 185; y: 183
+ x: 101; y: 99
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 5360
- hash: "dd61c97aafee69eb7c54a47dceea5810"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 185; y: 207
+ x: 101; y: 85
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 5376
- hash: "29d06473d4aac07c89041b4413ce421f"
+ msec: 2208
+ hash: "888c68103c4eef2f65ef32a93be8286a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 185; y: 227
+ x: 103; y: 75
modifiers: 0
sendToViewport: true
}
@@ -1512,567 +936,163 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 185; y: 243
+ x: 103; y: 62
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 5392
- hash: "7843b1bdb9efdbee0e6dd39ef8f1078a"
+ msec: 2224
+ hash: "888c68103c4eef2f65ef32a93be8286a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 185; y: 253
+ x: 103; y: 53
modifiers: 0
sendToViewport: true
}
Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 185; y: 253
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5408
- hash: "f609350d3c3041998340c9a6ded9baec"
- }
- Frame {
- msec: 5424
- hash: "53b559ea9764ad466a0ffc1c55a596c2"
- }
- Frame {
- msec: 5440
- hash: "8ac64c07cb29adff5d8510f956f3c35d"
- }
- Frame {
- msec: 5456
- hash: "cb7ab2e7af067f1493197731515462fa"
- }
- Frame {
- msec: 5472
- hash: "a0509acbb96bb3ced08a7c968836bd69"
- }
- Frame {
- msec: 5488
- hash: "e4c5e681a275b4eff49eed39a6b544d6"
- }
- Frame {
- msec: 5504
- hash: "4403e91762ff703eb12dee1b47f4072c"
- }
- Frame {
- msec: 5520
- hash: "9f548a31dea71208c9f465e37bafc589"
- }
- Frame {
- msec: 5536
- hash: "c86dd18e63508adfdbd5b3b891fd0d99"
- }
- Frame {
- msec: 5552
- hash: "b182070ff0c1b579a9fd16d39f950079"
- }
- Frame {
- msec: 5568
- hash: "4308c4d6346e20ed89026c0ec216ae89"
- }
- Frame {
- msec: 5584
- hash: "2da84d83767e5ac1f7ce361bdcebe9c8"
- }
- Frame {
- msec: 5600
- hash: "a3ce932ebf10147f79a183e44a6f6eb7"
- }
- Frame {
- msec: 5616
- hash: "f5907789e23150c8dd0858d7c5098907"
- }
- Frame {
- msec: 5632
- hash: "98b76cfad574957f5b7633390c6788c8"
- }
- Frame {
- msec: 5648
- hash: "8c58d6511a7077cc386216a6227e8b52"
- }
- Frame {
- msec: 5664
- hash: "2ca5e16bfd83f933f32367aa49db0e1d"
- }
- Frame {
- msec: 5680
- hash: "ba387d0ab480eb9eaf6993c2ad168350"
- }
- Frame {
- msec: 5696
- hash: "ae9f3b3245ccf921967a178712566b55"
- }
- Frame {
- msec: 5712
- hash: "32cf742724558260447f61da03d5f321"
- }
- Frame {
- msec: 5728
- hash: "ad21273f37c1abac0719f532dd5530ac"
- }
- Frame {
- msec: 5744
- hash: "50e43629e0b8d0d651b9670241354cb1"
- }
- Frame {
- msec: 5760
- image: "flickable-vertical.5.png"
- }
- Frame {
- msec: 5776
- hash: "e4f0192406831c8e0abe1b561120b9c0"
- }
- Frame {
- msec: 5792
- hash: "4c98e619b487d67d114ed0d7800f157e"
- }
- Frame {
- msec: 5808
- hash: "11ed6dc9464396eb790db236f3713164"
- }
- Frame {
- msec: 5824
- hash: "908febb1e344d6972d6df611e82792bd"
- }
- Frame {
- msec: 5840
- hash: "03536bb4d6ff84bf75d9ec3574bb7361"
- }
- Frame {
- msec: 5856
- hash: "f9946a44c2d4e91a947e6bda7415cf9b"
- }
- Frame {
- msec: 5872
- hash: "0e63e4b9dd6bc7d7b684cb461c6257bf"
- }
- Frame {
- msec: 5888
- hash: "1ffe88b771bed2aa27aafe6853b67c7a"
- }
- Frame {
- msec: 5904
- hash: "ff1b78113a710481273ecf01cc978a46"
- }
- Frame {
- msec: 5920
- hash: "e381553fa74436ca4b0d166bdca78cf7"
- }
- Frame {
- msec: 5936
- hash: "d9a6f9bfc011edb7da23091fe24e2717"
- }
- Frame {
- msec: 5952
- hash: "bd137e8b15f5c485d10b83461dedc67f"
- }
- Frame {
- msec: 5968
- hash: "8f5b5e19845aa537790b683ef37c8626"
- }
- Frame {
- msec: 5984
- hash: "5abbf0dccef8a3bb7b090a24d715a25f"
- }
- Frame {
- msec: 6000
- hash: "bf924dd11e226022c9c812b5c7e8229e"
- }
- Frame {
- msec: 6016
- hash: "c47b59ff7f3c4acfb296959f6eb14801"
- }
- Frame {
- msec: 6032
- hash: "b5c0ac4514d44a651a4ab817646f1d88"
- }
- Frame {
- msec: 6048
- hash: "86a9fba0e2ca761a4fb71e5edbf34cab"
- }
- Frame {
- msec: 6064
- hash: "5bf43304399bdc979afd2580b922fd30"
- }
- Frame {
- msec: 6080
- hash: "3696756d6250f23b1122d314df08b936"
- }
- Frame {
- msec: 6096
- hash: "49c7b24b1655a1b5a9b4cc2187f7cc58"
- }
- Frame {
- msec: 6112
- hash: "a387dce727804fb4ca1c3378ba130d08"
- }
- Frame {
- msec: 6128
- hash: "505150386afee9c5d89566c90778cf58"
- }
- Frame {
- msec: 6144
- hash: "a00ecae0150a069d306127ed54c4921f"
- }
- Frame {
- msec: 6160
- hash: "e556bfca052e4d8922a4b85d6e94a22a"
- }
- Frame {
- msec: 6176
- hash: "ac710b4796de4d0b7d275c5fffcefe1f"
- }
- Frame {
- msec: 6192
- hash: "2f0475e842083c93b0fa0b8a8a33117a"
- }
- Frame {
- msec: 6208
- hash: "6de0e820748df06e702a82f127d9f635"
- }
- Frame {
- msec: 6224
- hash: "b3748d7a26ea8289e2faa9dd624b23a3"
- }
- Frame {
- msec: 6240
- hash: "52be51e9a5bf6e6d0c2e64e584a4bf11"
- }
- Frame {
- msec: 6256
- hash: "9c4a08a51556d56f2809d27a1de0aae3"
- }
- Frame {
- msec: 6272
- hash: "4a151e94a39b68a47374cc45cb8969df"
- }
- Frame {
- msec: 6288
- hash: "a2c2926224103d6e0a679b891451f791"
- }
- Frame {
- msec: 6304
- hash: "c192adca5c3cf3741f6e7b33d53a722a"
- }
- Frame {
- msec: 6320
- hash: "8fa9d85c213243e0709e3e32f03cebd9"
- }
- Frame {
- msec: 6336
- hash: "20f516aa2c4ebc239a283176d83ade6f"
- }
- Frame {
- msec: 6352
- hash: "ac8ace61348c5500dd6e2d1f3b4b174b"
- }
- Frame {
- msec: 6368
- hash: "39cc6b136e17283ddc65425150cec7be"
- }
- Frame {
- msec: 6384
- hash: "b250cb3fd5a7ab5c76ae15d5a500a894"
- }
- Frame {
- msec: 6400
- hash: "f07e4f8b61c0ce514364e062867687a2"
- }
- Frame {
- msec: 6416
- hash: "caed510a4edc2830f885f9a8ff98c072"
- }
- Frame {
- msec: 6432
- hash: "2cfba2b8cd1cbc260edf390e17532afa"
- }
- Frame {
- msec: 6448
- hash: "f1d705e01521261f22b89aeefb146c7a"
- }
- Frame {
- msec: 6464
- hash: "9508799a0e28e60a65925b7c10fa2874"
- }
- Frame {
- msec: 6480
- hash: "accdad5176a0cdce92ed07a7ae818a13"
- }
- Frame {
- msec: 6496
- hash: "2748258d00cf2f0e5f94c94f97ed95ae"
- }
- Frame {
- msec: 6512
- hash: "994897c0842947675e2e2df4021c1b5e"
- }
- Frame {
- msec: 6528
- hash: "22936773b2fc5c555f14a8375da2a7a4"
- }
- Frame {
- msec: 6544
- hash: "22936773b2fc5c555f14a8375da2a7a4"
- }
- Frame {
- msec: 6560
- hash: "b58badc862e394bf5374554e019f90c0"
- }
- Frame {
- msec: 6576
- hash: "b58badc862e394bf5374554e019f90c0"
- }
- Frame {
- msec: 6592
- hash: "b58badc862e394bf5374554e019f90c0"
- }
- Frame {
- msec: 6608
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6624
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6640
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6656
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6672
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6688
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6704
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6720
- image: "flickable-vertical.6.png"
- }
- Frame {
- msec: 6736
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6752
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6768
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 31; y: 575
+ x: 103; y: 45
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 6784
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6800
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6816
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6832
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6848
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6864
- hash: "679369b924d719ae309a45034bdba40d"
- }
Mouse {
type: 3
button: 1
buttons: 0
- x: 31; y: 575
+ x: 103; y: 45
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 6880
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6896
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6912
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6928
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6944
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6960
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6976
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 6992
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2240
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7008
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2256
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7024
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2272
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7040
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2288
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7056
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2304
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7072
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2320
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7088
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2336
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7104
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2352
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7120
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2368
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7136
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2384
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7152
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2400
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7168
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2416
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7184
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2432
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7200
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2448
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7216
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2464
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7232
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2480
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7248
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2496
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7264
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2512
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 7280
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2528
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 156; y: 403
+ x: 90; y: 38
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7296
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
+ msec: 2544
+ hash: "0d3bac7463b5fe7f585997e35f179122"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 156; y: 402
+ x: 90; y: 39
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 2560
+ hash: "0d3bac7463b5fe7f585997e35f179122"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 158; y: 396
+ x: 90; y: 40
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 7312
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 158; y: 386
+ x: 90; y: 41
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7328
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
+ msec: 2576
+ hash: "0d3bac7463b5fe7f585997e35f179122"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 158; y: 376
+ x: 91; y: 43
modifiers: 0
sendToViewport: true
}
@@ -2080,19 +1100,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 158; y: 360
+ x: 91; y: 46
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7344
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
+ msec: 2592
+ hash: "0d3bac7463b5fe7f585997e35f179122"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 158; y: 344
+ x: 92; y: 50
modifiers: 0
sendToViewport: true
}
@@ -2100,19 +1120,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 160; y: 322
+ x: 92; y: 55
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7360
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
+ msec: 2608
+ hash: "0d3bac7463b5fe7f585997e35f179122"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 164; y: 298
+ x: 94; y: 65
modifiers: 0
sendToViewport: true
}
@@ -2120,195 +1140,59 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 168; y: 278
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 168; y: 278
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7376
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7392
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7408
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7424
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7440
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7456
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7472
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7488
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7504
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7520
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7536
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7552
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7568
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7584
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7600
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7616
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7632
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7648
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7664
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7680
- image: "flickable-vertical.7.png"
- }
- Frame {
- msec: 7696
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7712
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7728
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7744
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7760
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7776
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7792
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7808
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 154; y: 161
+ x: 96; y: 79
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7824
- hash: "16eef219cc7d4e7589ea59ebc349973c"
- }
- Frame {
- msec: 7840
- hash: "16eef219cc7d4e7589ea59ebc349973c"
+ msec: 2624
+ hash: "0d3bac7463b5fe7f585997e35f179122"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 154; y: 162
+ x: 97; y: 95
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 7856
- hash: "16eef219cc7d4e7589ea59ebc349973c"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 154; y: 164
+ x: 99; y: 112
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 2640
+ hash: "0d3bac7463b5fe7f585997e35f179122"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 154; y: 167
+ x: 101; y: 129
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 7872
- hash: "16eef219cc7d4e7589ea59ebc349973c"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 154; y: 177
+ x: 103; y: 148
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7888
- hash: "16eef219cc7d4e7589ea59ebc349973c"
+ msec: 2656
+ hash: "0d3bac7463b5fe7f585997e35f179122"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 150; y: 189
+ x: 105; y: 165
modifiers: 0
sendToViewport: true
}
@@ -2316,19 +1200,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 146; y: 207
+ x: 105; y: 180
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7904
- hash: "16eef219cc7d4e7589ea59ebc349973c"
+ msec: 2672
+ hash: "0d3bac7463b5fe7f585997e35f179122"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 144; y: 229
+ x: 107; y: 192
modifiers: 0
sendToViewport: true
}
@@ -2336,19 +1220,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 140; y: 255
+ x: 109; y: 205
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7920
- hash: "16eef219cc7d4e7589ea59ebc349973c"
+ msec: 2688
+ hash: "0d3bac7463b5fe7f585997e35f179122"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 134; y: 281
+ x: 109; y: 219
modifiers: 0
sendToViewport: true
}
@@ -2356,39 +1240,39 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 132; y: 313
+ x: 109; y: 230
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7936
- hash: "16eef219cc7d4e7589ea59ebc349973c"
+ msec: 2704
+ hash: "0d3bac7463b5fe7f585997e35f179122"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 128; y: 343
+ x: 111; y: 235
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 7952
- hash: "16eef219cc7d4e7589ea59ebc349973c"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 126; y: 373
+ x: 111; y: 238
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 2720
+ hash: "0d3bac7463b5fe7f585997e35f179122"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 126; y: 397
+ x: 111; y: 240
modifiers: 0
sendToViewport: true
}
@@ -2396,499 +1280,355 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 126; y: 397
+ x: 111; y: 240
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 7968
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 7984
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8000
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8016
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8032
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8048
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8064
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8080
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8096
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8112
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8128
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8144
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8160
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8176
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8192
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8208
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8224
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8240
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8256
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8272
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8288
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8304
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8320
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 8336
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2736
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8352
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2752
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8368
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2768
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8384
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2784
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8400
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2800
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8416
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2816
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8432
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2832
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8448
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2848
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8464
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2864
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8480
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2880
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8496
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2896
+ image: "flickable-vertical.3.png"
}
Frame {
- msec: 8512
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2912
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8528
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2928
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8544
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2944
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8560
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2960
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8576
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2976
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8592
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 2992
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8608
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3008
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8624
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3024
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8640
- image: "flickable-vertical.8.png"
+ msec: 3040
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8656
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3056
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8672
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3072
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8688
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3088
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8704
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3104
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8720
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3120
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8736
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3136
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
- Frame {
- msec: 8752
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 43; y: 269
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 8768
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3152
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8784
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3168
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8800
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3184
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8816
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3200
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8832
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3216
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
- Frame {
- msec: 8848
- hash: "679369b924d719ae309a45034bdba40d"
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 43; y: 269
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 8864
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3232
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8880
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3248
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8896
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3264
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8912
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3280
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8928
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3296
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8944
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3312
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8960
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3328
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8976
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3344
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 8992
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3360
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9008
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3376
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9024
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3392
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9040
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3408
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9056
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3424
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9072
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3440
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9088
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3456
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9104
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3472
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 44; y: 574
+ x: 75; y: 279
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 9120
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3488
+ hash: "998cb23307a61afefb59c8b9e361a89f"
+ }
+ Frame {
+ msec: 3504
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9136
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3520
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9152
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3536
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Mouse {
type: 3
button: 1
buttons: 0
- x: 44; y: 574
+ x: 75; y: 279
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 9168
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9184
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9200
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9216
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9232
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9248
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9264
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9280
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9296
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9312
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9328
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9344
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9360
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9376
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9392
- hash: "679369b924d719ae309a45034bdba40d"
- }
- Frame {
- msec: 9408
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3552
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9424
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3568
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9440
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3584
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9456
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3600
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9472
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3616
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9488
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3632
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9504
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3648
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9520
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3664
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9536
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3680
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9552
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3696
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9568
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3712
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9584
- hash: "679369b924d719ae309a45034bdba40d"
+ msec: 3728
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Frame {
- msec: 9600
- image: "flickable-vertical.9.png"
+ msec: 3744
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 152; y: 444
+ x: 116; y: 200
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 9616
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
+ msec: 3760
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 152; y: 442
+ x: 116; y: 199
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 9632
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 152; y: 440
+ x: 117; y: 198
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 3776
+ hash: "998cb23307a61afefb59c8b9e361a89f"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 152; y: 438
+ x: 117; y: 195
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 9648
- hash: "843453070c3ac1bf26cfd84d3ab151eb"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 154; y: 429
+ x: 117; y: 190
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 9664
- hash: "3b0e0ed925b1c197cd94afd3d1a6d572"
+ msec: 3792
+ hash: "998cb23307a61afefb59c8b9e361a89f"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 156; y: 421
+ x: 118; y: 183
modifiers: 0
sendToViewport: true
}
@@ -2896,631 +1636,299 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 158; y: 413
+ x: 120; y: 166
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 9680
- hash: "d7b3838ee1219816b76224c29c7ba2e1"
+ msec: 3808
+ hash: "2e311a5dc484e9f4bc7bd85d32a693b1"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 160; y: 403
+ x: 122; y: 146
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 124; y: 123
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 9696
- hash: "9835b420f0c40a03f8f9fafe39e209f1"
+ msec: 3824
+ hash: "cbfcb7b986b0c51828473d98ca9fee03"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 162; y: 393
+ x: 126; y: 94
modifiers: 0
sendToViewport: true
}
Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 162; y: 393
+ type: 5
+ button: 0
+ buttons: 1
+ x: 128; y: 67
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 9712
- hash: "46fb2005a813fc2c278f1bfe83801c0e"
- }
- Frame {
- msec: 9728
- hash: "81dd9308e475548db21474c37cb9a5b0"
- }
- Frame {
- msec: 9744
- hash: "10043d74eef240abd2360d45845dd51e"
- }
- Frame {
- msec: 9760
- hash: "0f83b8f23ba42b22c10a2b68227db64e"
- }
- Frame {
- msec: 9776
- hash: "7a296e3702c9fef25cb53ac04053853b"
- }
- Frame {
- msec: 9792
- hash: "ae439daa32f76a368ab314c86c55a378"
- }
- Frame {
- msec: 9808
- hash: "42ac3503dfa462bf0b5d8c15f6f3b143"
- }
- Frame {
- msec: 9824
- hash: "b8bb92eb2de7ca0f5924b09f380f47db"
- }
- Frame {
- msec: 9840
- hash: "994e314d2d38005b6006e81468f10efa"
- }
- Frame {
- msec: 9856
- hash: "be6a32f3c82aeccebc7778ff5646637f"
- }
- Frame {
- msec: 9872
- hash: "2fb196f53d5e785e04a14d98d9dab8a1"
- }
- Frame {
- msec: 9888
- hash: "0926f8209f4f35f6e6fa92935d7408e4"
- }
- Frame {
- msec: 9904
- hash: "780450301d37ea2b94eb9386e7e5294c"
- }
- Frame {
- msec: 9920
- hash: "cd4e9629c767813c9a2a2fa30dc5114b"
- }
- Frame {
- msec: 9936
- hash: "409630d7b9c3c4231bccf74f7453f0af"
- }
- Frame {
- msec: 9952
- hash: "4c98e619b487d67d114ed0d7800f157e"
- }
- Frame {
- msec: 9968
- hash: "0a8157dc45764ab8e0e0b89e5c73a76b"
- }
- Frame {
- msec: 9984
- hash: "ecfc611b58e000df9f608c8889a2a84f"
- }
- Frame {
- msec: 10000
- hash: "5c6bc246446c75d57bcd40e86041892b"
- }
- Frame {
- msec: 10016
- hash: "fe1a3e688da126861b29a94b676b68f7"
- }
- Frame {
- msec: 10032
- hash: "f5feef892bf013916bacb63ff6460cb7"
- }
- Frame {
- msec: 10048
- hash: "665018efd991cab3acb4b80005fc2bd3"
- }
- Frame {
- msec: 10064
- hash: "bc7614e4a0e0724a9cb0981f09f8a7f6"
- }
- Frame {
- msec: 10080
- hash: "463a6da452a5a6267240992ad5284e89"
- }
- Frame {
- msec: 10096
- hash: "eca3f146e0143856f58b4f7aee42e6f8"
- }
- Frame {
- msec: 10112
- hash: "dec9b9845509c4d28d7faae043b292d1"
- }
- Frame {
- msec: 10128
- hash: "49452842cb2429cd465e40478638e0e3"
- }
- Frame {
- msec: 10144
- hash: "a7029d0090d3620ee21b9e3d55eefe78"
- }
- Frame {
- msec: 10160
- hash: "1041b18d422acba0b9a45ca89856e493"
- }
- Frame {
- msec: 10176
- hash: "d53038b688b920715b196dd4cc2b2587"
- }
- Frame {
- msec: 10192
- hash: "da59ffebb491ab5fa98429117c3bb8ac"
- }
- Frame {
- msec: 10208
- hash: "602269f78eaf0df36c66de72e005989a"
- }
- Frame {
- msec: 10224
- hash: "a311b6b35feb4096b0d01753a6695210"
- }
- Frame {
- msec: 10240
- hash: "cd303e8850c6aac58fcf2a98db418f1b"
- }
- Frame {
- msec: 10256
- hash: "6e9132dd840a136cc688676bce7640de"
- }
- Frame {
- msec: 10272
- hash: "a3818492bb4ebd91ce86675d34731c58"
- }
- Frame {
- msec: 10288
- hash: "b85a127895713234028641787312b717"
- }
- Frame {
- msec: 10304
- hash: "a030dc1543e84d8a0ec9f77fd6325060"
- }
- Frame {
- msec: 10320
- hash: "669cd28abe17d419e9cabe4d796a38c3"
- }
- Frame {
- msec: 10336
- hash: "bfdd15cf058050203561b5f935106263"
- }
- Frame {
- msec: 10352
- hash: "a39abc94fee93175a6a37b402750e4f7"
- }
- Frame {
- msec: 10368
- hash: "0c65e19e12d95ec8ee253219b0c3e472"
- }
- Frame {
- msec: 10384
- hash: "15debc234e70765a4510bfbda886a2c9"
- }
- Frame {
- msec: 10400
- hash: "9566a87437cb6e9025f9a3881a620823"
- }
- Frame {
- msec: 10416
- hash: "b66d89244cba537a21901dcb11387bf7"
- }
- Frame {
- msec: 10432
- hash: "03347ce314393bd84873026cd01c562f"
- }
- Frame {
- msec: 10448
- hash: "458fab2449dba089ae6f1e78a230564b"
- }
- Frame {
- msec: 10464
- hash: "7115f27574bfc68ff58a2e4fb65107dd"
- }
- Frame {
- msec: 10480
- hash: "66260c030dddda4b086bc98982a11934"
- }
- Frame {
- msec: 10496
- hash: "d5790ee5eb8ecf249cb1dcf58aefa4ee"
- }
- Frame {
- msec: 10512
- hash: "6bec07ba1e2ac637aab7a9038cbacc93"
- }
- Frame {
- msec: 10528
- hash: "a72f36cc18c8620a2bd85bac49f6771a"
- }
- Frame {
- msec: 10544
- hash: "65b178ae559ab0ba9c568718f287ff68"
- }
- Frame {
- msec: 10560
- image: "flickable-vertical.10.png"
- }
- Frame {
- msec: 10576
- hash: "b35a8e33f876921d477809b5adb7a201"
- }
- Frame {
- msec: 10592
- hash: "057b69ef8137f38c596432da547f1ead"
- }
- Frame {
- msec: 10608
- hash: "62f76f46857106010c2e862ed19baeea"
- }
- Frame {
- msec: 10624
- hash: "fbfc73e1b20b79d71953c298ca095047"
- }
- Frame {
- msec: 10640
- hash: "aea78988f875083660dd46d6afc71683"
- }
- Frame {
- msec: 10656
- hash: "60d8decd7ded420433256a94f1bf954f"
- }
- Frame {
- msec: 10672
- hash: "221f72cdf18e0b33e7f6a65356fcc61b"
- }
- Frame {
- msec: 10688
- hash: "221f72cdf18e0b33e7f6a65356fcc61b"
- }
- Frame {
- msec: 10704
- hash: "c2eac9c0d84c6b2f133d8751ac5f265f"
- }
- Frame {
- msec: 10720
- hash: "c2eac9c0d84c6b2f133d8751ac5f265f"
- }
- Frame {
- msec: 10736
- hash: "c2eac9c0d84c6b2f133d8751ac5f265f"
- }
- Frame {
- msec: 10752
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10768
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10784
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10800
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10816
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10832
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10848
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10864
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 3840
+ hash: "389b514c4cd4a4d65388608643d08c04"
}
- Frame {
- msec: 10880
- hash: "28a06534a2e35250c67112dfb6c05095"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 130; y: 41
+ modifiers: 0
+ sendToViewport: true
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 98; y: 573
+ x: 133; y: 15
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 10896
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 3856
+ image: "flickable-vertical.4.png"
}
- Frame {
- msec: 10912
- hash: "28a06534a2e35250c67112dfb6c05095"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 135; y: -6
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 10928
- hash: "28a06534a2e35250c67112dfb6c05095"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 138; y: -27
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 10944
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 3872
+ hash: "cf9a0a968459a1283fff91102eb29ba3"
}
- Frame {
- msec: 10960
- hash: "28a06534a2e35250c67112dfb6c05095"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 140; y: -48
+ modifiers: 0
+ sendToViewport: true
}
Mouse {
type: 3
button: 1
buttons: 0
- x: 98; y: 573
+ x: 140; y: -48
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 10976
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 10992
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11008
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11024
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11040
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11056
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11072
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11088
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11104
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11120
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11136
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11152
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11168
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11184
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Frame {
- msec: 11200
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 3888
+ hash: "77c86fb26126825cfd5b6ba21b903808"
}
Frame {
- msec: 11216
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 3904
+ hash: "c497bcbe500905b8a69fd310fd7c7e1a"
}
Frame {
- msec: 11232
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 3920
+ hash: "95bffb4d4aff1603e96af55cbc2dc3f2"
}
Frame {
- msec: 11248
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 3936
+ hash: "6fa87a7136528b688069fe1c4bd94043"
}
Frame {
- msec: 11264
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 3952
+ hash: "602c16e1382d810f853d647e531b4e8a"
}
Frame {
- msec: 11280
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 3968
+ hash: "01d1227e4f5b95f8b0c6a57a4b2314c4"
}
Frame {
- msec: 11296
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 3984
+ hash: "1db6401af45574b7453ad57766e60e6f"
}
Frame {
- msec: 11312
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4000
+ hash: "067a1bef3df5d1c40842f28885d60250"
}
Frame {
- msec: 11328
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4016
+ hash: "5fba31051e05ec00c0d68b8e8af94132"
}
Frame {
- msec: 11344
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4032
+ hash: "d6209a0b9b9e0f2072179a4623c70fbd"
}
Frame {
- msec: 11360
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4048
+ hash: "ec30f07ab0056a45954c07ecdfa1401a"
}
Frame {
- msec: 11376
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4064
+ hash: "fef6c7767970a283bb3b13826f71bdac"
}
Frame {
- msec: 11392
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4080
+ hash: "29621938e96be0d11c95fd1e4ca37631"
}
Frame {
- msec: 11408
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4096
+ hash: "8103c96ac90ddf52056d7e8b32e4ae9e"
}
Frame {
- msec: 11424
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4112
+ hash: "d72bf8b88efe603050ad038380173969"
}
Frame {
- msec: 11440
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4128
+ hash: "4438b56eb6aa800602634db6016caa50"
}
Frame {
- msec: 11456
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4144
+ hash: "44674f7a874023c3932d698344ccda0e"
}
Frame {
- msec: 11472
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4160
+ hash: "155a834ddaa7128b6f5a2a406b340315"
}
Frame {
- msec: 11488
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4176
+ hash: "3886efa510581ee5b6c4a2ed76aeb42d"
}
Frame {
- msec: 11504
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4192
+ hash: "094954e8d10b85d3941626dec4fb36af"
}
Frame {
- msec: 11520
- image: "flickable-vertical.11.png"
+ msec: 4208
+ hash: "b597aeb20a8630e4b1dfd0a7be383e4d"
}
Frame {
- msec: 11536
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4224
+ hash: "abc58e74ab197a2d7c243ddd67442e53"
}
Frame {
- msec: 11552
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4240
+ hash: "b6ec106d39af13492c3d43bf006b7b15"
}
Frame {
- msec: 11568
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4256
+ hash: "d80211f898473a01e0c0641b96bc92f4"
}
Frame {
- msec: 11584
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4272
+ hash: "5010579fcd925e65c778c2e9cf0317de"
}
Frame {
- msec: 11600
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4288
+ hash: "5010579fcd925e65c778c2e9cf0317de"
}
Frame {
- msec: 11616
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4304
+ hash: "d80211f898473a01e0c0641b96bc92f4"
}
Frame {
- msec: 11632
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4320
+ hash: "27cfc811f62029df48ea7f371ff5654b"
}
Frame {
- msec: 11648
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4336
+ hash: "b6ec106d39af13492c3d43bf006b7b15"
}
Frame {
- msec: 11664
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4352
+ hash: "28c8e3f08f46bf13cc52a7d6a31a7cf1"
}
Frame {
- msec: 11680
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4368
+ hash: "b597aeb20a8630e4b1dfd0a7be383e4d"
}
Frame {
- msec: 11696
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4384
+ hash: "a3a3682ce0d2a2d57457458b13645afa"
}
Frame {
- msec: 11712
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4400
+ hash: "98bf25cbb8202fe1576ac15bac7b9e65"
}
Frame {
- msec: 11728
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4416
+ hash: "16b99c9cf5297a5251869a3935084cf7"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 170; y: 335
+ x: 136; y: 176
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11744
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4432
+ hash: "16b99c9cf5297a5251869a3935084cf7"
}
Frame {
- msec: 11760
- hash: "28a06534a2e35250c67112dfb6c05095"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 170; y: 336
- modifiers: 0
- sendToViewport: true
+ msec: 4448
+ hash: "16b99c9cf5297a5251869a3935084cf7"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 170; y: 338
+ x: 136; y: 175
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11776
- hash: "28a06534a2e35250c67112dfb6c05095"
+ msec: 4464
+ hash: "16b99c9cf5297a5251869a3935084cf7"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 170; y: 346
+ x: 136; y: 173
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 11792
- hash: "12040d4dd56848fc93d6390005045188"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 170; y: 359
+ x: 136; y: 168
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11808
- hash: "caa70db5f31eb607c2de39734a42796c"
+ msec: 4480
+ hash: "16b99c9cf5297a5251869a3935084cf7"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 168; y: 367
+ x: 134; y: 159
modifiers: 0
sendToViewport: true
}
@@ -3528,19 +1936,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 166; y: 379
+ x: 133; y: 142
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11824
- hash: "ca45ab832b5a8b041ba8bea1185a2b38"
+ msec: 4496
+ hash: "abc58e74ab197a2d7c243ddd67442e53"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 166; y: 393
+ x: 130; y: 119
modifiers: 0
sendToViewport: true
}
@@ -3548,387 +1956,223 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 164; y: 407
+ x: 128; y: 98
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11840
- hash: "188042b1a045dc96a65a7fc0e90568c3"
+ msec: 4512
+ hash: "e5c5b741da7c028ec77f52016675c1ca"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 164; y: 419
+ x: 126; y: 78
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 11856
- hash: "714a3cf591beeeddbdc2df94f5cedef1"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 164; y: 443
+ x: 124; y: 59
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11872
- hash: "e9978c24eef649d01cb2245f783cb562"
+ msec: 4528
+ hash: "12481bcccb524a478851a57d4db6cf8d"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 164; y: 461
+ x: 122; y: 44
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 11888
- hash: "bc8f32062afdfe33da7c99ee867bc2a3"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 166; y: 467
+ x: 120; y: 30
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 11904
- hash: "d788c09f4acba8197b2d8fef2e8ece51"
+ msec: 4544
+ hash: "a49985bd332cd3376986d379c474a3de"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 168; y: 470
+ x: 120; y: 21
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 11920
- hash: "b0a383eb416727c22451a30a997f48f1"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 169; y: 472
+ x: 118; y: 12
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 11936
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 11952
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 11968
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 11984
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12000
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12016
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12032
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12048
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12064
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
Mouse {
type: 3
button: 1
buttons: 0
- x: 169; y: 472
+ x: 118; y: 12
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12080
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12096
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12112
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12128
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12144
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12160
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12176
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12192
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12208
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12224
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12240
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Frame {
- msec: 12256
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 4560
+ hash: "cd4e55b15e9df7fee1862180fddec0ca"
}
Frame {
- msec: 12272
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 4576
+ hash: "64ff54775d198b616597f4539de90bd8"
}
Frame {
- msec: 12288
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 4592
+ hash: "2b188745bfff51f9d3af90b7ad9c8d77"
}
Frame {
- msec: 12304
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 4608
+ hash: "2dde7d565f92f22c6524448f97107e35"
}
Frame {
- msec: 12320
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 4624
+ hash: "897a454ac464008d6dd7864eb608ae65"
}
Frame {
- msec: 12336
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 4640
+ hash: "269df4f1aca4f0cdbd5c86c2e115bd3c"
}
Frame {
- msec: 12352
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 4656
+ hash: "ec0ebdbd3f4665fba7f6a523a82a5071"
}
Frame {
- msec: 12368
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 4672
+ hash: "c1ac6a385f580f23b3486c643d276e33"
}
Frame {
- msec: 12384
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 4688
+ hash: "3de0d147a6a3c1382ec64a80996bb4f4"
}
Frame {
- msec: 12400
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 4704
+ hash: "8db942b5909f63d4369ad5b29938ef49"
}
Frame {
- msec: 12416
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 4720
+ hash: "f7840636f2d01c25be8e9c77230cca53"
}
Frame {
- msec: 12432
- hash: "6b81b365eb057ffa32d89e564bc92949"
+ msec: 4736
+ hash: "d315f82e175361fed83193ce550cb6e9"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 171; y: 452
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 12448
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 172; y: 450
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 173; y: 448
+ x: 111; y: 67
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12464
- hash: "6b81b365eb057ffa32d89e564bc92949"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 175; y: 434
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 12480
- image: "flickable-vertical.12.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 175; y: 431
- modifiers: 0
- sendToViewport: true
+ msec: 4752
+ hash: "d315f82e175361fed83193ce550cb6e9"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 177; y: 423
+ x: 111; y: 70
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 12496
- hash: "7e760a017ab10fe920074405248d1473"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 177; y: 415
+ x: 111; y: 74
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12512
- hash: "eab43f1c2b6fb79aad578a164b8b7b28"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 181; y: 395
- modifiers: 0
- sendToViewport: true
+ msec: 4768
+ hash: "d315f82e175361fed83193ce550cb6e9"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 183; y: 383
+ x: 111; y: 79
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 12528
- hash: "a5446ca4c6650ffc9812845bdb8db088"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 185; y: 371
+ x: 112; y: 86
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12544
- hash: "71cb7dc7f9dbb9e17d7f44885ec71bdb"
+ msec: 4784
+ hash: "00b072a0adbfcd520d495ef6540f5680"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 357
+ x: 112; y: 95
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 12560
- hash: "ccf0908d968f658311a9787182de498a"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 329
+ x: 114; y: 105
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12576
- hash: "26b9c6379590bbda24d129bd4f19f7d3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 187; y: 303
- modifiers: 0
- sendToViewport: true
+ msec: 4800
+ hash: "fb605e95988a6110384671e7f3f18ad8"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 293
+ x: 114; y: 115
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 12592
- hash: "6c88a02ffdffee6d615ddc6a11c1b698"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 283
+ x: 115; y: 126
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12608
- hash: "38175cb09b6e63353b478635b22dbb5b"
+ msec: 4816
+ image: "flickable-vertical.5.png"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 280
+ x: 115; y: 142
modifiers: 0
sendToViewport: true
}
@@ -3936,19 +2180,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 187; y: 277
+ x: 117; y: 159
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12624
- hash: "5084910bf204e8b688de31d4f9018a57"
+ msec: 4832
+ hash: "4d1eb644b592a693b13fe14377aeed97"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 275
+ x: 120; y: 180
modifiers: 0
sendToViewport: true
}
@@ -3956,19 +2200,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 187; y: 273
+ x: 122; y: 202
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12640
- hash: "e984565312571ec144a1cd4cc11253e8"
+ msec: 4848
+ hash: "00eb1d3b016eb0220461074ce81b1aef"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 272
+ x: 127; y: 224
modifiers: 0
sendToViewport: true
}
@@ -3976,1067 +2220,455 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 187; y: 271
+ x: 129; y: 243
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 12656
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12672
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12688
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12704
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12720
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12736
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12752
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12768
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
Mouse {
type: 3
button: 1
buttons: 0
- x: 187; y: 271
+ x: 129; y: 243
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 12784
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12800
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12816
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12832
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12848
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12864
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12880
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12896
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12912
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12928
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12944
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12960
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12976
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 12992
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 13008
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 13024
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 4864
+ hash: "77c86fb26126825cfd5b6ba21b903808"
}
Frame {
- msec: 13040
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 4880
+ hash: "e80f024bbdce0ceeae137e347abc95a4"
}
Frame {
- msec: 13056
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 4896
+ hash: "bb189f39a836b9a2aa68f4535ed1d6fb"
}
Frame {
- msec: 13072
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 4912
+ hash: "cf9a0a968459a1283fff91102eb29ba3"
}
Frame {
- msec: 13088
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 4928
+ hash: "27130e7f6b853a287a7bdd8608628a4f"
}
Frame {
- msec: 13104
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 4944
+ hash: "231c7b7078af00a36cfee3d5e43a4021"
}
Frame {
- msec: 13120
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 4960
+ hash: "d8ffc8cc9cecc25cb9b4e7990fb7b8e7"
}
Frame {
- msec: 13136
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 4976
+ hash: "fb5db5dafdb375132f1f1a461193bc60"
}
Frame {
- msec: 13152
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 4992
+ hash: "64100f9f102ffc9415e306c087547709"
}
Frame {
- msec: 13168
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5008
+ hash: "6960e5c4feb55043ff91934fc934734e"
}
Frame {
- msec: 13184
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5024
+ hash: "349c7a84ff8f9b52d39dba1282353167"
}
Frame {
- msec: 13200
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5040
+ hash: "bb41010df844312fc15bb5b42712619a"
}
Frame {
- msec: 13216
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5056
+ hash: "63a3e18670bb2a5e7edfe3b752c0a1b5"
}
Frame {
- msec: 13232
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5072
+ hash: "92b1d0fbadbefe9f122b14903a5e0ee9"
}
Frame {
- msec: 13248
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5088
+ hash: "6b979e1a4bc7226a89ffb97be2f08147"
}
Frame {
- msec: 13264
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5104
+ hash: "7b783908e0b10d329a7d3172f2302a85"
}
Frame {
- msec: 13280
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5120
+ hash: "41d5ef3390cfc0d806825fc0cd033be6"
}
Frame {
- msec: 13296
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5136
+ hash: "ff1a053c0af99c51353503002515843d"
}
Frame {
- msec: 13312
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5152
+ hash: "63b26ecde2a2a9ce36884191304352ed"
}
Frame {
- msec: 13328
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5168
+ hash: "bdcff2f9f2c376974211ea6ad5c4961f"
}
Frame {
- msec: 13344
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 181; y: 242
- modifiers: 0
- sendToViewport: true
+ msec: 5184
+ hash: "00ffef1a1d4341ac1c7f43d493a9e826"
}
Frame {
- msec: 13360
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5200
+ hash: "65dcbb543656f65267c7d32dcd644e56"
}
Frame {
- msec: 13376
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5216
+ hash: "38b49419b7103d76da2b6d7101d63d88"
}
Frame {
- msec: 13392
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5232
+ hash: "de39f6bf64745054cbee30ddf306f641"
}
Frame {
- msec: 13408
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5248
+ hash: "d6b5ceca4aa48a7d4fd901d44c151b53"
}
Frame {
- msec: 13424
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 181; y: 242
- modifiers: 0
- sendToViewport: true
+ msec: 5264
+ hash: "876e6eee8a35c34e2dd5269f86a9ab3a"
}
Frame {
- msec: 13440
- image: "flickable-vertical.13.png"
+ msec: 5280
+ hash: "f94219306eac2e678881d0b607d15a1e"
}
Frame {
- msec: 13456
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5296
+ hash: "c9184196ef45c985f08f80435492641d"
}
Frame {
- msec: 13472
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5312
+ hash: "34dc672ebfd75ec017d0c2f0bd435cd8"
}
Frame {
- msec: 13488
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5328
+ hash: "4daf1c730fdf13e0a87b28208f2b6dd1"
}
Frame {
- msec: 13504
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5344
+ hash: "c28d5d7d9d3a86e5bbf6ad48331f9c61"
}
Frame {
- msec: 13520
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5360
+ hash: "3f98121997a1613bd49d22003d1a1887"
}
Frame {
- msec: 13536
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5376
+ hash: "86732d3e900877ae7a8615b7448afaaa"
}
Frame {
- msec: 13552
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5392
+ hash: "9f3da7ebaeb319c9fec0abdd6bd76ee2"
}
Frame {
- msec: 13568
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5408
+ hash: "326563c2c812a74c7f1fa5e9da0c2369"
}
Frame {
- msec: 13584
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5424
+ hash: "79e00bbe77f0a178e8db30023a881c3f"
}
Frame {
- msec: 13600
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5440
+ hash: "e624204566550e928ab2a2c54113d217"
}
Frame {
- msec: 13616
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5456
+ hash: "b95bf705b81544b05f560c54dec56ff1"
}
Frame {
- msec: 13632
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5472
+ hash: "4f4cd776b76272cfe79b86a108bd6b6e"
}
Frame {
- msec: 13648
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5488
+ hash: "ec2eb1b39a252bd9b37d12ede3d231ce"
}
Frame {
- msec: 13664
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5504
+ hash: "a746404a1a26e2a25b8d364dbef46eef"
}
Frame {
- msec: 13680
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5520
+ hash: "17d190465ee0d348d9b67a748626d99e"
}
Frame {
- msec: 13696
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5536
+ hash: "9124d97d120de1806d86c8f437ec4ed2"
}
Frame {
- msec: 13712
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5552
+ hash: "ea746de2380835d299c56bb01f0aa83c"
}
Frame {
- msec: 13728
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5568
+ hash: "4fda328eafe6ec2d02d939517d6d82e3"
}
Frame {
- msec: 13744
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5584
+ hash: "9c6f671def0b1f5d780024a9dad439e6"
}
Frame {
- msec: 13760
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5600
+ hash: "b7d441d0bb27ed6d1984f324b6e02548"
}
Frame {
- msec: 13776
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5616
+ hash: "3042a62a1125171d9530b696f4b36e19"
}
Frame {
- msec: 13792
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5632
+ hash: "4534f40cf6bb7f402d7252c474629664"
}
Frame {
- msec: 13808
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5648
+ hash: "cb5962fe94c5d3ef754ff45f905a5c88"
}
Frame {
- msec: 13824
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5664
+ hash: "b5a5f9f3aa0948f0bd8d9b4a3fceae50"
}
Frame {
- msec: 13840
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5680
+ hash: "2e0605899abb5725cf22561ec9293879"
}
Frame {
- msec: 13856
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5696
+ hash: "1f260f1d931326be7e398f7c87e44735"
}
Frame {
- msec: 13872
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5712
+ hash: "57b5fc47ed700831b3dc3f2afbb1c3ed"
}
Frame {
- msec: 13888
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5728
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 13904
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5744
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 13920
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5760
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 13936
- hash: "4b86de37ae9bc630a2f3440811087617"
+ msec: 5776
+ image: "flickable-vertical.6.png"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 181; y: 242
+ x: 102; y: 279
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 13952
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 13968
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 13984
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14000
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14016
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14032
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14048
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14064
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14080
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14096
- hash: "4b86de37ae9bc630a2f3440811087617"
- }
- Frame {
- msec: 14112
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14128
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14144
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14160
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14176
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14192
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14208
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14224
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14240
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14256
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14272
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14288
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14304
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14320
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14336
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14352
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14368
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14384
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14400
- image: "flickable-vertical.14.png"
- }
- Frame {
- msec: 14416
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14432
- hash: "d96fb1b387b34f41f80e98c1feb05303"
- }
- Frame {
- msec: 14448
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14464
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14480
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14496
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14512
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14528
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14544
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14560
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14576
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14592
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14608
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14624
- hash: "ecd5db8e582e6d2e15943ffd9fcb32a7"
- }
- Frame {
- msec: 14640
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14656
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14672
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14688
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14704
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14720
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14736
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14752
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14768
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14784
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14800
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14816
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14832
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14848
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14864
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14880
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14896
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14912
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14928
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14944
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14960
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14976
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 14992
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 5792
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15008
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 5808
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15024
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 5824
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15040
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 5840
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Mouse {
type: 3
button: 1
buttons: 0
- x: 181; y: 242
+ x: 102; y: 279
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 15056
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15072
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15088
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15104
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15120
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15136
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15152
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15168
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15184
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15200
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15216
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15232
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15248
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15264
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15280
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15296
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15312
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15328
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15344
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15360
- image: "flickable-vertical.15.png"
- }
- Frame {
- msec: 15376
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15392
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15408
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15424
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15440
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15456
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15472
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15488
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15504
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 5856
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15520
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 5872
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15536
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 5888
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15552
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 5904
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15568
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 5920
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15584
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 5936
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15600
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 5952
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15616
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 5968
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15632
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 5984
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15648
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 6000
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15664
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 6016
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15680
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 6032
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15696
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 6048
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 15712
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
+ msec: 6064
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 192; y: 218
+ x: 148; y: 276
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 15728
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15744
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15760
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15776
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15792
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15808
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15824
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15840
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15856
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15872
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15888
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15904
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15920
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15936
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15952
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15968
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 15984
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16000
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16016
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16032
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16048
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16064
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16080
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16096
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16112
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16128
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16144
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16160
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16176
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16192
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16208
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16224
- hash: "e3069d9d3cbcd845b1e4763b0759dc38"
- }
- Frame {
- msec: 16240
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16256
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16272
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
- }
- Frame {
- msec: 16288
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6080
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16304
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6096
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16320
- image: "flickable-vertical.16.png"
+ msec: 6112
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16336
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6128
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16352
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6144
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
- Frame {
- msec: 16368
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 148; y: 276
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 16384
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6160
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16400
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6176
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16416
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6192
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16432
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6208
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16448
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6224
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16464
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6240
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16480
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6256
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16496
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6272
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16512
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6288
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16528
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6304
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16544
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6320
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16560
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6336
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16576
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6352
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16592
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6368
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Frame {
- msec: 16608
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6384
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
- Frame {
- msec: 16624
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 129; y: 101
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 16640
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6400
+ hash: "c18aeb6fb3914a0be2d34ff76249ed8e"
}
Frame {
- msec: 16656
- hash: "53a0e69fe4816e6eed0b4e795bf90e19"
+ msec: 6416
+ hash: "c18aeb6fb3914a0be2d34ff76249ed8e"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 222
+ x: 129; y: 103
modifiers: 0
sendToViewport: true
}
@@ -5044,19 +2676,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 198; y: 224
+ x: 129; y: 105
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16672
- hash: "c30bea2a73a8b5af4565ef3996f29416"
+ msec: 6432
+ hash: "c18aeb6fb3914a0be2d34ff76249ed8e"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 228
+ x: 130; y: 110
modifiers: 0
sendToViewport: true
}
@@ -5064,127 +2696,119 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 198; y: 230
+ x: 132; y: 123
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16688
- hash: "9612c176ec3ecf76a367728f451522a4"
+ msec: 6448
+ hash: "8b9167c04a8acc7f8ade258a3e58893b"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 233
+ x: 132; y: 133
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 16704
- hash: "24f6feeeb1ff82c8d4262f74e4656602"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 238
+ x: 134; y: 145
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16720
- hash: "5823b56f1e362fdfc216a82e2dcdec61"
+ msec: 6464
+ hash: "a5daa2f6c932fa38038639bdc8231c5d"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 241
+ x: 136; y: 159
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 16736
- hash: "4ee243b91e847dabaceb21b5540c2a6d"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 245
+ x: 138; y: 172
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16752
- hash: "87f1dc2238577fc5be6b1bd941226f3e"
+ msec: 6480
+ hash: "f342612efcd5e0820b44bd788ec52d7a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 251
+ x: 138; y: 187
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 16768
- hash: "480c6fcf1b3862a41a7225c35d8080c3"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 198; y: 256
+ x: 140; y: 203
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16784
- hash: "0ac819bd8e6ce19553bd954e466e7ac0"
+ msec: 6496
+ hash: "9a66e65c69ec833a36cce5cbd7d8257f"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 199; y: 258
+ x: 140; y: 214
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 16800
- hash: "0636dd7c4eb0b56697fb59fb46f47f9c"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 201; y: 267
+ x: 141; y: 224
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16816
- hash: "62f76f46857106010c2e862ed19baeea"
+ msec: 6512
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 276
+ x: 143; y: 235
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 143; y: 246
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16832
- hash: "26b9c6379590bbda24d129bd4f19f7d3"
+ msec: 6528
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 279
+ x: 143; y: 257
modifiers: 0
sendToViewport: true
}
@@ -5192,19 +2816,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 203; y: 280
+ x: 145; y: 269
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16848
- hash: "21baf0596553627c8e683a31c2e6d04f"
+ msec: 6544
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 281
+ x: 145; y: 278
modifiers: 0
sendToViewport: true
}
@@ -5212,991 +2836,355 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 203; y: 282
+ x: 145; y: 289
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16864
- hash: "036679da5def5e696361f2373172a3f4"
+ msec: 6560
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 283
+ x: 147; y: 299
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 16880
- hash: "e3fc6101bc6cccf309b3df6b194820ea"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 285
+ x: 147; y: 308
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16896
- hash: "d9ee6d0a7455cfd724c1856549100756"
+ msec: 6576
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 286
+ x: 149; y: 316
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 16912
- hash: "caa70db5f31eb607c2de39734a42796c"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 287
+ x: 149; y: 318
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 16928
- hash: "e2dc88b454e69cf92d6887a2f0629a94"
- }
- Frame {
- msec: 16944
- hash: "e2dc88b454e69cf92d6887a2f0629a94"
+ msec: 6592
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 203; y: 288
+ x: 149; y: 320
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 16960
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 16976
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 16992
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17008
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17024
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17040
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17056
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17072
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17088
- hash: "fac8455a2707b04aabff25723375a78b"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 149; y: 321
+ modifiers: 0
+ sendToViewport: true
}
Mouse {
type: 3
button: 1
buttons: 0
- x: 203; y: 288
+ x: 149; y: 321
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 17104
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17120
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17136
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17152
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17168
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17184
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17200
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17216
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17232
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17248
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17264
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17280
- image: "flickable-vertical.17.png"
- }
- Frame {
- msec: 17296
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17312
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17328
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17344
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17360
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17376
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17392
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17408
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17424
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17440
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17456
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17472
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17488
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17504
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17520
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17536
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17552
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17568
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17584
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17600
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17616
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17632
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17648
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17664
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17680
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17696
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17712
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17728
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17744
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17760
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17776
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17792
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17808
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17824
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17840
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17856
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17872
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17888
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17904
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17920
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17936
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17952
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17968
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 17984
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18000
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18016
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18032
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18048
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18064
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6608
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18080
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6624
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18096
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6640
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18112
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6656
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18128
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6672
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18144
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6688
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18160
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6704
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18176
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6720
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18192
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6736
+ image: "flickable-vertical.7.png"
}
Frame {
- msec: 18208
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6752
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18224
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6768
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18240
- image: "flickable-vertical.18.png"
+ msec: 6784
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18256
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6800
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18272
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6816
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18288
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6832
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18304
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6848
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18320
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6864
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18336
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6880
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18352
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6896
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18368
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6912
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18384
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6928
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18400
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6944
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18416
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6960
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18432
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6976
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Frame {
- msec: 18448
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 6992
+ hash: "bca482a77823f03e8fb4170ee329fc0e"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 102; y: 575
+ x: 166; y: 191
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 18464
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18480
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18496
- hash: "fac8455a2707b04aabff25723375a78b"
+ msec: 7008
+ hash: "9ed65a21e4aaedf9c48a38324b3f5480"
}
Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 102; y: 575
+ type: 5
+ button: 0
+ buttons: 1
+ x: 167; y: 190
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 18512
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18528
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18544
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18560
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18576
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18592
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18608
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18624
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18640
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18656
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18672
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18688
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18704
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18720
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18736
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18752
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18768
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18784
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18800
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18816
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18832
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18848
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18864
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18880
- hash: "fac8455a2707b04aabff25723375a78b"
- }
- Frame {
- msec: 18896
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 18912
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 18928
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 18944
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 18960
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 18976
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 18992
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19008
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19024
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19040
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19056
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19072
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19088
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19104
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19120
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19136
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19152
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19168
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19184
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19200
- image: "flickable-vertical.19.png"
- }
- Frame {
- msec: 19216
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19232
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19248
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19264
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 164; y: 571
+ x: 167; y: 189
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 19280
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19296
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19312
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19328
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ msec: 7024
+ hash: "9ed65a21e4aaedf9c48a38324b3f5480"
}
Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 164; y: 571
+ type: 5
+ button: 0
+ buttons: 1
+ x: 167; y: 188
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 19344
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19360
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19376
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19392
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19408
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19424
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19440
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19456
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19472
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19488
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19504
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19520
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19536
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19552
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19568
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19584
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19600
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19616
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19632
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19648
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19664
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19680
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19696
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19712
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19728
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19744
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19760
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19776
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19792
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19808
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19824
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19840
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19856
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19872
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19888
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19904
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19920
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19936
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19952
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19968
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 19984
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 20000
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 20016
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 20032
- hash: "cce4177eb20b7aa43a7383a16c43f473"
- }
- Frame {
- msec: 20048
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 168; y: 185
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 20064
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ msec: 7040
+ hash: "9ed65a21e4aaedf9c48a38324b3f5480"
}
- Frame {
- msec: 20080
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 169; y: 183
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 20096
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 169; y: 179
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 20112
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ msec: 7056
+ hash: "c4925926f64b852ff6c8d07e1c70ead5"
}
- Frame {
- msec: 20128
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 170; y: 172
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 20144
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 170; y: 162
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 20160
- image: "flickable-vertical.20.png"
+ msec: 7072
+ hash: "da771cedad067b8f25c100613b6a14f2"
}
- Frame {
- msec: 20176
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 168; y: 150
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 20192
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 167; y: 139
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 20208
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ msec: 7088
+ hash: "c8862bf76a431edc1cf04f4114fa859f"
}
- Frame {
- msec: 20224
- hash: "cce4177eb20b7aa43a7383a16c43f473"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 165; y: 125
+ modifiers: 0
+ sendToViewport: true
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 170; y: 450
+ x: 163; y: 113
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 20240
- hash: "b8e7a053fc023be42ab5136f6e7305fd"
+ msec: 7104
+ hash: "4d923cd520c00f5cd985283d62cf17ec"
}
- Frame {
- msec: 20256
- hash: "b8e7a053fc023be42ab5136f6e7305fd"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 161; y: 103
+ modifiers: 0
+ sendToViewport: true
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 170; y: 448
+ x: 160; y: 92
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 20272
- hash: "b8e7a053fc023be42ab5136f6e7305fd"
+ msec: 7120
+ hash: "76b0d1c77ba29bad836673b1b79de911"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 172; y: 438
+ x: 158; y: 80
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 20288
- hash: "40cf6e4567c796d6ad83778fb1959d8a"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 176; y: 410
+ x: 156; y: 66
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 20304
- hash: "9914584daf02407c1edc3b6a38b8302d"
+ msec: 7136
+ hash: "3f9c5686f0a9ef5ecf2b8338ef2e7933"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 176; y: 388
+ x: 154; y: 52
modifiers: 0
sendToViewport: true
}
@@ -6204,19 +3192,27 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 176; y: 366
+ x: 154; y: 38
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 20320
- hash: "5aff2316a5e34f5e15b7cb36257a3d72"
+ msec: 7152
+ hash: "799d83eedefa0a56f37a83404c59ad4f"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 176; y: 342
+ x: 152; y: 27
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 150; y: 18
modifiers: 0
sendToViewport: true
}
@@ -6224,331 +3220,127 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 176; y: 342
+ x: 150; y: 18
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 20336
- hash: "de1f9ff1abfa8cdc760bc84129fab40d"
- }
- Frame {
- msec: 20352
- hash: "032c4fd62a0a611207262d317d4ea103"
- }
- Frame {
- msec: 20368
- hash: "1db8a7b3899f5efea25ccf93285ee6bd"
- }
- Frame {
- msec: 20384
- hash: "3c106f68b755862346cddd21d75c0caf"
- }
- Frame {
- msec: 20400
- hash: "41d025dfe037b9cebe84e4c7200e9d15"
- }
- Frame {
- msec: 20416
- hash: "f347687313c88150a6f977ae8b1620fc"
- }
- Frame {
- msec: 20432
- hash: "4bb30faaec54e2a47dfd2b2988a6c231"
- }
- Frame {
- msec: 20448
- hash: "fede02600e790d4b6eb1f85563b37cbc"
- }
- Frame {
- msec: 20464
- hash: "0a949f7150b3709b9eda62c98f98fc62"
- }
- Frame {
- msec: 20480
- hash: "214e571c2346b0d6b5d1220e856a8e67"
- }
- Frame {
- msec: 20496
- hash: "f84207d20cfff984d1c79654a1074d02"
- }
- Frame {
- msec: 20512
- hash: "7dc3592294dcd88fbfff2f984fd2d4c3"
- }
- Frame {
- msec: 20528
- hash: "42829e78f62e692a093df267d2b673e2"
- }
- Frame {
- msec: 20544
- hash: "d264570c78e7d1ea283c72191953a2ce"
- }
- Frame {
- msec: 20560
- hash: "b69b045557a8eada80a24eb4caa7ea4e"
- }
- Frame {
- msec: 20576
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20592
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20608
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20624
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20640
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20656
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20672
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20688
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20704
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20720
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20736
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20752
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20768
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20784
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20800
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20816
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20832
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20848
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20864
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20880
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20896
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20912
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20928
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20944
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20960
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20976
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 20992
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21008
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21024
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21040
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21056
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21072
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21088
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21104
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21120
- image: "flickable-vertical.21.png"
- }
- Frame {
- msec: 21136
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21152
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21168
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21184
- hash: "a76f069dfcb1af0794999c34507e190e"
- }
- Frame {
- msec: 21200
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7168
+ hash: "d6b5ceca4aa48a7d4fd901d44c151b53"
}
Frame {
- msec: 21216
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7184
+ hash: "e1609c4e40fb9e043a9fff683b94c6c4"
}
Frame {
- msec: 21232
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7200
+ hash: "ea457fc4d4065d2ed0e9f6efc47a06ee"
}
Frame {
- msec: 21248
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7216
+ hash: "b7f4319aa9c21640a697ee89f162bb49"
}
Frame {
- msec: 21264
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7232
+ hash: "880f60263cd79fb6a1bff7252d2373bb"
}
Frame {
- msec: 21280
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7248
+ hash: "00ffef1a1d4341ac1c7f43d493a9e826"
}
Frame {
- msec: 21296
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7264
+ hash: "c949fe87ba91e08f26a1c4d90028513f"
}
Frame {
- msec: 21312
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7280
+ hash: "8636af4591c61c4b4a548f3a38749413"
}
Frame {
- msec: 21328
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7296
+ hash: "63b26ecde2a2a9ce36884191304352ed"
}
Frame {
- msec: 21344
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7312
+ hash: "843f7263f63442f0041bf2c1a6fae400"
}
Frame {
- msec: 21360
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7328
+ hash: "ff1a053c0af99c51353503002515843d"
}
Frame {
- msec: 21376
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7344
+ hash: "47aea3ac4ea935d43f731a258287c2e8"
}
Frame {
- msec: 21392
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7360
+ hash: "eee4fa336149528dfb16565b856ca692"
}
Frame {
- msec: 21408
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7376
+ hash: "bb94493c25c56c41e81ef1e390adf63d"
}
Frame {
- msec: 21424
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7392
+ hash: "2915f455a5e1e8c6b8cc78309c5e84d9"
}
Frame {
- msec: 21440
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7408
+ hash: "94701ffaa4f45924ad89f92a30157c7d"
}
Frame {
- msec: 21456
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7424
+ hash: "92fae8cf4b8d8404b26a31f995860b95"
}
Frame {
- msec: 21472
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7440
+ hash: "6b979e1a4bc7226a89ffb97be2f08147"
}
Frame {
- msec: 21488
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7456
+ hash: "dd94beeb0b4933a9ac2236a9abe630ff"
}
- Frame {
- msec: 21504
- hash: "a76f069dfcb1af0794999c34507e190e"
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 109; y: 172
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 21520
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7472
+ hash: "dd94beeb0b4933a9ac2236a9abe630ff"
}
Frame {
- msec: 21536
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7488
+ hash: "dd94beeb0b4933a9ac2236a9abe630ff"
}
- Frame {
- msec: 21552
- hash: "a76f069dfcb1af0794999c34507e190e"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 170
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 21568
- hash: "a76f069dfcb1af0794999c34507e190e"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 168
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 21584
- hash: "a76f069dfcb1af0794999c34507e190e"
+ msec: 7504
+ hash: "dd94beeb0b4933a9ac2236a9abe630ff"
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 197; y: 124
+ x: 109; y: 165
modifiers: 0
sendToViewport: true
}
@@ -6556,19 +3348,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 197; y: 132
+ x: 109; y: 152
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 21600
- hash: "06472b42bc00fcaf7f84cd4ac613bbd2"
+ msec: 7520
+ hash: "34c7ed1c072d84626a8a64f7db02f71d"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 197; y: 146
+ x: 109; y: 135
modifiers: 0
sendToViewport: true
}
@@ -6576,19 +3368,19 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 197; y: 164
+ x: 109; y: 116
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 21616
- hash: "463fce69afc3dec181425c9adaa3e77c"
+ msec: 7536
+ hash: "e723da5ecaffe31f03b1d5ca6765229b"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 197; y: 190
+ x: 106; y: 91
modifiers: 0
sendToViewport: true
}
@@ -6596,31 +3388,39 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 195; y: 218
+ x: 104; y: 66
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 21632
- hash: "9af34ff618e277eafad32e0377ecc94b"
+ msec: 7552
+ hash: "a85128cae494abeb5d45ab8df0d127a6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 102; y: 42
+ modifiers: 0
+ sendToViewport: true
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 187; y: 250
+ x: 100; y: 17
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 21648
- hash: "db4b2333630ccc4a7982361609a12837"
+ msec: 7568
+ hash: "3599a92966c27321e9f702f3428b9b00"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 183; y: 284
+ x: 100; y: -2
modifiers: 0
sendToViewport: true
}
@@ -6628,410 +3428,220 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 183; y: 284
+ x: 100; y: -2
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 21664
- hash: "50335b19a1e210f87924d01bb343a0e0"
- }
- Frame {
- msec: 21680
- hash: "59b4f80a7cd6b732eb26f3b4147efe7e"
- }
- Frame {
- msec: 21696
- hash: "b99cc1f07bcb0480801d4d5403372525"
- }
- Frame {
- msec: 21712
- hash: "871040b0f921646609b79828bab38949"
- }
- Frame {
- msec: 21728
- hash: "2acb3d19eed000313872d5cd66765b53"
- }
- Frame {
- msec: 21744
- hash: "b5431a2d2e856a726ceac2066b128f8f"
- }
- Frame {
- msec: 21760
- hash: "04047c917a95a2a3df30c14bb20601dd"
- }
- Frame {
- msec: 21776
- hash: "fea7ac3d26975f438129e394c667e628"
- }
- Frame {
- msec: 21792
- hash: "4db41ff05865cabc4ef288478254e633"
- }
- Frame {
- msec: 21808
- hash: "e0d3737effd817a8f603eb393677b8b6"
- }
- Frame {
- msec: 21824
- hash: "d4f06941d213544ddcae714ddc0b47e9"
- }
- Frame {
- msec: 21840
- hash: "dbb21caf4a4c9b88563f1d0aad35f3d3"
- }
- Frame {
- msec: 21856
- hash: "eb9a052219c3f955f2c036834990089b"
- }
- Frame {
- msec: 21872
- hash: "40090a35caf674ed9c4bf1d10f9209ea"
- }
- Frame {
- msec: 21888
- hash: "064de0abec66d1ddcf0f6073ce7d91ef"
- }
- Frame {
- msec: 21904
- hash: "f407334d0b63a34657dc1306fd67aeb7"
- }
- Frame {
- msec: 21920
- hash: "1c0744be97c65c68ca92bd86d42c7b0e"
- }
- Frame {
- msec: 21936
- hash: "7469d4a06c5df073e22db3c905baefc1"
- }
- Frame {
- msec: 21952
- hash: "35912a7e2ecc0c387fc9fb9da7201bfd"
- }
- Frame {
- msec: 21968
- hash: "9f835091374f0d0d9a6996e6dad10e19"
- }
- Frame {
- msec: 21984
- hash: "afade1ecbaf5f920880eaff3b3de606e"
- }
- Frame {
- msec: 22000
- hash: "9c70e8a020c8c1101b9884529cb4527f"
- }
- Frame {
- msec: 22016
- hash: "3e7d4dc75f85dfeb065da18ef1c102c1"
- }
- Frame {
- msec: 22032
- hash: "16852d62a77eefccea9497ae1b09842d"
- }
- Frame {
- msec: 22048
- hash: "ea8afda6d837a98f408a7aa133494575"
- }
- Frame {
- msec: 22064
- hash: "666435dccf30c53eb09ea7ad8b5264a1"
- }
- Frame {
- msec: 22080
- image: "flickable-vertical.22.png"
- }
- Frame {
- msec: 22096
- hash: "2e959bf0470bac84e2220d9e8a8bbb97"
- }
- Frame {
- msec: 22112
- hash: "595b6cfd559f8362b010616de4947ec6"
- }
- Frame {
- msec: 22128
- hash: "976dd345cc7cb4e3c09a288530d3c8af"
- }
- Frame {
- msec: 22144
- hash: "9493e425d5cd3f9eef904a1be63f45f1"
- }
- Frame {
- msec: 22160
- hash: "0a2013afebb5e09d82633c8d8a393f01"
- }
- Frame {
- msec: 22176
- hash: "d8377c464bc59d95e0670d697888d804"
- }
- Frame {
- msec: 22192
- hash: "52f9416973da953bd6fe55b2fe22786a"
- }
- Frame {
- msec: 22208
- hash: "23b9af0f371b7817e9ceaa1a83995d35"
- }
- Frame {
- msec: 22224
- hash: "34b0e0333c91bc4533e0c01eaeb3d3f9"
- }
- Frame {
- msec: 22240
- hash: "1597b86afe2841c3bb77bb5dd6aa6803"
- }
- Frame {
- msec: 22256
- hash: "d74111814ff259fea47e1eb3b36e174b"
- }
- Frame {
- msec: 22272
- hash: "c64c46fe9cd75afbf2385241ea8e55d4"
- }
- Frame {
- msec: 22288
- hash: "1e8740a104643fe30b0e874bbbed44ab"
- }
- Frame {
- msec: 22304
- hash: "ef669a8d142947463084383a6c7c7f85"
- }
- Frame {
- msec: 22320
- hash: "2314c42b5994bdbfd73eb2c3ea54626b"
- }
- Frame {
- msec: 22336
- hash: "53a0694d8eee91b968bd43efe43f2c9e"
- }
- Frame {
- msec: 22352
- hash: "be4772528f30c18193e49ae04a290af8"
- }
- Frame {
- msec: 22368
- hash: "a0b0877ab92a0323e35fdb7beb602dee"
- }
- Frame {
- msec: 22384
- hash: "a0e299fb4ba811a0b22fb62c222cb86c"
- }
- Frame {
- msec: 22400
- hash: "2562bc9c9aa60a48b6ca00333f60d163"
- }
- Frame {
- msec: 22416
- hash: "486b45c385d88d6f054fa6308b55f2ac"
+ msec: 7584
+ hash: "067a1bef3df5d1c40842f28885d60250"
}
Frame {
- msec: 22432
- hash: "86502af668ed6336dce8fe329e3408a6"
+ msec: 7600
+ hash: "82f818ed44a191fb51e637b8068786dc"
}
Frame {
- msec: 22448
- hash: "2a79a6530a07f00810310117d00d28ed"
+ msec: 7616
+ hash: "f408f59707195549ba61f030a3f020cd"
}
Frame {
- msec: 22464
- hash: "94a5fce3e0c3b219e0d807bfcade11e8"
+ msec: 7632
+ hash: "66e79c8b2f8e3a57c3bc14935c5df7d1"
}
Frame {
- msec: 22480
- hash: "94a5fce3e0c3b219e0d807bfcade11e8"
+ msec: 7648
+ hash: "4341c6b7b0d2e8021b51cb1abab85e10"
}
Frame {
- msec: 22496
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7664
+ hash: "5ec8ee5ccecac1787b2f5e99268e810d"
}
Frame {
- msec: 22512
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7680
+ hash: "1fae7b735ff6e88abfb1423f8960da4f"
}
Frame {
- msec: 22528
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7696
+ image: "flickable-vertical.8.png"
}
Frame {
- msec: 22544
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7712
+ hash: "dce74ff07eb37c82a38b3e515f9a43f2"
}
Frame {
- msec: 22560
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7728
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22576
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7744
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22592
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7760
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22608
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7776
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22624
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7792
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22640
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7808
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22656
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7824
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22672
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7840
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22688
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7856
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22704
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7872
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22720
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7888
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22736
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7904
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22752
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7920
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22768
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7936
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22784
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7952
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22800
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7968
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22816
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 7984
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22832
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8000
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22848
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8016
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22864
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8032
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22880
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8048
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22896
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8064
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22912
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8080
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22928
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8096
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22944
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8112
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22960
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8128
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22976
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8144
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 22992
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8160
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23008
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8176
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23024
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8192
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23040
- image: "flickable-vertical.23.png"
+ msec: 8208
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23056
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8224
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23072
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8240
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23088
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8256
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23104
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8272
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23120
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8288
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23136
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8304
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23152
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8320
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23168
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8336
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23184
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8352
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23200
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8368
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23216
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8384
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23232
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8400
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
Frame {
- msec: 23248
- hash: "8443c45791c906a9fe23831844f48a1c"
+ msec: 8416
+ hash: "ba2c06129f17fde474427859d66ecd23"
}
- Frame {
- msec: 23264
- hash: "8443c45791c906a9fe23831844f48a1c
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-vertical.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-vertical.qml
index 5f43f95145..1fd65d17de 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-vertical.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/flickable-vertical.qml
@@ -2,7 +2,7 @@ import QtQuick 1.0
Rectangle {
color: "lightSteelBlue"
- width: 300; height: 600
+ width: 200; height: 300
ListModel {
id: list
@@ -24,7 +24,7 @@ Rectangle {
id: column
Repeater {
model: list
- Rectangle { width: 300; height: 200; color: mr.pressed ? "black" : dayColor
+ Rectangle { width: 200; height: 100; color: mr.pressed ? "black" : dayColor
MouseArea {
id: mr
anchors.fill: parent
@@ -85,6 +85,6 @@ Rectangle {
height: 50
x: 200
y: parent.height - 50
- color: blue
+ color: "blue"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.0.png
index 53a8b42a00..b3ae1bcca7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.1.png
index b7efe8c3e2..0458d82dd9 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.2.png
index aa6d14771a..0e01afc3ca 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.3.png
index 9d3971335e..b256bc2301 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.4.png
index 98e8817699..8454ed241f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.5.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.5.png
index a3f9d8f45b..177a0fe9a0 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.6.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.6.png
new file mode 100644
index 0000000000..a51cffeb5f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.qml
index d2d46e45e9..2d362a42e2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test-flipable.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "7e16e6360fc2e9db67dbf11d58042745"
+ image: "test-flipable.0.png"
}
Frame {
msec: 32
@@ -242,11 +242,11 @@ VisualTest {
}
Frame {
msec: 960
- image: "test-flipable.0.png"
+ hash: "c03406106847c03c73f5897e65690925"
}
Frame {
msec: 976
- hash: "7d1a0ff0eceb80ff64d828c34792a2d5"
+ image: "test-flipable.1.png"
}
Frame {
msec: 992
@@ -482,11 +482,11 @@ VisualTest {
}
Frame {
msec: 1920
- image: "test-flipable.1.png"
+ hash: "1e8348fbb51871dffe9543fca19bb452"
}
Frame {
msec: 1936
- hash: "ae4e35413e462221b8cb48dd0350f873"
+ image: "test-flipable.2.png"
}
Frame {
msec: 1952
@@ -722,11 +722,11 @@ VisualTest {
}
Frame {
msec: 2880
- image: "test-flipable.2.png"
+ hash: "373141f99bc88c40ead161502c9750e9"
}
Frame {
msec: 2896
- hash: "ae76d183491834e2b1d0371420d51ce5"
+ image: "test-flipable.3.png"
}
Frame {
msec: 2912
@@ -962,11 +962,11 @@ VisualTest {
}
Frame {
msec: 3840
- image: "test-flipable.3.png"
+ hash: "464a78e75e10b62773ab64af4fc4c7aa"
}
Frame {
msec: 3856
- hash: "e18635d7c6c5de361e7406c2db357aca"
+ image: "test-flipable.4.png"
}
Frame {
msec: 3872
@@ -1202,11 +1202,11 @@ VisualTest {
}
Frame {
msec: 4800
- image: "test-flipable.4.png"
+ hash: "03f17b2cd781f2ee0ae5664a0491166c"
}
Frame {
msec: 4816
- hash: "6e48e605ea1aed4028e02476328f182b"
+ image: "test-flipable.5.png"
}
Frame {
msec: 4832
@@ -1442,11 +1442,11 @@ VisualTest {
}
Frame {
msec: 5760
- image: "test-flipable.5.png"
+ hash: "73c06997014af4e008b546b53fe349fb"
}
Frame {
msec: 5776
- hash: "90fb4e4ba04ac32b52c10b3258431c04"
+ image: "test-flipable.6.png"
}
Frame {
msec: 5792
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test_flipable_resize.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test_flipable_resize.0.png
new file mode 100644
index 0000000000..814cc89210
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test_flipable_resize.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test_flipable_resize.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test_flipable_resize.qml
index d1a5ade01f..d211832b0f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test_flipable_resize.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeflipable/data/test_flipable_resize.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "04382a80a203e1fe3d0d4944c9195e0b"
+ image: "test_flipable_resize.0.png"
}
Frame {
msec: 32
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.0.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.0.png
index 6c827779f1..b053048fe7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.png
index 07b1f7c913..c675be7235 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.10.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.10.png
new file mode 100644
index 0000000000..c675be7235
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.10.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.png
index f2f08c083a..9f605c3598 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.png
index 08649f959c..767d7a9f79 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.png
index f9c2f17a6f..20146c932f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.png
index 52ec0bd132..85fac8913a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.png
index 3fe25befa1..e522baee9a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.png
index 4cc12a60d1..f9192e46fd 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.png
index 2267f2326b..ad187bdd3d 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.png
index 6c827779f1..96c6325724 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.qml b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.qml
index 67aa10a0db..6f0352d82b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "c33447c78ea64452ec3cd1696fb502eb"
+ image: "gridview.0.png"
}
Frame {
msec: 32
@@ -122,27 +122,27 @@ VisualTest {
}
Frame {
msec: 448
- hash: "96ad89eafa7f99269518a192573af91b"
+ hash: "c33447c78ea64452ec3cd1696fb502eb"
}
Frame {
msec: 464
- hash: "735b00b968d0e2ea1f34cc0bdc028a8e"
+ hash: "159004854f8c07144034e1265cf6f44a"
}
Frame {
msec: 480
- hash: "ce37c8e15fbb1aea72aff9629683fa96"
+ hash: "a3f2471ef4ceac77a1c20ac327550d8d"
}
Frame {
msec: 496
- hash: "a3f2471ef4ceac77a1c20ac327550d8d"
+ hash: "1121efa0df5057387be08fced62fe9eb"
}
Frame {
msec: 512
- hash: "28f120bd3bda9552dbc8cc908409c67d"
+ hash: "67ad85cda0b8fb382cb536ef880f715b"
}
Frame {
msec: 528
- hash: "f21cf0ed746fa48e67dc90c70c5bbae8"
+ hash: "4de18d32c93ca5cd77cb45c8c4f3b4fc"
}
Key {
type: 7
@@ -154,19 +154,19 @@ VisualTest {
}
Frame {
msec: 544
- hash: "485d55730366b68e01582879f6970fa1"
+ hash: "de26f0243101d57f4acf42b256ad75f9"
}
Frame {
msec: 560
- hash: "700e53c78b28993dce5dafb4035f4760"
+ hash: "119ea359724d5f4ba1e1aa120cddf3ea"
}
Frame {
msec: 576
- hash: "1e538e175a5e402e2334cf354392e8a7"
+ hash: "65fbee28f9ea68a6f2736d75a65b3ee2"
}
Frame {
msec: 592
- hash: "0fbfba93eebaf05ae60067b365b6b4bc"
+ hash: "7b1893397b76b0c95094eeca1dd21446"
}
Frame {
msec: 608
@@ -206,31 +206,31 @@ VisualTest {
}
Frame {
msec: 720
- hash: "25e48099a8194ed2674651818d854c61"
+ hash: "7b1893397b76b0c95094eeca1dd21446"
}
Frame {
msec: 736
- hash: "b75d02dfc238ba2292306ca1421279c3"
+ hash: "6123118055b4d0678eb2b7cdf8b12592"
}
Frame {
msec: 752
- hash: "7e48b7d9c1291b4e438c81f44228d8ad"
+ hash: "fe4b009abe081a6eaeab6ef9e996f3fd"
}
Frame {
msec: 768
- hash: "fe4b009abe081a6eaeab6ef9e996f3fd"
+ hash: "2f23f647daa1c11637d6a21c2668be49"
}
Frame {
msec: 784
- hash: "edea8c305fe88708dbafc03e427caa09"
+ hash: "62d995a1feb7f600669c1c7ef5f6a5da"
}
Frame {
msec: 800
- hash: "7b58803f12d0ab893acf539799d79e31"
+ hash: "66e881ee93f4722605a63dccd083635d"
}
Frame {
msec: 816
- hash: "9b56c3d1d140114dcc57d0a8568e9b95"
+ hash: "27ac08cc4f62552a9d1c1cbf781a00f9"
}
Key {
type: 7
@@ -242,15 +242,15 @@ VisualTest {
}
Frame {
msec: 832
- hash: "35e38e273dbc8e565917b21d00fc1530"
+ hash: "792be2ec5a08ad74cda4c19b6bc209d0"
}
Frame {
msec: 848
- hash: "116e294391333e8780daeca54c3d51ea"
+ hash: "0d28add40afd81f768603ea3e396f0b3"
}
Frame {
msec: 864
- hash: "6219676215f82540d7a53b2a8aa60279"
+ hash: "02c632713d0dc64bff9d8e58f745df95"
}
Frame {
msec: 880
@@ -274,11 +274,11 @@ VisualTest {
}
Frame {
msec: 960
- image: "gridview.0.png"
+ hash: "02c632713d0dc64bff9d8e58f745df95"
}
Frame {
msec: 976
- hash: "02c632713d0dc64bff9d8e58f745df95"
+ image: "gridview.1.png"
}
Frame {
msec: 992
@@ -334,15 +334,15 @@ VisualTest {
}
Frame {
msec: 1168
- hash: "2667c2596de97dc15353158eba03495f"
+ hash: "02c632713d0dc64bff9d8e58f745df95"
}
Frame {
msec: 1184
- hash: "6a7b64e1427dcb7e438aa09a739cbc7b"
+ hash: "eac6b1299cb386f2be244b43a0be26ae"
}
Frame {
msec: 1200
- hash: "5bad6dc745958f5827403ea593c78752"
+ hash: "14350c877f5259a3cb3836fa5f8ff563"
}
Key {
type: 7
@@ -354,31 +354,31 @@ VisualTest {
}
Frame {
msec: 1216
- hash: "b393401219ada7d094a451dba8af3f1a"
+ hash: "582bfeca87cba0dee21b9551e583ec93"
}
Frame {
msec: 1232
- hash: "ba656452f8adf3d1ca7db9286274c37f"
+ hash: "cefe1139141fa381e55f1254713a1380"
}
Frame {
msec: 1248
- hash: "1e9725c8c364a491f34035fad1f77c63"
+ hash: "72e966a995c818b16b48bb193eda241a"
}
Frame {
msec: 1264
- hash: "a0aef0b65446dec0673b5cec3a260390"
+ hash: "8dfeefd93687861158ca4496e56cdbb9"
}
Frame {
msec: 1280
- hash: "d60c11a5d376af0831d6f05f2a839a92"
+ hash: "daf8474f1f583039f6a14b822e5dff5e"
}
Frame {
msec: 1296
- hash: "1dd2c456c6ee9cc8f9be0e9f3617d44b"
+ hash: "eb2b4ba7ffab22660d0b9de4226ea88f"
}
Frame {
msec: 1312
- hash: "56208e6551e2f4202bab2d62a1cf46a2"
+ hash: "f0f00d22d15ed9828db7b5f3a3669fe9"
}
Frame {
msec: 1328
@@ -474,31 +474,31 @@ VisualTest {
}
Frame {
msec: 1664
- hash: "f0f00d22d15ed9828db7b5f3a3669fe9"
+ hash: "caa3c1a106d549e6bb94a1746bd7a53c"
}
Frame {
msec: 1680
- hash: "153e7984089530bbd052c9e4f62eb14c"
+ hash: "66e158aa7dd78362dffddf2a9e7375ef"
}
Frame {
msec: 1696
- hash: "0525d40cc58d054a3abd7ee2486576f8"
+ hash: "8c23d5245774ab5252c98c19c33f8171"
}
Frame {
msec: 1712
- hash: "8c23d5245774ab5252c98c19c33f8171"
+ hash: "bf37dc941e49af9bd1e0e182a4ef6f0a"
}
Frame {
msec: 1728
- hash: "5ca243794d1350f04cf973d4bfc8ab89"
+ hash: "3fc025193fa6d6db0428ae1fa179bf55"
}
Frame {
msec: 1744
- hash: "d19b7f4c0897aba498e122d83b4cbbf1"
+ hash: "9efef22e6e29e18b2896982440c7bbae"
}
Frame {
msec: 1760
- hash: "99e41460dd8efc6e5c3faf54b14c3d43"
+ hash: "380e92b30430d3f589a88e67b7b959bd"
}
Key {
type: 7
@@ -510,15 +510,15 @@ VisualTest {
}
Frame {
msec: 1776
- hash: "703469f8b133156ed3aabe02762d66c3"
+ hash: "80329cd1548c4ff9ee589d56e9d8cd90"
}
Frame {
msec: 1792
- hash: "1cc2c383e988048db76a80d8d7f5a0e2"
+ hash: "6030c139032fc80abb5aabb85d8dfa4d"
}
Frame {
msec: 1808
- hash: "8e87117c19eb9d6e600c44e0f3869ae1"
+ hash: "8304d2432168a2ea8a887d9a135b40b4"
}
Frame {
msec: 1824
@@ -546,11 +546,11 @@ VisualTest {
}
Frame {
msec: 1920
- image: "gridview.1.png"
+ hash: "8304d2432168a2ea8a887d9a135b40b4"
}
Frame {
msec: 1936
- hash: "8304d2432168a2ea8a887d9a135b40b4"
+ image: "gridview.2.png"
}
Frame {
msec: 1952
@@ -574,27 +574,27 @@ VisualTest {
}
Frame {
msec: 2000
- hash: "4924037ce643d0748b8b2c666e61fd62"
+ hash: "8304d2432168a2ea8a887d9a135b40b4"
}
Frame {
msec: 2016
- hash: "ef9750584e669a8b2d415d13854e12a6"
+ hash: "719eabf9ad7e15d5429630c7f7136980"
}
Frame {
msec: 2032
- hash: "69937eacef6e6b11ad1d5741c69a1faa"
+ hash: "a1bd870fffd95a0604dd8e170e571632"
}
Frame {
msec: 2048
- hash: "a1bd870fffd95a0604dd8e170e571632"
+ hash: "b406160dda839ee34002190e05ceffac"
}
Frame {
msec: 2064
- hash: "a3a72386594aacc88977cdaa6441df48"
+ hash: "a139784af7675281f0f3760a932aef0c"
}
Frame {
msec: 2080
- hash: "6d8e89de38d52f0f0f871dfa18361cb5"
+ hash: "2c7d2f857919deae0a8ad6dc2f7d806f"
}
Key {
type: 7
@@ -606,19 +606,19 @@ VisualTest {
}
Frame {
msec: 2096
- hash: "96cfb1eb6893fac86c9434d1ffb82fcb"
+ hash: "80af5431f6d9a77f98c23d913c6caad4"
}
Frame {
msec: 2112
- hash: "5e11df1660634ff317be474118174ec5"
+ hash: "b3ccaf648e09dbfcbaa7609440c63fc9"
}
Frame {
msec: 2128
- hash: "2eb75858b50c3a9a80673ab89014ed63"
+ hash: "d267f9f4dd471be1cf4718d212c79887"
}
Frame {
msec: 2144
- hash: "3ff5d66f7902af92d49ebebf04d16c26"
+ hash: "570da61e2d48acd11474fe005110ab4b"
}
Frame {
msec: 2160
@@ -678,31 +678,31 @@ VisualTest {
}
Frame {
msec: 2352
- hash: "efeda5b2d97e1b7c22e2308250501cb7"
+ hash: "570da61e2d48acd11474fe005110ab4b"
}
Frame {
msec: 2368
- hash: "d6158379b699279f66b94a8418e53af1"
+ hash: "db27d4cc92c09148675e76459d8ecb15"
}
Frame {
msec: 2384
- hash: "ab960b0669fa594e0552df623a9136ea"
+ hash: "2c6f60eb170588a8450c679f3b16a6a4"
}
Frame {
msec: 2400
- hash: "0ebf6be1305ee1eb8740f4d0365ef4c5"
+ hash: "024a4d4fc9a11d352d1e0f5ee7f7dbc8"
}
Frame {
msec: 2416
- hash: "46cde47dffc6f2687c8c643eca09b95d"
+ hash: "c966b518b881f85a2d1cc86f5284ee1b"
}
Frame {
msec: 2432
- hash: "2b8698ce02a6964115d960ae19f40c37"
+ hash: "db15811f2d2cff0949213823649ef1d4"
}
Frame {
msec: 2448
- hash: "ff1e7d800bb27b41710c50554adc1091"
+ hash: "bbd9fad235aa2843bf2b64f3cf24f4e3"
}
Key {
type: 7
@@ -714,15 +714,15 @@ VisualTest {
}
Frame {
msec: 2464
- hash: "5837b3aca09038cae23dcb149acc8b0b"
+ hash: "ccbc2f09ed263375e7b52f556fb2836f"
}
Frame {
msec: 2480
- hash: "dbe7c571cdbdb9de4fd01faa6d5374cf"
+ hash: "c3b74e90fa99f4357762b57b9317b6f5"
}
Frame {
msec: 2496
- hash: "f431abcaf05f49ead909296d7649f8a9"
+ hash: "4f2fafdb59db544352e3067d67c0a714"
}
Frame {
msec: 2512
@@ -806,31 +806,31 @@ VisualTest {
}
Frame {
msec: 2800
- hash: "4f2fafdb59db544352e3067d67c0a714"
+ hash: "043583b19c921740dbc990afd4f508ed"
}
Frame {
msec: 2816
- hash: "4dcd4cdf6f4e305732185ec52cd2f2f6"
+ hash: "64fdbc9a930e44dcc38542f720b41b0a"
}
Frame {
msec: 2832
- hash: "dfd3c29b0520edbbee57dfacfa7e2b30"
+ hash: "257d3d8bcf78671d35a898befec091cb"
}
Frame {
msec: 2848
- hash: "257d3d8bcf78671d35a898befec091cb"
+ hash: "92a51faf52bdc7f895bdc08f049f6ed3"
}
Frame {
msec: 2864
- hash: "20e89c544284603943396694abe86756"
+ hash: "5aec71e84a4e9c4962ed73c39d337910"
}
Frame {
msec: 2880
- image: "gridview.2.png"
+ hash: "e9112eea445585b17d58b6f9ba039c39"
}
Frame {
msec: 2896
- hash: "b88c6af89423b32b3a4413035711df03"
+ image: "gridview.3.png"
}
Key {
type: 7
@@ -842,15 +842,15 @@ VisualTest {
}
Frame {
msec: 2912
- hash: "e34de13af44c449c9ecc86e06ce01ed2"
+ hash: "32faa54e636773747a2ec4065a11c337"
}
Frame {
msec: 2928
- hash: "98ffe81129aa7cc7325764221f1dae59"
+ hash: "ebe24b814e27cd8a8db78da58c8f86d7"
}
Frame {
msec: 2944
- hash: "db2d545de9879362738e71a02a3d1d26"
+ hash: "e67ae32a47213b360c1a445bf645dde2"
}
Frame {
msec: 2960
@@ -902,27 +902,27 @@ VisualTest {
}
Frame {
msec: 3120
- hash: "02d8c90faf56c65252e4f938944bda7b"
+ hash: "e67ae32a47213b360c1a445bf645dde2"
}
Frame {
msec: 3136
- hash: "a32994e2320e357241f63b956b6db236"
+ hash: "d446b94a2e3d9f7091c5520852d1a215"
}
Frame {
msec: 3152
- hash: "9ada466c26c217adbcd7a93df264ed75"
+ hash: "79d1a3489be95d113e8c611a2ba63456"
}
Frame {
msec: 3168
- hash: "79d1a3489be95d113e8c611a2ba63456"
+ hash: "95601b7d8ab689142ca89343743b55b2"
}
Frame {
msec: 3184
- hash: "d3aa82455c4ae3ac25097354e132a30f"
+ hash: "ad67049e51eafbbc33d1e3763d78b5f9"
}
Frame {
msec: 3200
- hash: "62d12e5933ed4ed048ccafd229f4b2b7"
+ hash: "69b1d558065ee9b9719c3ae8f08b52ab"
}
Key {
type: 7
@@ -934,19 +934,19 @@ VisualTest {
}
Frame {
msec: 3216
- hash: "5bc4ac94ae20e425084d0811dee1ba08"
+ hash: "858fd65adb231bf2002bcc25075be261"
}
Frame {
msec: 3232
- hash: "6d5113e3732dc7a9172eea3667a01f7b"
+ hash: "2dc6fb114e1d2a606efe48f349251504"
}
Frame {
msec: 3248
- hash: "e435a2588b25d3336f290331931f5981"
+ hash: "e4819f09d6640021408e03c50090e849"
}
Frame {
msec: 3264
- hash: "bce201adbeb319b181cce139f179d7f0"
+ hash: "5fa3ec31176bed2de8cb076b87e0be74"
}
Frame {
msec: 3280
@@ -1006,31 +1006,31 @@ VisualTest {
}
Frame {
msec: 3472
- hash: "8f0f3cd35ae92047f23084f447046eb8"
+ hash: "5fa3ec31176bed2de8cb076b87e0be74"
}
Frame {
msec: 3488
- hash: "ceb12e6c5e9f0566039040d9f3ff587f"
+ hash: "6c84f5e6d352ed345a0bed12c50bf7a9"
}
Frame {
msec: 3504
- hash: "dfd0c89c3ea73aceefcdafa71609c720"
+ hash: "15690df807a7c1e9aa9d7e9154c1a492"
}
Frame {
msec: 3520
- hash: "8d8ed1a9dc6a9f74dfc81b79f02af4c5"
+ hash: "3d6cc3e0d93ddf4b66321fda361f05c0"
}
Frame {
msec: 3536
- hash: "d450bd62e03e1e4c7cb66e98ece05f97"
+ hash: "8e3526ffeb9873b55b3bae2827391628"
}
Frame {
msec: 3552
- hash: "d1ece2210cd24eedd5361e5c3a162236"
+ hash: "33097267d43a7e16a78102cb91c9fd42"
}
Frame {
msec: 3568
- hash: "77589e48b9db95e702055753046319e5"
+ hash: "17ab2623432bba92dc9d99e5764e626e"
}
Key {
type: 7
@@ -1042,15 +1042,15 @@ VisualTest {
}
Frame {
msec: 3584
- hash: "7793263ecb831a1e63fbd76c8addde03"
+ hash: "9945a723d9a3399bb5311eea3d9b0b77"
}
Frame {
msec: 3600
- hash: "bfa9675f981c37fed27dea100226f61a"
+ hash: "e6e9251cd6d941a050beaa36b851e314"
}
Frame {
msec: 3616
- hash: "9780849fe8abd22c32ccafcdd46b0d65"
+ hash: "a61dbcb7d914afe34009085bf37fb8e2"
}
Frame {
msec: 3632
@@ -1106,11 +1106,11 @@ VisualTest {
}
Frame {
msec: 3840
- image: "gridview.3.png"
+ hash: "e63d987ba303a42046827f14941b444a"
}
Frame {
msec: 3856
- hash: "e63d987ba303a42046827f14941b444a"
+ image: "gridview.4.png"
}
Frame {
msec: 3872
@@ -1138,31 +1138,31 @@ VisualTest {
}
Frame {
msec: 3936
- hash: "a61dbcb7d914afe34009085bf37fb8e2"
+ hash: "e63d987ba303a42046827f14941b444a"
}
Frame {
msec: 3952
- hash: "89175b83b4f7ee4b5d99219cdc97aa59"
+ hash: "9942059cb380dbae191850d2e7175906"
}
Frame {
msec: 3968
- hash: "f524421286503f6175e4ad71dd89145f"
+ hash: "ca5af7d98a008eccba1e21be0da61f3c"
}
Frame {
msec: 3984
- hash: "ca5af7d98a008eccba1e21be0da61f3c"
+ hash: "abb95ac1408d34e2eb319e5396511d65"
}
Frame {
msec: 4000
- hash: "77c19e7e17e00787ff0d7a4e7bad7bc8"
+ hash: "183df6d4be489280181f01a0c0ed3cde"
}
Frame {
msec: 4016
- hash: "04c8db761e324101ad92e0ac9ceed7d4"
+ hash: "64733a4d609c621765d114a6b482dc57"
}
Frame {
msec: 4032
- hash: "97a3dcb81349efab6b44d458e83ce5c4"
+ hash: "897aa5b42e48a7235ab4fdded5876da2"
}
Key {
type: 7
@@ -1174,15 +1174,15 @@ VisualTest {
}
Frame {
msec: 4048
- hash: "e86ebc276b88705c97cc9efb66ccc6b2"
+ hash: "c80f01a1e683d84bfa0821832c113820"
}
Frame {
msec: 4064
- hash: "a134bbfd14879f13b288a04d23382348"
+ hash: "e7065bf6934c7fb7b160ae5c169633e4"
}
Frame {
msec: 4080
- hash: "9530ad3f58ad1c66401572869f7d91bc"
+ hash: "db3d030de94b19ea1db5c60be7c7ca5c"
}
Frame {
msec: 4096
@@ -1230,31 +1230,31 @@ VisualTest {
}
Frame {
msec: 4240
- hash: "980e0fa84fd3bab496623936f5f220a2"
+ hash: "db3d030de94b19ea1db5c60be7c7ca5c"
}
Frame {
msec: 4256
- hash: "ed3268911723d664699bbc31317befc1"
+ hash: "917c11b16c6286bea7a37990d7fa078f"
}
Frame {
msec: 4272
- hash: "3bfda4b3b0b2d2a97ec1c0b5b3f4da63"
+ hash: "1616c6def28659d51905564ff83cc112"
}
Frame {
msec: 4288
- hash: "1616c6def28659d51905564ff83cc112"
+ hash: "fce04972557736a8dfa8de5f1a605ddb"
}
Frame {
msec: 4304
- hash: "68342f34c18956d3a093f8eeeae6977e"
+ hash: "6acffcea115f8a777f62c1f68cd25fa6"
}
Frame {
msec: 4320
- hash: "ac1b12959e9055a28fe2bda0a12b75bc"
+ hash: "f96ae6a4f437cf98b268fc0b0611ddc4"
}
Frame {
msec: 4336
- hash: "009b85ff6b86e418c78ed33a5e88d3f1"
+ hash: "c9e14157dca547623497a6107f14b73d"
}
Key {
type: 7
@@ -1266,15 +1266,15 @@ VisualTest {
}
Frame {
msec: 4352
- hash: "59753bc7dc69767fe2109fdc41f20dae"
+ hash: "6489766ed84c4b6ff26de24cb74848cb"
}
Frame {
msec: 4368
- hash: "1c87d3d8c8d564d4d95a26f57fd28f38"
+ hash: "9d229c10853b30ed048b892953c5d86c"
}
Frame {
msec: 4384
- hash: "4e43b7b6787002c9013010dd74c83f49"
+ hash: "2476aa1a7191b485a76c76e98c9be2b0"
}
Frame {
msec: 4400
@@ -1338,31 +1338,31 @@ VisualTest {
}
Frame {
msec: 4608
- hash: "84de5b5e8b0fba190a783c72967661c7"
+ hash: "2476aa1a7191b485a76c76e98c9be2b0"
}
Frame {
msec: 4624
- hash: "60b696f4913379d28f300fd1b531c6cb"
+ hash: "12f17d727d70269fd98a0f6524c9f750"
}
Frame {
msec: 4640
- hash: "d01e651d9094332fd82ad1cea3e93e9d"
+ hash: "e73d64ebe242eae0f412ca463c76085d"
}
Frame {
msec: 4656
- hash: "87be4cd7c894b03b2b64c996e915d71f"
+ hash: "f37a468e04155c880e707d1d12f71f94"
}
Frame {
msec: 4672
- hash: "b07fccb0c5565d2feed5a9fcdf8acead"
+ hash: "3789293a6b8791d8e60b5160fc457345"
}
Frame {
msec: 4688
- hash: "3dca3165fd34be549d21fb6c414c67d8"
+ hash: "7d8377c816f19fa32d847a30d1c71da9"
}
Frame {
msec: 4704
- hash: "5f69f3298f8ca73fa9b3b6e630c60186"
+ hash: "b9867dbb6f03d5970076251e10e47f16"
}
Key {
type: 7
@@ -1374,115 +1374,115 @@ VisualTest {
}
Frame {
msec: 4720
- hash: "d7f41e9a29d550a7d9a41bb947569abe"
+ hash: "0604bbd1afdfee5881d9d9d79a67a3df"
}
Frame {
msec: 4736
- hash: "4ede2e90ad216a2d44580c50a25dea23"
+ hash: "93401cdfa6cc7fbbfc479faa0bc1d63f"
}
Frame {
msec: 4752
- hash: "9b339845ee588b789dc9095c272e0bdf"
+ hash: "aa379c70dd6a94a55fd8c065331ad47b"
}
Frame {
msec: 4768
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4784
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4800
- image: "gridview.4.png"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4816
- hash: "9cdea4790972efaecabd52b435107e69"
+ image: "gridview.5.png"
}
Frame {
msec: 4832
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4848
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4864
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4880
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4896
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4912
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4928
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4944
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4960
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4976
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 4992
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5008
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5024
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5040
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5056
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5072
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5088
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5104
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5120
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5136
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5152
- hash: "9cdea4790972efaecabd52b435107e69"
+ hash: "11150995098af8516513230360d40108"
}
Key {
type: 6
@@ -1494,31 +1494,31 @@ VisualTest {
}
Frame {
msec: 5168
- hash: "d6f0a6d7604bad811eeba13fd7c45368"
+ hash: "11150995098af8516513230360d40108"
}
Frame {
msec: 5184
- hash: "5f92e1531a3f6c21ec82e3c908167fc7"
+ hash: "c58f071ae4efde5cd265fa6e82dda56b"
}
Frame {
msec: 5200
- hash: "5214e99ff052dcdc8f85bad29de92e03"
+ hash: "bea9eadda7b015d0e9a0f05924e723f7"
}
Frame {
msec: 5216
- hash: "d4abed9f0f1115c9a45b0b9b4f54754e"
+ hash: "c255da63dc59ca7555c91701ed373fd5"
}
Frame {
msec: 5232
- hash: "cfae8a0281e704b0e62f6bf31b32800f"
+ hash: "fa0a697341baae4b3aa4dee721ef10a2"
}
Frame {
msec: 5248
- hash: "c203f0674596ae690bf19f2d49be62ac"
+ hash: "2d2148840143772fab6b2405bf5eb609"
}
Frame {
msec: 5264
- hash: "2e2c7e05aade104bdc4f6c489b6f0601"
+ hash: "3716705b5f7caa86eecc1dfafe31ebcf"
}
Key {
type: 7
@@ -1530,51 +1530,51 @@ VisualTest {
}
Frame {
msec: 5280
- hash: "b4b2148b0557dcab3a441165e5e4de5f"
+ hash: "35cfea054566eae3bcc9c8a41caadcdc"
}
Frame {
msec: 5296
- hash: "c5e791d27a42a63d25cdbd492b4af29a"
+ hash: "916858ff0ca4370840d072c389242a2b"
}
Frame {
msec: 5312
- hash: "0f94ebcb407f8e6ae263bd954f2c8177"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5328
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5344
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5360
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5376
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5392
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5408
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5424
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5440
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5456
- hash: "d9b56b817a411812789881697a28fe4c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Key {
type: 6
@@ -1586,31 +1586,31 @@ VisualTest {
}
Frame {
msec: 5472
- hash: "6fdfe69e377da72e04dc130f5677ed2c"
+ hash: "417f4bce58783f0e677b17b05147a663"
}
Frame {
msec: 5488
- hash: "c041d26d43766fa1735f2ada2a43225b"
+ hash: "191f2c80617cef61a2890977c3079ad2"
}
Frame {
msec: 5504
- hash: "aa62dbd6c6256665ee1b4ef468607978"
+ hash: "0902ef220363ad2c08f09199278cecf8"
}
Frame {
msec: 5520
- hash: "987fcdf6483a83b1242053f4e7fb7a26"
+ hash: "d28ea1b1e01588bbb767a5599c5345d2"
}
Frame {
msec: 5536
- hash: "fbde70c34709b68eb22f5460a8815fba"
+ hash: "36eeaf2755fffefc32bcd580fade6305"
}
Frame {
msec: 5552
- hash: "911ddc838ebaf5ade1bb026dff2741ba"
+ hash: "51560b23e44e5548875b13ff6dc6ee8d"
}
Frame {
msec: 5568
- hash: "120bbf35b2a3b756bdeaea0df43e49b2"
+ hash: "082abbc9ecd0bf39619819aa526c021c"
}
Key {
type: 7
@@ -1622,63 +1622,63 @@ VisualTest {
}
Frame {
msec: 5584
- hash: "ea93e33c079d6dc5fb18c69fb4fed441"
+ hash: "ab956d21f8ea55dad590b3cafc887585"
}
Frame {
msec: 5600
- hash: "b9ac8ab01cb59b1fee11967bdb6d2dd6"
+ hash: "9501050f547de1de0d280a839e35e120"
}
Frame {
msec: 5616
- hash: "3ff266bf29cbcaa30bc1e7af5dd9866b"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5632
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5648
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5664
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5680
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5696
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5712
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5728
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5744
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5760
- image: "gridview.5.png"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5776
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ image: "gridview.6.png"
}
Frame {
msec: 5792
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5808
- hash: "edd6c3a9493a63674e2d7af5f3e8467e"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Key {
type: 6
@@ -1690,27 +1690,27 @@ VisualTest {
}
Frame {
msec: 5824
- hash: "de1f83d25751639dff42f1755a6534c3"
+ hash: "3de570332e8a1e01f409d892feb7930e"
}
Frame {
msec: 5840
- hash: "edefdea8b2461d03fb97cf5ed66e9b6d"
+ hash: "6aefcf9976f5910376a583b020c8dd4b"
}
Frame {
msec: 5856
- hash: "cef1886397e3932a511f37571b5011f4"
+ hash: "971ca1e2537d52f352c889817e353736"
}
Frame {
msec: 5872
- hash: "05589ad354314d9e04ef90c1addd99f5"
+ hash: "f1f0599e7f4ba2fb869e886a2e7ff216"
}
Frame {
msec: 5888
- hash: "ff88b52e3755b9b4785d2719ddd4f090"
+ hash: "8bf62b11cd4ec99ae41752e1a9a9c7ca"
}
Frame {
msec: 5904
- hash: "f59edc3016b177a2e8faa6612d718b17"
+ hash: "f2fcf6ad484b240373822c2450dd5305"
}
Key {
type: 7
@@ -1722,131 +1722,131 @@ VisualTest {
}
Frame {
msec: 5920
- hash: "dc673a7cdd927f70b28ebcfe51cd3d89"
+ hash: "f999073e6303ff5658012dabbef4ee8e"
}
Frame {
msec: 5936
- hash: "3abec0da85fb663e63ab22188e092827"
+ hash: "c35ef3056155d8d30dd4b9e6299ac68f"
}
Frame {
msec: 5952
- hash: "50c2c8ac68cafad7c47b576cd8f4a037"
+ hash: "0326908135c0d693f2fc99c9e02d8f94"
}
Frame {
msec: 5968
- hash: "06c31b861e2b96e6595b2244d7b3f4d5"
+ hash: "b0def7204463648dac117ddcc2241c3e"
}
Frame {
msec: 5984
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6000
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6016
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6032
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6048
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6064
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6080
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6096
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6112
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6128
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6144
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6160
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6176
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6192
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6208
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6224
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6240
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6256
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6272
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6288
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6304
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6320
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6336
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6352
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6368
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6384
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6400
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6416
- hash: "0aa7ce5ba9c875619a6e4629a0eb4065"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Key {
type: 6
@@ -1858,31 +1858,31 @@ VisualTest {
}
Frame {
msec: 6432
- hash: "7f52a770775c19e10784b4c5f7874210"
+ hash: "5e88aeab16a0ccca400163889851bc45"
}
Frame {
msec: 6448
- hash: "827cfb74286a2a80aca8b6c5277d6cfd"
+ hash: "5531bf9affacf58945c6c54c5d14c9c9"
}
Frame {
msec: 6464
- hash: "8399231eda9b66821d43a3d8c4c7d645"
+ hash: "ebc8f36eb0fc7d40bf9f268ef03522a0"
}
Frame {
msec: 6480
- hash: "fc163583671f3c4023361460b436c895"
+ hash: "621a3c318fc259ed27ae050d70d46d39"
}
Frame {
msec: 6496
- hash: "893dea6496c95c32095ad1d673e500c2"
+ hash: "688bea0c0c864d9bc4204cf06b480d3a"
}
Frame {
msec: 6512
- hash: "808c7403b2cdcc882059da56a2f806fe"
+ hash: "8419262c19c40172b93c74d34cad12cb"
}
Frame {
msec: 6528
- hash: "7466b2e5b86ba8ad46be75818659786c"
+ hash: "57ce65a4ebe51c14ee69083f90ed5b80"
}
Key {
type: 7
@@ -1894,47 +1894,47 @@ VisualTest {
}
Frame {
msec: 6544
- hash: "dd2561cd780e24401130305d47757a53"
+ hash: "43827ad5cb4173a8a5d434b167f68761"
}
Frame {
msec: 6560
- hash: "bee89299532d43fc3e6c3e69c343b381"
+ hash: "13e3e00ec3c11d6ca3e51a7aba0e1a97"
}
Frame {
msec: 6576
- hash: "94f8474aedee94098592c05d8fc7d868"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6592
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6608
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6624
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6640
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6656
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6672
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6688
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6704
- hash: "b6ee51bfa4d4ab7a83cca5c18453f0b8"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Key {
type: 6
@@ -1946,35 +1946,35 @@ VisualTest {
}
Frame {
msec: 6720
- image: "gridview.6.png"
+ hash: "dcf8c3078973ad99fbbcc763e433de11"
}
Frame {
msec: 6736
- hash: "ccd58be20d47422121d6ef799b927a7a"
+ image: "gridview.7.png"
}
Frame {
msec: 6752
- hash: "e090c7f39649786a1796870e25bd0f0d"
+ hash: "bb4674d0de11e4f625e6db940b4ec06c"
}
Frame {
msec: 6768
- hash: "acf3dcd9f4a869169dbc1ae7fe60e9d0"
+ hash: "26f602a711cea77e5c7be08a93981306"
}
Frame {
msec: 6784
- hash: "51795e9a720845e8305d23507785e1ca"
+ hash: "5346bc8b1711a6679867d81efb9da563"
}
Frame {
msec: 6800
- hash: "0d34a43e177e6b73e2ff9155747d0385"
+ hash: "3aa4d335a91be2bf2616d61fa7719ce5"
}
Frame {
msec: 6816
- hash: "1876c3cdffc1af01da1aaa0ac636d0a8"
+ hash: "2bad8dd039a35f11ba86b409bbcea6fe"
}
Frame {
msec: 6832
- hash: "3131296b6edf4190520e2cdb3f8b936e"
+ hash: "20e4b381a6bed27e9e64d2eeda7870da"
}
Key {
type: 7
@@ -1986,51 +1986,51 @@ VisualTest {
}
Frame {
msec: 6848
- hash: "ee92f0a764e5081b130e205a5c362b07"
+ hash: "e96eb16671f26f04a72498bc3ab54f06"
}
Frame {
msec: 6864
- hash: "8737ea2c60aeb215228c00a7fddd1baa"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6880
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6896
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6912
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6928
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6944
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6960
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6976
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 6992
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7008
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7024
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Key {
type: 6
@@ -2042,35 +2042,35 @@ VisualTest {
}
Frame {
msec: 7040
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7056
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7072
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7088
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7104
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7120
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7136
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7152
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Key {
type: 7
@@ -2082,111 +2082,111 @@ VisualTest {
}
Frame {
msec: 7168
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7184
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7200
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7216
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7232
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7248
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7264
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7280
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7296
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7312
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7328
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7344
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7360
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7376
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7392
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7408
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7424
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7440
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7456
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7472
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7488
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7504
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7520
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7536
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7552
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7568
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7584
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Key {
type: 6
@@ -2198,31 +2198,31 @@ VisualTest {
}
Frame {
msec: 7600
- hash: "ac036f1f5c5ae23ddfca3060dff83f15"
+ hash: "f0e0fe7c155bbee3957a80077703fadc"
}
Frame {
msec: 7616
- hash: "eb0d1be15f63af6eaf6634b02e5f240a"
+ hash: "6e26f05f7a2531620ed4a25073e0f0c5"
}
Frame {
msec: 7632
- hash: "2423c305bebb3449e87c78e8fb447c88"
+ hash: "9fe693b6b53763ffc1b94d157252b18c"
}
Frame {
msec: 7648
- hash: "f0ede6ea85647728db80878b3e525edc"
+ hash: "49aae47da204d4104757b4420df7413e"
}
Frame {
msec: 7664
- hash: "387d127b2b000dc344ee4768cf2d29b2"
+ hash: "ecd7456cb5ba2034c766e1ec298c2ebf"
}
Frame {
msec: 7680
- image: "gridview.7.png"
+ hash: "2a5a7dfcd64200864abfa9267e802f4e"
}
Frame {
msec: 7696
- hash: "1d0d8100e994c16d7973ad9a97b0068f"
+ image: "gridview.8.png"
}
Key {
type: 7
@@ -2234,71 +2234,71 @@ VisualTest {
}
Frame {
msec: 7712
- hash: "95fb4a6d0331ffc4773e39ec8c3e6511"
+ hash: "e11fcb0e62d7f6bfb40b7336e89ff014"
}
Frame {
msec: 7728
- hash: "34738f16150228d971972833d4bd5c8f"
+ hash: "5a07fa8768ebfb938204e500f4a09253"
}
Frame {
msec: 7744
- hash: "9b71c8dacc530f32d7c6f409928caf5c"
+ hash: "1ee3a4780979f69cd7926df3d4c18731"
}
Frame {
msec: 7760
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7776
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7792
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7808
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7824
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7840
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7856
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7872
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7888
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7904
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7920
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7936
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7952
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 7968
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Key {
type: 6
@@ -2310,15 +2310,15 @@ VisualTest {
}
Frame {
msec: 7984
- hash: "831efd0970c5c29fbe10b3be7707f915"
+ hash: "ca4edfecdfc410aca6557b9a3095d92b"
}
Frame {
msec: 8000
- hash: "0587fc809c38c3bbe1fbac2960596974"
+ hash: "1306bb76c161e84e2e5307a0ebc34393"
}
Frame {
msec: 8016
- hash: "d20eba806cf4730a850db4c095fa36f9"
+ hash: "a97cbb851cf1fdeb428ee36042be52e1"
}
Key {
type: 7
@@ -2330,59 +2330,59 @@ VisualTest {
}
Frame {
msec: 8032
- hash: "c1663e75ba05b341e1e970a451958ea0"
+ hash: "e79ccbe112066ded3276aa7feb2e7848"
}
Frame {
msec: 8048
- hash: "ea40cc33b689d6b42fc5a69fa30178e4"
+ hash: "9cc673f743e2018cf9a6d815fe76dc80"
}
Frame {
msec: 8064
- hash: "a07a1c61de1813158ff743cd326ee427"
+ hash: "8179262829f88ee4bbb9537b29ab56ee"
}
Frame {
msec: 8080
- hash: "6dfddaa340df8999ca77f6a6e4c6c3ce"
+ hash: "3810cc1b5902259c22bce0118497aaf3"
}
Frame {
msec: 8096
- hash: "76ca40bb169c1ddc291847d4be2d38d7"
+ hash: "d41c5a6fdfafb2263e7c35a927f7753c"
}
Frame {
msec: 8112
- hash: "e44778541b76208981a3944a64235cac"
+ hash: "e54d0179d62b7cdec96218c3a0ef110d"
}
Frame {
msec: 8128
- hash: "fdf45ea650d31957cc675c3bec8bf53e"
+ hash: "da89e8408417b99582ffd825c2226bf4"
}
Frame {
msec: 8144
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Frame {
msec: 8160
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Frame {
msec: 8176
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Frame {
msec: 8192
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Frame {
msec: 8208
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Frame {
msec: 8224
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Frame {
msec: 8240
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Key {
type: 6
@@ -2394,27 +2394,27 @@ VisualTest {
}
Frame {
msec: 8256
- hash: "b78cdb727535ab7e567af08abf25e64c"
+ hash: "5d7b9247aecd4adc939c6fb89d5eac2c"
}
Frame {
msec: 8272
- hash: "338481e6390f2a61e975084c16427584"
+ hash: "2fcac6c204d45d6fbab76c3d07e2c8ad"
}
Frame {
msec: 8288
- hash: "8923c45c23b1f4250b7d1e483b07a4da"
+ hash: "78602c9ac9dbd6c34ef539799513d874"
}
Frame {
msec: 8304
- hash: "b21de834906d0eecea985561e2e41e4f"
+ hash: "02f8d434d50af8fa6063a4f03dabe2b1"
}
Frame {
msec: 8320
- hash: "a8c9761cfb20631520ed890cd2648c4b"
+ hash: "ff5da7b1a1467418bc712c0ac33c878f"
}
Frame {
msec: 8336
- hash: "abf96a042ef12190bc48ff49732ef55a"
+ hash: "2aed8048e5040ebda3bdfdf4a57d08eb"
}
Key {
type: 7
@@ -2426,55 +2426,55 @@ VisualTest {
}
Frame {
msec: 8352
- hash: "5b9506dfb038cd26dfc81ecd2406ada9"
+ hash: "c6b50c1a6a843aa9484c48e4bf073e4b"
}
Frame {
msec: 8368
- hash: "be75b8d39f81b2fdaff01469bfc67d4a"
+ hash: "a08ef172dfb72151108e81cacfaa964f"
}
Frame {
msec: 8384
- hash: "488aa2977f349df82b5f6ae5e3619d35"
+ hash: "a2a755231d0eee686aa38cd4d4b417f2"
}
Frame {
msec: 8400
- hash: "d69f17f0ce8537511353d20b59d20de0"
+ hash: "5c598e26c1b65796b8e68c7d27abbc0f"
}
Frame {
msec: 8416
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8432
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8448
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8464
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8480
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8496
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8512
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8528
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8544
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Key {
type: 6
@@ -2486,27 +2486,27 @@ VisualTest {
}
Frame {
msec: 8560
- hash: "7647efcc0152cc3d6544106f969ace26"
+ hash: "290662cda876fccc87971d2cebc69d52"
}
Frame {
msec: 8576
- hash: "8f74d33bf95cbf37fdb4521c69373a64"
+ hash: "1aface9c3746488496af48caf23af1a5"
}
Frame {
msec: 8592
- hash: "e33bb4cd12790c9d9992efdd3e23bee9"
+ hash: "c08f9756c9cc453a2544052b15beab5d"
}
Frame {
msec: 8608
- hash: "36f32e34b4093091c4707f26c52896ad"
+ hash: "b70544dc0d5cc18181f0bf40c068410b"
}
Frame {
msec: 8624
- hash: "5ab5e142f8dc883287c116cedbacfd55"
+ hash: "7e8fbce1337b0b04beda76ee54c98285"
}
Frame {
msec: 8640
- image: "gridview.8.png"
+ hash: "fb8acbfc93b64d960abb17f097fe36fe"
}
Key {
type: 7
@@ -2518,19 +2518,19 @@ VisualTest {
}
Frame {
msec: 8656
- hash: "c74212e45a6c4b6a18caeb6a22350609"
+ image: "gridview.9.png"
}
Frame {
msec: 8672
- hash: "8919643a7d13677dd902941860093209"
+ hash: "16013089bfe18b35efbd8cd36d37bb0a"
}
Frame {
msec: 8688
- hash: "6f2ab4400fadf51b994351f0975e31fc"
+ hash: "57a857a48922cb252bb4ddc77b29825e"
}
Frame {
msec: 8704
- hash: "4798559ce6f9bd7455ed5385d0030763"
+ hash: "10a46ba67a0c7abe08ea8f80a75040e8"
}
Frame {
msec: 8720
@@ -2586,23 +2586,23 @@ VisualTest {
}
Frame {
msec: 8896
- hash: "fac81cf6f45cb47abc1fa36d23e39d34"
+ hash: "df1797772003dc3dbdd0e245c447bf20"
}
Frame {
msec: 8912
- hash: "862f4deee01183fd38b094da59048b23"
+ hash: "70dd7fd50388196706f72a48ac96963c"
}
Frame {
msec: 8928
- hash: "2f3b147221da30d8857d25fc788b3eac"
+ hash: "439e43c26fc22a6c3a2b8568bfddbfa3"
}
Frame {
msec: 8944
- hash: "5b295b187c6cfc6aefa51e5efc2c27e3"
+ hash: "77e9ea697690a3e5c3965c0bf76055b0"
}
Frame {
msec: 8960
- hash: "fe3139ddc8fdbc1b0c25bd641f83e833"
+ hash: "30226190fa4466b3450ff1f810e85635"
}
Key {
type: 7
@@ -2614,19 +2614,19 @@ VisualTest {
}
Frame {
msec: 8976
- hash: "8f2a9585dc6248a403aafd0f151d6ba0"
+ hash: "9a69afa4de272f00d8a26141fa974f6e"
}
Frame {
msec: 8992
- hash: "39eca8cc6bb8ea30cc452dc24f8e46dc"
+ hash: "1883a34a21ecc690022a6623c67c8ba1"
}
Frame {
msec: 9008
- hash: "8dbbc6026942cb6e572f1cb7e2675713"
+ hash: "e5be5b7e7060fffacaf93b6bf8d051a4"
}
Frame {
msec: 9024
- hash: "62dfa07b96dd18c6be89822654bf09f3"
+ hash: "2667c2596de97dc15353158eba03495f"
}
Frame {
msec: 9040
@@ -2786,11 +2786,11 @@ VisualTest {
}
Frame {
msec: 9600
- image: "gridview.9.png"
+ hash: "02c632713d0dc64bff9d8e58f745df95"
}
Frame {
msec: 9616
- hash: "02c632713d0dc64bff9d8e58f745df95"
+ image: "gridview.10.png"
}
Frame {
msec: 9632
@@ -2831,7 +2831,7 @@ VisualTest {
Key {
type: 6
key: 16777249
- modifiers: 67108864
+ modifiers: 0
text: ""
autorep: false
count: 1
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.0.png
index 3021d5831d..27e0783497 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.1.png
index baeb1a60b4..27e0783497 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.2.png
index 2d0c7314f2..b0348ab430 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.3.png
index af9ed05a63..c3113e9731 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.4.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.4.png
index 0b0945d88d..725d4e9bda 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.5.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.5.png
index 618ae0c8c9..cc6d8d6377 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.6.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.6.png
index fc31262bbd..ccf9f5ffd4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.7.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.7.png
index 22291ac94a..2f7f475844 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.8.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.8.png
index 3021d5831d..fff1b40cf6 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.9.png b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.9.png
index 2f2f5b9b6f..27e0783497 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.9.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.qml b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.qml
index 1c90af9750..2c43f7d3df 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/data/gridview2.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "dba2f6f1c773bd4cd9523108fca861c4"
+ image: "gridview2.0.png"
}
Frame {
msec: 32
@@ -242,11 +242,11 @@ VisualTest {
}
Frame {
msec: 960
- image: "gridview2.0.png"
+ hash: "33d81c39d16c6a326012499796e50e03"
}
Frame {
msec: 976
- hash: "33d81c39d16c6a326012499796e50e03"
+ image: "gridview2.1.png"
}
Frame {
msec: 992
@@ -330,27 +330,27 @@ VisualTest {
}
Frame {
msec: 1280
- hash: "aaec7184a27e6700d96ffff376b8fa53"
+ hash: "4ffd56d59c14ba676393686d753951d7"
}
Frame {
msec: 1296
- hash: "3fa3a890a4ff4a59336a9a2d478d0dde"
+ hash: "e2f7702ed749330b2f027aa73967a4cf"
}
Frame {
msec: 1312
- hash: "3711c6c2f4f9aba7f2c72bd1f1d85016"
+ hash: "3f4dcee547e925db9b3da1fa08bab3c9"
}
Frame {
msec: 1328
- hash: "23da2f9a800b805ce7b77ff08218907d"
+ hash: "12b0bf8abbb9b6a0597eccebe5322551"
}
Frame {
msec: 1344
- hash: "12e4bc953b06cdaad0720f87fb96a37e"
+ hash: "23da2f9a800b805ce7b77ff08218907d"
}
Frame {
msec: 1360
- hash: "46e69658bda69bab202a2790a76ba1cd"
+ hash: "9c039c94a4202b99bf913891bdcb3698"
}
Key {
type: 7
@@ -362,27 +362,27 @@ VisualTest {
}
Frame {
msec: 1376
- hash: "44608e67c69b92ccbb45e119e1158fe3"
+ hash: "dd7c95ca98c4f37837c2ff7f03243fc3"
}
Frame {
msec: 1392
- hash: "97a309b47017d38294644a486a7ce68e"
+ hash: "6f31f7af4e68ab0eab101e7ae840b4b6"
}
Frame {
msec: 1408
- hash: "41f42b50b22e0496c8aca5019b24b9cb"
+ hash: "29943a44b9830bb64b3e5a3b6abd8c42"
}
Frame {
msec: 1424
- hash: "8603ea1cb60c804563f50bc41c0180fe"
+ hash: "93d37221e8e022c84e35c7bd44b0644e"
}
Frame {
msec: 1440
- hash: "e29777fa70daafe9640c6e9bb7bd63d6"
+ hash: "9ce3cd471dba7fe94de4e9ad321803b2"
}
Frame {
msec: 1456
- hash: "2c4c360320f527e99fee799e68c2c0aa"
+ hash: "0d30916c7e05ff8609af5894f47a89bb"
}
Frame {
msec: 1472
@@ -430,23 +430,23 @@ VisualTest {
}
Frame {
msec: 1616
- hash: "17027b7c099b11cb5382f30dbbd1e647"
+ hash: "6775c78beca0f078c5f2c57370de1946"
}
Frame {
msec: 1632
- hash: "0e17461a4ca843f9903b7f03e99a0b00"
+ hash: "898709f3871e13825baf48861930f26c"
}
Frame {
msec: 1648
- hash: "a5e61901920553e59892fa405beea15a"
+ hash: "c1a568599592a3f455ad550c2e4878a8"
}
Frame {
msec: 1664
- hash: "310eaf71fe8d3807606e58a666c65ccd"
+ hash: "a80d8cbf0c6fe8383badbb2badb361ad"
}
Frame {
msec: 1680
- hash: "76f556d05fb77082f33eb1836c10587a"
+ hash: "310eaf71fe8d3807606e58a666c65ccd"
}
Key {
type: 7
@@ -458,31 +458,31 @@ VisualTest {
}
Frame {
msec: 1696
- hash: "4e7e4b7790a96396e7ea3533b5c32ed9"
+ hash: "0f317f50b0d2a4c5daf819431527416e"
}
Frame {
msec: 1712
- hash: "b065287b6490f58ca6f0e9eb2027cf20"
+ hash: "d251b64b794902fe2c5da3cee43ff82d"
}
Frame {
msec: 1728
- hash: "907cd9dbdffa1d395caaabd466dc8e86"
+ hash: "757adc256e1b5d739c29ee82bdacfa16"
}
Frame {
msec: 1744
- hash: "3b144e5b4867328beafa3020ce931480"
+ hash: "1c20e69e033a5fa4825fd46f51d1e348"
}
Frame {
msec: 1760
- hash: "b59b2b60b7d55424b61b1b0ed3e227b8"
+ hash: "03cbcd361ec24925222802c8ece99793"
}
Frame {
msec: 1776
- hash: "4032e934871b315b68c7c2abea42efee"
+ hash: "dffaa2dd4d6dd89a1b26d5db38906059"
}
Frame {
msec: 1792
- hash: "8f80127b2f8d6fc10aa84062544cc381"
+ hash: "77d5193bc5f53fe5cb98a236c55f841e"
}
Frame {
msec: 1808
@@ -514,11 +514,11 @@ VisualTest {
}
Frame {
msec: 1920
- image: "gridview2.1.png"
+ hash: "77d5193bc5f53fe5cb98a236c55f841e"
}
Frame {
msec: 1936
- hash: "77d5193bc5f53fe5cb98a236c55f841e"
+ image: "gridview2.2.png"
}
Frame {
msec: 1952
@@ -554,23 +554,23 @@ VisualTest {
}
Frame {
msec: 2048
- hash: "a45d2630872a14541f39b862e15ff461"
+ hash: "1f046afe50ee5e1fc07e89a40528351c"
}
Frame {
msec: 2064
- hash: "714711d7382ef8bba5fb39e2e44bd59c"
+ hash: "132fbaa8fc2890d48f1916a25cb09887"
}
Frame {
msec: 2080
- hash: "63deed0356e761f94f88be18a7d10053"
+ hash: "e904c892dc27ff1700009470f234ce0d"
}
Frame {
msec: 2096
- hash: "d5b4fc1b568a4a1b63a91b422272c704"
+ hash: "0968397c7a209059cd466c61ac891081"
}
Frame {
msec: 2112
- hash: "b6d2c80925cc6b4b7b297bd6ee903c7c"
+ hash: "d5b4fc1b568a4a1b63a91b422272c704"
}
Key {
type: 7
@@ -582,31 +582,31 @@ VisualTest {
}
Frame {
msec: 2128
- hash: "38117482196360353586cb7ace593894"
+ hash: "a980a2e7bd10328fbd4400e799aa7c24"
}
Frame {
msec: 2144
- hash: "2301f3a148bf4e311cc8ce011ddf65f8"
+ hash: "b74be5349822d52ced201d7f34a96122"
}
Frame {
msec: 2160
- hash: "2a4982a0961f89a15618f8d4c2081f5a"
+ hash: "f7c6dbcd7d55b3230af463098f346bd8"
}
Frame {
msec: 2176
- hash: "acf8666d6a8a29925f3895aa8e93f713"
+ hash: "393358a0ee7636a535f14f0dc9c3d609"
}
Frame {
msec: 2192
- hash: "967ed026bc92a6d2747c5227105543a6"
+ hash: "cad337b87b629b1eee78407aacfd279e"
}
Frame {
msec: 2208
- hash: "ff72f3fb95f25990c99c1c14cfef57da"
+ hash: "d90b762e62867e3ff928160bed85d2ff"
}
Frame {
msec: 2224
- hash: "0874a4f863596c3860dcf5b1f7f6ceb2"
+ hash: "520445d8619ad9bdde0db0e61f17567c"
}
Frame {
msec: 2240
@@ -658,31 +658,31 @@ VisualTest {
}
Frame {
msec: 2400
- hash: "7c4bbf0423d63d7642d218cac56a6215"
+ hash: "5c9801ffdb07be53524cf0a4f8709ee4"
}
Frame {
msec: 2416
- hash: "e8c77dbc89721b51549f8d46453fe09d"
+ hash: "adef25d77f816e40ec02886187f456bf"
}
Frame {
msec: 2432
- hash: "7953503590b639872ac12215695e8cea"
+ hash: "56290066fa32054bb7e1669bbda3f3bb"
}
Frame {
msec: 2448
- hash: "edaee946a2e25fed6de9acfda0d44a14"
+ hash: "101b94bcf3f536bd64f0ac50f21cd5de"
}
Frame {
msec: 2464
- hash: "4996ef39bb0122c10d65f8dd8674b386"
+ hash: "edaee946a2e25fed6de9acfda0d44a14"
}
Frame {
msec: 2480
- hash: "ede7c6ca9d6deb7819c3715e98755d6e"
+ hash: "b170b60632b17595713dd911afc46fcc"
}
Frame {
msec: 2496
- hash: "e703fad2fcf9244ec9865200c7d17ce3"
+ hash: "57550914cd214025c6b1f3dfa446417f"
}
Key {
type: 7
@@ -694,23 +694,23 @@ VisualTest {
}
Frame {
msec: 2512
- hash: "e2bfc16fd893bb3eb0e5df89a0169af3"
+ hash: "3fd7252f5e61e3c348219a54fd5b95d9"
}
Frame {
msec: 2528
- hash: "cfd0eb2bc378bd46644f3f7820150685"
+ hash: "c6c27dd386e40bc0a02ad8104301d391"
}
Frame {
msec: 2544
- hash: "442b05b04762c2bcda291aaa0341398e"
+ hash: "dd476c04d3612f940e1959030ee8e264"
}
Frame {
msec: 2560
- hash: "55842a6503057eea98e2075ef160873e"
+ hash: "f2f8d9bb8a1865237398421f6a6d89dc"
}
Frame {
msec: 2576
- hash: "730f80233dacf1119660a76d2a34c5fc"
+ hash: "d4a48ee79a18cc5c0bc123fbb40c3efd"
}
Frame {
msec: 2592
@@ -766,23 +766,23 @@ VisualTest {
}
Frame {
msec: 2768
- hash: "4d04c12bc7fab0b22df3135bf3a87a22"
+ hash: "f13bc957329adad9dcb1ce0c408eeaaf"
}
Frame {
msec: 2784
- hash: "fdca5a3f8312452feba7f37b1caa6419"
+ hash: "9a676805f3474f924cbe7ea21ee9dcab"
}
Frame {
msec: 2800
- hash: "97b955e0f8cde30299b238d9ac0eb308"
+ hash: "f0161b0d27757137bcb7fd3e6db2280c"
}
Frame {
msec: 2816
- hash: "19664de1a738458810896959ba4087ad"
+ hash: "c7034a0e8956c9f483c128a934d68fa7"
}
Frame {
msec: 2832
- hash: "4f9a4b6de6a2969e4639076a8f7c258e"
+ hash: "19664de1a738458810896959ba4087ad"
}
Key {
type: 7
@@ -794,31 +794,31 @@ VisualTest {
}
Frame {
msec: 2848
- hash: "a10f18aa686be2681a48082ec9f01df7"
+ hash: "c5d5ff1884dd0ede23097530c249678c"
}
Frame {
msec: 2864
- hash: "b8f39a6cca377dd573429d879286dd63"
+ hash: "131ae4a26ad06bbef105668d30e154aa"
}
Frame {
msec: 2880
- image: "gridview2.2.png"
+ hash: "5d6ba09a5038e00007af0fa3f89b67b8"
}
Frame {
msec: 2896
- hash: "3301e52a46efbc49882401c77853ffde"
+ image: "gridview2.3.png"
}
Frame {
msec: 2912
- hash: "0c614597f17496ebc701efe7b0c1fbb6"
+ hash: "9d5ee2458abc5dfd56abfd42c906270f"
}
Frame {
msec: 2928
- hash: "6dda2d6b034c932e279cf216c9b3e6ad"
+ hash: "823b5d63768f5a18e795d5ed61f4dec8"
}
Frame {
msec: 2944
- hash: "7bf08cd5fe3ad3f83bbef28f452e0545"
+ hash: "1b7ebcf0e3d68e429cb04966120985e5"
}
Frame {
msec: 2960
@@ -854,35 +854,35 @@ VisualTest {
}
Frame {
msec: 3056
- hash: "0fe7d46e7c18ce7bb5a098c5c662d557"
+ hash: "1a8a32127c1b699bc282b0c209117a00"
}
Frame {
msec: 3072
- hash: "cd5df541cc1ed545bc27da9e4a937261"
+ hash: "2f5f2ab12410c070a7c05a1674e273fe"
}
Frame {
msec: 3088
- hash: "35762467b83fee1870cff9b0436994d3"
+ hash: "afe7c2cd74cc90d67e8c068eaf5988eb"
}
Frame {
msec: 3104
- hash: "75a620b42caabf5b1576041dbd4c2808"
+ hash: "e063d9eb45dc42b3f8b66937b7b4c19a"
}
Frame {
msec: 3120
- hash: "f1b06290a6cbd48b8d3d4ce1e42ed754"
+ hash: "75a620b42caabf5b1576041dbd4c2808"
}
Frame {
msec: 3136
- hash: "8e1a50dc082828587a4656117760a852"
+ hash: "2e2b9db4d2f19035c7c29489332b2550"
}
Frame {
msec: 3152
- hash: "aae8e5f166e736040138d8e222a844dd"
+ hash: "32370cba80db8eaf1f5cd9b73d3472ed"
}
Frame {
msec: 3168
- hash: "f69e5cf2bcb26fe49126776695b0b7e0"
+ hash: "3a79c47a8eb8bb79316e61a7eed58e57"
}
Key {
type: 7
@@ -894,19 +894,19 @@ VisualTest {
}
Frame {
msec: 3184
- hash: "7b482fece0255ea07496ef0545b008a2"
+ hash: "c84e47182ef6ebec61163f9b42d03c64"
}
Frame {
msec: 3200
- hash: "3f96eaebfebe8d4eeb347b201b59ab11"
+ hash: "6a0a83a39e6ab82b5437d46468e4776d"
}
Frame {
msec: 3216
- hash: "9943626d2226c3be711c8213906133f0"
+ hash: "945929656c1d27bcba51ce908e72a770"
}
Frame {
msec: 3232
- hash: "fd5fd8177b3957c27f1de0d95621351a"
+ hash: "506283ccfe9670633ce0bf60b437b37b"
}
Frame {
msec: 3248
@@ -958,31 +958,31 @@ VisualTest {
}
Frame {
msec: 3408
- hash: "fb437f6c23561092a124e498f1604ff2"
+ hash: "7d12bcac0fcaaff7467c444ab89f1e06"
}
Frame {
msec: 3424
- hash: "402ba144bbb7260eec4553e68eb35cda"
+ hash: "2f4538eec0c704af25b0a73d5a8dded4"
}
Frame {
msec: 3440
- hash: "76a983de9e85e0c81dfb8908252bd6c9"
+ hash: "4722cbfba5de7e4f7b3cee10bd0f75b5"
}
Frame {
msec: 3456
- hash: "09219f55fae47a0afed887ebf68a36bc"
+ hash: "3a6df7e6d771c6edc5218ad9a4bf6ab0"
}
Frame {
msec: 3472
- hash: "344e81cc262093facef2f6a235a734dc"
+ hash: "09219f55fae47a0afed887ebf68a36bc"
}
Frame {
msec: 3488
- hash: "8f1c5544eb537555b1c59a377b15e31d"
+ hash: "c04c0010761f572c5b16963699c70135"
}
Frame {
msec: 3504
- hash: "606b9bb549fe2e4bbd09d67b7dea0d1a"
+ hash: "52d59ffff0f2109f9a584f3582158798"
}
Key {
type: 7
@@ -994,23 +994,23 @@ VisualTest {
}
Frame {
msec: 3520
- hash: "63e239c97bd01a61cb31ef2869e7f47c"
+ hash: "9b1d58189c56205ba8963671bfb86742"
}
Frame {
msec: 3536
- hash: "f7c176550c39f8a1ad64590cf33a60a4"
+ hash: "7de84895e12919ffe935b23372db95db"
}
Frame {
msec: 3552
- hash: "8581cb14ed81efdf9abb638b5e542cc3"
+ hash: "d9c5b4c2a7831c216fe2266fe26306b0"
}
Frame {
msec: 3568
- hash: "7a1e9354ecc49d8bc27d303c7bdc81f9"
+ hash: "1c2bc039c48e7e9da07165f405a6f207"
}
Frame {
msec: 3584
- hash: "610288b97276ee03702ed8a814ef333d"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 3600
@@ -1074,19 +1074,19 @@ VisualTest {
}
Frame {
msec: 3808
- hash: "9713c6b9aff051dd0cc45c545d34b688"
+ hash: "abf9f5ef21fb62e5ad89ae2640a5a7e1"
}
Frame {
msec: 3824
- hash: "1f8fd4d759e343720a8681b6ad126b72"
+ hash: "58103d91498617585163e0508bdb724d"
}
Frame {
msec: 3840
- image: "gridview2.3.png"
+ hash: "c46ea52b070681155466b30096379c4f"
}
Frame {
msec: 3856
- hash: "8550d916d91a40b0c3a886b962e07ffc"
+ image: "gridview2.4.png"
}
Key {
type: 7
@@ -1098,143 +1098,143 @@ VisualTest {
}
Frame {
msec: 3872
- hash: "df0c2e474139e79429bfc19c79a65ef8"
+ hash: "523667a6f3213fb67de1744636780831"
}
Frame {
msec: 3888
- hash: "acfb99d081d754276e5ed59bd590aeab"
+ hash: "f0b7d38f695a29f6787dc3683a05a7c8"
}
Frame {
msec: 3904
- hash: "2b34cd101b442f7a3de2893fd5514c16"
+ hash: "1e5cf55e27217e67a5deb89e2d46349a"
}
Frame {
msec: 3920
- hash: "df92ced66faa1d59354d8010278438ec"
+ hash: "c49869491f484d07da838a21564e5e19"
}
Frame {
msec: 3936
- hash: "dd39a8e6fa3784453461193a6da416cd"
+ hash: "1acce2b796476d2d7d130749b06f334f"
}
Frame {
msec: 3952
- hash: "5670e8f91ea2df451f0974a51cd77d7d"
+ hash: "19ee6550b52517345859f9feb0b0d5a4"
}
Frame {
msec: 3968
- hash: "74b97a09bfe7400872a2c6214e04a5ac"
+ hash: "d2f360af319c740ad095ee0a463fa6fa"
}
Frame {
msec: 3984
- hash: "cfd55b963506ab54cf09a7311e84bcc9"
+ hash: "032326c6cf2a9da09c2388626ce942ef"
}
Frame {
msec: 4000
- hash: "59657ee9293c03f064d62de826931435"
+ hash: "ba2a7178b7c68001ecfdfea053507d0e"
}
Frame {
msec: 4016
- hash: "31f6a4adf31be5ed0af0ea4097e3acee"
+ hash: "9afddf683c810e288ed0da2fa44c5182"
}
Frame {
msec: 4032
- hash: "8f5bfc40c8cdb2f8ce69adb72e7efe76"
+ hash: "93a7145e4bafa1e40a1db013b1c4337c"
}
Frame {
msec: 4048
- hash: "9dc38985113124130e2ca7950e0bd144"
+ hash: "3d48687ecb20a8670dd656c5705a0797"
}
Frame {
msec: 4064
- hash: "786e6e8b9e74876a6f393d61a78b8fc7"
+ hash: "7578264d5ea215f7fde90478ba5e6d32"
}
Frame {
msec: 4080
- hash: "1f4d59a4e4684aab309363a711b30006"
+ hash: "fb84bbce52e9c4dc4efc1eed7e863007"
}
Frame {
msec: 4096
- hash: "a11e332de151b43051796e16dbcf75c3"
+ hash: "df5d88d8421af767057fc4b3d0de23b1"
}
Frame {
msec: 4112
- hash: "1a0e82029ae107cb2a018786752433ff"
+ hash: "dae3e3e10fe7e0ddcf10a7bb4ecc3f1a"
}
Frame {
msec: 4128
- hash: "b14c51977c7fbf51f9cf6fec309bff6a"
+ hash: "eb15ba34411afd416dea5bc2b18cfb27"
}
Frame {
msec: 4144
- hash: "2b418f811992399c3f87c268db745632"
+ hash: "5f51ade6a1400093e9dd2b80d6f7a6ca"
}
Frame {
msec: 4160
- hash: "0e9a056207053ca98c4e9f42de244c62"
+ hash: "5e240752b752ca2ed4e6087f4deb0fbf"
}
Frame {
msec: 4176
- hash: "1945c3f9e3a1337e7d111e15adea345f"
+ hash: "ae1931b9f168211c44c7269a245635fd"
}
Frame {
msec: 4192
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4208
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4224
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4240
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4256
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4272
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4288
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4304
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4320
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4336
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4352
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4368
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4384
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4400
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4416
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Key {
type: 6
@@ -1246,31 +1246,31 @@ VisualTest {
}
Frame {
msec: 4432
- hash: "d8cf36b6cc15a01ead815d814ae81cb4"
+ hash: "83588693715deadea8b875d6c6547371"
}
Frame {
msec: 4448
- hash: "1945c3f9e3a1337e7d111e15adea345f"
+ hash: "ae1931b9f168211c44c7269a245635fd"
}
Frame {
msec: 4464
- hash: "0e9a056207053ca98c4e9f42de244c62"
+ hash: "a8e4b69162a6298929c12a91e60f20c1"
}
Frame {
msec: 4480
- hash: "2b418f811992399c3f87c268db745632"
+ hash: "ca4694bbbdc206c46600c894ed853390"
}
Frame {
msec: 4496
- hash: "b14c51977c7fbf51f9cf6fec309bff6a"
+ hash: "21b2f2ee716d6b28066d44bfdc57babf"
}
Frame {
msec: 4512
- hash: "1a0e82029ae107cb2a018786752433ff"
+ hash: "d37df25a59f3ba88b78f548521a6e5b2"
}
Frame {
msec: 4528
- hash: "a11e332de151b43051796e16dbcf75c3"
+ hash: "b554cb62b97bbbb671d9b34389d4187a"
}
Key {
type: 7
@@ -1282,75 +1282,75 @@ VisualTest {
}
Frame {
msec: 4544
- hash: "1f4d59a4e4684aab309363a711b30006"
+ hash: "d28889303f98c47665247009bcfd68e7"
}
Frame {
msec: 4560
- hash: "786e6e8b9e74876a6f393d61a78b8fc7"
+ hash: "80e7808641fc79c893a02842f641249b"
}
Frame {
msec: 4576
- hash: "9dc38985113124130e2ca7950e0bd144"
+ hash: "4f3a39e8c61ad9197e7f24058671e510"
}
Frame {
msec: 4592
- hash: "8f5bfc40c8cdb2f8ce69adb72e7efe76"
+ hash: "ba2a7178b7c68001ecfdfea053507d0e"
}
Frame {
msec: 4608
- hash: "31f6a4adf31be5ed0af0ea4097e3acee"
+ hash: "ca1c72729c41845151820d362721a1e7"
}
Frame {
msec: 4624
- hash: "59657ee9293c03f064d62de826931435"
+ hash: "ac37c4abbbc11b8e2bf8e0e8dae6180f"
}
Frame {
msec: 4640
- hash: "23aa652a0de7fced4a780d72f0940a1b"
+ hash: "ac37c4abbbc11b8e2bf8e0e8dae6180f"
}
Frame {
msec: 4656
- hash: "23aa652a0de7fced4a780d72f0940a1b"
+ hash: "ac37c4abbbc11b8e2bf8e0e8dae6180f"
}
Frame {
msec: 4672
- hash: "23aa652a0de7fced4a780d72f0940a1b"
+ hash: "ac37c4abbbc11b8e2bf8e0e8dae6180f"
}
Frame {
msec: 4688
- hash: "23aa652a0de7fced4a780d72f0940a1b"
+ hash: "ac37c4abbbc11b8e2bf8e0e8dae6180f"
}
Frame {
msec: 4704
- hash: "23aa652a0de7fced4a780d72f0940a1b"
+ hash: "ac37c4abbbc11b8e2bf8e0e8dae6180f"
}
Frame {
msec: 4720
- hash: "23aa652a0de7fced4a780d72f0940a1b"
+ hash: "ac37c4abbbc11b8e2bf8e0e8dae6180f"
}
Frame {
msec: 4736
- hash: "23aa652a0de7fced4a780d72f0940a1b"
+ hash: "ac37c4abbbc11b8e2bf8e0e8dae6180f"
}
Frame {
msec: 4752
- hash: "23aa652a0de7fced4a780d72f0940a1b"
+ hash: "ac37c4abbbc11b8e2bf8e0e8dae6180f"
}
Frame {
msec: 4768
- hash: "23aa652a0de7fced4a780d72f0940a1b"
+ hash: "ac37c4abbbc11b8e2bf8e0e8dae6180f"
}
Frame {
msec: 4784
- hash: "23aa652a0de7fced4a780d72f0940a1b"
+ hash: "ac37c4abbbc11b8e2bf8e0e8dae6180f"
}
Frame {
msec: 4800
- image: "gridview2.4.png"
+ hash: "ac37c4abbbc11b8e2bf8e0e8dae6180f"
}
Frame {
msec: 4816
- hash: "23aa652a0de7fced4a780d72f0940a1b"
+ image: "gridview2.5.png"
}
Key {
type: 6
@@ -1362,27 +1362,27 @@ VisualTest {
}
Frame {
msec: 4832
- hash: "23aa652a0de7fced4a780d72f0940a1b"
+ hash: "ac37c4abbbc11b8e2bf8e0e8dae6180f"
}
Frame {
msec: 4848
- hash: "d46eea049d6156a5e85d9c6811d9d367"
+ hash: "1176eed6f023a843a646517e60f848b5"
}
Frame {
msec: 4864
- hash: "d5796ae85247cb8502f92f0d044e4e1f"
+ hash: "26eca367a7fe38ac123fa63cfbb20421"
}
Frame {
msec: 4880
- hash: "90987ac49c1a4e6b668436e3ff631e6c"
+ hash: "d471f06d345e5a09bf4ea540b80fe1e3"
}
Frame {
msec: 4896
- hash: "c38d69759ad80242b1fe83ba191cd421"
+ hash: "e3694d271e363df1b212d975a464df62"
}
Frame {
msec: 4912
- hash: "09d08aed76a04e492d8a39cc4dd2b8f5"
+ hash: "3dc24a10bbf6a6a0ba85f50de8646305"
}
Key {
type: 7
@@ -1394,175 +1394,175 @@ VisualTest {
}
Frame {
msec: 4928
- hash: "9671d2ff9a2ef46ce3c750a1965404a4"
+ hash: "08e7979e36a9a8a500193020ab68c616"
}
Frame {
msec: 4944
- hash: "f55857816d666ece4a7987a70883b3d1"
+ hash: "bd91601e455c2c37c786f907bd20b447"
}
Frame {
msec: 4960
- hash: "a2d80527b30316d9120b057bbfcfa666"
+ hash: "e4b676fc9752f3bff5353a2bf528b3ac"
}
Frame {
msec: 4976
- hash: "87ca69287c1469cbc7e65d1673016de7"
+ hash: "c772188a68cc0958c247145005d580ef"
}
Frame {
msec: 4992
- hash: "51588c7ebbe2dcd87a3c9bebf028aee3"
+ hash: "eded946d9e7c6418e3933624fe2f1dbf"
}
Frame {
msec: 5008
- hash: "917a9a171273fe9fd4c450eeed6f58ed"
+ hash: "46a2dd2bfa66a3781a00fe466e05eeb0"
}
Frame {
msec: 5024
- hash: "6e7ade250a9a9692caee2a220dd2ac53"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5040
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5056
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5072
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5088
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5104
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5120
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5136
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5152
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5168
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5184
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5200
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5216
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5232
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5248
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5264
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5280
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5296
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5312
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5328
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5344
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5360
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5376
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5392
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5408
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5424
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5440
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5456
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5472
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5488
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5504
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5520
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5536
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5552
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5568
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5584
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5600
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Key {
type: 6
@@ -1574,31 +1574,31 @@ VisualTest {
}
Frame {
msec: 5616
- hash: "ca2dcb16d553889a3a57b48700c2a595"
+ hash: "4e11a072f1136c2c6298e6cfb25700dd"
}
Frame {
msec: 5632
- hash: "c5c9aab9bea757f1c451e89df72bd836"
+ hash: "e44ee0f83cbd176620d5c91851402b5b"
}
Frame {
msec: 5648
- hash: "a8cf3085f8c3b743f3f15db1ad7b8801"
+ hash: "c18bc8109b350673faf64b4722e86f3d"
}
Frame {
msec: 5664
- hash: "c25a92050eced1c304506572723273a3"
+ hash: "1b552ed8555c61e1fa664e6c88aee64d"
}
Frame {
msec: 5680
- hash: "cff981039c1a3eb6c3c1a20f142fbae2"
+ hash: "11284c77b23ba4b4b0c664b387dc9d48"
}
Frame {
msec: 5696
- hash: "930765587fe3355873bbdff66b812b74"
+ hash: "fbd015d60a8ada6a671301d01846b4c8"
}
Frame {
msec: 5712
- hash: "6a60f97c7b39add465e1bd366e9c644b"
+ hash: "1456fca256ab6fdf930dd079ee8b77a7"
}
Key {
type: 7
@@ -1610,99 +1610,99 @@ VisualTest {
}
Frame {
msec: 5728
- hash: "7a1fd3c488d1064a75dc598c9a773291"
+ hash: "bf7f688319a89ade564734d7fc658167"
}
Frame {
msec: 5744
- hash: "e2ecd7e68e27eb3d2dcb5e368d3ee5a0"
+ hash: "68819e722d6032881824448ed63248b2"
}
Frame {
msec: 5760
- image: "gridview2.5.png"
+ hash: "510589f35813c6c1d6484f614da92ae3"
}
Frame {
msec: 5776
- hash: "20f3aaca2efc3066076e73d1d95e5363"
+ image: "gridview2.6.png"
}
Frame {
msec: 5792
- hash: "b18d476cadc36e22dddc3185f595c123"
+ hash: "37f9e630ac66e999046d686078cf5a68"
}
Frame {
msec: 5808
- hash: "8cbc47555178c8ee355774eab17b4b19"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 5824
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 5840
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 5856
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 5872
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 5888
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 5904
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 5920
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 5936
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 5952
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 5968
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 5984
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 6000
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 6016
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 6032
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 6048
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 6064
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 6080
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 6096
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Key {
type: 6
@@ -1714,39 +1714,39 @@ VisualTest {
}
Frame {
msec: 6112
- hash: "e488fb76fb550fba51b95bee3fee80d5"
+ hash: "b534ccea1f69ececc54d943e73b7e9f4"
}
Frame {
msec: 6128
- hash: "8c2fab0c73d1cfbeeb0ec937085d6b3b"
+ hash: "f45eb6005981864d7e4d1379a4390b02"
}
Frame {
msec: 6144
- hash: "5d9353517177ef7c6314d8a65cb009ec"
+ hash: "a644905acb7cf6e4d9351f1140985a98"
}
Frame {
msec: 6160
- hash: "ed8de504f7e2028cd369c1555314fd81"
+ hash: "011be55b909843b2506c5a97e7571e51"
}
Frame {
msec: 6176
- hash: "8fe84d8badbe5bd08d097ba6bda10611"
+ hash: "35b224d84ae3a4bdba0ace487471f0a6"
}
Frame {
msec: 6192
- hash: "d77419a55a3cf933505e793bb258e6af"
+ hash: "dcfd5536e6065a19650fe67914211223"
}
Frame {
msec: 6208
- hash: "457ac82be02e2f5e08e51ccc78c94781"
+ hash: "8ad99c352901c54ecc601ca2ac8c1f08"
}
Frame {
msec: 6224
- hash: "e57e2852f065afff9c24c5bc9f29edee"
+ hash: "e4774d15b45865b9f445f679cd0414ea"
}
Frame {
msec: 6240
- hash: "f72cd6ad3324936c3a18c264e23e05a9"
+ hash: "a5b78dfb09b9031f0aabfa7439cbc433"
}
Key {
type: 7
@@ -1758,127 +1758,127 @@ VisualTest {
}
Frame {
msec: 6256
- hash: "a4bf7eae6fc7a05239d09421ae95304a"
+ hash: "20b87dc26080f8e8e070b2fa299f496a"
}
Frame {
msec: 6272
- hash: "423f3bd07df8bee25818644c07201a3c"
+ hash: "0e6d05d1df8328ca17d953476d19ae14"
}
Frame {
msec: 6288
- hash: "225e9c698424f287b9458b7839b4479b"
+ hash: "e2b1ec6b985bbc57f0384a49f3af545c"
}
Frame {
msec: 6304
- hash: "0f463db7e4acc184a4efb7b5e5c0d397"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6320
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6336
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6352
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6368
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6384
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6400
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6416
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6432
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6448
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6464
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6480
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6496
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6512
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6528
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6544
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6560
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6576
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6592
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6608
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6624
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6640
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6656
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6672
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6688
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6704
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6720
- image: "gridview2.6.png"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6736
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ image: "gridview2.7.png"
}
Key {
type: 6
@@ -1890,27 +1890,27 @@ VisualTest {
}
Frame {
msec: 6752
- hash: "b92ad1c3be35c46c0d12bf7701c56f23"
+ hash: "8d36bc2f3ab614d19f3ec8821f3e81ed"
}
Frame {
msec: 6768
- hash: "738f6bcc043d221488285c7e529b1d1c"
+ hash: "6cbeb42ae5aa75638fedcaf38d25370a"
}
Frame {
msec: 6784
- hash: "cb0a4e8e79372dd67e8ecfea2143a47c"
+ hash: "fe3b287b14cbfbca4e19a2de979e9e16"
}
Frame {
msec: 6800
- hash: "544d1825b36f4e7950c1a62b26c1fd9b"
+ hash: "69650da29b84b8009c30de516fb9b623"
}
Frame {
msec: 6816
- hash: "df99396622342b4f092b0db34a224c3d"
+ hash: "5cbcaf1e6916aa635e31ac4219e387f7"
}
Frame {
msec: 6832
- hash: "47391f51e5df2249a6ca1f1f6e8e80e0"
+ hash: "acb7f98da26b70bebe20336c51449318"
}
Key {
type: 7
@@ -1922,19 +1922,19 @@ VisualTest {
}
Frame {
msec: 6848
- hash: "d8079a874ca18d00aeeb611effcbeb8b"
+ hash: "8588b82fadca8ea18d4cc268508119e0"
}
Frame {
msec: 6864
- hash: "4cfd9264af6935aca425da75ebb2d7cc"
+ hash: "e2cf9055220b1c8126423df30e3607ed"
}
Frame {
msec: 6880
- hash: "aee6547cb653cd2d56d07285d836149d"
+ hash: "d06e77ff2044ba3f6fc1664af5720a0a"
}
Frame {
msec: 6896
- hash: "969720f17eae51258e2e143e14bfa737"
+ hash: "b931ef84ecc38676d602638081b1f126"
}
Frame {
msec: 6912
@@ -1998,203 +1998,203 @@ VisualTest {
}
Frame {
msec: 7152
- hash: "beeaec4b983c970ae448e33047dfdfea"
+ hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad"
}
Frame {
msec: 7168
- hash: "7c415ab1b7d8e25b71af75d3eec8ee4a"
+ hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad"
}
Frame {
msec: 7184
- hash: "8913037e57b9a6a58b68f2d6e69b1bd1"
+ hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad"
}
Frame {
msec: 7200
- hash: "19e59e9409fdaf90ccf75606b58688b7"
+ hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad"
}
Frame {
msec: 7216
- hash: "1ae71ef5b1006f637bd8df0769af65a6"
+ hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad"
}
Frame {
msec: 7232
- hash: "1f0aa8b368b2dbccafd54b923d8cce95"
+ hash: "b6a0ee0b24737bc0045ff3fb68cfe3ad"
}
Frame {
msec: 7248
- hash: "c5079fb25a8c80a995d7aa5fbbd91428"
+ hash: "d30ed063d99d02f6d8302847e83d60a1"
}
Frame {
msec: 7264
- hash: "59f41220fa5d23db298c9e94f115c17b"
+ hash: "30b128c6248cb35ee4c55e1c2129a19c"
}
Frame {
msec: 7280
- hash: "48259dfe8b266d9e7f50b187be98c3cb"
+ hash: "1ae71ef5b1006f637bd8df0769af65a6"
}
Frame {
msec: 7296
- hash: "f7554552598351c3b8dfcbe3ebc32b3b"
+ hash: "6bd6f0c35aeede01d1a8e42c81cd6fb8"
}
Frame {
msec: 7312
- hash: "219e9cd84d7e5c5c0e6cb80100aa3ab5"
+ hash: "ca90dcb70d416616dcae2df84956cff1"
}
Frame {
msec: 7328
- hash: "5578e870ee8ce00bce5a59bb25e3d0a9"
+ hash: "a33bc4f7c40fa3eb36803c20222d75f6"
}
Frame {
msec: 7344
- hash: "4d9cebbf750c03380694245e0e22ab94"
+ hash: "12430a710362b47fef8dfc022b789e07"
}
Frame {
msec: 7360
- hash: "a60a8032e97ed0a3caa05012c1283de5"
+ hash: "a18abef207f5f6bbd260ca98cce91380"
}
Frame {
msec: 7376
- hash: "3bee20b349a7e9d67f7770ede6da8673"
+ hash: "e853ea2eba5e3baeba0f43e57d2415ba"
}
Frame {
msec: 7392
- hash: "d8c34576c25fb8b5e4fa12680ac32e99"
+ hash: "294cff3e6d3a1101f76d2ecce14e11a1"
}
Frame {
msec: 7408
- hash: "cd1360aa7db7c3b2f2012dfc44de2198"
+ hash: "c38ee992a1b435c12a66e4d49d78c2ed"
}
Frame {
msec: 7424
- hash: "cd82782f63c9a7d21d51b3440c2f038b"
+ hash: "54775aed3a6283c1fa330d65de5bc70c"
}
Frame {
msec: 7440
- hash: "e59061967a841aa45607c0828b687527"
+ hash: "eba9a696d9ab1e8da7c6c59787d3f311"
}
Frame {
msec: 7456
- hash: "01962406c9aaf1aa8bf3ab49e30ddf5f"
+ hash: "2048cd8abb56be34f9e475d7f92b6153"
}
Frame {
msec: 7472
- hash: "5a5732a568189e598c7985ee806bc67e"
+ hash: "d56b4a04f1d2835a0852ea20e8e2f451"
}
Frame {
msec: 7488
- hash: "54775aed3a6283c1fa330d65de5bc70c"
+ hash: "f5afb489b7aee20b45c9f5eb5a9eb8d7"
}
Frame {
msec: 7504
- hash: "66640b4a5c1e68924b25de24e3c3f008"
+ hash: "26f25129f9d2c73a7a5168c73e299919"
}
Frame {
msec: 7520
- hash: "76999d3125f20ba47dbdff38ee722a8a"
+ hash: "6f23e3c4ec738903b5011cbee1141b00"
}
Frame {
msec: 7536
- hash: "5159c81533bee8825cff11910bcb90dc"
+ hash: "e10d4bf08980ea7d079a2f359ee62b95"
}
Frame {
msec: 7552
- hash: "ac0295495345987d1e000f6bb2436927"
+ hash: "eb0a656e8feabcb131e59c66b64f7d09"
}
Frame {
msec: 7568
- hash: "d56b4a04f1d2835a0852ea20e8e2f451"
+ hash: "94cfa3f71326f6e188fee32c0970de30"
}
Frame {
msec: 7584
- hash: "ae41fe23e2ab508d7642973c0d9d35b0"
+ hash: "8bc4274a3f0498d600405409f69c1d16"
}
Frame {
msec: 7600
- hash: "730ca01fbee6ec4928715ec52773c06c"
+ hash: "995cb12e1d07488ae4139d2c67552dc6"
}
Frame {
msec: 7616
- hash: "ad1fa52c617a2b119d61eb9fb7d58a82"
+ hash: "2d9d9f3fb43e2280b0dea054dc8d7dd4"
}
Frame {
msec: 7632
- hash: "c74321a822b515a393e8e218bd45e8e3"
+ hash: "dd68eb502e1fe114a24d902b50a5dff9"
}
Frame {
msec: 7648
- hash: "a9e2f3bee1d47166204c74bdf90cd8c8"
+ hash: "b2738b11e34c5d7840e9aacc443cc1f0"
}
Frame {
msec: 7664
- hash: "e10d4bf08980ea7d079a2f359ee62b95"
+ hash: "de148713c156476ca7c4021633596782"
}
Frame {
msec: 7680
- image: "gridview2.7.png"
+ hash: "0e273dbaaab76058b6e04a830bbd80d3"
}
Frame {
msec: 7696
- hash: "9f0ba6051e684e54ff4e36d980a7e600"
+ image: "gridview2.8.png"
}
Frame {
msec: 7712
- hash: "aa6268d8d7fb3d2b91db3e225e8c818a"
+ hash: "5dcad019a1c0eaaab381a7602e1914ff"
}
Frame {
msec: 7728
- hash: "8e547e55279b1929f42bf51e753f142e"
+ hash: "e046dc0869cc629de5037214af1d58f8"
}
Frame {
msec: 7744
- hash: "5386c71f8d6701379e177f161d714da2"
+ hash: "affc71688994d6b6763e78305ba1d6b3"
}
Frame {
msec: 7760
- hash: "a184e9e6012c72fc1aeaed9f98b0fb1e"
+ hash: "d5ec397fdf17bf864e4575543c535dad"
}
Frame {
msec: 7776
- hash: "777a6b70ca77c45e2e5e3914cc328dcb"
+ hash: "b37cb5816c2077b8018f78985b91fdeb"
}
Frame {
msec: 7792
- hash: "424f73f25a1e91126f951838d45adc3b"
+ hash: "a3060fa79b1f7f0d9e61ad8c69be19ed"
}
Frame {
msec: 7808
- hash: "3f7f2eb6b9a5d19fbfcd700baf566dfb"
+ hash: "236dcbaf20e11335efc64b2ce87b551d"
}
Frame {
msec: 7824
- hash: "c3c4c72b25c2295b82a5fd7454942f77"
+ hash: "09af1c488b56dc3c7c3893b024f6d53f"
}
Frame {
msec: 7840
- hash: "3b35e93d3eb9d28c5c03d6d353f805d2"
+ hash: "ef2bf66ac68002102476d3cfe4501cb7"
}
Frame {
msec: 7856
- hash: "5dcad019a1c0eaaab381a7602e1914ff"
+ hash: "165c02de63604aa118d9f8995e6b45af"
}
Frame {
msec: 7872
- hash: "602a5c569555767413bf445af44c744f"
+ hash: "fb790a0e4bc20afe24639dadf50a03c0"
}
Frame {
msec: 7888
- hash: "3e9facab95dae772f695b6f7c5175063"
+ hash: "881298b629aeaeb23fa9e9eb446912d2"
}
Frame {
msec: 7904
- hash: "0921220ec36ca7b25eaae699872a2006"
+ hash: "2175ff436c42616147b2e71b91e34060"
}
Frame {
msec: 7920
- hash: "1d5fa7fd630af62bcc805bdc6686df37"
+ hash: "85bc0cd40ddc08814a2c3677e7e43bcf"
}
Frame {
msec: 7936
- hash: "165c02de63604aa118d9f8995e6b45af"
+ hash: "33d81c39d16c6a326012499796e50e03"
}
Frame {
msec: 7952
@@ -2370,11 +2370,11 @@ VisualTest {
}
Frame {
msec: 8640
- image: "gridview2.8.png"
+ hash: "33d81c39d16c6a326012499796e50e03"
}
Frame {
msec: 8656
- hash: "33d81c39d16c6a326012499796e50e03"
+ image: "gridview2.9.png"
}
Frame {
msec: 8672
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview.qml b/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview.qml
index c79e19f7fe..95556f14d8 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview.qml
@@ -38,7 +38,7 @@ Rectangle {
Component {
id: appHighlight
- Rectangle { width: 100; height: 100; color: "white"; z: 3000 }
+ Rectangle { width: 100; height: 100; color: "white"; z: 0 }
}
GridView {
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml b/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml
index 811e0e4806..0dd9d0e62c 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativegridview/gridview2.qml
@@ -1,6 +1,7 @@
import QtQuick 1.0
Rectangle {
+ property string skip: "Last bit is wrong (rest is probably right, just bitrot). QTBUG-14838"
width: 300; height: 400; color: "black"
ListModel {
@@ -45,7 +46,7 @@ Rectangle {
model: appModel; delegate: appDelegate; focus: true
keyNavigationWraps: true
- flickableData: [
+ flickableData: [//Presumably the different way of doing highlight tests more things
Rectangle {
color: "transparent"; border.color: "white"; border.width: 8; z: 3000
height: 100; width: 100
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.0.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.0.png
index 5b7b426369..dd992cc635 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.1.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.1.png
index 7c27310af8..dd992cc635 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.2.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.2.png
index cbfdb2312f..887d395dac 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.3.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.3.png
index 5b7b426369..055258def9 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.4.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.4.png
index 5af705ea05..dd992cc635 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.5.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.5.png
index af4395e3d2..d3d35afa1a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.6.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.6.png
index cd12bc9ae8..2028c960ee 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.7.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.7.png
index 471c86b791..a667cf94b1 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.8.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.8.png
index 653905e2bb..2f0967dcb9 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.qml
index b88bd8341e..001861d533 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/drag.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "668cc6d9d699b947a7c0f3ff4b26853f"
+ image: "drag.0.png"
}
Frame {
msec: 32
@@ -242,11 +242,11 @@ VisualTest {
}
Frame {
msec: 960
- image: "drag.0.png"
+ hash: "668cc6d9d699b947a7c0f3ff4b26853f"
}
Frame {
msec: 976
- hash: "668cc6d9d699b947a7c0f3ff4b26853f"
+ image: "drag.1.png"
}
Frame {
msec: 992
@@ -554,7 +554,7 @@ VisualTest {
}
Frame {
msec: 1920
- image: "drag.1.png"
+ hash: "a611a57ed2bdf4eaa5e13612346ecce7"
}
Mouse {
type: 5
@@ -566,7 +566,7 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "978543d8f9688605625f40b960d79c28"
+ image: "drag.2.png"
}
Mouse {
type: 5
@@ -1426,7 +1426,7 @@ VisualTest {
}
Frame {
msec: 2880
- image: "drag.2.png"
+ hash: "9356ce797d12ae076af947cd0e658551"
}
Mouse {
type: 5
@@ -1446,7 +1446,7 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "9356ce797d12ae076af947cd0e658551"
+ image: "drag.3.png"
}
Mouse {
type: 5
@@ -2290,7 +2290,7 @@ VisualTest {
}
Frame {
msec: 3840
- image: "drag.3.png"
+ hash: "668cc6d9d699b947a7c0f3ff4b26853f"
}
Mouse {
type: 5
@@ -2302,7 +2302,7 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "668cc6d9d699b947a7c0f3ff4b26853f"
+ image: "drag.4.png"
}
Mouse {
type: 5
@@ -2962,7 +2962,7 @@ VisualTest {
}
Frame {
msec: 4800
- image: "drag.4.png"
+ hash: "c6d398d42d968763c7597728e86304f2"
}
Mouse {
type: 5
@@ -2974,7 +2974,7 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "c0cadb7730838d553b146804c37506b0"
+ image: "drag.5.png"
}
Mouse {
type: 5
@@ -3850,7 +3850,7 @@ VisualTest {
}
Frame {
msec: 5760
- image: "drag.5.png"
+ hash: "f0454d80a51c5f2226bd45aba58dc1e9"
}
Mouse {
type: 5
@@ -3870,7 +3870,7 @@ VisualTest {
}
Frame {
msec: 5776
- hash: "7af87eb80fa9d87fe8d8b5e4a2fff5e1"
+ image: "drag.6.png"
}
Mouse {
type: 5
@@ -4730,7 +4730,7 @@ VisualTest {
}
Frame {
msec: 6720
- image: "drag.6.png"
+ hash: "bf4b18a73b53c0a554f9bb0ac32a465d"
}
Mouse {
type: 5
@@ -4742,7 +4742,7 @@ VisualTest {
}
Frame {
msec: 6736
- hash: "5e951eb6017a060287e398fcaf4aeba9"
+ image: "drag.7.png"
}
Mouse {
type: 5
@@ -5122,11 +5122,11 @@ VisualTest {
}
Frame {
msec: 7680
- image: "drag.7.png"
+ hash: "2c1ce07ab6ce0072f6cb205f1e5297e0"
}
Frame {
msec: 7696
- hash: "2c1ce07ab6ce0072f6cb205f1e5297e0"
+ image: "drag.8.png"
}
Frame {
msec: 7712
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.0.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.0.png
index 993610f0bc..87305b348a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.1.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.1.png
index 993610f0bc..87305b348a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.10.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.10.png
index 12c6cf58b4..87305b348a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.10.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.10.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.11.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.11.png
index ccb9fddb25..b268c5cc79 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.11.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.11.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.12.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.12.png
index ace0752327..3926b9bea1 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.12.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.12.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.13.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.13.png
index 993610f0bc..69561957eb 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.13.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.13.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.0.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.14.png
index 64d6b06895..87305b348a 100644
--- a/tests/auto/declarative/qmlvisual/animation/scriptAction/data/scriptAction.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.14.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.2.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.2.png
index e58c68b7ac..87305b348a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.3.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.3.png
index e58c68b7ac..1d126919ee 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.4.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.4.png
index cb6d2f83d3..1d126919ee 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.5.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.5.png
index db6bea2ae9..7f76076f0a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.6.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.6.png
index c18bb34f34..02c6af0635 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.7.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.7.png
index c18bb34f34..15f0ec5c73 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.8.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.8.png
index 3b56301e7e..15f0ec5c73 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.9.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.9.png
index 993610f0bc..71bf9cd84b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.9.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.qml
index 307fef68f6..c862678292 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-flickable.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "cc1fd2f4c3be318052254a9b6be7a57b"
+ image: "mousearea-flickable.0.png"
}
Frame {
msec: 32
@@ -242,11 +242,11 @@ VisualTest {
}
Frame {
msec: 960
- image: "mousearea-flickable.0.png"
+ hash: "cc1fd2f4c3be318052254a9b6be7a57b"
}
Frame {
msec: 976
- hash: "cc1fd2f4c3be318052254a9b6be7a57b"
+ image: "mousearea-flickable.1.png"
}
Frame {
msec: 992
@@ -482,11 +482,11 @@ VisualTest {
}
Frame {
msec: 1920
- image: "mousearea-flickable.1.png"
+ hash: "cc1fd2f4c3be318052254a9b6be7a57b"
}
Frame {
msec: 1936
- hash: "cc1fd2f4c3be318052254a9b6be7a57b"
+ image: "mousearea-flickable.2.png"
}
Frame {
msec: 1952
@@ -730,11 +730,11 @@ VisualTest {
}
Frame {
msec: 2880
- image: "mousearea-flickable.2.png"
+ hash: "4a60ab820ca66548384b2257b21de8ec"
}
Frame {
msec: 2896
- hash: "4a60ab820ca66548384b2257b21de8ec"
+ image: "mousearea-flickable.3.png"
}
Frame {
msec: 2912
@@ -970,11 +970,11 @@ VisualTest {
}
Frame {
msec: 3840
- image: "mousearea-flickable.3.png"
+ hash: "4a60ab820ca66548384b2257b21de8ec"
}
Frame {
msec: 3856
- hash: "4a60ab820ca66548384b2257b21de8ec"
+ image: "mousearea-flickable.4.png"
}
Frame {
msec: 3872
@@ -1202,7 +1202,7 @@ VisualTest {
}
Frame {
msec: 4576
- hash: "86b32befe0dada5bdce82a7dd14777ce"
+ hash: "d75a43305e2884759ca41d7b1cbadf52"
}
Mouse {
type: 5
@@ -1222,7 +1222,7 @@ VisualTest {
}
Frame {
msec: 4592
- hash: "7a5f69a1eecb5de0fc2295cd287eb449"
+ hash: "9f9f85d5f879b0e52ebc751d6668cfb8"
}
Mouse {
type: 5
@@ -1242,7 +1242,7 @@ VisualTest {
}
Frame {
msec: 4608
- hash: "144eeb7c2a32cedb6ebba063501c9176"
+ hash: "a569789b082296415321ba11c859abe5"
}
Mouse {
type: 5
@@ -1262,7 +1262,7 @@ VisualTest {
}
Frame {
msec: 4624
- hash: "11120d6de575ffa639b6abb3af4afef7"
+ hash: "7a5f69a1eecb5de0fc2295cd287eb449"
}
Mouse {
type: 5
@@ -1282,7 +1282,7 @@ VisualTest {
}
Frame {
msec: 4640
- hash: "ab4c936a81299adf080f3b14f7e6be49"
+ hash: "70e522f64236dfa4e1613ffc29b4b23e"
}
Mouse {
type: 5
@@ -1302,7 +1302,7 @@ VisualTest {
}
Frame {
msec: 4656
- hash: "6602009ffe3c0f3072640ebc8749b76f"
+ hash: "11120d6de575ffa639b6abb3af4afef7"
}
Mouse {
type: 5
@@ -1322,7 +1322,7 @@ VisualTest {
}
Frame {
msec: 4672
- hash: "8517007d5102af238935e93a3b38087f"
+ hash: "ab4c936a81299adf080f3b14f7e6be49"
}
Mouse {
type: 5
@@ -1342,7 +1342,7 @@ VisualTest {
}
Frame {
msec: 4688
- hash: "4e129ebba85d1f3717d09f71eb5a1a7d"
+ hash: "c29ab366ba3f11de6452949c11310b4a"
}
Mouse {
type: 5
@@ -1362,7 +1362,7 @@ VisualTest {
}
Frame {
msec: 4704
- hash: "82f54d7e254edcf499ea12a63118e8a7"
+ hash: "34ef0279e3731447f1df97784b47648a"
}
Mouse {
type: 5
@@ -1382,7 +1382,7 @@ VisualTest {
}
Frame {
msec: 4720
- hash: "572cb62d69ccb973ea18d3b0eaff571b"
+ hash: "84df34cd981e0465aaaae47881de6c3b"
}
Mouse {
type: 5
@@ -1402,7 +1402,7 @@ VisualTest {
}
Frame {
msec: 4736
- hash: "79650397b868019909b931a32a115823"
+ hash: "837deeb2a92648d830acf29e829ebb53"
}
Mouse {
type: 5
@@ -1422,7 +1422,7 @@ VisualTest {
}
Frame {
msec: 4752
- hash: "43e50f4d4d37373e26af0a5d3cb64c4c"
+ hash: "572cb62d69ccb973ea18d3b0eaff571b"
}
Mouse {
type: 5
@@ -1442,7 +1442,7 @@ VisualTest {
}
Frame {
msec: 4768
- hash: "a0f8eb8a796f67c368b0a479e8d14681"
+ hash: "3d75735eefbf95f37e2a8605b9167ba1"
}
Mouse {
type: 5
@@ -1462,7 +1462,7 @@ VisualTest {
}
Frame {
msec: 4784
- hash: "01bf03313a0229e810a24e2adbbe9775"
+ hash: "c37507a29e3a6d80446ad68f2d92f266"
}
Mouse {
type: 5
@@ -1474,7 +1474,7 @@ VisualTest {
}
Frame {
msec: 4800
- image: "mousearea-flickable.4.png"
+ hash: "b66571ae47bf129be88dc66785a81a7d"
}
Mouse {
type: 5
@@ -1486,7 +1486,7 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "aafb12a520eb443ee1348282f2c54e4a"
+ image: "mousearea-flickable.5.png"
}
Mouse {
type: 5
@@ -1506,7 +1506,7 @@ VisualTest {
}
Frame {
msec: 4832
- hash: "806d22bc3533c729cd10dc889c36902d"
+ hash: "363eca81f97f20f14e8d480f83d2bc7d"
}
Mouse {
type: 5
@@ -1518,7 +1518,7 @@ VisualTest {
}
Frame {
msec: 4848
- hash: "05b3013c9e42ed9ced7009d2e2999357"
+ hash: "72e75cfa62993593303b25cbff4af0e6"
}
Mouse {
type: 5
@@ -1538,7 +1538,7 @@ VisualTest {
}
Frame {
msec: 4864
- hash: "cb49adcd2c8afe27fd5926bd622added"
+ hash: "cc6619c7cd6e4e274df4729aad6cca46"
}
Mouse {
type: 5
@@ -1558,7 +1558,7 @@ VisualTest {
}
Frame {
msec: 4880
- hash: "d0b4215b43403c97d83250add6d2b6db"
+ hash: "0b16e524cd5253d07aa9b5855967fa71"
}
Mouse {
type: 5
@@ -1578,7 +1578,7 @@ VisualTest {
}
Frame {
msec: 4896
- hash: "ee0523fe6a33b59871ad3b311ca0cbeb"
+ hash: "091d1ad7aba4b662cba98214c98a4707"
}
Mouse {
type: 5
@@ -1598,7 +1598,7 @@ VisualTest {
}
Frame {
msec: 4912
- hash: "29ca97cc573d3a1fde65320b61678c60"
+ hash: "f334bfcc3af89bf1405762a215c54ea6"
}
Mouse {
type: 5
@@ -1610,7 +1610,7 @@ VisualTest {
}
Frame {
msec: 4928
- hash: "021bda841eaefa76ce5e1c97150af6f6"
+ hash: "7b41d651ad46341859d0188db341ae10"
}
Mouse {
type: 5
@@ -1630,7 +1630,7 @@ VisualTest {
}
Frame {
msec: 4944
- hash: "80edf52cc9e64a29f677bc2203220ba9"
+ hash: "95b57cd3dac3bce56674f2c4143f42d4"
}
Mouse {
type: 5
@@ -1642,7 +1642,7 @@ VisualTest {
}
Frame {
msec: 4960
- hash: "c09f4002ed9d41f62bb1aaff95723cce"
+ hash: "1709dda08ce7494ff6d082cc5d93f0d2"
}
Mouse {
type: 5
@@ -1662,7 +1662,7 @@ VisualTest {
}
Frame {
msec: 4976
- hash: "7bb17b13db811b02c86a24a0051336d9"
+ hash: "390105f21526e1f8fda15666631578a1"
}
Mouse {
type: 5
@@ -1682,7 +1682,7 @@ VisualTest {
}
Frame {
msec: 4992
- hash: "da5c33ee9e9e1d9aaa7d5efa83b8bf69"
+ hash: "ee40862a59f14667c89fa62f380c10fb"
}
Mouse {
type: 5
@@ -1694,7 +1694,7 @@ VisualTest {
}
Frame {
msec: 5008
- hash: "3ca9742356b6ff833fd287a95520174a"
+ hash: "6d6cec95a6a2445d88b015ff76af032e"
}
Mouse {
type: 5
@@ -1714,7 +1714,7 @@ VisualTest {
}
Frame {
msec: 5024
- hash: "d1372239a681d1fccc25257b4a02fb39"
+ hash: "e87bf82b6a7a928a27bffd9cb2dd7604"
}
Mouse {
type: 5
@@ -1734,7 +1734,7 @@ VisualTest {
}
Frame {
msec: 5040
- hash: "1f37473ab2fb0643e11e4a41a2ee4561"
+ hash: "9a9d1e0b1d7b9291480b3ec641f354ce"
}
Mouse {
type: 5
@@ -1754,7 +1754,7 @@ VisualTest {
}
Frame {
msec: 5056
- hash: "1533c6ff17e79a47a5d3510aa85bcf8a"
+ hash: "d1372239a681d1fccc25257b4a02fb39"
}
Mouse {
type: 5
@@ -1774,7 +1774,7 @@ VisualTest {
}
Frame {
msec: 5072
- hash: "4cad3c6caf8d3009f63923df897c4723"
+ hash: "1f37473ab2fb0643e11e4a41a2ee4561"
}
Mouse {
type: 5
@@ -1794,7 +1794,7 @@ VisualTest {
}
Frame {
msec: 5088
- hash: "b81183233961b34c2a3f21a249b0fbfb"
+ hash: "1533c6ff17e79a47a5d3510aa85bcf8a"
}
Mouse {
type: 5
@@ -1814,7 +1814,7 @@ VisualTest {
}
Frame {
msec: 5104
- hash: "9f876eb93a16c24843dd6a5acd303ab3"
+ hash: "c5980322acf00a04efbd5e1b92aa0e98"
}
Mouse {
type: 5
@@ -1834,7 +1834,7 @@ VisualTest {
}
Frame {
msec: 5120
- hash: "237dd62011f4253970b946b335e3fb71"
+ hash: "b81183233961b34c2a3f21a249b0fbfb"
}
Mouse {
type: 5
@@ -1846,7 +1846,7 @@ VisualTest {
}
Frame {
msec: 5136
- hash: "6206ad3e633b6b1b068304caa4efe48a"
+ hash: "2dc2def0c748ac94d33d90d4a3610136"
}
Mouse {
type: 5
@@ -1858,7 +1858,7 @@ VisualTest {
}
Frame {
msec: 5152
- hash: "1eb5f0e1aa014a38e6ca66ddfc2a076b"
+ hash: "9f876eb93a16c24843dd6a5acd303ab3"
}
Mouse {
type: 5
@@ -1870,7 +1870,7 @@ VisualTest {
}
Frame {
msec: 5168
- hash: "d9e953d132330f8a58a190d61aec6ec3"
+ hash: "9f876eb93a16c24843dd6a5acd303ab3"
}
Mouse {
type: 5
@@ -1890,7 +1890,7 @@ VisualTest {
}
Frame {
msec: 5184
- hash: "c1570ad4cb688ea51818e0a09e349daa"
+ hash: "237dd62011f4253970b946b335e3fb71"
}
Mouse {
type: 5
@@ -1902,11 +1902,11 @@ VisualTest {
}
Frame {
msec: 5200
- hash: "11853dcbad9d1d9a8b7d8a4e6fcca140"
+ hash: "6206ad3e633b6b1b068304caa4efe48a"
}
Frame {
msec: 5216
- hash: "11853dcbad9d1d9a8b7d8a4e6fcca140"
+ hash: "6206ad3e633b6b1b068304caa4efe48a"
}
Mouse {
type: 5
@@ -1918,7 +1918,7 @@ VisualTest {
}
Frame {
msec: 5232
- hash: "11853dcbad9d1d9a8b7d8a4e6fcca140"
+ hash: "1eb5f0e1aa014a38e6ca66ddfc2a076b"
}
Mouse {
type: 5
@@ -1930,7 +1930,7 @@ VisualTest {
}
Frame {
msec: 5248
- hash: "c6a81be579382f25ac583734897c2570"
+ hash: "1eb5f0e1aa014a38e6ca66ddfc2a076b"
}
Mouse {
type: 5
@@ -1942,11 +1942,11 @@ VisualTest {
}
Frame {
msec: 5264
- hash: "c6a81be579382f25ac583734897c2570"
+ hash: "d9e953d132330f8a58a190d61aec6ec3"
}
Frame {
msec: 5280
- hash: "c6a81be579382f25ac583734897c2570"
+ hash: "d9e953d132330f8a58a190d61aec6ec3"
}
Mouse {
type: 5
@@ -1958,7 +1958,7 @@ VisualTest {
}
Frame {
msec: 5296
- hash: "8cbeb925f039bde9846d37a5ec6cd3f9"
+ hash: "d9e953d132330f8a58a190d61aec6ec3"
}
Mouse {
type: 5
@@ -1970,19 +1970,19 @@ VisualTest {
}
Frame {
msec: 5312
- hash: "8cbeb925f039bde9846d37a5ec6cd3f9"
+ hash: "c1570ad4cb688ea51818e0a09e349daa"
}
Frame {
msec: 5328
- hash: "8cbeb925f039bde9846d37a5ec6cd3f9"
+ hash: "c1570ad4cb688ea51818e0a09e349daa"
}
Frame {
msec: 5344
- hash: "8cbeb925f039bde9846d37a5ec6cd3f9"
+ hash: "c1570ad4cb688ea51818e0a09e349daa"
}
Frame {
msec: 5360
- hash: "8cbeb925f039bde9846d37a5ec6cd3f9"
+ hash: "c1570ad4cb688ea51818e0a09e349daa"
}
Mouse {
type: 3
@@ -1994,51 +1994,51 @@ VisualTest {
}
Frame {
msec: 5376
- hash: "8cbeb925f039bde9846d37a5ec6cd3f9"
+ hash: "c1570ad4cb688ea51818e0a09e349daa"
}
Frame {
msec: 5392
- hash: "c6a81be579382f25ac583734897c2570"
+ hash: "d9e953d132330f8a58a190d61aec6ec3"
}
Frame {
msec: 5408
- hash: "11853dcbad9d1d9a8b7d8a4e6fcca140"
+ hash: "1eb5f0e1aa014a38e6ca66ddfc2a076b"
}
Frame {
msec: 5424
- hash: "1eb5f0e1aa014a38e6ca66ddfc2a076b"
+ hash: "9f876eb93a16c24843dd6a5acd303ab3"
}
Frame {
msec: 5440
- hash: "9f876eb93a16c24843dd6a5acd303ab3"
+ hash: "4cad3c6caf8d3009f63923df897c4723"
}
Frame {
msec: 5456
- hash: "1533c6ff17e79a47a5d3510aa85bcf8a"
+ hash: "79538d2f507fd6eea7ea1f990e90388a"
}
Frame {
msec: 5472
- hash: "9a9d1e0b1d7b9291480b3ec641f354ce"
+ hash: "e87bf82b6a7a928a27bffd9cb2dd7604"
}
Frame {
msec: 5488
- hash: "ee40862a59f14667c89fa62f380c10fb"
+ hash: "390105f21526e1f8fda15666631578a1"
}
Frame {
msec: 5504
- hash: "95b57cd3dac3bce56674f2c4143f42d4"
+ hash: "7b41d651ad46341859d0188db341ae10"
}
Frame {
msec: 5520
- hash: "52d45e8dde81fef5ee93bbd5a40d4851"
+ hash: "091d1ad7aba4b662cba98214c98a4707"
}
Frame {
msec: 5536
- hash: "05b3013c9e42ed9ced7009d2e2999357"
+ hash: "1978cda418856b542d7c5a155b74f09c"
}
Frame {
msec: 5552
- hash: "7d03030f5a672d87aeabefdf4f3a39a4"
+ hash: "01bf03313a0229e810a24e2adbbe9775"
}
Frame {
msec: 5568
@@ -2046,15 +2046,15 @@ VisualTest {
}
Frame {
msec: 5584
- hash: "82f54d7e254edcf499ea12a63118e8a7"
+ hash: "84df34cd981e0465aaaae47881de6c3b"
}
Frame {
msec: 5600
- hash: "8517007d5102af238935e93a3b38087f"
+ hash: "c29ab366ba3f11de6452949c11310b4a"
}
Frame {
msec: 5616
- hash: "dc272fc8fc98d822a154da1d495d4f7e"
+ hash: "ab4c936a81299adf080f3b14f7e6be49"
}
Frame {
msec: 5632
@@ -2066,7 +2066,7 @@ VisualTest {
}
Frame {
msec: 5664
- hash: "7a5f69a1eecb5de0fc2295cd287eb449"
+ hash: "86b32befe0dada5bdce82a7dd14777ce"
}
Frame {
msec: 5680
@@ -2090,11 +2090,11 @@ VisualTest {
}
Frame {
msec: 5760
- image: "mousearea-flickable.5.png"
+ hash: "d75a43305e2884759ca41d7b1cbadf52"
}
Frame {
msec: 5776
- hash: "d75a43305e2884759ca41d7b1cbadf52"
+ image: "mousearea-flickable.6.png"
}
Frame {
msec: 5792
@@ -2338,11 +2338,11 @@ VisualTest {
}
Frame {
msec: 6720
- image: "mousearea-flickable.6.png"
+ hash: "037386eb30a5e8d53a20a11258ee0f60"
}
Frame {
msec: 6736
- hash: "037386eb30a5e8d53a20a11258ee0f60"
+ image: "mousearea-flickable.7.png"
}
Frame {
msec: 6752
@@ -2578,11 +2578,11 @@ VisualTest {
}
Frame {
msec: 7680
- image: "mousearea-flickable.7.png"
+ hash: "037386eb30a5e8d53a20a11258ee0f60"
}
Frame {
msec: 7696
- hash: "037386eb30a5e8d53a20a11258ee0f60"
+ image: "mousearea-flickable.8.png"
}
Frame {
msec: 7712
@@ -2750,7 +2750,7 @@ VisualTest {
}
Frame {
msec: 8240
- hash: "9f9f85d5f879b0e52ebc751d6668cfb8"
+ hash: "cc1fd2f4c3be318052254a9b6be7a57b"
}
Mouse {
type: 5
@@ -2762,7 +2762,7 @@ VisualTest {
}
Frame {
msec: 8256
- hash: "70e522f64236dfa4e1613ffc29b4b23e"
+ hash: "a569789b082296415321ba11c859abe5"
}
Mouse {
type: 5
@@ -2782,7 +2782,7 @@ VisualTest {
}
Frame {
msec: 8272
- hash: "11120d6de575ffa639b6abb3af4afef7"
+ hash: "7a5f69a1eecb5de0fc2295cd287eb449"
}
Mouse {
type: 5
@@ -2802,7 +2802,7 @@ VisualTest {
}
Frame {
msec: 8288
- hash: "dc272fc8fc98d822a154da1d495d4f7e"
+ hash: "11120d6de575ffa639b6abb3af4afef7"
}
Mouse {
type: 5
@@ -2822,7 +2822,7 @@ VisualTest {
}
Frame {
msec: 8304
- hash: "4e129ebba85d1f3717d09f71eb5a1a7d"
+ hash: "c29ab366ba3f11de6452949c11310b4a"
}
Mouse {
type: 5
@@ -2834,7 +2834,7 @@ VisualTest {
}
Frame {
msec: 8320
- hash: "837deeb2a92648d830acf29e829ebb53"
+ hash: "4e129ebba85d1f3717d09f71eb5a1a7d"
}
Mouse {
type: 5
@@ -2846,7 +2846,7 @@ VisualTest {
}
Frame {
msec: 8336
- hash: "7d2606d432858288dac019e0002ff85a"
+ hash: "837deeb2a92648d830acf29e829ebb53"
}
Mouse {
type: 5
@@ -2866,7 +2866,7 @@ VisualTest {
}
Frame {
msec: 8352
- hash: "c37507a29e3a6d80446ad68f2d92f266"
+ hash: "79650397b868019909b931a32a115823"
}
Mouse {
type: 5
@@ -2878,7 +2878,7 @@ VisualTest {
}
Frame {
msec: 8368
- hash: "01bf03313a0229e810a24e2adbbe9775"
+ hash: "c37507a29e3a6d80446ad68f2d92f266"
}
Mouse {
type: 5
@@ -2890,7 +2890,7 @@ VisualTest {
}
Frame {
msec: 8384
- hash: "8ffbbed46737837e55383833b96d2624"
+ hash: "01bf03313a0229e810a24e2adbbe9775"
}
Mouse {
type: 5
@@ -2910,7 +2910,7 @@ VisualTest {
}
Frame {
msec: 8400
- hash: "6d49fc41fb6d74643c7613df7e417833"
+ hash: "8ffbbed46737837e55383833b96d2624"
}
Mouse {
type: 5
@@ -2922,7 +2922,7 @@ VisualTest {
}
Frame {
msec: 8416
- hash: "1978cda418856b542d7c5a155b74f09c"
+ hash: "6d49fc41fb6d74643c7613df7e417833"
}
Mouse {
type: 5
@@ -2942,7 +2942,7 @@ VisualTest {
}
Frame {
msec: 8432
- hash: "cc6619c7cd6e4e274df4729aad6cca46"
+ hash: "806d22bc3533c729cd10dc889c36902d"
}
Mouse {
type: 5
@@ -2962,7 +2962,7 @@ VisualTest {
}
Frame {
msec: 8448
- hash: "0b16e524cd5253d07aa9b5855967fa71"
+ hash: "cc6619c7cd6e4e274df4729aad6cca46"
}
Mouse {
type: 5
@@ -2982,7 +2982,7 @@ VisualTest {
}
Frame {
msec: 8464
- hash: "0121c18897c37481fddbac57db636a60"
+ hash: "929bf28dcb97e8c93dae5dbe23beecc8"
}
Mouse {
type: 5
@@ -3002,7 +3002,7 @@ VisualTest {
}
Frame {
msec: 8480
- hash: "091d1ad7aba4b662cba98214c98a4707"
+ hash: "0121c18897c37481fddbac57db636a60"
}
Mouse {
type: 5
@@ -3014,7 +3014,7 @@ VisualTest {
}
Frame {
msec: 8496
- hash: "f334bfcc3af89bf1405762a215c54ea6"
+ hash: "091d1ad7aba4b662cba98214c98a4707"
}
Mouse {
type: 5
@@ -3034,7 +3034,7 @@ VisualTest {
}
Frame {
msec: 8512
- hash: "66f71641c7a607152f140428ab9621d6"
+ hash: "ce673b66f695f5b002515a5416bbf913"
}
Mouse {
type: 5
@@ -3054,7 +3054,7 @@ VisualTest {
}
Frame {
msec: 8528
- hash: "7b41d651ad46341859d0188db341ae10"
+ hash: "66f71641c7a607152f140428ab9621d6"
}
Mouse {
type: 5
@@ -3066,7 +3066,7 @@ VisualTest {
}
Frame {
msec: 8544
- hash: "95b57cd3dac3bce56674f2c4143f42d4"
+ hash: "29ca97cc573d3a1fde65320b61678c60"
}
Mouse {
type: 5
@@ -3086,7 +3086,7 @@ VisualTest {
}
Frame {
msec: 8560
- hash: "80edf52cc9e64a29f677bc2203220ba9"
+ hash: "021bda841eaefa76ce5e1c97150af6f6"
}
Mouse {
type: 5
@@ -3106,7 +3106,7 @@ VisualTest {
}
Frame {
msec: 8576
- hash: "68c8c95edb8cce11320715266bd62628"
+ hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
}
Mouse {
type: 5
@@ -3126,7 +3126,7 @@ VisualTest {
}
Frame {
msec: 8592
- hash: "c09f4002ed9d41f62bb1aaff95723cce"
+ hash: "80edf52cc9e64a29f677bc2203220ba9"
}
Mouse {
type: 5
@@ -3138,7 +3138,7 @@ VisualTest {
}
Frame {
msec: 8608
- hash: "7bb17b13db811b02c86a24a0051336d9"
+ hash: "390105f21526e1f8fda15666631578a1"
}
Mouse {
type: 5
@@ -3158,7 +3158,7 @@ VisualTest {
}
Frame {
msec: 8624
- hash: "6d6cec95a6a2445d88b015ff76af032e"
+ hash: "ee40862a59f14667c89fa62f380c10fb"
}
Mouse {
type: 5
@@ -3178,7 +3178,7 @@ VisualTest {
}
Frame {
msec: 8640
- image: "mousearea-flickable.8.png"
+ hash: "524db6ce45674c777d72f9206415be2f"
}
Mouse {
type: 5
@@ -3190,7 +3190,7 @@ VisualTest {
}
Frame {
msec: 8656
- hash: "9a9d1e0b1d7b9291480b3ec641f354ce"
+ image: "mousearea-flickable.9.png"
}
Mouse {
type: 5
@@ -3210,7 +3210,7 @@ VisualTest {
}
Frame {
msec: 8672
- hash: "d1372239a681d1fccc25257b4a02fb39"
+ hash: "3ca9742356b6ff833fd287a95520174a"
}
Mouse {
type: 5
@@ -3230,7 +3230,7 @@ VisualTest {
}
Frame {
msec: 8688
- hash: "2010f6f0c34e59f505bbe1aab262b646"
+ hash: "d1372239a681d1fccc25257b4a02fb39"
}
Mouse {
type: 5
@@ -3250,7 +3250,7 @@ VisualTest {
}
Frame {
msec: 8704
- hash: "2dc2def0c748ac94d33d90d4a3610136"
+ hash: "c5980322acf00a04efbd5e1b92aa0e98"
}
Mouse {
type: 5
@@ -3270,7 +3270,7 @@ VisualTest {
}
Frame {
msec: 8720
- hash: "1eb5f0e1aa014a38e6ca66ddfc2a076b"
+ hash: "9f876eb93a16c24843dd6a5acd303ab3"
}
Mouse {
type: 5
@@ -3290,7 +3290,7 @@ VisualTest {
}
Frame {
msec: 8736
- hash: "c1570ad4cb688ea51818e0a09e349daa"
+ hash: "6206ad3e633b6b1b068304caa4efe48a"
}
Mouse {
type: 5
@@ -3302,7 +3302,7 @@ VisualTest {
}
Frame {
msec: 8752
- hash: "c6a81be579382f25ac583734897c2570"
+ hash: "d9e953d132330f8a58a190d61aec6ec3"
}
Mouse {
type: 5
@@ -3314,7 +3314,7 @@ VisualTest {
}
Frame {
msec: 8768
- hash: "8cbeb925f039bde9846d37a5ec6cd3f9"
+ hash: "c1570ad4cb688ea51818e0a09e349daa"
}
Mouse {
type: 5
@@ -3326,7 +3326,7 @@ VisualTest {
}
Frame {
msec: 8784
- hash: "b34a796f25ad62f952101b296f9c2bac"
+ hash: "11853dcbad9d1d9a8b7d8a4e6fcca140"
}
Mouse {
type: 5
@@ -3338,51 +3338,51 @@ VisualTest {
}
Frame {
msec: 8800
- hash: "a0814b5ba881e5da8a1ecae8d714b4ce"
+ hash: "c6a81be579382f25ac583734897c2570"
}
Frame {
msec: 8816
- hash: "a0814b5ba881e5da8a1ecae8d714b4ce"
+ hash: "c6a81be579382f25ac583734897c2570"
}
Frame {
msec: 8832
- hash: "a0814b5ba881e5da8a1ecae8d714b4ce"
+ hash: "c6a81be579382f25ac583734897c2570"
}
Frame {
msec: 8848
- hash: "a0814b5ba881e5da8a1ecae8d714b4ce"
+ hash: "c6a81be579382f25ac583734897c2570"
}
Frame {
msec: 8864
- hash: "a0814b5ba881e5da8a1ecae8d714b4ce"
+ hash: "c6a81be579382f25ac583734897c2570"
}
Frame {
msec: 8880
- hash: "a0814b5ba881e5da8a1ecae8d714b4ce"
+ hash: "c6a81be579382f25ac583734897c2570"
}
Frame {
msec: 8896
- hash: "a0814b5ba881e5da8a1ecae8d714b4ce"
+ hash: "c6a81be579382f25ac583734897c2570"
}
Frame {
msec: 8912
- hash: "a0814b5ba881e5da8a1ecae8d714b4ce"
+ hash: "c6a81be579382f25ac583734897c2570"
}
Frame {
msec: 8928
- hash: "a0814b5ba881e5da8a1ecae8d714b4ce"
+ hash: "c6a81be579382f25ac583734897c2570"
}
Frame {
msec: 8944
- hash: "a0814b5ba881e5da8a1ecae8d714b4ce"
+ hash: "c6a81be579382f25ac583734897c2570"
}
Frame {
msec: 8960
- hash: "a0814b5ba881e5da8a1ecae8d714b4ce"
+ hash: "c6a81be579382f25ac583734897c2570"
}
Frame {
msec: 8976
- hash: "a0814b5ba881e5da8a1ecae8d714b4ce"
+ hash: "c6a81be579382f25ac583734897c2570"
}
Mouse {
type: 3
@@ -3394,55 +3394,55 @@ VisualTest {
}
Frame {
msec: 8992
- hash: "a0814b5ba881e5da8a1ecae8d714b4ce"
+ hash: "c6a81be579382f25ac583734897c2570"
}
Frame {
msec: 9008
- hash: "b34a796f25ad62f952101b296f9c2bac"
+ hash: "11853dcbad9d1d9a8b7d8a4e6fcca140"
}
Frame {
msec: 9024
- hash: "8cbeb925f039bde9846d37a5ec6cd3f9"
+ hash: "c1570ad4cb688ea51818e0a09e349daa"
}
Frame {
msec: 9040
- hash: "c1570ad4cb688ea51818e0a09e349daa"
+ hash: "6206ad3e633b6b1b068304caa4efe48a"
}
Frame {
msec: 9056
- hash: "237dd62011f4253970b946b335e3fb71"
+ hash: "2dc2def0c748ac94d33d90d4a3610136"
}
Frame {
msec: 9072
- hash: "c5980322acf00a04efbd5e1b92aa0e98"
+ hash: "2010f6f0c34e59f505bbe1aab262b646"
}
Frame {
msec: 9088
- hash: "d1372239a681d1fccc25257b4a02fb39"
+ hash: "3ca9742356b6ff833fd287a95520174a"
}
Frame {
msec: 9104
- hash: "524db6ce45674c777d72f9206415be2f"
+ hash: "c09f4002ed9d41f62bb1aaff95723cce"
}
Frame {
msec: 9120
- hash: "021bda841eaefa76ce5e1c97150af6f6"
+ hash: "95b57cd3dac3bce56674f2c4143f42d4"
}
Frame {
msec: 9136
- hash: "ce673b66f695f5b002515a5416bbf913"
+ hash: "52d45e8dde81fef5ee93bbd5a40d4851"
}
Frame {
msec: 9152
- hash: "cc6619c7cd6e4e274df4729aad6cca46"
+ hash: "1978cda418856b542d7c5a155b74f09c"
}
Frame {
msec: 9168
- hash: "7fb0ed99b7d751d1f335afd7c0de2f2c"
+ hash: "7d03030f5a672d87aeabefdf4f3a39a4"
}
Frame {
msec: 9184
- hash: "3d75735eefbf95f37e2a8605b9167ba1"
+ hash: "79650397b868019909b931a32a115823"
}
Frame {
msec: 9200
@@ -3454,7 +3454,7 @@ VisualTest {
}
Frame {
msec: 9232
- hash: "dc272fc8fc98d822a154da1d495d4f7e"
+ hash: "ab4c936a81299adf080f3b14f7e6be49"
}
Frame {
msec: 9248
@@ -3466,7 +3466,7 @@ VisualTest {
}
Frame {
msec: 9280
- hash: "7a5f69a1eecb5de0fc2295cd287eb449"
+ hash: "86b32befe0dada5bdce82a7dd14777ce"
}
Frame {
msec: 9296
@@ -3546,11 +3546,11 @@ VisualTest {
}
Frame {
msec: 9600
- image: "mousearea-flickable.9.png"
+ hash: "cc1fd2f4c3be318052254a9b6be7a57b"
}
Frame {
msec: 9616
- hash: "cc1fd2f4c3be318052254a9b6be7a57b"
+ image: "mousearea-flickable.10.png"
}
Frame {
msec: 9632
@@ -3794,11 +3794,11 @@ VisualTest {
}
Frame {
msec: 10560
- image: "mousearea-flickable.10.png"
+ hash: "90cdfe8920f115fd55cde6fdbd95e867"
}
Frame {
msec: 10576
- hash: "90cdfe8920f115fd55cde6fdbd95e867"
+ image: "mousearea-flickable.11.png"
}
Frame {
msec: 10592
@@ -4022,7 +4022,7 @@ VisualTest {
}
Frame {
msec: 11248
- hash: "a569789b082296415321ba11c859abe5"
+ hash: "d75a43305e2884759ca41d7b1cbadf52"
}
Mouse {
type: 5
@@ -4042,7 +4042,7 @@ VisualTest {
}
Frame {
msec: 11264
- hash: "86b32befe0dada5bdce82a7dd14777ce"
+ hash: "43fc85bb3b1501f5e12f1fedaaa14c64"
}
Mouse {
type: 5
@@ -4062,7 +4062,7 @@ VisualTest {
}
Frame {
msec: 11280
- hash: "70e522f64236dfa4e1613ffc29b4b23e"
+ hash: "a569789b082296415321ba11c859abe5"
}
Mouse {
type: 5
@@ -4074,7 +4074,7 @@ VisualTest {
}
Frame {
msec: 11296
- hash: "11120d6de575ffa639b6abb3af4afef7"
+ hash: "7a5f69a1eecb5de0fc2295cd287eb449"
}
Mouse {
type: 5
@@ -4094,7 +4094,7 @@ VisualTest {
}
Frame {
msec: 11312
- hash: "8e05207e0d0d9d15a61a0d21d985a83a"
+ hash: "70e522f64236dfa4e1613ffc29b4b23e"
}
Mouse {
type: 5
@@ -4114,7 +4114,7 @@ VisualTest {
}
Frame {
msec: 11328
- hash: "6602009ffe3c0f3072640ebc8749b76f"
+ hash: "8e05207e0d0d9d15a61a0d21d985a83a"
}
Mouse {
type: 5
@@ -4134,7 +4134,7 @@ VisualTest {
}
Frame {
msec: 11344
- hash: "8517007d5102af238935e93a3b38087f"
+ hash: "dc272fc8fc98d822a154da1d495d4f7e"
}
Mouse {
type: 5
@@ -4154,7 +4154,7 @@ VisualTest {
}
Frame {
msec: 11360
- hash: "82f54d7e254edcf499ea12a63118e8a7"
+ hash: "34ef0279e3731447f1df97784b47648a"
}
Mouse {
type: 5
@@ -4174,7 +4174,7 @@ VisualTest {
}
Frame {
msec: 11376
- hash: "572cb62d69ccb973ea18d3b0eaff571b"
+ hash: "82f54d7e254edcf499ea12a63118e8a7"
}
Mouse {
type: 5
@@ -4194,7 +4194,7 @@ VisualTest {
}
Frame {
msec: 11392
- hash: "79650397b868019909b931a32a115823"
+ hash: "6ef4abc294d928381346e8ff9b012475"
}
Mouse {
type: 5
@@ -4214,7 +4214,7 @@ VisualTest {
}
Frame {
msec: 11408
- hash: "43e50f4d4d37373e26af0a5d3cb64c4c"
+ hash: "7d2606d432858288dac019e0002ff85a"
}
Mouse {
type: 5
@@ -4234,7 +4234,7 @@ VisualTest {
}
Frame {
msec: 11424
- hash: "a0f8eb8a796f67c368b0a479e8d14681"
+ hash: "3d75735eefbf95f37e2a8605b9167ba1"
}
Mouse {
type: 5
@@ -4254,7 +4254,7 @@ VisualTest {
}
Frame {
msec: 11440
- hash: "01bf03313a0229e810a24e2adbbe9775"
+ hash: "c37507a29e3a6d80446ad68f2d92f266"
}
Mouse {
type: 5
@@ -4274,7 +4274,7 @@ VisualTest {
}
Frame {
msec: 11456
- hash: "7fb0ed99b7d751d1f335afd7c0de2f2c"
+ hash: "b66571ae47bf129be88dc66785a81a7d"
}
Mouse {
type: 5
@@ -4294,7 +4294,7 @@ VisualTest {
}
Frame {
msec: 11472
- hash: "363eca81f97f20f14e8d480f83d2bc7d"
+ hash: "7d03030f5a672d87aeabefdf4f3a39a4"
}
Mouse {
type: 5
@@ -4306,7 +4306,7 @@ VisualTest {
}
Frame {
msec: 11488
- hash: "6d49fc41fb6d74643c7613df7e417833"
+ hash: "8ffbbed46737837e55383833b96d2624"
}
Mouse {
type: 5
@@ -4326,7 +4326,7 @@ VisualTest {
}
Frame {
msec: 11504
- hash: "806d22bc3533c729cd10dc889c36902d"
+ hash: "aafb12a520eb443ee1348282f2c54e4a"
}
Mouse {
type: 5
@@ -4346,7 +4346,7 @@ VisualTest {
}
Frame {
msec: 11520
- image: "mousearea-flickable.11.png"
+ hash: "72e75cfa62993593303b25cbff4af0e6"
}
Mouse {
type: 5
@@ -4366,7 +4366,7 @@ VisualTest {
}
Frame {
msec: 11536
- hash: "929bf28dcb97e8c93dae5dbe23beecc8"
+ image: "mousearea-flickable.12.png"
}
Mouse {
type: 5
@@ -4386,7 +4386,7 @@ VisualTest {
}
Frame {
msec: 11552
- hash: "cb49adcd2c8afe27fd5926bd622added"
+ hash: "1451addb43319318c794333cd1cec3fd"
}
Mouse {
type: 5
@@ -4406,7 +4406,7 @@ VisualTest {
}
Frame {
msec: 11568
- hash: "0121c18897c37481fddbac57db636a60"
+ hash: "929bf28dcb97e8c93dae5dbe23beecc8"
}
Mouse {
type: 5
@@ -4418,7 +4418,7 @@ VisualTest {
}
Frame {
msec: 11584
- hash: "c0a569ee064d844835dddab11eadcd33"
+ hash: "cb49adcd2c8afe27fd5926bd622added"
}
Mouse {
type: 5
@@ -4438,7 +4438,7 @@ VisualTest {
}
Frame {
msec: 11600
- hash: "52d45e8dde81fef5ee93bbd5a40d4851"
+ hash: "d0b4215b43403c97d83250add6d2b6db"
}
Mouse {
type: 5
@@ -4458,7 +4458,7 @@ VisualTest {
}
Frame {
msec: 11616
- hash: "ce673b66f695f5b002515a5416bbf913"
+ hash: "c0a569ee064d844835dddab11eadcd33"
}
Mouse {
type: 5
@@ -4470,7 +4470,7 @@ VisualTest {
}
Frame {
msec: 11632
- hash: "f334bfcc3af89bf1405762a215c54ea6"
+ hash: "091d1ad7aba4b662cba98214c98a4707"
}
Mouse {
type: 5
@@ -4490,7 +4490,7 @@ VisualTest {
}
Frame {
msec: 11648
- hash: "ee0523fe6a33b59871ad3b311ca0cbeb"
+ hash: "52d45e8dde81fef5ee93bbd5a40d4851"
}
Mouse {
type: 5
@@ -4502,11 +4502,11 @@ VisualTest {
}
Frame {
msec: 11664
- hash: "66f71641c7a607152f140428ab9621d6"
+ hash: "ce673b66f695f5b002515a5416bbf913"
}
Frame {
msec: 11680
- hash: "66f71641c7a607152f140428ab9621d6"
+ hash: "ce673b66f695f5b002515a5416bbf913"
}
Mouse {
type: 5
@@ -4518,7 +4518,7 @@ VisualTest {
}
Frame {
msec: 11696
- hash: "66f71641c7a607152f140428ab9621d6"
+ hash: "ce673b66f695f5b002515a5416bbf913"
}
Mouse {
type: 5
@@ -4530,7 +4530,7 @@ VisualTest {
}
Frame {
msec: 11712
- hash: "ddd3d8cb82e238358cdb16c1df7d27b7"
+ hash: "f334bfcc3af89bf1405762a215c54ea6"
}
Mouse {
type: 5
@@ -4542,7 +4542,7 @@ VisualTest {
}
Frame {
msec: 11728
- hash: "ddd3d8cb82e238358cdb16c1df7d27b7"
+ hash: "f334bfcc3af89bf1405762a215c54ea6"
}
Mouse {
type: 5
@@ -4554,7 +4554,7 @@ VisualTest {
}
Frame {
msec: 11744
- hash: "29ca97cc573d3a1fde65320b61678c60"
+ hash: "ee0523fe6a33b59871ad3b311ca0cbeb"
}
Mouse {
type: 5
@@ -4566,7 +4566,7 @@ VisualTest {
}
Frame {
msec: 11760
- hash: "29ca97cc573d3a1fde65320b61678c60"
+ hash: "ee0523fe6a33b59871ad3b311ca0cbeb"
}
Mouse {
type: 5
@@ -4578,7 +4578,7 @@ VisualTest {
}
Frame {
msec: 11776
- hash: "7b41d651ad46341859d0188db341ae10"
+ hash: "66f71641c7a607152f140428ab9621d6"
}
Mouse {
type: 5
@@ -4590,11 +4590,11 @@ VisualTest {
}
Frame {
msec: 11792
- hash: "6b236864b7d95bf9f76b8afd6ba78613"
+ hash: "ddd3d8cb82e238358cdb16c1df7d27b7"
}
Frame {
msec: 11808
- hash: "6b236864b7d95bf9f76b8afd6ba78613"
+ hash: "ddd3d8cb82e238358cdb16c1df7d27b7"
}
Mouse {
type: 5
@@ -4606,7 +4606,7 @@ VisualTest {
}
Frame {
msec: 11824
- hash: "95b57cd3dac3bce56674f2c4143f42d4"
+ hash: "29ca97cc573d3a1fde65320b61678c60"
}
Mouse {
type: 5
@@ -4618,7 +4618,7 @@ VisualTest {
}
Frame {
msec: 11840
- hash: "95b57cd3dac3bce56674f2c4143f42d4"
+ hash: "29ca97cc573d3a1fde65320b61678c60"
}
Mouse {
type: 5
@@ -4630,7 +4630,7 @@ VisualTest {
}
Frame {
msec: 11856
- hash: "021bda841eaefa76ce5e1c97150af6f6"
+ hash: "7b41d651ad46341859d0188db341ae10"
}
Mouse {
type: 5
@@ -4642,11 +4642,11 @@ VisualTest {
}
Frame {
msec: 11872
- hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
+ hash: "6b236864b7d95bf9f76b8afd6ba78613"
}
Frame {
msec: 11888
- hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
+ hash: "6b236864b7d95bf9f76b8afd6ba78613"
}
Mouse {
type: 5
@@ -4658,11 +4658,11 @@ VisualTest {
}
Frame {
msec: 11904
- hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
+ hash: "6b236864b7d95bf9f76b8afd6ba78613"
}
Frame {
msec: 11920
- hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
+ hash: "6b236864b7d95bf9f76b8afd6ba78613"
}
Mouse {
type: 5
@@ -4674,11 +4674,11 @@ VisualTest {
}
Frame {
msec: 11936
- hash: "1709dda08ce7494ff6d082cc5d93f0d2"
+ hash: "95b57cd3dac3bce56674f2c4143f42d4"
}
Frame {
msec: 11952
- hash: "1709dda08ce7494ff6d082cc5d93f0d2"
+ hash: "95b57cd3dac3bce56674f2c4143f42d4"
}
Mouse {
type: 5
@@ -4690,11 +4690,11 @@ VisualTest {
}
Frame {
msec: 11968
- hash: "1709dda08ce7494ff6d082cc5d93f0d2"
+ hash: "95b57cd3dac3bce56674f2c4143f42d4"
}
Frame {
msec: 11984
- hash: "1709dda08ce7494ff6d082cc5d93f0d2"
+ hash: "95b57cd3dac3bce56674f2c4143f42d4"
}
Mouse {
type: 5
@@ -4706,7 +4706,7 @@ VisualTest {
}
Frame {
msec: 12000
- hash: "80edf52cc9e64a29f677bc2203220ba9"
+ hash: "021bda841eaefa76ce5e1c97150af6f6"
}
Mouse {
type: 5
@@ -4718,11 +4718,11 @@ VisualTest {
}
Frame {
msec: 12016
- hash: "80edf52cc9e64a29f677bc2203220ba9"
+ hash: "021bda841eaefa76ce5e1c97150af6f6"
}
Frame {
msec: 12032
- hash: "80edf52cc9e64a29f677bc2203220ba9"
+ hash: "021bda841eaefa76ce5e1c97150af6f6"
}
Mouse {
type: 5
@@ -4734,23 +4734,23 @@ VisualTest {
}
Frame {
msec: 12048
- hash: "68c8c95edb8cce11320715266bd62628"
+ hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
}
Frame {
msec: 12064
- hash: "68c8c95edb8cce11320715266bd62628"
+ hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
}
Frame {
msec: 12080
- hash: "68c8c95edb8cce11320715266bd62628"
+ hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
}
Frame {
msec: 12096
- hash: "68c8c95edb8cce11320715266bd62628"
+ hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
}
Frame {
msec: 12112
- hash: "68c8c95edb8cce11320715266bd62628"
+ hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
}
Mouse {
type: 5
@@ -4762,23 +4762,23 @@ VisualTest {
}
Frame {
msec: 12128
- hash: "68c8c95edb8cce11320715266bd62628"
+ hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
}
Frame {
msec: 12144
- hash: "68c8c95edb8cce11320715266bd62628"
+ hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
}
Frame {
msec: 12160
- hash: "68c8c95edb8cce11320715266bd62628"
+ hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
}
Frame {
msec: 12176
- hash: "68c8c95edb8cce11320715266bd62628"
+ hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
}
Frame {
msec: 12192
- hash: "68c8c95edb8cce11320715266bd62628"
+ hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
}
Mouse {
type: 3
@@ -4790,59 +4790,59 @@ VisualTest {
}
Frame {
msec: 12208
- hash: "68c8c95edb8cce11320715266bd62628"
+ hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
}
Frame {
msec: 12224
- hash: "68c8c95edb8cce11320715266bd62628"
+ hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
}
Frame {
msec: 12240
- hash: "80edf52cc9e64a29f677bc2203220ba9"
+ hash: "021bda841eaefa76ce5e1c97150af6f6"
}
Frame {
msec: 12256
- hash: "b1ea82b880a2fc35bf1ed117d8ab21b0"
+ hash: "6b236864b7d95bf9f76b8afd6ba78613"
}
Frame {
msec: 12272
- hash: "6b236864b7d95bf9f76b8afd6ba78613"
+ hash: "ddd3d8cb82e238358cdb16c1df7d27b7"
}
Frame {
msec: 12288
- hash: "ddd3d8cb82e238358cdb16c1df7d27b7"
+ hash: "f334bfcc3af89bf1405762a215c54ea6"
}
Frame {
msec: 12304
- hash: "ce673b66f695f5b002515a5416bbf913"
+ hash: "091d1ad7aba4b662cba98214c98a4707"
}
Frame {
msec: 12320
- hash: "0121c18897c37481fddbac57db636a60"
+ hash: "0b16e524cd5253d07aa9b5855967fa71"
}
Frame {
msec: 12336
- hash: "cc6619c7cd6e4e274df4729aad6cca46"
+ hash: "1978cda418856b542d7c5a155b74f09c"
}
Frame {
msec: 12352
- hash: "aafb12a520eb443ee1348282f2c54e4a"
+ hash: "8ffbbed46737837e55383833b96d2624"
}
Frame {
msec: 12368
- hash: "c37507a29e3a6d80446ad68f2d92f266"
+ hash: "43e50f4d4d37373e26af0a5d3cb64c4c"
}
Frame {
msec: 12384
- hash: "6ef4abc294d928381346e8ff9b012475"
+ hash: "837deeb2a92648d830acf29e829ebb53"
}
Frame {
msec: 12400
- hash: "4e129ebba85d1f3717d09f71eb5a1a7d"
+ hash: "34ef0279e3731447f1df97784b47648a"
}
Frame {
msec: 12416
- hash: "6602009ffe3c0f3072640ebc8749b76f"
+ hash: "dc272fc8fc98d822a154da1d495d4f7e"
}
Frame {
msec: 12432
@@ -4858,11 +4858,11 @@ VisualTest {
}
Frame {
msec: 12480
- image: "mousearea-flickable.12.png"
+ hash: "86b32befe0dada5bdce82a7dd14777ce"
}
Frame {
msec: 12496
- hash: "a569789b082296415321ba11c859abe5"
+ image: "mousearea-flickable.13.png"
}
Frame {
msec: 12512
@@ -4894,7 +4894,7 @@ VisualTest {
}
Frame {
msec: 12624
- hash: "d75a43305e2884759ca41d7b1cbadf52"
+ hash: "cc1fd2f4c3be318052254a9b6be7a57b"
}
Frame {
msec: 12640
@@ -5083,7 +5083,7 @@ VisualTest {
Key {
type: 6
key: 16777251
- modifiers: 134217728
+ modifiers: 0
text: ""
autorep: false
count: 1
@@ -5106,11 +5106,11 @@ VisualTest {
}
Frame {
msec: 13440
- image: "mousearea-flickable.13.png"
+ hash: "cc1fd2f4c3be318052254a9b6be7a57b"
}
Frame {
msec: 13456
- hash: "cc1fd2f4c3be318052254a9b6be7a57b"
+ image: "mousearea-flickable.14.png"
}
Frame {
msec: 13472
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.0.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.0.png
new file mode 100644
index 0000000000..e2e90d2b85
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.1.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.1.png
new file mode 100644
index 0000000000..e2e90d2b85
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.10.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.10.png
new file mode 100644
index 0000000000..93cf54c7bf
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.10.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.11.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.11.png
new file mode 100644
index 0000000000..93cf54c7bf
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.11.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.12.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.12.png
new file mode 100644
index 0000000000..93cf54c7bf
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.12.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.13.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.13.png
new file mode 100644
index 0000000000..93cf54c7bf
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.13.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.14.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.14.png
new file mode 100644
index 0000000000..93cf54c7bf
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.14.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.15.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.15.png
new file mode 100644
index 0000000000..93cf54c7bf
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.15.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.2.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.2.png
new file mode 100644
index 0000000000..25facec9df
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.3.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.3.png
new file mode 100644
index 0000000000..25facec9df
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.4.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.4.png
new file mode 100644
index 0000000000..25facec9df
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.5.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.5.png
new file mode 100644
index 0000000000..630b14aa24
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.6.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.6.png
new file mode 100644
index 0000000000..630b14aa24
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.7.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.7.png
new file mode 100644
index 0000000000..630b14aa24
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.8.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.8.png
new file mode 100644
index 0000000000..630b14aa24
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.9.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.9.png
new file mode 100644
index 0000000000..93cf54c7bf
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.qml
index 433fd82242..2daeebcc5f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/mousearea-visual.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ image: "mousearea-visual.0.png"
}
Frame {
msec: 32
@@ -242,11 +242,11 @@ VisualTest {
}
Frame {
msec: 960
- image: "mouseregion.0.png"
+ hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
}
Frame {
msec: 976
- hash: "1121bb51fc2d4c5c7ef3ae2c44794b49"
+ image: "mousearea-visual.1.png"
}
Frame {
msec: 992
@@ -634,7 +634,7 @@ VisualTest {
}
Frame {
msec: 1920
- image: "mouseregion.1.png"
+ hash: "73f1639b9e2164c7b974042934c0d151"
}
Mouse {
type: 5
@@ -654,7 +654,7 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "73f1639b9e2164c7b974042934c0d151"
+ image: "mousearea-visual.2.png"
}
Mouse {
type: 5
@@ -1002,11 +1002,11 @@ VisualTest {
}
Frame {
msec: 2880
- image: "mouseregion.2.png"
+ hash: "73f1639b9e2164c7b974042934c0d151"
}
Frame {
msec: 2896
- hash: "73f1639b9e2164c7b974042934c0d151"
+ image: "mousearea-visual.3.png"
}
Mouse {
type: 5
@@ -1386,11 +1386,11 @@ VisualTest {
}
Frame {
msec: 3840
- image: "mouseregion.3.png"
+ hash: "73f1639b9e2164c7b974042934c0d151"
}
Frame {
msec: 3856
- hash: "73f1639b9e2164c7b974042934c0d151"
+ image: "mousearea-visual.4.png"
}
Frame {
msec: 3872
@@ -1698,7 +1698,7 @@ VisualTest {
}
Frame {
msec: 4800
- image: "mouseregion.4.png"
+ hash: "12edb0902e4d480c9052b00edc1a0a42"
}
Mouse {
type: 5
@@ -1718,7 +1718,7 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "12edb0902e4d480c9052b00edc1a0a42"
+ image: "mousearea-visual.5.png"
}
Mouse {
type: 5
@@ -2202,11 +2202,11 @@ VisualTest {
}
Frame {
msec: 5760
- image: "mouseregion.5.png"
+ hash: "12edb0902e4d480c9052b00edc1a0a42"
}
Frame {
msec: 5776
- hash: "12edb0902e4d480c9052b00edc1a0a42"
+ image: "mousearea-visual.6.png"
}
Frame {
msec: 5792
@@ -2474,11 +2474,11 @@ VisualTest {
}
Frame {
msec: 6720
- image: "mouseregion.6.png"
+ hash: "12edb0902e4d480c9052b00edc1a0a42"
}
Frame {
msec: 6736
- hash: "12edb0902e4d480c9052b00edc1a0a42"
+ image: "mousearea-visual.7.png"
}
Mouse {
type: 4
@@ -2738,11 +2738,11 @@ VisualTest {
}
Frame {
msec: 7680
- image: "mouseregion.7.png"
+ hash: "12edb0902e4d480c9052b00edc1a0a42"
}
Frame {
msec: 7696
- hash: "12edb0902e4d480c9052b00edc1a0a42"
+ image: "mousearea-visual.8.png"
}
Frame {
msec: 7712
@@ -3082,7 +3082,7 @@ VisualTest {
}
Frame {
msec: 8640
- image: "mouseregion.8.png"
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
}
Mouse {
type: 5
@@ -3102,7 +3102,7 @@ VisualTest {
}
Frame {
msec: 8656
- hash: "194ebac4ae7d95bf427f8161885a13e1"
+ image: "mousearea-visual.9.png"
}
Mouse {
type: 5
@@ -3538,7 +3538,7 @@ VisualTest {
}
Frame {
msec: 9600
- image: "mouseregion.9.png"
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
}
Mouse {
type: 5
@@ -3550,7 +3550,7 @@ VisualTest {
}
Frame {
msec: 9616
- hash: "194ebac4ae7d95bf427f8161885a13e1"
+ image: "mousearea-visual.10.png"
}
Mouse {
type: 5
@@ -4418,7 +4418,7 @@ VisualTest {
}
Frame {
msec: 10560
- image: "mouseregion.10.png"
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
}
Mouse {
type: 5
@@ -4438,7 +4438,7 @@ VisualTest {
}
Frame {
msec: 10576
- hash: "194ebac4ae7d95bf427f8161885a13e1"
+ image: "mousearea-visual.11.png"
}
Frame {
msec: 10592
@@ -4690,11 +4690,11 @@ VisualTest {
}
Frame {
msec: 11520
- image: "mouseregion.11.png"
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
}
Frame {
msec: 11536
- hash: "194ebac4ae7d95bf427f8161885a13e1"
+ image: "mousearea-visual.12.png"
}
Frame {
msec: 11552
@@ -4978,11 +4978,11 @@ VisualTest {
}
Frame {
msec: 12480
- image: "mouseregion.12.png"
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
}
Frame {
msec: 12496
- hash: "194ebac4ae7d95bf427f8161885a13e1"
+ image: "mousearea-visual.13.png"
}
Frame {
msec: 12512
@@ -5314,11 +5314,11 @@ VisualTest {
}
Frame {
msec: 13440
- image: "mouseregion.13.png"
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
}
Frame {
msec: 13456
- hash: "194ebac4ae7d95bf427f8161885a13e1"
+ image: "mousearea-visual.14.png"
}
Frame {
msec: 13472
@@ -5730,11 +5730,11 @@ VisualTest {
}
Frame {
msec: 14400
- image: "mouseregion.14.png"
+ hash: "194ebac4ae7d95bf427f8161885a13e1"
}
Frame {
msec: 14416
- hash: "194ebac4ae7d95bf427f8161885a13e1"
+ image: "mousearea-visual.15.png"
}
Frame {
msec: 14432
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.0.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.0.png
new file mode 100644
index 0000000000..793fb0f974
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.1.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.1.png
new file mode 100644
index 0000000000..5935b4539a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.2.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.2.png
new file mode 100644
index 0000000000..a20526640d
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.3.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.3.png
new file mode 100644
index 0000000000..3d81ff25ee
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.4.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.4.png
new file mode 100644
index 0000000000..ee2076e137
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.5.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.5.png
new file mode 100644
index 0000000000..9017124d7f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.6.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.6.png
new file mode 100644
index 0000000000..216dd7e93c
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.7.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.7.png
new file mode 100644
index 0000000000..27e8480bd9
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.8.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.8.png
new file mode 100644
index 0000000000..6b911c5973
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.9.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.9.png
new file mode 100644
index 0000000000..01858a5578
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.qml
new file mode 100644
index 0000000000..cec1558abd
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.qml
@@ -0,0 +1,5039 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "nested.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 48
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 64
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 80
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 96
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 112
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 128
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 144
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 160
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 176
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 192
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 208
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 224
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 240
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 256
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 272
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 288
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 304
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 320
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 336
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 352
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 368
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 384
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 400
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 416
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 432
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 448
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 464
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 480
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 496
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 512
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 528
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 544
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 560
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 576
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 592
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 608
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 624
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 640
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 656
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 672
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 688
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 704
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 720
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 736
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 752
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 768
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 784
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 800
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 816
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 832
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 848
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Frame {
+ msec: 864
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 25; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 880
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 26; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 896
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 27; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 912
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 28; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 29; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 928
+ hash: "2400cadaaa467cbfb0c7d2ace8137179"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 30; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 33; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 944
+ hash: "f5aa6257fd80c1e383bc2db84e41c354"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 35; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 40; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 960
+ hash: "e96076794d3efc62a8fe2d2e543e97c7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 42; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 976
+ image: "nested.1.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 58; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 992
+ hash: "ab955f6c6b210b66b27e244dc2150860"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1008
+ hash: "b655247e73b0b8357dc9d355ba6f49a0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 79; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 83; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1024
+ hash: "08b67b7e28990cac8c9bd354b7d87698"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 91; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 95; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1040
+ hash: "69cecfb41899e13c0bc5acb6f9bc666d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 104; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 107; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1056
+ hash: "8d1f0cd85fd3f2654f7c30a6d9ec2b99"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 115; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 122; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1072
+ hash: "f8ddda87cfcf5dc9d8c6e940fbd295f3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 126; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 133; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1088
+ hash: "ab9d942c47a2cca5531f7b67df034161"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 136; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 143; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1104
+ hash: "7ca5a03fdfac44c389315c3928631a2a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 146; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 151; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1120
+ hash: "ade955ed9d85fbbe72cf18bbc541c8bf"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 153; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 158; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1136
+ hash: "6ad4afa3e3fcb578946fccbf4896761c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 162; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 163; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1152
+ hash: "3ebe78e37c1c66d0b8fc86c8191e39de"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 165; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 166; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1168
+ hash: "6450917cc89a553cf509265eaf318efb"
+ }
+ Frame {
+ msec: 1184
+ hash: "6450917cc89a553cf509265eaf318efb"
+ }
+ Frame {
+ msec: 1200
+ hash: "6450917cc89a553cf509265eaf318efb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 166; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1216
+ hash: "6450917cc89a553cf509265eaf318efb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 164; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 161; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1232
+ hash: "adfe54d5d28f7caf9ace117fd3573444"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 159; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 156; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1248
+ hash: "f4963636cc4fbd8bfe6baf10540ed7e7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 154; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 149; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1264
+ hash: "1c2d2edb9214cc3857aa221330ee28ba"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 143; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 139; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1280
+ hash: "750226c90e6c6cd0b3bdd3c3dc8da18f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 131; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 126; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1296
+ hash: "b6b5d177ab531460dc125afa82489a1d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 115; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 111; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1312
+ hash: "62d411a7b6c404393e4bfafab9c638a3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 100; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 91; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1328
+ hash: "e355997b3decd4deb686fece59c33c7c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 86; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 76; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1344
+ hash: "2ab73c8aac6a0e321686e97c9bb28f28"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1360
+ hash: "55a887f9f45f71beb6b723191eb60a2f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1376
+ hash: "b2d49e34362994739d14fb8231ff82d6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1392
+ hash: "3964796876870035794b41501991b527"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 41; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 40; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1408
+ hash: "e96076794d3efc62a8fe2d2e543e97c7"
+ }
+ Frame {
+ msec: 1424
+ hash: "e96076794d3efc62a8fe2d2e543e97c7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 41; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1440
+ hash: "7e524b3c43a987503ef102bdb9f11701"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 42; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1456
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1472
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1488
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1504
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1520
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1536
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1552
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 42; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1568
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1584
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1600
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1616
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1632
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1648
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1664
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1680
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1696
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1712
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1728
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1744
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1760
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1776
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1792
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1808
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1824
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1840
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1856
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1872
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1888
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1904
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1920
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Frame {
+ msec: 1936
+ image: "nested.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 38; y: 56
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1968
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 39; y: 57
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1984
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 39; y: 59
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 39; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2000
+ hash: "2a7c13e97c21e298541bb5ab8169ff13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 40; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 40; y: 65
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2016
+ hash: "9178754b825d60b2174ed9431ea80586"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 41; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 41; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: 79
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2032
+ hash: "89eff8fa9f8710d7cbc50b8d4b751148"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: 84
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 86
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2048
+ hash: "cdae8b46ecfc2b0c90264c120156cc46"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 91
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 93
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2064
+ hash: "cf35919630eab647a28eb91d8a441704"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 99
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2080
+ hash: "283256d50da8c855c50d5f8813d37afd"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 107
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 109
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2096
+ hash: "2560cd67d507bc24c1000187f645531c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 113
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2112
+ hash: "6f6f7c299c4516c5231f5bfcd39b6db3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 122
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2128
+ hash: "e7989524238996cf59f420f4edf8f982"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 124
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 126
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2144
+ hash: "34d8d456848807e854bcb25ffbde37d4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 127
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 130
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2160
+ hash: "433bd3983804b07484d38af2723f519e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 132
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 134
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2176
+ hash: "510e534a8a7b88041f7544e7e4992b8f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 137
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 139
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2192
+ hash: "25f43c457a5bf2b70a66ce91685ad4dc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 141
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 142
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2208
+ hash: "4119ab90627359420e25220618b76a69"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 146
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2224
+ hash: "8a3cc888e96cf3e26e369723b442baf1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 147
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 150
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2240
+ hash: "980552e8ff9d87ccb40127b06b0f846f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 151
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 153
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2256
+ hash: "9ee23fc7cbca4467f984073d2af7cdf6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 155
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2272
+ hash: "032d65792ac867c9b9acef05bd993c54"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 156
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2288
+ hash: "be2f8d5a64034e75e23527c486e33029"
+ }
+ Frame {
+ msec: 2304
+ hash: "be2f8d5a64034e75e23527c486e33029"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 155
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2320
+ hash: "3f65505e4d1f8534c9123b3dea15d43e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 152
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2336
+ hash: "e8b1799cf1926cb3b6cbf3adee80cffe"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 149
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 147
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2352
+ hash: "31155b14cc0d3d47bbef4e199fdfcb46"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 140
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 132
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2368
+ hash: "b89745a9a60a7ebeb1de0a7f96ad2ac3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 128
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 118
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2384
+ hash: "7e99fa1eba369d45f10778fe02356f09"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 114
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 103
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2400
+ hash: "cd123f6b332f38f43abbf01469a41301"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 98
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 90
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2416
+ hash: "353c0602dd2b670e19988117172855fc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 76; y: 81
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 78; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2432
+ hash: "20df9d19fd2113fa8f8023d5b4328dc5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 81; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 82; y: 67
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2448
+ hash: "10b34a758d5b3790dd36c9d95c47b157"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 84; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 85; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2464
+ hash: "98a483e1eaa9145fd277fd85a9b0cf03"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 87; y: 57
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 88; y: 55
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2480
+ hash: "e92edd52ff1ee78456fa1947a46e6570"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 89; y: 53
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 91; y: 52
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2496
+ hash: "877384496d967f5f0ab1c817a2b316d6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 92; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 93; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2512
+ hash: "15673570ffe9a391f9214601ac9dc86c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 94; y: 50
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 95; y: 50
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2528
+ hash: "4b7f0094b19a4495bf913d2994889497"
+ }
+ Frame {
+ msec: 2544
+ hash: "4b7f0094b19a4495bf913d2994889497"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 95; y: 49
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2560
+ hash: "4b7f0094b19a4495bf913d2994889497"
+ }
+ Frame {
+ msec: 2576
+ hash: "4b7f0094b19a4495bf913d2994889497"
+ }
+ Frame {
+ msec: 2592
+ hash: "4b7f0094b19a4495bf913d2994889497"
+ }
+ Frame {
+ msec: 2608
+ hash: "4b7f0094b19a4495bf913d2994889497"
+ }
+ Frame {
+ msec: 2624
+ hash: "4b7f0094b19a4495bf913d2994889497"
+ }
+ Frame {
+ msec: 2640
+ hash: "4b7f0094b19a4495bf913d2994889497"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 95; y: 49
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2656
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2672
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2688
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2704
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2720
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2736
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2752
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2768
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2784
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2800
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2816
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2832
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2848
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2864
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2880
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2896
+ image: "nested.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2928
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2944
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2960
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2976
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 2992
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3008
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3024
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3040
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3056
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3072
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3088
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3104
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3120
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3136
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3152
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3168
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3184
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3200
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3216
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3232
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 156; y: 74
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3248
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Frame {
+ msec: 3264
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 156; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 157; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3280
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 158; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 160; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3296
+ hash: "2994e98b8ea9a6883a7324e7e848345c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 161; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 163; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3312
+ hash: "df6cf21e99177a436e356f818996070c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 166; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 171; y: 74
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3328
+ hash: "86f5e3fee147f47edd4a6d042aff0301"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 178; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 181; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3344
+ hash: "589c1418a9179c868d904b1a5169a11b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 189; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 193; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3360
+ hash: "3141ad77d193e145b749759070e1e6ef"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 200; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 204; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3376
+ hash: "5e34d4deeb6d80b336cacea39797e0ca"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 211; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 217; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3392
+ hash: "b8795d844982bcf60a6713f91717648f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 220; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 224; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3408
+ hash: "857c63b24057ee0186c5136eddb71cb1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 226; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 227; y: 76
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3424
+ hash: "49222ed0d1ebc8759d0a1dc65c3beec6"
+ }
+ Frame {
+ msec: 3440
+ hash: "49222ed0d1ebc8759d0a1dc65c3beec6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 227; y: 77
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 226; y: 77
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3456
+ hash: "751847708a468f4f3e64e7cb5ebd1351"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 225; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 224; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3472
+ hash: "4016f80a5219fcba6480645f71998d71"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 221; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 220; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3488
+ hash: "beef05cd2a3d20bc66978fa4f0ac1d12"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 216; y: 82
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 214; y: 84
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3504
+ hash: "e50a2661e93d34b55c8d2d39abc77e5a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 209; y: 86
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 206; y: 86
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3520
+ hash: "7beccbc2f091350bb5d9de1e2443021d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 200; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 192; y: 89
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3536
+ hash: "1d39570bf07392f56b6dd24b0bf9e7bc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 188; y: 90
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 180; y: 91
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3552
+ hash: "62565b3e5aad3979b408207bbf36e615"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 176; y: 92
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 167; y: 92
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3568
+ hash: "d9c6004921847fef16bb8c2f5d6b3b7d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 162; y: 92
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 152; y: 92
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3584
+ hash: "53da27301ad97ae52c65928615ec0cd7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 142; y: 92
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 137; y: 90
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3600
+ hash: "9772a776e84515984b4eec70dbd1c5a7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 125; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 119; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3616
+ hash: "9caa6583a716443c13e8fef3f2923d6e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 86
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 104; y: 85
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3632
+ hash: "f162a18b2d3f0d5f6f01fc373c016f68"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 98; y: 84
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 96; y: 84
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3648
+ hash: "58976e8e31beddf881c7cfa3ede54c09"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 94; y: 84
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 92; y: 83
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3664
+ hash: "6625f7adb097bc170024083c42d74b4b"
+ }
+ Frame {
+ msec: 3680
+ hash: "6625f7adb097bc170024083c42d74b4b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 92; y: 82
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3696
+ hash: "1d63f09ca27e9d70c3c0ea923a6cfba4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 93; y: 82
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3712
+ hash: "1d63f09ca27e9d70c3c0ea923a6cfba4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 94; y: 81
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 96; y: 81
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3728
+ hash: "a23c75fcaa0a28adb944bf192af65bff"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 98; y: 81
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 100; y: 81
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3744
+ hash: "2b90fe8937dcc39d1d6add305cf36043"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 107; y: 81
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 111; y: 81
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3760
+ hash: "7da82cfaf0f826ca9a41128278b6b09c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 118; y: 81
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 122; y: 81
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3776
+ hash: "a3f69d13d38b336fda33a86899564996"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 129; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 135; y: 79
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3792
+ hash: "dc562319e1d332ba34ac94bfc0c39c5e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 138; y: 79
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 140; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3808
+ hash: "756482bee292668f56d813847b0ccd53"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 141; y: 77
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 142; y: 76
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3824
+ hash: "06d250c4d18a70f8f7b1c10e22a1bc4c"
+ }
+ Frame {
+ msec: 3840
+ hash: "06d250c4d18a70f8f7b1c10e22a1bc4c"
+ }
+ Frame {
+ msec: 3856
+ image: "nested.4.png"
+ }
+ Frame {
+ msec: 3872
+ hash: "06d250c4d18a70f8f7b1c10e22a1bc4c"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 142; y: 76
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3888
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 3904
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 3920
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 3936
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 3952
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 3968
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 3984
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4000
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4016
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4032
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4048
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4064
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4080
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4096
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4112
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4128
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4144
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4160
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4176
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4192
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4208
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4224
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4240
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4256
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4272
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4288
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4304
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4320
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4336
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4352
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4368
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4384
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4400
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4416
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4432
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4448
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4464
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4480
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4496
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4512
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4528
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4544
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 16; y: 46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4560
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 4576
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 16; y: 47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 16; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4592
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 16; y: 49
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 17; y: 50
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4608
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 17; y: 55
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 18; y: 56
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4624
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 20; y: 61
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 20; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4640
+ hash: "ff1f86b47e0d1db5db7d939df8349931"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 22; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 23; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4656
+ hash: "f13393a4556e9e73c33f2bb74d8f7794"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 26; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 28; y: 84
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4672
+ hash: "8c9aa01516437184eb17d89348cca004"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 33; y: 91
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 40; y: 99
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4688
+ hash: "8b6848cb722ff5ec02d957da1ee687e5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 109
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4704
+ hash: "552fde584d128f511788670031d79dd2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 58; y: 112
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4720
+ hash: "55dc3a4242b46e602f823c0305e67ad2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 118
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 120
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4736
+ hash: "603b9b2ed6ff4273c3ab1cbe32afb19e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 73; y: 120
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 73; y: 120
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4752
+ hash: "157eda24ea8452a208aa7a6a22639c73"
+ }
+ Frame {
+ msec: 4768
+ hash: "157eda24ea8452a208aa7a6a22639c73"
+ }
+ Frame {
+ msec: 4784
+ hash: "c5005b83816c18b67448dfbccd0ab0b2"
+ }
+ Frame {
+ msec: 4800
+ hash: "878512df863e5d60437b85fbd2a32eb1"
+ }
+ Frame {
+ msec: 4816
+ image: "nested.5.png"
+ }
+ Frame {
+ msec: 4832
+ hash: "02ab69b67b746ec0021295992a03ada1"
+ }
+ Frame {
+ msec: 4848
+ hash: "c621382766d7bacab87055a73623a8ce"
+ }
+ Frame {
+ msec: 4864
+ hash: "a8d1be78741d9afd88363bd19f1cbc6b"
+ }
+ Frame {
+ msec: 4880
+ hash: "5a70275ff656766d73638d4dd4db4492"
+ }
+ Frame {
+ msec: 4896
+ hash: "892ea0a00553524b79889d437eac9b6f"
+ }
+ Frame {
+ msec: 4912
+ hash: "d818258bffc065430902ffa8f5668f86"
+ }
+ Frame {
+ msec: 4928
+ hash: "6b844523522ace7545705ffb8ffe1da3"
+ }
+ Frame {
+ msec: 4944
+ hash: "3906097bc49bad199b52c99dbf87f98f"
+ }
+ Frame {
+ msec: 4960
+ hash: "a2bd859b5ca7f4fac8d62b1c9ab76aad"
+ }
+ Frame {
+ msec: 4976
+ hash: "f374673e3511b1df8b50ff7ef6002b3a"
+ }
+ Frame {
+ msec: 4992
+ hash: "c2eecfadd19418f469b1ab53a3ecae70"
+ }
+ Frame {
+ msec: 5008
+ hash: "2b481965ece0f2e1795ef56aa5d6a752"
+ }
+ Frame {
+ msec: 5024
+ hash: "c294f28000348365a2c37265132efdb5"
+ }
+ Frame {
+ msec: 5040
+ hash: "c294f28000348365a2c37265132efdb5"
+ }
+ Frame {
+ msec: 5056
+ hash: "4e9c18eab469b2da0cb92526d3d54501"
+ }
+ Frame {
+ msec: 5072
+ hash: "4e9c18eab469b2da0cb92526d3d54501"
+ }
+ Frame {
+ msec: 5088
+ hash: "4e9c18eab469b2da0cb92526d3d54501"
+ }
+ Frame {
+ msec: 5104
+ hash: "4e9c18eab469b2da0cb92526d3d54501"
+ }
+ Frame {
+ msec: 5120
+ hash: "3836449b99d88e2dea9a0eb9417faca5"
+ }
+ Frame {
+ msec: 5136
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5152
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5168
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5184
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5200
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5216
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5232
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5248
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5264
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5280
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5296
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5312
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5328
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5344
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5360
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5376
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5392
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5408
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5424
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5440
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5456
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5472
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5488
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5504
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5520
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5536
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5552
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5568
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5584
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5600
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5616
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Frame {
+ msec: 5632
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 20; y: 238
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 21; y: 238
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5648
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 22; y: 239
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 23; y: 239
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5664
+ hash: "42dc501eb5a34843ef0a8977ff029054"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 27; y: 240
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 29; y: 240
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5680
+ hash: "b56d132ac881e27d308009fb9a9d2d50"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 33; y: 241
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 36; y: 241
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5696
+ hash: "6c65fca03ea127d554f15c80da76f21f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 42; y: 242
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: 243
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5712
+ hash: "e5d8939135d0e964609a09a437af58bc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 243
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 243
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5728
+ hash: "ab60a45ac475ef8d1177d831a6572d1f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 243
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 75; y: 243
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5744
+ hash: "78b2e0c7dd8b8bcbd573dac79ff815e4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 79; y: 243
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 89; y: 243
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5760
+ hash: "ef9e89650d8e3d572285e2a2e2b09166"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 95; y: 243
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 106; y: 243
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5776
+ image: "nested.6.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 118; y: 243
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 126; y: 243
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5792
+ hash: "b83136fa3769e30ea47097b489e8f1dc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 137; y: 241
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 143; y: 240
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5808
+ hash: "fb892905b790a061ce5985c927db3cf5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 154; y: 238
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 159; y: 237
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5824
+ hash: "bc4358e21d2d31942e776adfd32ef1c6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 170; y: 235
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 184; y: 234
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5840
+ hash: "b42380a7fcf5e2fbfe4dddbe86ad7287"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 191; y: 232
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 201; y: 231
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5856
+ hash: "4b3c12beb43a77ebaf458804b03c7b52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 205; y: 231
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 208; y: 230
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5872
+ hash: "a18be4d4ab28c0fd0c16696c4ecc03ef"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 209; y: 230
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 209; y: 229
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5888
+ hash: "c5f100bc4b14e958c7d9bbff84e0a934"
+ }
+ Frame {
+ msec: 5904
+ hash: "c5f100bc4b14e958c7d9bbff84e0a934"
+ }
+ Frame {
+ msec: 5920
+ hash: "c5f100bc4b14e958c7d9bbff84e0a934"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 208; y: 229
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5936
+ hash: "a18be4d4ab28c0fd0c16696c4ecc03ef"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 207; y: 229
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 207; y: 230
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5952
+ hash: "a8b23e7dad1bdbaa3452335be0f07658"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 206; y: 230
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 204; y: 231
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5968
+ hash: "4c1feb559a11912b06ed521bebba43d0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 200; y: 232
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 194; y: 232
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5984
+ hash: "ffb97bcedf72e02616272c1cad5c38d7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 190; y: 232
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 181; y: 231
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6000
+ hash: "99498ed9b4d519a2f842d407abdef90a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 175; y: 230
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 163; y: 229
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6016
+ hash: "1ca3f012adab899eba1dcb63d048345f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 158; y: 228
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 145; y: 227
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6032
+ hash: "8a81d49de887f314f67976a65f469169"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 132; y: 227
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 126; y: 227
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6048
+ hash: "b83136fa3769e30ea47097b489e8f1dc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 116; y: 227
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 112; y: 227
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6064
+ hash: "12cdd297407257ae4bb13c87e24537fb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 103; y: 227
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 99; y: 227
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6080
+ hash: "a51ac0a1e9432671c88f7649c38d265d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 90; y: 227
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 86; y: 227
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6096
+ hash: "4ba4f854659161c765395cdee35594f2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 77; y: 226
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 225
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6112
+ hash: "9907add9e28b4a8976f3727f99a4b6d4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 224
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 60; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6128
+ hash: "c2cb865c4a766b9c08328b374e940f29"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6144
+ hash: "c97981263572ded23b328da45cf88012"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6160
+ hash: "f4bae51c866ba1158f44529208514d6f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 222
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 222
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6176
+ hash: "35b4f1f9bb343f2b22bd7cdad6f28249"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6192
+ hash: "84eba4cb400e5622463f5a1fa79be72b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6208
+ hash: "d38e882728c7efc906befe69b416082a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6224
+ hash: "e5d8939135d0e964609a09a437af58bc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6240
+ hash: "6b6e06e8473d5703e217accd824b08d5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 42; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 40; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6256
+ hash: "8e38bc5b00e33e24f931b181dc77d3c1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 39; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 38; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6272
+ hash: "a173708b5380f42a2bdbf6ae69cdca20"
+ }
+ Frame {
+ msec: 6288
+ hash: "a173708b5380f42a2bdbf6ae69cdca20"
+ }
+ Frame {
+ msec: 6304
+ hash: "a173708b5380f42a2bdbf6ae69cdca20"
+ }
+ Frame {
+ msec: 6320
+ hash: "a173708b5380f42a2bdbf6ae69cdca20"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 38; y: 223
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6336
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6352
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6368
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6384
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6400
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6416
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6432
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6448
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6464
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6480
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6496
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6512
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6528
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6544
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6560
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6576
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6592
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6608
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6624
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6640
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6656
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6672
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6688
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6704
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6720
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6736
+ image: "nested.7.png"
+ }
+ Frame {
+ msec: 6752
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6768
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6784
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6800
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6816
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6832
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6848
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6864
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6880
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6896
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6912
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6928
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6944
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6960
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6976
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 6992
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 7008
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 7024
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 7040
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 7056
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 7072
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 46; y: 225
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7088
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 7104
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: 226
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: 227
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7120
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: 228
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: 231
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7136
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: 233
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: 238
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7152
+ hash: "35dd0f784c356be0050936ff75b0cdf7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: 240
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 245
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7168
+ hash: "9ac066a700eae45edf9b2f1ba12f0324"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 248
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 255
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7184
+ hash: "22a2a8bf257918820b0ab55ecb14b479"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 259
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 266
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7200
+ hash: "eb98237e06cde8ed2f18040ce9197d16"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 272
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 276
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7216
+ hash: "f0c7afe1bd25b9b573cbc69154c25862"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 282
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 285
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7232
+ hash: "d6a681b6de867db47f889e6f1ec03dcf"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 291
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 293
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7248
+ hash: "0ee281281c7654567a1debae7a13abe0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 299
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 304
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7264
+ hash: "9d5f1c8cb0953c14bdd49aa88d2b225f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 306
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 310
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7280
+ hash: "ae1c2a3ed67c5c10fc9d19de4de7b7eb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 312
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 315
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7296
+ hash: "8505f9d060fc17fef2e91eb2add206bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 316
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 318
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7312
+ hash: "c32a6d546a3e4f2ee5349a7dad4b30af"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 319
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 320
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7328
+ hash: "222f6e8e8deab567f1e7d0aaf7035b60"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 321
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 322
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7344
+ hash: "f7011629f44015187849daad6a53cebf"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 323
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 324
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7360
+ hash: "56b00d9116a51c041483dd00db0aca90"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 325
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 326
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7376
+ hash: "93232fbcafe8e279b37781f51dfb923a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 328
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 329
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7392
+ hash: "9fcf62eaacfc3477a4550c31f03c4782"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 330
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 331
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7408
+ hash: "dd669865fd36e42eec1d69860b29e7ce"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: 331
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7424
+ hash: "9247af334483b219ca9bbe98d8fc362e"
+ }
+ Frame {
+ msec: 7440
+ hash: "9247af334483b219ca9bbe98d8fc362e"
+ }
+ Frame {
+ msec: 7456
+ hash: "9247af334483b219ca9bbe98d8fc362e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: 330
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7472
+ hash: "9247af334483b219ca9bbe98d8fc362e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: 329
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: 328
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7488
+ hash: "69ef9255a29d65f26e5441594ea1bad9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 325
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 323
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7504
+ hash: "055f73dd085d2f65a055ba4d9a8a7539"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 318
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 316
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7520
+ hash: "384da5b6a948a52d0519935a8e33f014"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 309
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 303
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7536
+ hash: "1caa0049be4033db45f0d2debb25268f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 299
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 55; y: 299
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7552
+ hash: "76b8d00b3a2a68fec277050a442c18ca"
+ }
+ Frame {
+ msec: 7568
+ hash: "0ee281281c7654567a1debae7a13abe0"
+ }
+ Frame {
+ msec: 7584
+ hash: "df1dbb027a8542aa6120cce7b69724a7"
+ }
+ Frame {
+ msec: 7600
+ hash: "06a4d9b1d73362b3e29c6cf52fdb515c"
+ }
+ Frame {
+ msec: 7616
+ hash: "876c0dc8a68a4c1253b7aed6316cb892"
+ }
+ Frame {
+ msec: 7632
+ hash: "b46c74b1a2535099f0cdb8093bd49a4e"
+ }
+ Frame {
+ msec: 7648
+ hash: "0ad09a7638aa6f2affe47db2a810196f"
+ }
+ Frame {
+ msec: 7664
+ hash: "3710dde54d7e4a10a2c3ca2f891da7f5"
+ }
+ Frame {
+ msec: 7680
+ hash: "8426a607c92fbfa508e81c620d90e919"
+ }
+ Frame {
+ msec: 7696
+ image: "nested.8.png"
+ }
+ Frame {
+ msec: 7712
+ hash: "1f38e34787c909d93d567f983a425257"
+ }
+ Frame {
+ msec: 7728
+ hash: "7b09913793d4c79d948fdff1b72c7124"
+ }
+ Frame {
+ msec: 7744
+ hash: "8a0d1484c073d8107b4bf9949edcdb18"
+ }
+ Frame {
+ msec: 7760
+ hash: "4bad25465dfdcc41995216b0f6a5191b"
+ }
+ Frame {
+ msec: 7776
+ hash: "6d39bbeb5f74273c1ed0231ac34fe094"
+ }
+ Frame {
+ msec: 7792
+ hash: "8ccc2e33b8d6c67162326d229e9c17ab"
+ }
+ Frame {
+ msec: 7808
+ hash: "3561eaa9124b96b2a0afa022bc0fe581"
+ }
+ Frame {
+ msec: 7824
+ hash: "b87d739e49f0427d9da577ac5147fd21"
+ }
+ Frame {
+ msec: 7840
+ hash: "7d0efbfceec35e591f9fae650288809b"
+ }
+ Frame {
+ msec: 7856
+ hash: "7d0efbfceec35e591f9fae650288809b"
+ }
+ Frame {
+ msec: 7872
+ hash: "ff5d2037d3cc7bb6930cabc3d53f0196"
+ }
+ Frame {
+ msec: 7888
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 7904
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 7920
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 7936
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 7952
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 7968
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 7984
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8000
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8016
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8032
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8048
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8064
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8080
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8096
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8112
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8128
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8144
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8160
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8176
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8192
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8208
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8224
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8240
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8256
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8272
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8288
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8304
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8320
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8336
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8352
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8368
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8384
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8400
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8416
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8432
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8448
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8464
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8480
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8496
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8512
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8528
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8544
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8560
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8576
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8592
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8608
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8624
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8640
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8656
+ image: "nested.9.png"
+ }
+ Frame {
+ msec: 8672
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8688
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8704
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8720
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8736
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8752
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8768
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8784
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8800
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8816
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8832
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8848
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8864
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8880
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8896
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8912
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8928
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8944
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8960
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8976
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 8992
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 9008
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+ Frame {
+ msec: 9024
+ hash: "76624c57195c25b8abd4297e11c55980"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/nested.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/nested.qml
new file mode 100644
index 0000000000..b2d88d2ca9
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/nested.qml
@@ -0,0 +1,62 @@
+import QtQuick 1.0
+
+/*
+ Test nested MouseArea with different drag axes.
+*/
+
+Rectangle{
+ width:400
+ height:360
+ color: "white"
+ Flickable {
+ anchors.fill: parent
+ contentWidth: 600
+ contentHeight: 600
+ Rectangle{
+ id: draggable
+ width:200; height:200; color: "lightsteelblue"
+ opacity: ma1.drag.active ? 0.5 : 1.0
+ y:20
+ MouseArea{
+ id: ma1
+ objectName: "one"
+ anchors.fill: parent
+ drag.target: draggable
+ drag.axis: "XandYAxis"
+ drag.filterChildren: true
+ drag.minimumX: 0
+ drag.maximumX: 200
+ drag.minimumY: 20
+ drag.maximumY: 220
+ Rectangle{
+ id: draggable_inner
+ width:40; height:40; color: "red"
+ y:20
+ MouseArea{
+ objectName: "two"
+ anchors.fill: parent
+ drag.target: draggable_inner
+ drag.axis: "XAxis"
+ drag.minimumX: 0
+ drag.maximumX: 360
+ }
+ }
+ }
+ }
+ Rectangle{
+ id: draggable3
+ width:40; height:40; color: "green"
+ opacity: ma3.drag.active ? 0.5 : 1.0
+ y:210
+ MouseArea{
+ id: ma3
+ objectName: "three"
+ anchors.fill: parent
+ drag.target: draggable3
+ drag.axis: "XAxis"
+ drag.minimumX: 0
+ drag.maximumX: 360
+ }
+ }
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.png
index 7321d95c9c..88924b1f4f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.png
index 49d2a5a7c2..024a17cd03 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.png
index 6fe14b717c..8860fc21aa 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.3.png
new file mode 100644
index 0000000000..2ab8ee322f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.qml b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.qml
index 463edf8fd6..2930e2869e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/data/particles.qml
@@ -6,770 +6,770 @@ VisualTest {
}
Frame {
msec: 16
- hash: "b4df49cbd7cf972af9879399808f6c53"
+ image: "particles.0.png"
}
Frame {
msec: 32
- hash: "43c0ad5826e8058260951f063f0851ab"
+ hash: "c7eb3936886726f584d1bd99133a199f"
}
Frame {
msec: 48
- hash: "55eb2c9939514338e7ef58c9276fc223"
+ hash: "f7f6eeab119435f0cccd55074b4941bf"
}
Frame {
msec: 64
- hash: "6a1bbb91bf450547d6100b6e61a98f6d"
+ hash: "06f52743e61bf0212971652c500fe5d1"
}
Frame {
msec: 80
- hash: "bdb9b8cab70c72d99aba830eb8e8913b"
+ hash: "1f9dd3a3a0524c60791362f560936f9b"
}
Frame {
msec: 96
- hash: "71a0e046bc68183b830df9dafd8fa147"
+ hash: "42538495fc9d63384a1709476c06d750"
}
Frame {
msec: 112
- hash: "e7228e0ed77e05c661282c2d2fe88b3e"
+ hash: "4d1b53541ffe5cdfcf0e3aa2916b1bac"
}
Frame {
msec: 128
- hash: "93a4c3e501b05844f687a2dd1754aad2"
+ hash: "6a3a683dbd2ad7c89f0788441303485e"
}
Frame {
msec: 144
- hash: "1856ac86313c16bf4874130d9a48ff45"
+ hash: "125a936660dae42969fab4144d166ac6"
}
Frame {
msec: 160
- hash: "3637d8dad4f44c938f91b0800bd9fb2f"
+ hash: "87d008547326ff1bf2c4c2a9d9b99abc"
}
Frame {
msec: 176
- hash: "c5ace4ede38d29363d69c6b4b2f9349f"
+ hash: "0df69d85b37d3ebf0e314a7e89701703"
}
Frame {
msec: 192
- hash: "a5d832d02f4a635052817654df90caba"
+ hash: "7af12cac3bd33c903d6aa6fa8f89b498"
}
Frame {
msec: 208
- hash: "9ebf8bea8abe7ac209d47214a87f8fc0"
+ hash: "424c950111c492ded19df874b938067c"
}
Frame {
msec: 224
- hash: "35b8f5cb18284867be8d27d601394a2b"
+ hash: "bee69a0df1ca8ccc7d83a52f9de34f8c"
}
Frame {
msec: 240
- hash: "a2c4a6063f219af6f2b29b2d21a4265d"
+ hash: "47da1538d818e22d836de57d5c6601ce"
}
Frame {
msec: 256
- hash: "27f25ace7b8e93c55638ed99f49b821c"
+ hash: "fbfb0e177b19d6ef9433619f60dd9580"
}
Frame {
msec: 272
- hash: "4f6511bfbbd8113195a7597eb6dfb219"
+ hash: "23b4f8bb116e8db48db25ccccedba43a"
}
Frame {
msec: 288
- hash: "6a696159cdbb51a67064c600124535d1"
+ hash: "13f0847f1b86f880690692066cde21c7"
}
Frame {
msec: 304
- hash: "6cd667eb352256dbb728532634e7ffd0"
+ hash: "639ca4c978bea080139b219c75bf01d1"
}
Frame {
msec: 320
- hash: "28fa16c8936bf86a8426ded306aa2b8c"
+ hash: "19debcaa7bbde930eda2fd08ac1e9d8a"
}
Frame {
msec: 336
- hash: "061fecdb88733e3e51c5823571bc4d19"
+ hash: "1d733c5010604bff67138f1eb9881dcd"
}
Frame {
msec: 352
- hash: "f64530f638b3d18d56593e0b7c884f5d"
+ hash: "b14435e41a3730baff06bb0800157081"
}
Frame {
msec: 368
- hash: "8530cf40739890dc7401fad65a6325bf"
+ hash: "504b3548c38d50f15235594f3f3d7be5"
}
Frame {
msec: 384
- hash: "0abc555552e7256dbc424b2eac5c95f2"
+ hash: "4e73ef73c949da579217c1d94139a75a"
}
Frame {
msec: 400
- hash: "64aeae59a8c958dfc62d92636b2f5217"
+ hash: "5fced44782484b1962368b9c04bf5246"
}
Frame {
msec: 416
- hash: "3e0f50f5bee017220b129d06b2acde2c"
+ hash: "6ab0cd5c14e1871a35d003574255c1db"
}
Frame {
msec: 432
- hash: "e676c01ff2e35bdfe674be67d49945b1"
+ hash: "23f5c485fbd0acd607119e93277284db"
}
Frame {
msec: 448
- hash: "bc060b480aab94fd440fd27f5beb7383"
+ hash: "02ebd53ee0e6ca3605916b05d827989e"
}
Frame {
msec: 464
- hash: "79c79f723de72315e63da8a7cbe1b425"
+ hash: "99b1d1e72d7da88a7d5d5a7907e1b1f4"
}
Frame {
msec: 480
- hash: "7bf93c2697af75d0f862a47d57cd6a7f"
+ hash: "b7de7d40263f2811ec51f28f8ff4929c"
}
Frame {
msec: 496
- hash: "7641b9e233f4aabd99bcd985ce1d51ae"
+ hash: "e64059f850dd4c8642a9883a1c5356bf"
}
Frame {
msec: 512
- hash: "b596a28cb67617d37408bd25d947d088"
+ hash: "b0aefb8f8d4d970ba4b51d7f77b55cf1"
}
Frame {
msec: 528
- hash: "f2c5cdf15c27b05c0ea97675ddc41757"
+ hash: "5ab4b1373c233b2342eb66cf9eccac8d"
}
Frame {
msec: 544
- hash: "eae5eb8c41a1d6d75446618518490f20"
+ hash: "b3726c296d5919a59c32201d857e92b4"
}
Frame {
msec: 560
- hash: "0be5e9a6d857fe1a262524801c69490d"
+ hash: "70e246371f9cf83b5913f2fc53f6b736"
}
Frame {
msec: 576
- hash: "65478b8c4d932c10924f70462a662254"
+ hash: "871cd4b99b6d544d487424219e0caf92"
}
Frame {
msec: 592
- hash: "7b034f3c98e8eb38eec11cf3c2aa0804"
+ hash: "8c002ec15e88220bf12ebaa5a3390570"
}
Frame {
msec: 608
- hash: "5bbc8eed41500ccbc820cfb38794232f"
+ hash: "21c994a5ad23938a9e873d04bbd4165e"
}
Frame {
msec: 624
- hash: "1b39d555ca8932b40efd769c4ba74d3f"
+ hash: "1f04a0ed31823cd0817f3e97a11e3a46"
}
Frame {
msec: 640
- hash: "f9a38e12becbce400191e22f1d22427c"
+ hash: "f163eda68878ae0ed4cac7f941e24414"
}
Frame {
msec: 656
- hash: "cbc27c72517d76edfc2d3692cd83f151"
+ hash: "560527d6c7fa64a4739f9c79f3eaab8f"
}
Frame {
msec: 672
- hash: "4a883a5aed05f0bbcefcefea6ef56df6"
+ hash: "df7e7469ff685c4cd822232b1aa66029"
}
Frame {
msec: 688
- hash: "7a30ea30c0619c87c96bcaba916c64df"
+ hash: "fa92bf73b0737d4ac8bbc16518cd9c2a"
}
Frame {
msec: 704
- hash: "33cd0797b6d229592ed53117fcaaa898"
+ hash: "bb2f2765ba20b727701352f11ed30417"
}
Frame {
msec: 720
- hash: "21178ef9366c8a65ecb9e21d584573b0"
+ hash: "4c45617ce77a5869cdbfcfe851796422"
}
Frame {
msec: 736
- hash: "fe75beac8681fdac8a2b79c9c7267128"
+ hash: "24aa2eabe8d2a4adc5a096dd201a3bc1"
}
Frame {
msec: 752
- hash: "df26a23d394e053417de86309683c5e0"
+ hash: "2eb5de2524ad38e1dcd44d89b115e75a"
}
Frame {
msec: 768
- hash: "411594a1ed7c351cb872e0a6f3081b1b"
+ hash: "8b39e542908051b0ab8fbf3cd36f3be9"
}
Frame {
msec: 784
- hash: "b4b639f204cfed9e1fec872e4de115c2"
+ hash: "a447e9d7c87c90633dcfc550fcf04ff6"
}
Frame {
msec: 800
- hash: "4d801e2f4848399c011d60264720b912"
+ hash: "c3d1e7753b592bc0d0c3169e3cf08bb7"
}
Frame {
msec: 816
- hash: "4f28c7b154853ff78cdefb5a5ac9d2b7"
+ hash: "fb20ccb3b36798835fbc1d529a7424ea"
}
Frame {
msec: 832
- hash: "cc6d4283b0d7bf9f579637575d5e1fef"
+ hash: "ff253670ae78826250b9612cf2a2e1a4"
}
Frame {
msec: 848
- hash: "8edc371d23d01be547990074b5e640af"
+ hash: "45fb7f71debd3b61062a4165c04c0637"
}
Frame {
msec: 864
- hash: "874845d7178e6cd8369f21379060f561"
+ hash: "a1542b5bc5e65cdb3f8775cf21b54429"
}
Frame {
msec: 880
- hash: "98fb6d79990775385603fb1a50ab5186"
+ hash: "a146b5b88875e4148658dd55e162d6f4"
}
Frame {
msec: 896
- hash: "d15539efc27baabb5a74f464b152d266"
+ hash: "94222050206925d4c9b38da03125cc0c"
}
Frame {
msec: 912
- hash: "fc44d091d6689e8870162a6d29b6d287"
+ hash: "71a63ace8450029b968723cfa684330c"
}
Frame {
msec: 928
- hash: "a3c964f4bf524e22092b1650df43375a"
+ hash: "14e4d2af07146133c6a0e87391747c6a"
}
Frame {
msec: 944
- hash: "ca203fd630ec1eadea37cf36bd30ba40"
+ hash: "e380593e219531620dbca0a8131b4f13"
}
Frame {
msec: 960
- image: "particles.0.png"
+ hash: "d52c30bc201afd3d1caf34efcddafdee"
}
Frame {
msec: 976
- hash: "2e0630818c04fc6c259eec8561c645cd"
+ image: "particles.1.png"
}
Frame {
msec: 992
- hash: "a7b1f6305ddcf4a338e1a96ea31a5341"
+ hash: "0d2871475891f96e1cc4150cbe725d46"
}
Frame {
msec: 1008
- hash: "23a5013a8f9407d06ac6fd0c1e961743"
+ hash: "b6d064a26c282ce4fd8cba48de0a0f7b"
}
Frame {
msec: 1024
- hash: "9de73decddaab4269bd33efdb21278a3"
+ hash: "9ad67d9833d749b2b8158abb3076357b"
}
Frame {
msec: 1040
- hash: "7582c26b45dd11c262f51b387af89cb2"
+ hash: "ce86624a1e055fdb4711dd73be31dc42"
}
Frame {
msec: 1056
- hash: "650e0d395f1d1f2ddda8711089d85511"
+ hash: "a2c6fc81e1f02477f6ad084acaf12b0d"
}
Frame {
msec: 1072
- hash: "9ff84e81219aa6bb7ab534b2a47a3930"
+ hash: "bab24924a5ac4cd45c1fa7b5e4ff3efe"
}
Frame {
msec: 1088
- hash: "11e255273e8ca4716047fb52636f0c3e"
+ hash: "8c8fd3b9cc257dab84df8e88a3e7a001"
}
Frame {
msec: 1104
- hash: "b2fcbefd13db3c765183b1eefc2ca0bc"
+ hash: "a3f9936dc4e3161d9db1fa39267cda4d"
}
Frame {
msec: 1120
- hash: "7150aff523c0d480702f6a326699cb65"
+ hash: "d6669c8a47077f665a93587ea3cafe6e"
}
Frame {
msec: 1136
- hash: "63886c15107a2a7d639069cd81c3cd07"
+ hash: "601dbd220a7f312d4343323ae99e21ee"
}
Frame {
msec: 1152
- hash: "1ec1fc30bbb5f43a1d6d36bce345f569"
+ hash: "722411ffc1d6740caed9bf1231bc54ba"
}
Frame {
msec: 1168
- hash: "34060cbc31ce1fbf406cbb595312c609"
+ hash: "cb3bd6f5ee770399e21a07e56dcf28ef"
}
Frame {
msec: 1184
- hash: "6f3a04c7f411785956e640aa630f7ac4"
+ hash: "1819d6719e6b56b3e673dacf1865272e"
}
Frame {
msec: 1200
- hash: "d7bdb7e170b6f193eaf4b07c01b4dc6b"
+ hash: "6b6532937a3e37df28b3939cbadc4741"
}
Frame {
msec: 1216
- hash: "6ca02c0d9cfeb4b1932f7ad1feac9850"
+ hash: "8a065d54600e9ae3c7958f7b71d8432d"
}
Frame {
msec: 1232
- hash: "d446c7b185361de5c615a17ac1fee607"
+ hash: "2259806ac264b292f5701f34ffac5c35"
}
Frame {
msec: 1248
- hash: "bc2faf5b7b2972f155954e4e685e80ae"
+ hash: "e4b2a6440df9141616f89cbb6a6ba0aa"
}
Frame {
msec: 1264
- hash: "2bf26cedc76aea4a6d9744b7dd935db8"
+ hash: "034b74fe5327909214bb5a6e3084edf2"
}
Frame {
msec: 1280
- hash: "accbee9d0f8cf73ef72aa7bfb49b3fa5"
+ hash: "976fd9bc54baefe8d71002a22706052a"
}
Frame {
msec: 1296
- hash: "933eb2e46f42e212bdfc515d30f663d3"
+ hash: "45138388ebc6ec44a205934475907b25"
}
Frame {
msec: 1312
- hash: "7495318c893dbb22771b53e93c7614e8"
+ hash: "01edec5ae6e33b49baee2abe2a59ad7d"
}
Frame {
msec: 1328
- hash: "894fe23c1b3543451293c047b640c4bb"
+ hash: "9a89ff95df027e53827c5554a28e05a8"
}
Frame {
msec: 1344
- hash: "9b7179ef059ee82ca4a383f536f47a42"
+ hash: "8d1cd8a1181b7320990b7348b424ce4b"
}
Frame {
msec: 1360
- hash: "5ec1a5bfac2473efdcad7dba0da4015c"
+ hash: "2366d1ee0c0740f0d19fe2ce1acfe4c3"
}
Frame {
msec: 1376
- hash: "2bd64528e83260a80e7f2843e2c34a19"
+ hash: "071988963ab2d1a53243e0f6837fecb0"
}
Frame {
msec: 1392
- hash: "16bf64a9bf6b4bc09b108c65d074b5f2"
+ hash: "20f1e8adef04cea6bcd1511ac47a7922"
}
Frame {
msec: 1408
- hash: "c33eaa717ba63655f375499058b1be55"
+ hash: "2241def30a3ef54ea82e5fa2b1ef5997"
}
Frame {
msec: 1424
- hash: "d080f4591f9fd59745bf850525590849"
+ hash: "15365370ac6859f1bfc76e96e603c417"
}
Frame {
msec: 1440
- hash: "921585c88ec133c83c07650745bb4441"
+ hash: "45edcbeb23c88f62982f9af9a4647f4c"
}
Frame {
msec: 1456
- hash: "f037b28137b22a0c91fc71fc6626475a"
+ hash: "b7a9c7c44e6f9ff5132d1ad3f6137dc8"
}
Frame {
msec: 1472
- hash: "e10b3c432a230d5509c2fa7df48b56c9"
+ hash: "8a55b85fdd63ac63c1a566a5c4d92a04"
}
Frame {
msec: 1488
- hash: "ac02c7b7e68ee8cfad1fe556020e93d8"
+ hash: "e1973b7d557dec08e6375feefb56db47"
}
Frame {
msec: 1504
- hash: "12d59e70dedfa0c741afed9b98cb9a3a"
+ hash: "a321445212e561de4262228482b0edbe"
}
Frame {
msec: 1520
- hash: "a9aa635ccde26829d7e1cdc29fcce8d1"
+ hash: "a2c787a576e1f85561c08330b6801e98"
}
Frame {
msec: 1536
- hash: "f571b3da827b884ad036dade8ad2fe37"
+ hash: "ba84070f0081d4c7a08ebc3204d9aebf"
}
Frame {
msec: 1552
- hash: "1ffa8d7512e9001cbc78b28451133b44"
+ hash: "4b82a6908ed0caf3cbfd9dc9211ec69a"
}
Frame {
msec: 1568
- hash: "2ef4b10f2eafd71dfde15f7f00e923c6"
+ hash: "a1dc7c4ad596fc005cf3077ee78406e1"
}
Frame {
msec: 1584
- hash: "09b3bc232a134eae5ae14c0336f508ba"
+ hash: "53d76884202d4b9ce3874db796705b80"
}
Frame {
msec: 1600
- hash: "ebadb5c6b4986c865f7f8ef232680b7e"
+ hash: "9f24c090531259f9d83ea97e842c4f14"
}
Frame {
msec: 1616
- hash: "26621991073510e9a95e3b208e3ee56e"
+ hash: "541c81585a781bab82d4ee95b9f844ff"
}
Frame {
msec: 1632
- hash: "f18e97f13c06f3c5368edf851f19f401"
+ hash: "73e15141e6c6bfba4a2c820ba96e3f6e"
}
Frame {
msec: 1648
- hash: "3c322dbbf5ecfe1de56595dcb7d949e1"
+ hash: "0500129b602ab14925aa09a1d9bee3d0"
}
Frame {
msec: 1664
- hash: "50058d1bb992a6d0601c9d5490149936"
+ hash: "2d45ba5e0e21430f468332c13ce3ee15"
}
Frame {
msec: 1680
- hash: "4cc78f56f13478ec21a4a0d6b22f956b"
+ hash: "bafd11c210e683d79ac438c5612503bc"
}
Frame {
msec: 1696
- hash: "d765cd86560dff3faa5a3c902512c74c"
+ hash: "f968f49e6a0674877c55282e5543edab"
}
Frame {
msec: 1712
- hash: "ad983068c2149b0c06da3b89a5d94d24"
+ hash: "705307529862a3825a0870b294058825"
}
Frame {
msec: 1728
- hash: "e6da7260001771fc00c472bccae641fe"
+ hash: "a008a501d1dc16a5ffaee325fdd90816"
}
Frame {
msec: 1744
- hash: "71778ad8a61ecb0f78f7234ecf0d1d97"
+ hash: "5091621481873738658f4d8543582c62"
}
Frame {
msec: 1760
- hash: "6b2209ea5f7f17c2cd868986f0c907d9"
+ hash: "141216eeb31b5af4ec247bb930169a7f"
}
Frame {
msec: 1776
- hash: "6513c82829ef7e7c9461dcf5b50f675f"
+ hash: "bfb203e39ab0a9837fc5b9c9b49d9580"
}
Frame {
msec: 1792
- hash: "0172c5bdf96c8bceab25a6c82bdbe527"
+ hash: "1f2704480af7dd2bb382d13450f34755"
}
Frame {
msec: 1808
- hash: "64b53bf1c1988d3a799b564089f8e63f"
+ hash: "f3182da7f6202250a6cc2de3e43fcf87"
}
Frame {
msec: 1824
- hash: "a1bdea4771ec9719cfe88f4e827bd005"
+ hash: "6fa500f5ff387c5801186fb7eced96f4"
}
Frame {
msec: 1840
- hash: "263de376cee2ba7701a7ca116bc1be81"
+ hash: "1874d59911d70daf098cd053da69127b"
}
Frame {
msec: 1856
- hash: "9795dada7f09d7d4d40df858dea8bc70"
+ hash: "52a7bcb9a18e8d4a24c2617124b7961b"
}
Frame {
msec: 1872
- hash: "85ea4c63fc31f79423cb509f6c6d4faa"
+ hash: "f3a7dd26aa4177dbee02d52df664c751"
}
Frame {
msec: 1888
- hash: "c86d8c4460d1e3c2f26b723dc628fe84"
+ hash: "5180db29e325f00c3940b6a7b8eb8a8e"
}
Frame {
msec: 1904
- hash: "6bf6ef1fd377bfcf0b93baa7f28e1d3d"
+ hash: "eab16b6ef76e627eff492cdf5d5da9e2"
}
Frame {
msec: 1920
- image: "particles.1.png"
+ hash: "57976a66963718e90c62535a936d9251"
}
Frame {
msec: 1936
- hash: "57b8a48bed9375b74391950c28e611da"
+ image: "particles.2.png"
}
Frame {
msec: 1952
- hash: "70203655bc832998529071d7f665ecbe"
+ hash: "85ecf35d439bd4129f8780d8ee561dfb"
}
Frame {
msec: 1968
- hash: "9ab9808d495f907a255d85fbd82491e2"
+ hash: "785d712b57b3ec4cee6b9e2fcfa1b775"
}
Frame {
msec: 1984
- hash: "297570136b058ba43e883b0aef20d82f"
+ hash: "77906acfafec6ab595e8dad00373f953"
}
Frame {
msec: 2000
- hash: "0c2f15ce83e2d961ec36299b13890709"
+ hash: "33722e5c66ee6dfc87ca62a53590969e"
}
Frame {
msec: 2016
- hash: "6d57b6dcb1dbfa35245d79ef36ca49b2"
+ hash: "7bd3d9e36789b3456c5e098d02341ce3"
}
Frame {
msec: 2032
- hash: "12a71804fd71991706d8a39b676d1628"
+ hash: "be4af661ca19ca607acf0d8949b58c26"
}
Frame {
msec: 2048
- hash: "f6a9e1b0b498fc576f3eadeb86c08fe9"
+ hash: "e249df985887229664d3c61c7b01d2ef"
}
Frame {
msec: 2064
- hash: "051c2ed34cbef82d44aec4841a33f086"
+ hash: "541a01af440e81c7b20fa9df0e85f5f9"
}
Frame {
msec: 2080
- hash: "12b89590b20fff8d6c94dde40a5d6185"
+ hash: "3579e5a3ab93b8c9998ef812f43ba158"
}
Frame {
msec: 2096
- hash: "7a29cd11ddb042203465a9522ff951ce"
+ hash: "c2902c8068a48788e5511d2987191181"
}
Frame {
msec: 2112
- hash: "4853f364261ab8e1c9d35cfe42efb385"
+ hash: "3fc7d417d13cbccbff81c0630cf968f3"
}
Frame {
msec: 2128
- hash: "7149ab3ed649cac9cf662be7c434056f"
+ hash: "5507fabe77585c38b2929e2565cd8e9d"
}
Frame {
msec: 2144
- hash: "bbe199700474dda156355d31ac09be39"
+ hash: "73f6a9a1602929b80ba28ac2c8095a95"
}
Frame {
msec: 2160
- hash: "a3f3fbbe844b8c6fb8cb8bbcc17120e3"
+ hash: "3377ee6818f1fbf15cfe2916ef7328ed"
}
Frame {
msec: 2176
- hash: "e9a04cfe9e8c50f74978fbd4ecce536a"
+ hash: "4bea4237a5044b9ffbe9815b877a5b96"
}
Frame {
msec: 2192
- hash: "0df1d4211f770cdd7b8a98ea476c6f42"
+ hash: "f25dadf7b916625f120d3b5fc1602d0d"
}
Frame {
msec: 2208
- hash: "a6837afb43663b9473db2378b1a9f989"
+ hash: "ba095d86b7ecc9e2ca6c5d6567d6debf"
}
Frame {
msec: 2224
- hash: "691ea67f3b84b8dda449c2a8e86b1087"
+ hash: "296129caee6a9526aa2c6071fb07198c"
}
Frame {
msec: 2240
- hash: "16d18947637c63662b9a502c493f06ec"
+ hash: "42abe26548e9eb7a2c63aea7f349808c"
}
Frame {
msec: 2256
- hash: "8f9207d404da08706e150f3b64d0088d"
+ hash: "2d187394342584568aa24353233f67f7"
}
Frame {
msec: 2272
- hash: "48ad430e38cdc34845a834cfb9ea70ef"
+ hash: "5c4047c8ca78103d443f9058f3ec3237"
}
Frame {
msec: 2288
- hash: "1252cfb294ae99c40b03dd021160553f"
+ hash: "05af8a131ec98b5bc60669bfcdee9a16"
}
Frame {
msec: 2304
- hash: "b1d5e752fbe03c95ee0dc7bbdf6fb9f6"
+ hash: "b486a796a74962d6b5a4e928ff9e6a2d"
}
Frame {
msec: 2320
- hash: "2282cb42ef0c812ba27e33ed0f962a84"
+ hash: "8bfa5cc3edf294a728bae51014733230"
}
Frame {
msec: 2336
- hash: "42fc82c8d40d383b3cf31a741a4358c5"
+ hash: "fb5928a74d75f7eb23ed914e12ea2dba"
}
Frame {
msec: 2352
- hash: "368c1ffa2deb1911929f1769e31c8017"
+ hash: "16c83f70c3559e97c4a28df7e8b94d95"
}
Frame {
msec: 2368
- hash: "8693bdbde404e36970943ac6b650ca00"
+ hash: "a7f926210d56dc368c99da12a27db42e"
}
Frame {
msec: 2384
- hash: "57609613c336029b60da428d48842a4e"
+ hash: "9f235f259af00126a3fc2417d399dee6"
}
Frame {
msec: 2400
- hash: "b61dafe9e87421d3fcf8cb9ff0e7a41b"
+ hash: "2397c99cc1697303bad9fbd029ee63a3"
}
Frame {
msec: 2416
- hash: "c8c34d1d82bef418ef97f52cb9773cf4"
+ hash: "b83a021c82c203d6cf690edd5fd98c89"
}
Frame {
msec: 2432
- hash: "aa756c09717dc02e81e76511b4c58f60"
+ hash: "4e9e74f8b115b69b593f0233f9431258"
}
Frame {
msec: 2448
- hash: "96e75c5ce1b5393f6cc46fbbe0a67689"
+ hash: "2d8f24eea1e87691eb2292bd01756498"
}
Frame {
msec: 2464
- hash: "fb5febae411f43a6cd218b03b36f5018"
+ hash: "bad7ffbfe4feac5e7a13a70c8096ddab"
}
Frame {
msec: 2480
- hash: "889870fa67784261e7b73b7d0a53324e"
+ hash: "6869d23bf601c67593f23402023f931d"
}
Frame {
msec: 2496
- hash: "fb124d4ebee6457f2137f07954619912"
+ hash: "6e4846623fe8b4a1c850729620cd7502"
}
Frame {
msec: 2512
- hash: "258ae87f78805c555e0ed802c5123eeb"
+ hash: "f679d87f206ca71de191f3991c13f4b0"
}
Frame {
msec: 2528
- hash: "2e730872c37f118a03864d23ebf7bab3"
+ hash: "7f503ceda23f0e4718f6216c3b4ddef7"
}
Frame {
msec: 2544
- hash: "381386302f210932bc7d44247a48f13c"
+ hash: "69f01285109c21cbd32a0f17942734be"
}
Frame {
msec: 2560
- hash: "306f8e6d183eb080da3375d65f2491f0"
+ hash: "f2060324802c080703ff62c051c7cff2"
}
Frame {
msec: 2576
- hash: "39862f236aabf362d0a07ba64eb212e1"
+ hash: "45d01b58f0812596aff06a09c1167d83"
}
Frame {
msec: 2592
- hash: "57452ecfea80ebd4d9fd23f8efbb34f2"
+ hash: "688c9931abdaa7225da91cdf7f2beb48"
}
Frame {
msec: 2608
- hash: "64bd12d4f6e32f19abef79289673c2fe"
+ hash: "d522505f28615cc17206ca6099dbd83e"
}
Frame {
msec: 2624
- hash: "56340d636f4df7e5f68e84c1d8388429"
+ hash: "ad86d8cee90c1458b64318f3edd94aee"
}
Frame {
msec: 2640
- hash: "795cd97d4be294fa6157f23793861ec3"
+ hash: "6dda1a6359b421ef7c9ffa4ecd863341"
}
Frame {
msec: 2656
- hash: "4be9fd5314ad6721a0ddf5a5dc51ccee"
+ hash: "dcc388cdf2b87e10b07e2f05ab6dce3c"
}
Frame {
msec: 2672
- hash: "3349b775c329db022bf0414b9ed57466"
+ hash: "a5d64264be7778929116c9407548c7f8"
}
Frame {
msec: 2688
- hash: "587b7070836063f9d138c4a4ee8da8bb"
+ hash: "cc7ac18a25936825d42694a9022b73fa"
}
Frame {
msec: 2704
- hash: "5bb078819bef7695c9af1bd4b544a26a"
+ hash: "4423af95764aadbaffe3c608fb3a376b"
}
Frame {
msec: 2720
- hash: "799c05999713e8b29f7d2917f515d2c2"
+ hash: "ad186cd5735531e2e6bfb2fc387dee2d"
}
Frame {
msec: 2736
- hash: "41bb926661acd8e21300f4933734748a"
+ hash: "d0e7c8071350bac03cf06996b6f74a63"
}
Frame {
msec: 2752
- hash: "2ead23d38a2f1834c7688a9657d9d7cc"
+ hash: "d012311c64fb35717155ebc88f9940d6"
}
Frame {
msec: 2768
- hash: "196309eac81adea21630dda19947ef5e"
+ hash: "13111334420c479b6a3ddbde65e2d143"
}
Frame {
msec: 2784
- hash: "cf414b2004712581f11f27890745c761"
+ hash: "3a77939f35498ef91590cd57c534fb6a"
}
Frame {
msec: 2800
- hash: "6b2a6837da878fa8f3811b2045e098b1"
+ hash: "89cbc568600c18c3d7163c3079a3f584"
}
Frame {
msec: 2816
- hash: "7390cfdef1d4bc194b86854b1947f15d"
+ hash: "2a8db5a4cae5258578749a88fbf915ce"
}
Frame {
msec: 2832
- hash: "9e4543fcf65a56edfbcaf46805343071"
+ hash: "ddd9cef18ce748096869dae9c2e23de3"
}
Frame {
msec: 2848
- hash: "3a886e2ed813eb7d44d0cd67eb5dee31"
+ hash: "d9e213af096ce69f75863ed7c39b59f4"
}
Frame {
msec: 2864
- hash: "625baed6cbf3a58b32060810be53d0b6"
+ hash: "69e9bfa09b8f5a1e2d83b77a5c9bc374"
}
Frame {
msec: 2880
- image: "particles.2.png"
+ hash: "ac6878edac61916bf424dcee2d7790e8"
}
Frame {
msec: 2896
- hash: "484666ad104cee644c6a7e8ec0c4b10e"
+ image: "particles.3.png"
}
Frame {
msec: 2912
- hash: "41abe2e2d92b293407141d0333d7d04a"
+ hash: "e60ed277794737b9f5d8c4a575f5b300"
}
Frame {
msec: 2928
- hash: "953c03834bd3b50798b77c0c6bb0f4a8"
+ hash: "5c1a39fa9789064ff0d5ea1fd4c6d187"
}
Frame {
msec: 2944
- hash: "a076463868003c62df3ee5147ffd4660"
+ hash: "64c1593bf33b85593153ac9eeeb7793e"
}
Frame {
msec: 2960
- hash: "b389b5c9ed31816dd562a8f1332d28c9"
+ hash: "dab7df26ba23ed3e750fa6080916f177"
}
Frame {
msec: 2976
- hash: "246706829939a2619d64fad63e424fdb"
+ hash: "5958428d5ab5a379f9bbcc0f86c20d1b"
}
Frame {
msec: 2992
- hash: "d5e644f16bde52c566191a054a1279e5"
+ hash: "65929536b7b8b48958fab7bd1e3ccca5"
}
Frame {
msec: 3008
- hash: "10b2e99d2e08939b75c24a6bbf481858"
+ hash: "cb157ba8c58bb7a8ec357e83e82ab441"
}
Frame {
msec: 3024
- hash: "732a7bb0009f394f0039e09594362c75"
+ hash: "bf36b7c52a3b3b2fb08524131bb4b9e2"
}
Frame {
msec: 3040
- hash: "261f38ce42a8a8c86daadd497ecfad07"
+ hash: "0d2dbb3ba42cad9e8b5833c97dd0cdba"
}
Frame {
msec: 3056
- hash: "8b66ae6261db386d6c4e88d0146db090"
+ hash: "f918a9f5fa6808b545c715dffa2f4838"
}
Frame {
msec: 3072
- hash: "dc8dba79e4466059c29725084cf801bb"
+ hash: "ec11344fb21ee06df6cface390d611d9"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml
index b36a220a75..38506a0c63 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativeparticles/particles.qml
@@ -2,33 +2,34 @@ import QtQuick 1.0
import Qt.labs.particles 1.0
Rectangle {
+ property string skip: "May contain random numbers"
width: 640; height: 480; color: "black"
- Particles { id:particlesAnotEmitting
+ Particles { id:particlesAneverEmitting
y:60; width: 260; height:30; source: "star.png";
lifeSpan:1000; count: 50; angle:70; angleDeviation:36;
velocity:30; velocityDeviation:10; emissionRate: 0
ParticleMotionWander { yvariance:5; xvariance:30; pace:100 }
}
- Particles { id:particlesA
+ Particles { id:particlesA //snowy particles from the top
y:0; width: 260; height:30; source: "star.png";
lifeSpan:1000; count: 50; angle:70; angleDeviation:36;
velocity:30; velocityDeviation:10; emissionRate: 10
ParticleMotionWander { yvariance:5; xvariance:30; pace:100 }
}
- Particles { id:particlesB
+ Particles { id:particlesB //particle fountain bursting every second
y:280; x:180; width:1; height:1; lifeSpan:1000; source: "star.png"
count: 100; angle:270; angleDeviation:45; velocity:50; velocityDeviation:30;
emissionRate: 0
ParticleMotionGravity { yattractor: 1000; xattractor:0; acceleration:25 }
}
- Timer { running: true; interval: 1000; repeat: true; onTriggered: particlesB.burst(200, 2000); }
+ Timer { running: true; interval: 1000; repeat: true; onTriggered: particlesB.burst(200, 2000); }
Column{
x: 340;
- Repeater{
+ Repeater{//emission variance test
model: 5
delegate: Component{
Item{
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.0.png
index 18c8a9e6f0..699f83e981 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.1.png
index e86acb419d..a742a6a56a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.2.png
index 17990b706a..71abae2a9f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.3.png
index 18c8a9e6f0..a6e6b3e398 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.4.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.4.png
index 18c8a9e6f0..9f125c4d5e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.5.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.5.png
index 8636f8f9e2..41d0cd584e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.6.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.6.png
deleted file mode 100644
index fa7c4b622f..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.qml b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.qml
index 54ef8586ec..b75d140e0c 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview-2.qml
@@ -6,713 +6,1033 @@ VisualTest {
}
Frame {
msec: 16
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ image: "test-pathview-2.0.png"
}
Frame {
msec: 32
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 48
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 64
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 80
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 96
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 112
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 128
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 144
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 160
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 176
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 192
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 208
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 224
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 240
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 256
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 272
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 288
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 304
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 320
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 336
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 352
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 368
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 384
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 400
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 416
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 432
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 448
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 464
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 480
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 496
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 512
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 528
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 544
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 560
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 576
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 592
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 608
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 624
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 640
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 656
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 672
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 688
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 260; y: 189
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 704
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
}
Frame {
msec: 720
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 261; y: 188
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 736
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "fe6d7d28dbeef3cfbac3ac3c3e909216"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 262; y: 188
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 266; y: 186
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 752
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "e21cac055208e47e267ac906c7c2ca9c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 283; y: 183
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 768
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "131e094a79edbeea9a1b981592e55abf"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 302; y: 181
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 331; y: 181
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 784
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "73faabf52bd2af8d8b9d28ce21e5e77b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 384; y: 179
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 800
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "359554a95362db1734f606cf677001fc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 432; y: 175
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 432; y: 175
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 816
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "8ef4ecc5c5ba578f0279dc57a6c17ccd"
}
Frame {
msec: 832
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "69c3d9d2700dd395b656b0b09fa63511"
}
Frame {
msec: 848
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "2bbcc36d72c3e9a4b672a46f2aae5076"
}
Frame {
msec: 864
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "125a5f0c8efdf97676edbe379660dcce"
}
Frame {
msec: 880
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "4347a02227207fbf870b6aed76131619"
}
Frame {
msec: 896
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "e08b494c818669bfc48273598574d22e"
}
Frame {
msec: 912
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "186cb5465f45c0df8082ec8cad6ee8b1"
}
Frame {
msec: 928
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "91d04d4469492c3bb2a1ed415dcd904c"
}
Frame {
msec: 944
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "8cc8ef251d68af926a8f300b8666ecfd"
}
Frame {
msec: 960
- image: "test-pathview-2.0.png"
+ hash: "42f64722245f8519386e75ce7e3c0cd9"
}
Frame {
msec: 976
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ image: "test-pathview-2.1.png"
}
Frame {
msec: 992
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "058311da9dcf73a4b4928038334b04b5"
}
Frame {
msec: 1008
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "ea662934ee0c3c8d4dbde3ad49448922"
}
Frame {
msec: 1024
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "01991a871819e7bdbf817580f720ead6"
}
Frame {
msec: 1040
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 562; y: 250
- modifiers: 0
- sendToViewport: true
+ hash: "69a7fe47ae589bcc2607cc42fcea7451"
}
Frame {
msec: 1056
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 557; y: 251
- modifiers: 0
- sendToViewport: true
+ hash: "8240d087b767311e00b7dd4b8726246c"
}
Frame {
msec: 1072
- hash: "1ed6fa56736cf7cb2f99b5d362974463"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 544; y: 254
- modifiers: 0
- sendToViewport: true
+ hash: "cc70c8e79d68f09e6db0dd43b99906b7"
}
Frame {
msec: 1088
- hash: "24f3dd6c49dd8b19cd0c387409405e18"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 534; y: 258
- modifiers: 0
- sendToViewport: true
+ hash: "2bfabef74bc6e1dbf72111838a0e7557"
}
Frame {
msec: 1104
- hash: "08c828e7fdfba4252fa7a9fb06eb728e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 511; y: 267
- modifiers: 0
- sendToViewport: true
+ hash: "66616f01553364c5bd589b781e22163a"
}
Frame {
msec: 1120
- hash: "b76110faf8520f52128b5e1af8f2b838"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 499; y: 272
- modifiers: 0
- sendToViewport: true
+ hash: "58b9de84ebdaabee3917608f2af3bbdb"
}
Frame {
msec: 1136
- hash: "5f56acb5f39ac291cc8e73c0268df214"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 473; y: 281
- modifiers: 0
- sendToViewport: true
+ hash: "964d96b9b783efb1053501f8a6931248"
}
Frame {
msec: 1152
- hash: "840ee0c0d8ea94e22e783a15687f979d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 459; y: 285
- modifiers: 0
- sendToViewport: true
+ hash: "055b77b921a2bac71b6780ab3179f19f"
}
Frame {
msec: 1168
- hash: "69827007bbdf5a360ccc34a016315113"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 446; y: 288
- modifiers: 0
- sendToViewport: true
+ hash: "074904f31b4f7cf0679f0bf7bba30af2"
}
Frame {
msec: 1184
- hash: "2437beb8f9cb39b125611fb186bad820"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 433; y: 290
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 433; y: 290
- modifiers: 0
- sendToViewport: true
+ hash: "f020a490b6800d5b4402ecb9a8bcd436"
}
Frame {
msec: 1200
- hash: "df07c389b26fc191234c70b97bfaa432"
+ hash: "1615bdedf92f91f089e494d893840c4b"
}
Frame {
msec: 1216
- hash: "8d4e23f4e91d0e0df9d87c3171d5971f"
+ hash: "b6892f6a5db6d211f0d1bb2bbe5045bf"
}
Frame {
msec: 1232
- hash: "dd79837aefeabffa7184be07f2a98969"
+ hash: "5f0d903ba682923ac69454026a359ed9"
}
Frame {
msec: 1248
- hash: "2d9bb2aaf4b882902f090ff0c89053c8"
+ hash: "da5bae496a9ad28585151f4c75ee0c9f"
}
Frame {
msec: 1264
- hash: "b1ec9adbb026d8002a7f16fe9a8d56d2"
+ hash: "68f553248f7ca116671782d1c357b552"
}
Frame {
msec: 1280
- hash: "43b23d6e1aeeb36350c3530650e9156f"
+ hash: "5503df04dd7f4c88314f9d309a5b36b4"
}
Frame {
msec: 1296
- hash: "03f231597c4d5010ee71c74217f2483d"
+ hash: "cc48c1f58b553adcb27d60f176e2b910"
}
Frame {
msec: 1312
- hash: "8607c7412a5a1b4ea1522f28c465a83e"
+ hash: "661f546199d8753a7b6f6ccea5928c12"
}
Frame {
msec: 1328
- hash: "671e80e290bec997eb36320ff76fdccf"
+ hash: "0fd70052c100f77bddbad177d9e5573d"
}
Frame {
msec: 1344
- hash: "5f6717112bd45e5ebe194e0f87d12be6"
+ hash: "488e0652c0ed82a014de63a64145c34c"
}
Frame {
msec: 1360
- hash: "ca8e33c7a5428d70ae13cb64e5098a48"
+ hash: "8b6bf2519080a6e4a61fe216f72dfa09"
}
Frame {
msec: 1376
- hash: "86e60eb395f66bbaa1ec07b3e07013c0"
+ hash: "4dab1827f6ce9561297fce8e067df1bd"
}
Frame {
msec: 1392
- hash: "342fa6ddc02d0a793e97a79ba8882415"
+ hash: "b3f4c5cd728eaf2b791612a7fea64e7b"
}
Frame {
msec: 1408
- hash: "a907fbcc47807d4eb6d66e070ea7f2de"
+ hash: "3d01abd0b8a5a62d58a4c09546f212d8"
}
Frame {
msec: 1424
- hash: "04838f8b495bed6d050cbe54d00aad31"
+ hash: "e76796498cf595c60d4b60cc0e320601"
}
Frame {
msec: 1440
- hash: "d485534916473ea6c4612230c5a95421"
+ hash: "1b31e96f2823e78a0c4029e7bc45b9f2"
}
Frame {
msec: 1456
- hash: "1d3da7cc5b9120724645558584f2f0f3"
+ hash: "f75c182dc24f4fabe1034ee494dba2ad"
}
Frame {
msec: 1472
- hash: "c271f057d5f1745e910b2b407c52a4f3"
+ hash: "646c12edadf350405709860381cfced6"
}
Frame {
msec: 1488
- hash: "050d1814a9ced514db6cfd2732eb76be"
+ hash: "b6719406da9f2484fe55e3c69184f86c"
}
Frame {
msec: 1504
- hash: "cfcd21aadfe3fd611caad83920fb2432"
+ hash: "5456857d6d48d064df1cb3f35d8447b5"
}
Frame {
msec: 1520
- hash: "472f900ef8eef74522da3338ce7fa93e"
+ hash: "8d1809b568345e1532fb6d9428fc9729"
}
Frame {
msec: 1536
- hash: "f9d892a81c6ba3b9fc4c6e76082d4fa7"
+ hash: "5cffa76fe09a771a9f62a9f0392f0431"
}
Frame {
msec: 1552
- hash: "a3febe1c3c4585e25a410a91cc34c1fa"
+ hash: "8de59915e874ce829c691a19ac930f28"
}
Frame {
msec: 1568
- hash: "74cd765c9d9a6fb243070b4a56a07e87"
+ hash: "9027bbf8121f70d26530f70423ec05b7"
}
Frame {
msec: 1584
- hash: "469d324abbef017a99bc587bfae622b3"
+ hash: "d3d1d8b9f7b4eb74a8b7ae5cf19a8e20"
}
Frame {
msec: 1600
- hash: "6054ff6e658f0a5f5e313f0a724d9610"
+ hash: "81ffcc0147e3124a3015deb7c0dbfd90"
}
Frame {
msec: 1616
- hash: "67cee7ebe428c9d35f1f28274f3049d5"
+ hash: "ca0c96e908f05c4ee1af1f80d7b432aa"
}
Frame {
msec: 1632
- hash: "ce6c3a1dd726eacbba6306e56121beef"
+ hash: "2bdb6fbf942623856a6963c335794dd2"
}
Frame {
msec: 1648
- hash: "a7d5f703c98c0c8cd32b189a79e1fd05"
+ hash: "18ac264d9ea9b592b0738f1cf732f678"
}
Frame {
msec: 1664
- hash: "41cfd9982767ba904843fb73a5a0ed71"
+ hash: "1ee9adbbae7b97dc050c82b8ed7b0aad"
}
Frame {
msec: 1680
- hash: "388dcde17a820800237d1185372d889f"
+ hash: "b502390c452883ade550d2761bb09d3d"
}
Frame {
msec: 1696
- hash: "3bd72585388f04d55900ccd345cd576e"
+ hash: "31a6f573fbb3f545ee051e2290938004"
}
Frame {
msec: 1712
- hash: "0e5c63b066f2b70000eca7f3aaa3a195"
+ hash: "3be9788228d9e540313e75671319c5b7"
}
Frame {
msec: 1728
- hash: "15199f3e9f00afc76279b5bbffb78d92"
+ hash: "23cbd718154f939d8270674e8f7607f0"
}
Frame {
msec: 1744
- hash: "596ad681a3b96afbc284e3af5fd173cb"
+ hash: "5f7f49b894b80ddd7cdc544a49ec24a2"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 275; y: 170
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 278; y: 171
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1760
- hash: "e5ae2d0245fc5d74c6ea3f7dddd1ca2a"
+ hash: "2a1ddee3d3a0c2a4fffab3988e35e274"
}
Frame {
msec: 1776
- hash: "0d152716f9ebe5f0fae3f5cabb20630f"
+ hash: "2a1ddee3d3a0c2a4fffab3988e35e274"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 279; y: 171
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 282; y: 171
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1792
- hash: "74afbfa464b0d19b53432fa4d5ea2804"
+ hash: "5594b9139480ba1c814509a049f9b6c5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 290; y: 172
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1808
- hash: "c8aa3f4738a8c07cdf2450a24c885ce6"
+ hash: "d8729deb404f5b821264743943adb288"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 292; y: 172
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1824
- hash: "2e4e0003f1b1cb10593075862b972643"
+ hash: "6de642baf7698ec65d48ccf0a1e8e7db"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 294; y: 171
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 297; y: 171
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1840
- hash: "acea518c7da7330ae78daf5fbfd1a423"
+ hash: "f6732999861d1f638484a5aaa9cf0550"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 302; y: 170
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1856
- hash: "0b8d4ea6947b522c6aa9a32d9f16723e"
+ hash: "7cd7c1679838f35556bd4ee4565b7a86"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 305; y: 170
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 308; y: 169
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1872
- hash: "19f2aef82586817ef574a70865060997"
+ hash: "4276a4d9350503603b0c9c98552697b3"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 313; y: 169
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1888
- hash: "115565eb0ba3024dbf15d00ed242c389"
+ hash: "954a47627aee0a1128a78191bf32d984"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 331; y: 165
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1904
- hash: "7e59425c85acf93f5bf55e139c148737"
+ hash: "360a47795f7f9389f82f2f55fa1fe83f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 340; y: 164
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1920
- image: "test-pathview-2.1.png"
+ hash: "19d4284791d0031342ba995bd17a7833"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 354; y: 163
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1936
- hash: "ce96601476cf55f665bef09bb1b038e2"
+ image: "test-pathview-2.2.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 361; y: 161
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 367; y: 160
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1952
- hash: "dc6eaacefe37fc709ac0bef99110f796"
+ hash: "e9cd8fb810ecf39a90af039ead97aaf1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 371; y: 160
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 376; y: 158
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1968
- hash: "82ad9b84425bd8e385524cb052a8fdd4"
+ hash: "42df1a0fbbe7cce5f2359d9e02696299"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 383; y: 157
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1984
- hash: "608000b44ade998e225010d5ea562316"
+ hash: "cc71434d6bd162386b80cb3b7e387116"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 387; y: 157
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 391; y: 157
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2000
- hash: "ec6b4d519b7bafcf5293c2b5e6585007"
+ hash: "a130b471b3903f3f1d77f2306da2b92e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 394; y: 156
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2016
- hash: "9895792ffa929ba6fc600949f11766b6"
+ hash: "5bdb7472e325651e891c115953afdb39"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 395; y: 156
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2032
- hash: "0d2b27c9ca22520b269f93c90de08df4"
+ hash: "ab3a64b41c67a0b8a6c0830c0e0cb797"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 396; y: 156
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2048
- hash: "78a61e4565db709215b419aa56f6efab"
+ hash: "8eb1f2c8c02c2acf4262e05000045649"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 398; y: 156
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2064
- hash: "d6f2aebed062d093c00b27a52f0b14b8"
+ hash: "514220d357c4a26e4aaf9ed20d3f4f33"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 401; y: 155
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2080
- hash: "21b7a438ad1e835b84e5576e52abbe84"
+ hash: "e44526ef273048028d5989fc662eb7e6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 403; y: 155
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 406; y: 155
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2096
- hash: "703e32f43e9a71b8677d6839a0eafe06"
+ hash: "29ac091428a89cfcb4c52c08e0e10327"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 408; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 409; y: 154
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2112
- hash: "b04bea8af558de4120723fc5abd0f36c"
+ hash: "82beb845af88fc9432dc104ff805a146"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 411; y: 153
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2128
- hash: "ac8e91c3b55e058ce8ff08ad6e3af9b6"
+ hash: "371392f267b2c1f4e29963506180e246"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 413; y: 153
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2144
- hash: "54846c8c70b232d05ff5eaf144f6f7d3"
+ hash: "1da06d036cc0a2d2de34eee37b6981c0"
}
Frame {
msec: 2160
- hash: "52281806f5c80512b4bcab7f61139f74"
+ hash: "1da06d036cc0a2d2de34eee37b6981c0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 414; y: 153
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2176
- hash: "a352657ff34ef8962162c00647df343a"
+ hash: "4980de22342d1085e205401090777d24"
}
Frame {
msec: 2192
- hash: "3a0b12d1f8bf5cae8ac06289dd30d52a"
+ hash: "4980de22342d1085e205401090777d24"
}
Frame {
msec: 2208
- hash: "2c6bbcd05719f69b9a67be18de2084a6"
+ hash: "4980de22342d1085e205401090777d24"
}
Frame {
msec: 2224
- hash: "ab091484522587412b0e8aceeb8987ce"
+ hash: "4980de22342d1085e205401090777d24"
}
Frame {
msec: 2240
- hash: "13682b0d45bcbad0f011d08899085b1d"
+ hash: "4980de22342d1085e205401090777d24"
}
Frame {
msec: 2256
- hash: "3c5d6f82eafd1b04edfbcbffbdbe2177"
+ hash: "4980de22342d1085e205401090777d24"
}
Frame {
msec: 2272
- hash: "151803d70b7c3327df32c8602fcd677a"
+ hash: "4980de22342d1085e205401090777d24"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 412; y: 153
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2288
- hash: "78613cec5364fe3f0df84188793d8eac"
+ hash: "e0a52543b976dc998615704c63b1f3e9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 409; y: 154
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2304
- hash: "fc05a3cad43af35230c5ba89f6fd13c5"
+ hash: "82beb845af88fc9432dc104ff805a146"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 401; y: 155
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2320
- hash: "9f826733b300c89eeb80452129505e8b"
+ hash: "e44526ef273048028d5989fc662eb7e6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 399; y: 155
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 396; y: 156
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2336
- hash: "8565efc5c1fb1bdf5629e3bd495bb611"
+ hash: "8eb1f2c8c02c2acf4262e05000045649"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 393; y: 158
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2352
- hash: "3b8f6e8c526ab8cce170277c378a5a69"
+ hash: "442958c3a705745204db96ff9902b7fc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 392; y: 158
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2368
- hash: "07db3bc0ab19e0ca829e89558bacf1a1"
+ hash: "a130b471b3903f3f1d77f2306da2b92e"
}
Frame {
msec: 2384
- hash: "ed8843024c6ac28a8c782839b362149c"
+ hash: "a130b471b3903f3f1d77f2306da2b92e"
}
Frame {
msec: 2400
- hash: "381a9f6564c090613aa2cd0476b95210"
+ hash: "a130b471b3903f3f1d77f2306da2b92e"
}
Frame {
msec: 2416
- hash: "c3fabd891fa8e27fd71df175db383667"
+ hash: "a130b471b3903f3f1d77f2306da2b92e"
}
Frame {
msec: 2432
- hash: "9b441792fdaa9ba9d340fc0c6a9c11bd"
+ hash: "a130b471b3903f3f1d77f2306da2b92e"
}
Frame {
msec: 2448
- hash: "3209c9ba69fa016370e3d56e7e1e37a4"
+ hash: "a130b471b3903f3f1d77f2306da2b92e"
}
Frame {
msec: 2464
- hash: "34da0a01453fbb2571b370257fd35f8e"
+ hash: "a130b471b3903f3f1d77f2306da2b92e"
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 591; y: 245
+ x: 391; y: 159
modifiers: 0
sendToViewport: true
}
@@ -720,43 +1040,43 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 588; y: 245
+ x: 390; y: 159
modifiers: 0
sendToViewport: true
}
Frame {
msec: 2480
- hash: "32e6204a07c493d0a0f9f50773fe8f32"
+ hash: "374dc7c3ea0c93ac93a857a4620bc031"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 585; y: 245
+ x: 377; y: 159
modifiers: 0
sendToViewport: true
}
Frame {
msec: 2496
- hash: "2a1814768ae500ba9c24bc2e3e4de1d5"
+ hash: "0b943f48b39053bfc906a4a47a37d68a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 582; y: 245
+ x: 331; y: 156
modifiers: 0
sendToViewport: true
}
Frame {
msec: 2512
- hash: "7cf6e3c52d12d590beafd061979a49cb"
+ hash: "099fbdf1560dd79b700914863406c904"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 574; y: 245
+ x: 294; y: 154
modifiers: 0
sendToViewport: true
}
@@ -764,483 +1084,463 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 565; y: 246
+ x: 249; y: 151
modifiers: 0
sendToViewport: true
}
Frame {
msec: 2528
- hash: "c66c36642ab7f6c32b45e27de38d23b6"
+ hash: "3aa1614cc49504d19e979ebf190f2970"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 553; y: 246
+ x: 129; y: 141
modifiers: 0
sendToViewport: true
}
Frame {
msec: 2544
- hash: "6e003380cc6fd303ae3b499863225ba5"
+ hash: "837420c71a5010f25cccd05e5e9b3eec"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 538; y: 246
+ x: 9; y: 133
modifiers: 0
sendToViewport: true
}
Frame {
msec: 2560
- hash: "a790259cea2c247493be58c6018435b9"
+ hash: "871349fc09f418717231b8f8e20a7fff"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 523; y: 247
+ x: -48; y: 128
modifiers: 0
sendToViewport: true
}
Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 523; y: 247
+ type: 5
+ button: 0
+ buttons: 1
+ x: -99; y: 126
modifiers: 0
sendToViewport: true
}
Frame {
msec: 2576
- hash: "e6cce7468a27b5063821df8dbaa15c18"
+ hash: "9b6022024aae22ec1f522fd00ed29e9b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -173; y: 129
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: -173; y: 129
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2592
- hash: "ff8386cbe89aeac184f4a75237ef4a14"
+ hash: "8d9410909ae259388fa94b3a60342608"
}
Frame {
msec: 2608
- hash: "1a11a90853b025837b991be40efb78f8"
+ hash: "0ceb355351ac99458ba75776c11b3039"
}
Frame {
msec: 2624
- hash: "17da10de7e2d2fcf125207e2873bdee8"
+ hash: "61ca917ecc8ad4c35b7f2a3b828542bf"
}
Frame {
msec: 2640
- hash: "dfbda435d05903cc3a31f4f8f31e8985"
+ hash: "fd5db933d1d8684b15eb5239d19d8919"
}
Frame {
msec: 2656
- hash: "1f3753e809099f20c6289f150a096935"
+ hash: "13f466a82ee22cabf5cbd2463f55b46a"
}
Frame {
msec: 2672
- hash: "9454afc9d70103e1f1c00eb0ad2ca534"
+ hash: "3b7f7880f5b568a0e45cd0e268822f3a"
}
Frame {
msec: 2688
- hash: "860ab90e2421a0c8faab304915b5e6f2"
+ hash: "cca22501c3b5a2ed4264ba060eeb1a6e"
}
Frame {
msec: 2704
- hash: "600258507426a8c3c89e3591ee9328f1"
+ hash: "efe5258ac5962d1d2bfa4286c1621830"
}
Frame {
msec: 2720
- hash: "0795a607b893da2bdc0970195f3039fd"
+ hash: "141998cff765a4e90836b871f229a1ca"
}
Frame {
msec: 2736
- hash: "e300b9109e242d85537fc3f4461eaf8e"
+ hash: "9d684675fa883d5488194effcb1d8d0a"
}
Frame {
msec: 2752
- hash: "dbb84b38e2bda694f210f133dc133180"
+ hash: "fa87f781048f264ddf447441a714ee50"
}
Frame {
msec: 2768
- hash: "2455e9de47da4db88eef35fea1dc2abe"
+ hash: "61b4992b9c52222345c9ada3148d50f9"
}
Frame {
msec: 2784
- hash: "5f0c3d7e089c921a68813a48f0fd8844"
+ hash: "3e255a634d215746cb95f5d765335ea2"
}
Frame {
msec: 2800
- hash: "e6d9e7d0fdc724a6a1804bc94629cab4"
+ hash: "d64a755e47a502244e7f14f2091f0ca6"
}
Frame {
msec: 2816
- hash: "d177183bcbaa27ad061fd88bd037277d"
+ hash: "582562992b0652f995b439897182e0f8"
}
Frame {
msec: 2832
- hash: "78dd13fa6367abd14374462d89a3d066"
+ hash: "2d69b1a274c262faf5ce9ed3191c7d22"
}
Frame {
msec: 2848
- hash: "41d12e4c362ccc99a1a04b3a09f0e68c"
+ hash: "36c04a2bd58124877a332bb6a262a7e5"
}
Frame {
msec: 2864
- hash: "5112700bf72aacb176e63ef054fce244"
+ hash: "798711925da8f5034039dad86cc1fad1"
}
Frame {
msec: 2880
- image: "test-pathview-2.2.png"
+ hash: "31495157a10c3bb4dd70cfd857fd07e6"
}
Frame {
msec: 2896
- hash: "0257e67512c62ffc42a272fd304e4ed3"
+ image: "test-pathview-2.3.png"
}
Frame {
msec: 2912
- hash: "42cd0a98aa0f3768cf77aac284072fa9"
+ hash: "b81330eb50dbd39f1abcdb8ff1553d08"
}
Frame {
msec: 2928
- hash: "811d27f89b0c434fc49e4280f85c2f27"
+ hash: "ececcb86b76e9cd2f57585bd87e16bef"
}
Frame {
msec: 2944
- hash: "887406c50c666d08e4d98c040efae9a5"
+ hash: "2c37e2c24cf22a334cfcc6f2691ad9fb"
}
Frame {
msec: 2960
- hash: "27e10fa9d82920c7f761465501d44564"
+ hash: "ad0572020d273dbca046357aa0f8bf3b"
}
Frame {
msec: 2976
- hash: "ba67dbe0010ba2aae3ca100886b11553"
+ hash: "51a469e059a5e1a3675db731f55209d3"
}
Frame {
msec: 2992
- hash: "8064db575e2c74c0faf7782adc527a08"
+ hash: "dca7d50a3faab1f049bece34bd16b8c4"
}
Frame {
msec: 3008
- hash: "b7fd5446ad957610ab853e0c597b9a36"
+ hash: "86dc86bafb01fa086caa3b22f9d393d9"
}
Frame {
msec: 3024
- hash: "092b53eb50e91d74db7899328899cfd3"
+ hash: "05754bd86070a6f01bf90ca2b964f695"
}
Frame {
msec: 3040
- hash: "0346065ad603b41db9365987ebe81586"
+ hash: "911ec290ba303f0cac258cbb893bbf78"
}
Frame {
msec: 3056
- hash: "705083f27a338fea544c9806f0d8fcb3"
+ hash: "f27f29249426f46b8fb508372bcbb32d"
}
Frame {
msec: 3072
- hash: "fc29b4888e26deec4c983e487b9bd058"
+ hash: "2f452e2d519f33ee03db67ebd7f69e3b"
}
Frame {
msec: 3088
- hash: "0ff734e0509908eba292c1814f677e5b"
+ hash: "35cf7747a75ea3f727c2fe1dae6136c5"
}
Frame {
msec: 3104
- hash: "7181d9011ddd3ad49ee95fac2e146b12"
+ hash: "6773187693f52a8f2c0e358e379b4d21"
}
Frame {
msec: 3120
- hash: "4478b07b0331bb30e60f23ee74475f73"
+ hash: "abca1f00f7ec60c8c80ba5345898e54b"
}
Frame {
msec: 3136
- hash: "514aa7a4b1230ae1701004f479eeb5f2"
+ hash: "9bee1da64534da97de349e1ee973cc9c"
}
Frame {
msec: 3152
- hash: "56e51f8f36e0f1a5a4b6b21c41151375"
+ hash: "087df06ca720918482f2e29653c7fbac"
}
Frame {
msec: 3168
- hash: "f58216f12e507a91482ded5372f960c7"
+ hash: "5b08911bf0975bd6615bf29294e4b1f5"
}
Frame {
msec: 3184
- hash: "18e8675ca5ea7ade7e32b29f1632e1ff"
+ hash: "dead4bb3768b65418f68bae7dd0bf004"
}
Frame {
msec: 3200
- hash: "13ec0166cc7dd82042e596739c598a1e"
+ hash: "6bfe4c866936d8ae509650419ae12455"
}
Frame {
msec: 3216
- hash: "5cebf9afa912b17ac3161619d238e5da"
+ hash: "7428bdd9609a2594be08fdeac6ff1e17"
}
Frame {
msec: 3232
- hash: "f096b191e347b7e2eab51b6adc1a5aac"
+ hash: "d02f9f693e0ae8c7034bf727064ec28a"
}
Frame {
msec: 3248
- hash: "81cffc13a615ab673172912760863c08"
+ hash: "b6284efd849547bbfefc22ec77d61062"
}
Frame {
msec: 3264
- hash: "e89c7acfc07bc0eb6e9740d545400064"
+ hash: "4b78b647be8e918e85edab0c23b6f882"
}
Frame {
msec: 3280
- hash: "e681f06f57d43a38acb29a3cb45e4384"
+ hash: "c4a02c18ce3574d057e6a54b30efadb3"
}
Frame {
msec: 3296
- hash: "945bfe7808fb620dc3f7ad887183244c"
+ hash: "d1d190010239d0b02a697d1c63c748ab"
}
Frame {
msec: 3312
- hash: "4d1fc53701adce4e4af87c32e6c5a8de"
+ hash: "b198689d11aa59d937297e6fcf675c93"
}
Frame {
msec: 3328
- hash: "c42bbf27e800558fab33bc6e9a0f36b9"
+ hash: "218f3371beea895aefd28aa874012dcc"
}
Frame {
msec: 3344
- hash: "5f48f59812b17a9be466f0601f0ed0df"
+ hash: "1135de1b9a4ebf1d2829546d3c3f3903"
}
Frame {
msec: 3360
- hash: "f3a3f645115077b7aeb66465280b7a16"
+ hash: "773a64cc7bb8e99a25078f348986e28f"
}
Frame {
msec: 3376
- hash: "d1c295b2157001ff1020515f4b2aceaa"
+ hash: "e8ce58aeb18b3f56ebd3d6f61ac94657"
}
Frame {
msec: 3392
- hash: "e5f364e0e4bd75dd04280f6b6f48b8ba"
+ hash: "6de92679c32c7f3e9d9b6ba3a47e65eb"
}
Frame {
msec: 3408
- hash: "f439df4b5907ba0201c0dad934115721"
+ hash: "339b37207af10ad986269e21ab37ff6d"
}
Frame {
msec: 3424
- hash: "2e7eb0e999792f3aa87c63865f68d26b"
+ hash: "ac01f0708800fdfdacec67ac9e80602f"
}
Frame {
msec: 3440
- hash: "45d3ccb3b03adc8323445207d2dca502"
+ hash: "9de89a748b1e18eb6ed94875af6f26de"
}
Frame {
msec: 3456
- hash: "c345f92a25406e33256bfe47dc7f72f3"
+ hash: "d091e4a93c2beafb0ce4b6dff6d5b05f"
}
Frame {
msec: 3472
- hash: "dcb2663d27d644c0b50aa7386aa9d488"
+ hash: "9532271085864d2fde3aa6e572599588"
}
Frame {
msec: 3488
- hash: "ebe4b9eaf39676bcdd968f8517efa222"
+ hash: "d00804b42ab1c1f082a9f394ff4d666e"
}
Frame {
msec: 3504
- hash: "deb3e3e6fdf8fe18de907f88822538e8"
+ hash: "2c745f007353e6f8a7195470ba9492c2"
}
Frame {
msec: 3520
- hash: "30e8ab0e6cf32a45190c4b29e458d858"
+ hash: "b4e952acb734ab1a608297fcb44fbe46"
}
Frame {
msec: 3536
- hash: "059e6f57c2c78a25ab8b515c878231f9"
+ hash: "75ceed3c2ddd557866145393fa50a12f"
}
Frame {
msec: 3552
- hash: "fa7621f338ae187edac5cb69b22e64b3"
+ hash: "8b83b80554dd4a1266184092d380554c"
}
Frame {
msec: 3568
- hash: "bf287cbb0963fc8e575cd95808e1983d"
+ hash: "973bddb1b2f9dbadd40c0de3ca7c3510"
}
Frame {
msec: 3584
- hash: "741dc09e0ae13d6afbdaae701cb699ef"
+ hash: "5691b5bf54b50d4ff0a717873e001c00"
}
Frame {
msec: 3600
- hash: "8dd52007df5585aed4b9737a8314a74d"
+ hash: "8b26b0aa8b06da031354c59d7fb41bf0"
}
Frame {
msec: 3616
- hash: "ddcd945a3a4467d8dd0b7a4197aafed5"
+ hash: "45786c39a10b8e1cf399df98f3fb7ffb"
}
Frame {
msec: 3632
- hash: "015deb5f228fa2f77978315ccca4f4c8"
+ hash: "c6d0be03e167c16566372cc992604dfb"
}
Frame {
msec: 3648
- hash: "e1c960e966873e694837fd98f231cfcb"
+ hash: "8d6e057550632d143faf996a62bbd1cd"
}
Frame {
msec: 3664
- hash: "17a177d37b427d9488e36d19b345a397"
+ hash: "7e3a321b95d5f62f0da2b10324b485b6"
}
Frame {
msec: 3680
- hash: "d4aded08d04f79d50536ecf539c0583d"
+ hash: "e842f18dfd36947b2fa086a4d0bb2ec5"
}
Frame {
msec: 3696
- hash: "72890e9b84acf9df6083e23ab9270da1"
+ hash: "a9359e143dae4113437a43cc00493479"
}
Frame {
msec: 3712
- hash: "313859115de570f8d41f67c4db7cf49e"
+ hash: "2eca61c837cca9beb6d1834eafe8c538"
}
Frame {
msec: 3728
- hash: "98918d73b6d6b375db53470dd72c7b35"
+ hash: "bf2de49dc940043a955a075dcda1b52b"
}
Frame {
msec: 3744
- hash: "ff706517a4d257747893c11a3b059926"
+ hash: "bf2de49dc940043a955a075dcda1b52b"
}
Frame {
msec: 3760
- hash: "73e62664a31232c1a349568c8da6ce64"
+ hash: "bf2de49dc940043a955a075dcda1b52b"
}
Frame {
msec: 3776
- hash: "bed046c6eae90d267e859cd76d3eacfb"
+ hash: "bf2de49dc940043a955a075dcda1b52b"
}
Frame {
msec: 3792
- hash: "4643348fc1b47f0d3244e7e717247953"
+ hash: "bf2de49dc940043a955a075dcda1b52b"
}
Frame {
msec: 3808
- hash: "0305bfc35b5618da19e9eabb3c1b5d2b"
+ hash: "bf2de49dc940043a955a075dcda1b52b"
}
Frame {
msec: 3824
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "bf2de49dc940043a955a075dcda1b52b"
}
Frame {
msec: 3840
- image: "test-pathview-2.3.png"
+ hash: "bf2de49dc940043a955a075dcda1b52b"
}
Frame {
msec: 3856
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ image: "test-pathview-2.4.png"
}
Frame {
msec: 3872
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 3888
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 3904
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 3920
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 3936
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 3952
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 3968
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 3984
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 4000
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 4016
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "bf2de49dc940043a955a075dcda1b52b"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 305; y: 280
+ x: 363; y: 156
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4032
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ msec: 3888
+ hash: "cf72e9ae81dcf833f7a48ffa348b8966"
+ }
+ Frame {
+ msec: 3904
+ hash: "cf72e9ae81dcf833f7a48ffa348b8966"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 305; y: 281
+ x: 363; y: 157
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4048
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ msec: 3920
+ hash: "cf72e9ae81dcf833f7a48ffa348b8966"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 306; y: 281
+ x: 361; y: 158
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 4064
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 308; y: 281
+ x: 358; y: 158
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4080
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ msec: 3936
+ hash: "1cea11ee435caa8515797ee5c4fb79cb"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 310; y: 282
+ x: 352; y: 159
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4096
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ msec: 3952
+ hash: "0da1743b066a73dd19aff6b60ef76830"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 313; y: 283
+ x: 349; y: 160
modifiers: 0
sendToViewport: true
}
@@ -1248,1056 +1548,308 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 317; y: 283
+ x: 342; y: 162
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4112
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ msec: 3968
+ hash: "ddace1df123421675bc9153c4017cdd0"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 321; y: 283
+ x: 327; y: 166
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4128
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ msec: 3984
+ hash: "0c57fe8eef4e41e326dbc82f7b6ae87b"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 328; y: 283
+ x: 320; y: 168
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 4144
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 341; y: 283
+ type: 3
+ button: 1
+ buttons: 0
+ x: 320; y: 168
modifiers: 0
sendToViewport: true
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 347; y: 282
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4000
+ hash: "53968b4b57c09fe0b47e720031c1eed7"
}
Frame {
- msec: 4160
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ msec: 4016
+ hash: "2ab593b498892bf8bacef875e524284f"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 360; y: 281
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4032
+ hash: "da77708f525ab9d1d3f760595a1f9efa"
}
Frame {
- msec: 4176
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ msec: 4048
+ hash: "ce73ecb012139dda8e21cb0dce95582a"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 385; y: 282
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4064
+ hash: "086754b023addbbecf3b361382133279"
}
Frame {
- msec: 4192
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ msec: 4080
+ hash: "adcb9881f246993ff35af24f8750ea2f"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 433; y: 292
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4096
+ hash: "974b423c99316c9a5b2e097bb3a42fcc"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 486; y: 307
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4112
+ hash: "e37263abe79b203cfc4306aa7e5c4853"
}
Frame {
- msec: 4208
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ msec: 4128
+ hash: "0136eaf2704a5af80f8ba26bbb7f51da"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 538; y: 322
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4144
+ hash: "55fe0338e24aa91790f2cd466464acae"
}
Frame {
- msec: 4224
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ msec: 4160
+ hash: "9fa5eaebd34e2af136a2894f360301a5"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 588; y: 336
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4176
+ hash: "c48822e620b788947d8a5ec850d6313b"
}
Frame {
- msec: 4240
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ msec: 4192
+ hash: "ec763070f81e115a5e471923aa539683"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 620; y: 343
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4208
+ hash: "2aa84ad9ef88313a4c63e91bba959920"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 677; y: 354
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4224
+ hash: "14cf7ba825d704c4acc72670fd868d6c"
}
Frame {
- msec: 4256
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ msec: 4240
+ hash: "987bf945cd9c1cfe5bbb17442daa4f26"
}
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 733; y: 362
- modifiers: 0
- sendToViewport: true
+ Frame {
+ msec: 4256
+ hash: "5d4d80565bf4f522c79044d0df55a1fd"
}
Frame {
msec: 4272
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 785; y: 365
- modifiers: 0
- sendToViewport: true
+ hash: "d0a5ec7ff2c5b64c6691888412d0cc6d"
}
Frame {
msec: 4288
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 830; y: 365
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 861; y: 357
- modifiers: 0
- sendToViewport: true
+ hash: "93750528b6f27df22423eb957a07b55f"
}
Frame {
msec: 4304
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 879; y: 346
- modifiers: 0
- sendToViewport: true
+ hash: "65fd0474f918bac61b46fde8ed8e3b59"
}
Frame {
msec: 4320
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 888; y: 335
- modifiers: 0
- sendToViewport: true
+ hash: "cd15f6499863ef84f0ad3b2ff48d6406"
}
Frame {
msec: 4336
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 893; y: 326
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 893; y: 326
- modifiers: 0
- sendToViewport: true
+ hash: "65101124208b062de9718b34fb43425b"
}
Frame {
msec: 4352
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "cb42d683dc5e4020891601afb0a77947"
}
Frame {
msec: 4368
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "88fdddbf2f766ffff7e77c7612d9cfee"
}
Frame {
msec: 4384
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "776c63f1bbc40624d7fedd6141fbdd97"
}
Frame {
msec: 4400
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "24f11b5abb33d8f180a56fca6f15ef45"
}
Frame {
msec: 4416
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "71d9ab083d15b57336ee278793815713"
}
Frame {
msec: 4432
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "b48e64cb1b8b39e7001af4e7c7d22098"
}
Frame {
msec: 4448
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "587ef2440cd021038cc902a3b1839ff4"
}
Frame {
msec: 4464
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "99e0485247c907c5b6e0f8d5dc7b8977"
}
Frame {
msec: 4480
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "3b2496d61eefaa413f0688afed150749"
}
Frame {
msec: 4496
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "0144d27095182c58e50ae1ccdbfaa05e"
}
Frame {
msec: 4512
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "06237be375826d2434dc564dd2eaf165"
}
Frame {
msec: 4528
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "7235d512503b134ac267b7128163eea2"
}
Frame {
msec: 4544
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "5d5f7ff9bd0a4aa316b764bec8524fe0"
}
Frame {
msec: 4560
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "9be01e649140f950cd882af2e8e1e27c"
}
Frame {
msec: 4576
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "0773e5d219d6fc4f2d385fd1bcd17f93"
}
Frame {
msec: 4592
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "32979d6f14c1aeca1f7ac0c5a330bbdc"
}
Frame {
msec: 4608
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "6f87571a59aa358755d80e94894fe7a9"
}
Frame {
msec: 4624
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "0e31c55386e8838f52024c49d4929710"
}
Frame {
msec: 4640
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "7d6c89f5fae7990643687512f2294449"
}
Frame {
msec: 4656
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "f8542ff33dbad93ed51a0801bd8af778"
}
Frame {
msec: 4672
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "8bed907fe5b04eec118ac4e7759386ae"
}
Frame {
msec: 4688
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "d84facac927215d8d83bd9e375fbace1"
}
Frame {
msec: 4704
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "f1c8b7dc9897713487fcc62c697f41ff"
}
Frame {
msec: 4720
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "611c45384b2abd883a4e3ec3bb30ebd3"
}
Frame {
msec: 4736
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4752
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4768
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4784
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4800
- image: "test-pathview-2.4.png"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4816
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ image: "test-pathview-2.5.png"
}
Frame {
msec: 4832
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4848
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4864
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4880
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4896
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4912
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4928
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4944
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4960
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4976
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 4992
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 5008
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 5024
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 5040
- hash: "754f9689239e6154a762a6a1e9e0131b"
+ hash: "63e075c2cac3770e657217989cc7d80f"
}
Frame {
msec: 5056
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5072
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5088
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5104
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5120
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5136
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5152
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5168
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5184
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5200
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5216
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5232
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5248
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5264
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5280
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5296
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5312
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5328
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5344
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5360
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Frame {
- msec: 5376
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 242; y: 280
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5392
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 244; y: 280
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 246; y: 281
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5408
- hash: "754f9689239e6154a762a6a1e9e0131b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 251; y: 282
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5424
- hash: "ba4e61f8de7f078cfc1e5fc8dd3c65f3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 261; y: 282
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5440
- hash: "00389598468dbd1a90cada9543715770"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 300; y: 279
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5456
- hash: "ab020b76bc23554e176bd3a59712c3bc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 350; y: 282
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5472
- hash: "96483c5c51cc851c55166b13617b12ea"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 417; y: 290
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5488
- hash: "1ad679d1400a0f185a380a75840c6a50"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 500; y: 300
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 585; y: 309
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5504
- hash: "b5ed338d402d16a831c0595311350789"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 669; y: 315
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 669; y: 315
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5520
- hash: "bf51ff7b6f264170d9c5700559e03262"
- }
- Frame {
- msec: 5536
- hash: "0d62681e661aad7b67b880e13afeb4de"
- }
- Frame {
- msec: 5552
- hash: "3371739270c458d4ce8a08f2e12d4ba5"
- }
- Frame {
- msec: 5568
- hash: "db271b0ebfa0172d8386ac9afde9f296"
- }
- Frame {
- msec: 5584
- hash: "d64c064ab483c9636b2736c67b2b1a48"
- }
- Frame {
- msec: 5600
- hash: "20a8ccb0ff1c0d5ff606b343f1a32bff"
- }
- Frame {
- msec: 5616
- hash: "5547bb0a4d6b51733829597b9d8d141a"
- }
- Frame {
- msec: 5632
- hash: "1135177a5cb24aa11372653985599775"
- }
- Frame {
- msec: 5648
- hash: "5031ea6ca8ec59155edb7c1f10f77925"
- }
- Frame {
- msec: 5664
- hash: "7c5c1015af23f32c002a24a880201883"
- }
- Frame {
- msec: 5680
- hash: "c1dd3ad07775d74d2e81b830d07543e0"
- }
- Frame {
- msec: 5696
- hash: "ad6651f644be3c6f1ebf340809fe516f"
- }
- Frame {
- msec: 5712
- hash: "1eb69541ae67d9d9193b86a6592de4c2"
- }
- Frame {
- msec: 5728
- hash: "c9c40ec693a421243804efb8f99707f4"
- }
- Frame {
- msec: 5744
- hash: "832884a5102069ca085001156a04e74e"
- }
- Frame {
- msec: 5760
- image: "test-pathview-2.5.png"
- }
- Frame {
- msec: 5776
- hash: "df0c7d73069e1087d34c7a703197cb2a"
- }
- Frame {
- msec: 5792
- hash: "4a8e1f548e48b86140aa1a5fa8b17bd3"
- }
- Frame {
- msec: 5808
- hash: "f79f47e3a0c16a1361fa287a594c4673"
- }
- Frame {
- msec: 5824
- hash: "c26da5ed2e4055f5c172b48163560143"
- }
- Frame {
- msec: 5840
- hash: "0e971cd0c2e25d52b689d4b22509a7d9"
- }
- Frame {
- msec: 5856
- hash: "40bae0ef35772c476cddccc034b7c872"
- }
- Frame {
- msec: 5872
- hash: "ce1fc0faae5e313bc21e024dac3097da"
- }
- Frame {
- msec: 5888
- hash: "ba614972cec0e9fa47cb09f1ba77eefb"
- }
- Frame {
- msec: 5904
- hash: "2266ae29490ae01ff8a2329956c124a7"
- }
- Frame {
- msec: 5920
- hash: "debae0194926cb5af0a8f7fdfb7f08b8"
- }
- Frame {
- msec: 5936
- hash: "10a7111367cfcbe24063b9ee6975e4fc"
- }
- Frame {
- msec: 5952
- hash: "3c0f9e0603e33506f31ff6569d007b97"
- }
- Frame {
- msec: 5968
- hash: "69d92abce3f093cc7610bd715a7396fa"
- }
- Frame {
- msec: 5984
- hash: "befad9882a6af920684d94c74d8d7f78"
- }
- Frame {
- msec: 6000
- hash: "10632052ac53504bd36687ba7aa7ebc1"
- }
- Frame {
- msec: 6016
- hash: "af4053320c12cbcc6f0e7e321dba1c83"
- }
- Frame {
- msec: 6032
- hash: "4560c5fcef9d630d744e80dc46947b9d"
- }
- Frame {
- msec: 6048
- hash: "012ee780ed98131321aaa241a2599c5f"
- }
- Frame {
- msec: 6064
- hash: "25d3fb9d44bc2be3b86a5451d8ffaec2"
- }
- Frame {
- msec: 6080
- hash: "09c5cbff81a5c9fae40ec29b936ee52b"
- }
- Frame {
- msec: 6096
- hash: "27a0b1d2ea2fc8729e5542c6462c1815"
- }
- Frame {
- msec: 6112
- hash: "c6f347c942aed190ebee077b5bd0888c"
- }
- Frame {
- msec: 6128
- hash: "029d78844bd72acb310bd2887489bdf0"
- }
- Frame {
- msec: 6144
- hash: "3af16ab398f1515e90e81460ac061a74"
- }
- Frame {
- msec: 6160
- hash: "0151ca050722645e2899919f79f6aa0b"
- }
- Frame {
- msec: 6176
- hash: "eead61dfc1851bc9fba3b4bca510af6a"
- }
- Frame {
- msec: 6192
- hash: "da822098c606556ad8683316f5a821ab"
- }
- Frame {
- msec: 6208
- hash: "ee47fc2bcf2264f5799a76308fbf2b65"
- }
- Frame {
- msec: 6224
- hash: "81b208b84ca887d35cda79b5c0e4cd4e"
- }
- Frame {
- msec: 6240
- hash: "fd52ccaddcb79a2dfa12bb57640a3610"
- }
- Frame {
- msec: 6256
- hash: "b187e8fcd0a777657a733c260aaaf557"
- }
- Frame {
- msec: 6272
- hash: "2cfe47a86bf9df3704002288b6249ed9"
- }
- Frame {
- msec: 6288
- hash: "b79b81706f62789a15557ac1a017addf"
- }
- Frame {
- msec: 6304
- hash: "77a84eb447fe7034783678f6903ff76d"
- }
- Frame {
- msec: 6320
- hash: "82529385d3072812fa737193914ece1c"
- }
- Frame {
- msec: 6336
- hash: "a7ccfa6c8aebf2016f2f12045d2f1abe"
- }
- Frame {
- msec: 6352
- hash: "486d38e7ea6a5cf13f2ecd1c6919ece7"
- }
- Frame {
- msec: 6368
- hash: "6c5bd377d2289ec88f969e961f1dcf65"
- }
- Frame {
- msec: 6384
- hash: "92e20565fbcf8c7c9a67726f3a0dd41f"
- }
- Frame {
- msec: 6400
- hash: "0fcd995a26262b875440d0d9f03d16c4"
- }
- Frame {
- msec: 6416
- hash: "f679759eddca739764bd2816ee53ef31"
- }
- Frame {
- msec: 6432
- hash: "adffd1da9b750df3d9f48820a2235c0b"
- }
- Frame {
- msec: 6448
- hash: "e0f8730acf7a6802ade228f95d700c08"
- }
- Frame {
- msec: 6464
- hash: "2c5209c3715bb9f39ac23a8b32a17ef9"
- }
- Frame {
- msec: 6480
- hash: "741694ef4cbd3477a8e13ba89fc9d607"
- }
- Frame {
- msec: 6496
- hash: "e88d6a61acb3fde6b441c2e718a0c2fb"
- }
- Frame {
- msec: 6512
- hash: "b91863800e6ab967616d68def388d5d5"
- }
- Frame {
- msec: 6528
- hash: "4c28a99236c351a2e3e3301c0b5bbba8"
- }
- Frame {
- msec: 6544
- hash: "6affb524d7f63fef94d29629a148be04"
- }
- Frame {
- msec: 6560
- hash: "f7823d25adf673117f010738d977b787"
- }
- Frame {
- msec: 6576
- hash: "dfb930f3db30ec53c8e9a1aa5d9056e4"
- }
- Frame {
- msec: 6592
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6608
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6624
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6640
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6656
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6672
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6688
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6704
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6720
- image: "test-pathview-2.6.png"
- }
- Frame {
- msec: 6736
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6752
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6768
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6784
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6800
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6816
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6832
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6848
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6864
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6880
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6896
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6912
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6928
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6944
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6960
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6976
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 6992
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7008
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7024
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7040
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7056
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7072
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7088
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7104
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7120
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7136
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7152
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7168
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7184
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7200
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7216
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7232
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7248
- hash: "57269234dc01b66f6aeb841c328c06b5"
- }
- Frame {
- msec: 7264
- hash: "57269234dc01b66f6aeb841c328c06b5"
+ hash: "34967fb7248c860643bdc01e0135309f"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.0.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.0.png
index 16a7e108b7..af0e7817b8 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.1.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.1.png
index 116ce88627..6f1878f221 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.2.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.2.png
index 13896d4e0a..97f09f7656 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.3.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.3.png
index 5d180031e2..878875ada4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.4.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.4.png
index cd3387f99f..cdbe606b10 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.5.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.5.png
index 9f31c69893..7b78f7af50 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.6.png b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.6.png
new file mode 100644
index 0000000000..d7b5943f34
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.qml b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.qml
index 06d32b6128..bc900c69af 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/data/test-pathview.qml
@@ -6,381 +6,477 @@ VisualTest {
}
Frame {
msec: 16
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ image: "test-pathview.0.png"
}
Frame {
msec: 32
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 48
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 64
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 80
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 96
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 112
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 128
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 144
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 160
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 176
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 192
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 208
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 224
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 240
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 256
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 272
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 288
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 304
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 320
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 336
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 352
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 368
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 384
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 400
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 416
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 432
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 448
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 464
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 480
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 496
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 512
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 528
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
}
Frame {
msec: 544
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 363; y: 161
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 560
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 362; y: 160
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 576
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b9fed927475786f6f7aefc554cfc1afe"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 361; y: 159
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 357; y: 159
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 592
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "731c8547a72c64ac86aec87c0a9a12cb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 348; y: 157
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 330; y: 157
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 608
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "d9d7dd7ea05499f028964fdd11af0fe6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 286; y: 161
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 624
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "361879f350c448a484b71a9e7a42b87f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 254; y: 163
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 640
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "998da4b3e36ee3e17deb2b5a097661da"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 240; y: 165
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 225; y: 167
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 656
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "1b3f9758bd9842cc9545b494499f87c4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 191; y: 171
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 672
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "7e87f7c233dad50549e4bdafe10bb48e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 174; y: 171
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 153; y: 171
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 153; y: 171
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 688
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "01ceb2fea81f2192ab11d7d6e1df879a"
}
Frame {
msec: 704
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "9afa862248bd527e07374a5c2f2036a1"
}
Frame {
msec: 720
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "e06439495148bfbf059cfe2b5df22840"
}
Frame {
msec: 736
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b206a28d6f3be8cba9595849328b27b8"
}
Frame {
msec: 752
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "646e4529bf554dceee0140ec56a02d1c"
}
Frame {
msec: 768
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "31bdcf1f178d65e033e23dfbdcb9dc5f"
}
Frame {
msec: 784
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b4e897356814ca2dddbc3644b1782f36"
}
Frame {
msec: 800
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "669e5d682aae8727640e0e0f4e855a60"
}
Frame {
msec: 816
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "892007b1a379c617412502499df92d01"
}
Frame {
msec: 832
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "f4d66daa2d428aa712a73ded2de7a361"
}
Frame {
msec: 848
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "0c21e69bed6dc2d6b7c23c20714aca67"
}
Frame {
msec: 864
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "189909bdbfeb1f02ad527fbc438d567d"
}
Frame {
msec: 880
- hash: "01b9c877f51b878ed262943aedcf89b4"
+ hash: "b2fcbc0657474e1b6d27e1f2f93be35b"
}
Frame {
msec: 896
- hash: "01b9c877f51b878ed262943aedcf89b4"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 623; y: 222
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 621; y: 222
- modifiers: 0
- sendToViewport: true
+ hash: "4407d7ad1b6a40b2355145aee136ff15"
}
Frame {
msec: 912
- hash: "1c2d4a99e7e2f5e945c05857d6a463a2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 609; y: 230
- modifiers: 0
- sendToViewport: true
+ hash: "347ada687af0a97f0a862a1f3a1132be"
}
Frame {
msec: 928
- hash: "d69c0678ce2025a8921b089311d219ea"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 583; y: 248
- modifiers: 0
- sendToViewport: true
+ hash: "db6217ff0194c5a3f9ca9ea7e3b3dfd8"
}
Frame {
msec: 944
- hash: "55a852b268151d660e4945da88b04022"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 559; y: 258
- modifiers: 0
- sendToViewport: true
+ hash: "8a94ca0ee93daaa1bdcdbfc8a80713c1"
}
Frame {
msec: 960
- image: "test-pathview.0.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 547; y: 264
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 547; y: 264
- modifiers: 0
- sendToViewport: true
+ hash: "ab24d0c8545518cbaff876976247be2c"
}
Frame {
msec: 976
- hash: "55ab61911405e762b39b38d1371ef845"
+ image: "test-pathview.1.png"
}
Frame {
msec: 992
- hash: "be3de45165f2f0916f734fecf3f48c47"
+ hash: "1535dea92038cf87395a616841fd9bf6"
}
Frame {
msec: 1008
- hash: "0a523daec6b591a2b5030c6c0b95cb24"
+ hash: "1535dea92038cf87395a616841fd9bf6"
}
Frame {
msec: 1024
- hash: "22da168e523fa385cce1f2e6a05e1332"
+ hash: "1535dea92038cf87395a616841fd9bf6"
}
Frame {
msec: 1040
- hash: "464cb37780cf126df6dad4169445c7bc"
+ hash: "1535dea92038cf87395a616841fd9bf6"
}
Frame {
msec: 1056
- hash: "666b06a0fbe2d10fbf3e15883a166c60"
+ hash: "1535dea92038cf87395a616841fd9bf6"
}
Frame {
msec: 1072
- hash: "223732cd526e09155ca99c80780bc3fa"
+ hash: "1535dea92038cf87395a616841fd9bf6"
}
Frame {
msec: 1088
- hash: "c74cc48188b05c5426a6b955ed9f09a3"
+ hash: "1535dea92038cf87395a616841fd9bf6"
}
Frame {
msec: 1104
- hash: "8d09a95ab09f87277fcc727e9c5da0fb"
+ hash: "1535dea92038cf87395a616841fd9bf6"
}
Frame {
msec: 1120
- hash: "71b7d4ec45270158ba4ca96817d8f231"
+ hash: "1535dea92038cf87395a616841fd9bf6"
}
Frame {
msec: 1136
- hash: "4847a1e7d792ed58e3476112b02c6fab"
+ hash: "1535dea92038cf87395a616841fd9bf6"
}
Frame {
msec: 1152
- hash: "ef444a3a960bdc176e004b949e5c89ce"
+ hash: "1535dea92038cf87395a616841fd9bf6"
}
Frame {
msec: 1168
- hash: "1ebf4badb7f4ef3938868a74740fcbce"
+ hash: "1535dea92038cf87395a616841fd9bf6"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 378; y: 161
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1184
- hash: "022918cd4b54750b0ad28bcb00108f51"
+ hash: "1535dea92038cf87395a616841fd9bf6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 376; y: 161
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1200
- hash: "1ea398b2b7c52b35981c98b60d5d7a02"
+ hash: "1535dea92038cf87395a616841fd9bf6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 374; y: 161
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 373; y: 161
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 1216
- hash: "05d7619ed0154fa414686522a7ca86c4"
+ hash: "c612bb9906f18786ef7cc6f4e56de218"
}
- Frame {
- msec: 1232
- hash: "03274e26ea57d1264f21d306533476ef"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 367; y: 160
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 1248
- hash: "5109372d6c62225aaf971aa53c708bee"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 353; y: 160
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 1264
- hash: "71f10446437963eccb87dd40c172118f"
+ msec: 1232
+ hash: "ffec210dd863ed32a780506f61b06056"
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 708; y: 240
+ x: 328; y: 157
modifiers: 0
sendToViewport: true
}
@@ -388,55 +484,59 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 707; y: 240
+ x: 303; y: 155
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 1280
- hash: "e47426491548162622f9a281c3d062ec"
+ msec: 1248
+ hash: "9613c658f267d19b84d6e7ef2a676fed"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 685; y: 252
+ x: 280; y: 153
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 1296
- hash: "e889fba64d9f94fe18c3750dd6ad9d00"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 635; y: 264
+ x: 253; y: 151
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 1312
- hash: "7fe200757a6bf752906d195fe341be14"
+ msec: 1264
+ hash: "8c5dd8d0f9f434530b20e14a84af9f46"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 569; y: 280
+ x: 230; y: 151
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 211; y: 151
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 1328
- hash: "aa1f4147dc3fd66f6d9e2605d0759951"
+ msec: 1280
+ hash: "a956e8e9ca8958c387f8f5ce374cdec9"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 533; y: 294
+ x: 193; y: 153
modifiers: 0
sendToViewport: true
}
@@ -444,75 +544,99 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 533; y: 294
+ x: 193; y: 153
modifiers: 0
sendToViewport: true
}
Frame {
+ msec: 1296
+ hash: "712e865d894f179cfd9d86b08e60811a"
+ }
+ Frame {
+ msec: 1312
+ hash: "db5c1f2af2e72ff4edce83cb342b5263"
+ }
+ Frame {
+ msec: 1328
+ hash: "834f0aa26c66234491468c1b27a2d329"
+ }
+ Frame {
msec: 1344
- hash: "2b7163ea45860cf81f208c2b68c418b5"
+ hash: "78a2a4b60db730a7367bc77e1dfc1a1b"
}
Frame {
msec: 1360
- hash: "a89bd1204fb17d9d8ce7b7f4279e9b1f"
+ hash: "a8ff2277b5f7d515bc5a9af1f0e77197"
}
Frame {
msec: 1376
- hash: "683e52637fd5d96ded35f5ade9679822"
+ hash: "e05d730624025000b831860f5b99e8ac"
}
Frame {
msec: 1392
- hash: "2aa16f06e8bed201746558b1003f7d63"
+ hash: "54aa124492ea742e4327f1d2b45ab620"
}
Frame {
msec: 1408
- hash: "f2e40e75ddb8004917ae5b8cf144a322"
+ hash: "bc700bee41ac384a2555723b010e9041"
}
Frame {
msec: 1424
- hash: "0f7f64373b065a454c02c32c52a5ef79"
+ hash: "26f66098c505cea4715a89b6a2232759"
}
Frame {
msec: 1440
- hash: "fb4fbd2b3696bfb6135797b1f0158b5c"
+ hash: "00f3255a3ead315410d8c0d338779689"
}
Frame {
msec: 1456
- hash: "7a8eafad65ff191a97dcf910393ba4e4"
+ hash: "154e7d86d7602ebba38a0d63b211894d"
}
Frame {
msec: 1472
- hash: "3362deae62ba96853d85827f21cec589"
+ hash: "87cf2bff69ebd75af69d0a7c7f668b07"
}
Frame {
msec: 1488
- hash: "0653838fa3fb5b32e561adc20becc9d2"
+ hash: "f221b870ecccb1669b6223e5431c31d1"
}
Frame {
msec: 1504
- hash: "482e78e6b54cabe007f7e7f4f27a07ee"
+ hash: "40a9d4c522d9fd831be2ca698ac10670"
}
Frame {
msec: 1520
- hash: "b51f60864896808c6e41d8a0a990676d"
+ hash: "7ad47479d99fd4d9fde96fef242bdc20"
}
Frame {
msec: 1536
- hash: "d77e59d69b7c21c82bce9a25d548358c"
+ hash: "b91912801c790d849399306c693a4d33"
}
Frame {
msec: 1552
- hash: "b3dddbb1eee0e2f222434511073c4620"
+ hash: "e5c8d361abcbc15df0b0b82728cb5b84"
}
Frame {
msec: 1568
- hash: "d5e0d191582291b269b9e93241d9ac03"
+ hash: "3f2f82c925e93d4593581cdba16f361f"
+ }
+ Frame {
+ msec: 1584
+ hash: "7007fd0595c188a9a5b3ff31b0514aa5"
+ }
+ Frame {
+ msec: 1600
+ hash: "118661091df765ae35c152c7fe818029"
+ }
+ Frame {
+ msec: 1616
+ hash: "0a8edd2a35f7921ced6e3aa7e571bc4b"
}
Mouse {
type: 2
button: 1
buttons: 1
- x: 637; y: 218
+ x: 339; y: 152
modifiers: 0
sendToViewport: true
}
@@ -520,27 +644,39 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 621; y: 240
+ x: 334; y: 152
modifiers: 0
sendToViewport: true
}
+ Frame {
+ msec: 1632
+ hash: "ef734ce4d7e1aee19a78b743c9923f90"
+ }
Mouse {
type: 5
button: 0
buttons: 1
- x: 613; y: 248
+ x: 245; y: 152
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 161; y: 148
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 1584
- hash: "8c12000da88abb70cbc370d2a2ca21d7"
+ msec: 1648
+ hash: "09a9925d5ec2fd03cfbf469bc22bf201"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 551; y: 288
+ x: 139; y: 150
modifiers: 0
sendToViewport: true
}
@@ -548,379 +684,335 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 551; y: 288
+ x: 139; y: 150
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 1600
- hash: "2854533fd50f5ebb8fc43cf0041883e4"
- }
- Frame {
- msec: 1616
- hash: "0b3782e842a6c54585d6a266314025d8"
- }
- Frame {
- msec: 1632
- hash: "02409885b82ebac931df18d8e23238d7"
- }
- Frame {
- msec: 1648
- hash: "edcbd91ad267c125c431367be3e4a8a3"
- }
- Frame {
msec: 1664
- hash: "47641fd7ec919b3c041c5acc04b0d083"
+ hash: "6babcbf5582d5ed8f0cf52e233867055"
}
Frame {
msec: 1680
- hash: "ea8f026fee0fba2c27a8df1e1e531acb"
+ hash: "94dae9d52f3523e17f3f0e59ca24a069"
}
Frame {
msec: 1696
- hash: "e2e8a398760be380f9b2b7dbcb03c0e8"
+ hash: "0d417d25893a0454a729f5c23a2a6c28"
}
Frame {
msec: 1712
- hash: "a1767f2e10f9ab87050ef246a4a29bbb"
+ hash: "afd1bbca1dcfea8d1f0a340d86b07fa8"
}
Frame {
msec: 1728
- hash: "f60cccf793bd6d356d69b1394638a201"
+ hash: "97e98982742b94dba8b6cb59397bcb66"
}
Frame {
msec: 1744
- hash: "31dc8c50a99164c19445a089223c8813"
+ hash: "a0ad8cbbd0daa0afd3831e8a071b9a0e"
}
Frame {
msec: 1760
- hash: "78ff726b7da5ba03fa74f66b39bf1006"
+ hash: "f71826bcd6ea91d2f64d627a390c379d"
}
Frame {
msec: 1776
- hash: "6f8a540dccf7182f6aed8903a0afb109"
+ hash: "7699da01cf1ee9a7f404ab053241b530"
}
Frame {
msec: 1792
- hash: "c914c500507b9c7180dcf25e985135e9"
+ hash: "6aba727ecc562d7b5555eae427e6978b"
}
Frame {
msec: 1808
- hash: "39702ce38bcfca46ef3a8dbb7299c725"
+ hash: "ef9c6daa5b04b0be9159594e04524fba"
}
Frame {
msec: 1824
- hash: "969b71ee88a1d244e62af1cecc105234"
+ hash: "6293ede5de83f3b01a3b4d8d87648089"
}
Frame {
msec: 1840
- hash: "11c8397fb9d7b993761b08ba8c9958e5"
+ hash: "c3b34d8592f88622cad0f9353d08e739"
}
Frame {
msec: 1856
- hash: "79ad4a90ab449e3232db993b30786d89"
+ hash: "880f3cb9d5dbe06cdf17e3a953d4562d"
}
Frame {
msec: 1872
- hash: "daf979fd50e0860bf30f377a059d89dc"
+ hash: "ed381ce920863a5a6627f383a88ea2fe"
}
Frame {
msec: 1888
- hash: "5412e7524dc22e8064c8a8c684092802"
+ hash: "b5bc40b8c4abb6458aeb67eda73507b6"
}
Frame {
msec: 1904
- hash: "2c3bea8bf10ecf6c19b93e94cb7ac0ea"
+ hash: "482cb61b7fac4b1654483f846b8b6717"
}
Frame {
msec: 1920
- image: "test-pathview.1.png"
+ hash: "e1a4a16d2cf5132a9fbb0869ed6082d9"
}
Frame {
msec: 1936
- hash: "bbfa2f8aaab0abaff9d771d5ec546d96"
+ image: "test-pathview.2.png"
}
Frame {
msec: 1952
- hash: "be2811bf369bc9dd8c5d9deec3b84788"
+ hash: "f8874aaab1e65cf9b86d6b5174c3d2c8"
}
Frame {
msec: 1968
- hash: "779838915f48eb917d36c3f2b65eedae"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 595; y: 236
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 565; y: 256
- modifiers: 0
- sendToViewport: true
+ hash: "d8490adeaa793352b812e832f4cb079a"
}
Frame {
msec: 1984
- hash: "d20b5fe14b47dfb1e73f8ef44802da11"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 507; y: 286
- modifiers: 0
- sendToViewport: true
+ hash: "85fdb99926ba34a25fa964df11af9a5a"
}
Frame {
msec: 2000
- hash: "5312dd1f9d309ab5134b8bb67685488e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 461; y: 288
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 461; y: 288
- modifiers: 0
- sendToViewport: true
+ hash: "ad137a75981c181838d97cbe313063ac"
}
Frame {
msec: 2016
- hash: "8d6b6cbb74cc654bc5aff10a807dd3cb"
+ hash: "bfa5cecfc0058b56ca66aa816ea098dc"
}
Frame {
msec: 2032
- hash: "dee717869177d1de4a26599b120f1c3d"
+ hash: "53fe3960c2f332eb099fedd8421fcc94"
}
Frame {
msec: 2048
- hash: "2b2c60f42024784ceed5c68505dfa5ca"
+ hash: "61b99ff526560c1589d2fc8737af2af2"
}
Frame {
msec: 2064
- hash: "1a6a108fd6cf607ec08dbedd804d12f7"
+ hash: "f9dd63709bed985f5d691d27c0d32484"
}
Frame {
msec: 2080
- hash: "10bc4d0a1dc400fedc9a68b68c6525fd"
+ hash: "964c20ada9ad9e83edd9b429bf681b83"
}
Frame {
msec: 2096
- hash: "dc6a4abfbfb38e90af2308320d0f795b"
+ hash: "997bc44a319c8ce8212387f7564c4005"
}
Frame {
msec: 2112
- hash: "82c61d8461001c19af7c2b458d427e0b"
+ hash: "892eda6e7446321483ffb1dbf44a0432"
}
Frame {
msec: 2128
- hash: "e455d9ccffedaa708532bb69ad15871e"
+ hash: "62068dca6da7227882b6c3bc147c6f24"
}
Frame {
msec: 2144
- hash: "b9c6169ad08724fc70df30668dfe7509"
+ hash: "2cd0c351c53234d4bbf4d2c74d313f59"
}
Frame {
msec: 2160
- hash: "a3fe5862be470470854d4157c1c027db"
+ hash: "cf812f971bb4f8ab3116cf2b14c325df"
}
Frame {
msec: 2176
- hash: "6a3804bd5f4fd5f1c424615ceb620525"
+ hash: "be296bd9ab4c38d95e6d7d445d8c7f68"
}
Frame {
msec: 2192
- hash: "df0d72248310654a9cf47e707fe9e414"
+ hash: "536d0214c8c3f69ce8d4e1585128b2b8"
}
Frame {
msec: 2208
- hash: "beb19f2b2979ab40b5ccf8c0fbe9b72f"
+ hash: "f71452a0a6ef80758800d67e601a162b"
}
Frame {
msec: 2224
- hash: "be3449b49048b764bea68a76baa0fc75"
+ hash: "e57c099beb70d0a4ca2cbc94a2c3887e"
}
Frame {
msec: 2240
- hash: "4a615cae9c8f85e7b8aecd4c9014f1eb"
+ hash: "84cea22f64ff8b8838a7db0b19af1a4e"
}
Frame {
msec: 2256
- hash: "b3c274f1a9d65684c0a55a544bf77810"
+ hash: "04aa0d5d089779977f569d0f849b97dd"
}
Frame {
msec: 2272
- hash: "31456b01fcfb60a77d2b9662c2fff7b6"
+ hash: "85b52e125142d52d531132939930dd93"
}
Frame {
msec: 2288
- hash: "2be5cf3f6158bf09659acc68b134846f"
+ hash: "19bc7b318c21a6ce2be8ebde2e624fc3"
}
Frame {
msec: 2304
- hash: "5f9c725a11305f3e6c48ab332faabf50"
+ hash: "9cc744249cb031f0400e87893c1642af"
}
Frame {
msec: 2320
- hash: "277c2733c7245d045665198984b74224"
+ hash: "a834706bbf573f37cf9f59c6c6cbbfa5"
}
Frame {
msec: 2336
- hash: "265b8342bc747fb43a5291df0f4ce48b"
+ hash: "8db3eea9d47a162d8b0ee9cd18e194f3"
}
Frame {
msec: 2352
- hash: "803b49ec31955b481009a51c64bcce65"
+ hash: "29da9b8da8f572ace93250abb8626a90"
}
Frame {
msec: 2368
- hash: "a717b30ad50746cdf0fae82212ac88f0"
+ hash: "179b74316d885f9ee41066b9c475b57f"
}
Frame {
msec: 2384
- hash: "65f46c8e69f24d060b5da6f866867f51"
+ hash: "35464509ef5a9919af46a30d40c3edc7"
}
Frame {
msec: 2400
- hash: "52f9e5d1106d00a950470076a50e4239"
+ hash: "aadec42355d38d149421ef6c93783e69"
}
Frame {
msec: 2416
- hash: "058a787aae2845308e68bb93f6a811e4"
+ hash: "cb8609791270e8e3c13da4579f85595f"
}
Frame {
msec: 2432
- hash: "621985111c25994c0c0fe3635be67c1d"
+ hash: "93e81e036a1bc30cc63ce703f8f43a34"
}
Frame {
msec: 2448
- hash: "2949b8185cefbaaf587a043d805cc670"
+ hash: "d08d18adf9ca92cd6597c2f51ae90383"
}
Frame {
msec: 2464
- hash: "d4a03127ae5047184c736617deeac92d"
+ hash: "f54ec103787023647beaa4b992340385"
}
Frame {
msec: 2480
- hash: "876c6c5ac4500de6234423bf6f3511d6"
+ hash: "61c9f72d78fce0b966a278abacc97ce6"
}
Frame {
msec: 2496
- hash: "eb08aa172cfbdb696b6f672dfa7b6fff"
+ hash: "5b0500ed0562b11280c3424412f74188"
}
Frame {
msec: 2512
- hash: "a60c13b8f46faa0a35dbb539010550d4"
+ hash: "b8ee7bc1e94ce35bf946ee71fa03d72c"
}
Frame {
msec: 2528
- hash: "c6f8786506e0326a5734ab8aea782f95"
+ hash: "60ec6aceeaf82fc730c3df55b5c06f90"
}
Frame {
msec: 2544
- hash: "a49927f2aae24e692fc379f0ab6f4ee9"
+ hash: "01cc732bad8b28483e79115c117ee26d"
}
Frame {
msec: 2560
- hash: "2f1a2d50e1090b34ad1ea6a36eec4fe0"
+ hash: "b39c8d373524ba679c8567d16e6c5fe0"
}
Frame {
msec: 2576
- hash: "a5ee24d37be960a88684748b73dc75fe"
+ hash: "2474476dfd021ff485c3a127bd22367e"
}
Frame {
msec: 2592
- hash: "28682389395b47ae33ceec1ba3beef4e"
+ hash: "1342a1a0f6bc02159de1be058cf2411b"
}
Frame {
msec: 2608
- hash: "1869667b50b76d99716dd0d7849901fa"
+ hash: "a9721b64b9a5526335937245302249ae"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 72; y: 121
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 2624
- hash: "2806ee1005193f55825aa6147583985f"
+ hash: "109dc503ee86e731f52d25908daf5d36"
}
Frame {
msec: 2640
- hash: "c00589dce90e3ab2f2c8890f30f80d3d"
+ hash: "94998dbab6792c518ca1f37f060f1d4b"
}
Frame {
msec: 2656
- hash: "1f1881f0a29525e380ecbcce15499fa4"
+ hash: "3146ba4e63fa74279939b8de935f067c"
}
- Frame {
- msec: 2672
- hash: "2a4c3ff764545a3899c864680f22f0a3"
- }
- Frame {
- msec: 2688
- hash: "2685820514ce5d5729f3761b1eaa1682"
- }
- Frame {
- msec: 2704
- hash: "2685820514ce5d5729f3761b1eaa1682"
- }
- Frame {
- msec: 2720
- hash: "2685820514ce5d5729f3761b1eaa1682"
- }
- Frame {
- msec: 2736
- hash: "2685820514ce5d5729f3761b1eaa1682"
- }
- Frame {
- msec: 2752
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 73; y: 121
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 2768
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 74; y: 122
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 2784
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ msec: 2672
+ hash: "1aaea4143076bf8ba8190d94fcc89e64"
}
- Frame {
- msec: 2800
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 79; y: 123
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 2816
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 95; y: 129
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 2832
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ msec: 2688
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
}
- Frame {
- msec: 2848
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 126; y: 138
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 2864
- hash: "2685820514ce5d5729f3761b1eaa1682"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 161; y: 148
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 2880
- image: "test-pathview.2.png"
+ msec: 2704
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 310; y: 277
+ x: 194; y: 158
modifiers: 0
sendToViewport: true
}
@@ -928,43 +1020,39 @@ VisualTest {
type: 5
button: 0
buttons: 1
- x: 324; y: 279
+ x: 239; y: 169
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2896
- hash: "ce00c77e8ff1768b41f5585344af1c58"
+ msec: 2720
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 330; y: 281
+ x: 280; y: 178
modifiers: 0
sendToViewport: true
}
- Frame {
- msec: 2912
- hash: "24f401275fa6ec7d26234609792fe0b8"
- }
Mouse {
type: 5
button: 0
buttons: 1
- x: 346; y: 283
+ x: 313; y: 185
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 2928
- hash: "d3c74863c627a1b922a6b6c4a24f8c40"
+ msec: 2736
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 358; y: 285
+ x: 344; y: 191
modifiers: 0
sendToViewport: true
}
@@ -972,864 +1060,1508 @@ VisualTest {
type: 3
button: 1
buttons: 0
- x: 358; y: 285
+ x: 344; y: 191
modifiers: 0
sendToViewport: true
}
Frame {
+ msec: 2752
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
+ }
+ Frame {
+ msec: 2768
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
+ }
+ Frame {
+ msec: 2784
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
+ }
+ Frame {
+ msec: 2800
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
+ }
+ Frame {
+ msec: 2816
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
+ }
+ Frame {
+ msec: 2832
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
+ }
+ Frame {
+ msec: 2848
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
+ }
+ Frame {
+ msec: 2864
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
+ }
+ Frame {
+ msec: 2880
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
+ }
+ Frame {
+ msec: 2896
+ image: "test-pathview.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
+ }
+ Frame {
+ msec: 2928
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
+ }
+ Frame {
msec: 2944
- hash: "64a3209e6adc737065e5d5c3202a7283"
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
}
Frame {
msec: 2960
- hash: "cf936ffe4330edefddb31c59368491fc"
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
}
Frame {
msec: 2976
- hash: "a67213db044bb876f737cd355fe54444"
+ hash: "a0d8bb20189c3c65e5e72671788d9493"
}
Frame {
msec: 2992
- hash: "0f9e97057cbbd8071e0f5f61318bdf9c"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
}
Frame {
msec: 3008
- hash: "c5f38d334df86ebb6ac4600c83eced20"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
}
Frame {
msec: 3024
- hash: "6d8e6049a36eac4136dbdb5fb18d0650"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
}
Frame {
msec: 3040
- hash: "8ee97cff4a632e6e297bd3bdac27b8d4"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
}
Frame {
msec: 3056
- hash: "aca1fcd005d211d35245e64a44002c01"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
}
Frame {
msec: 3072
- hash: "7076180bf0eb14a5e733be9320f1f009"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
}
Frame {
msec: 3088
- hash: "e0a0545b3a0b6a0b07d3fa987e1d58b6"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 152; y: 143
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3104
- hash: "0294b098ce7f0d381542776320e52d2e"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
}
Frame {
msec: 3120
- hash: "36f8bcc42add38fe149e34a703cf8a02"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
}
Frame {
msec: 3136
- hash: "631426bde50fd35d1da1c30d9878253e"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
}
Frame {
msec: 3152
- hash: "a4d64c9d378138bedf63389e58d8f1d6"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
}
Frame {
msec: 3168
- hash: "17fdf61bffd947c2e9898f5c4517fdf8"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 151; y: 144
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3184
- hash: "653b8c7a55bc4ca763238098711eafa1"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
}
Frame {
msec: 3200
- hash: "89e15b3ee1b1fc945801e08cfcdba62c"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 152; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 153; y: 145
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3216
- hash: "7ea615af67336895e6cee6d3a39ff7de"
+ hash: "1236a317e60f7ae3d3fb2fb521bad2a2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 155; y: 146
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 157; y: 146
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3232
- hash: "88faee45db80f04ef1120c35057a5f7d"
+ hash: "1b604ea70459a768fb37a6333000174b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 161; y: 147
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 164; y: 148
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3248
- hash: "8cfe34047b29ac85e58d55e0f6e0b195"
+ hash: "25e0aabe364085a61b4572ef015dac2c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 166; y: 148
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 168; y: 149
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3264
- hash: "39255546502fcb882005fe4c38c21fb0"
+ hash: "ee6fc5c1de08e6f13f23b26829d2cba2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 170; y: 150
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 171; y: 150
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3280
- hash: "6bf7a959a05fc27f651b2a3ba07de30d"
+ hash: "b077c59359d047738d9ba739f591393b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 175; y: 150
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 177; y: 151
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3296
- hash: "c2c61cb8dbbbd38827277ab32579c6da"
+ hash: "2cc0b8d7bd088f2277f5e939c234114c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 180; y: 152
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 183; y: 152
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3312
- hash: "ff370d4b4e44c4cbacca96107105df21"
+ hash: "64703db84cd5bda3109546293783804d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 187; y: 153
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 191; y: 154
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3328
- hash: "ccadd9e070d54de21c76397d18ad3de8"
+ hash: "137cd88932ad1fdbfdbf1a80cccf7b3f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 193; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 195; y: 154
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3344
- hash: "6302c39de00070b0a23f9dc87f74dd8d"
+ hash: "ff9011d861c64bcad214b52cb4245583"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 197; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 199; y: 155
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3360
- hash: "7ab69e6d9809c78dc723609bd2761206"
+ hash: "c3f0132e472d29ddee95c7349243d33e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 202; y: 155
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 202; y: 155
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3376
- hash: "c429cc724b39891805cf4c1448de60b3"
+ hash: "42ae9c21dce6a7cd59de228dac775dd5"
}
Frame {
msec: 3392
- hash: "396ddf0b01e9fe7c2bfb220e64a0c7ec"
+ hash: "3f8631caf6a98d83356b188d6f94e9a6"
}
Frame {
msec: 3408
- hash: "7a519a4efeecef5e7623a270e458fb13"
+ hash: "b2788cd1939a6dd42f12d8fd1282a122"
}
Frame {
msec: 3424
- hash: "869d174a939e0638a1a22d5c8a010c14"
+ hash: "0d1ab6e9f2780be0c392d20f4b3b9619"
}
Frame {
msec: 3440
- hash: "9ecd2cf4e3b42ff93bcbf4db9829666c"
+ hash: "03fdd91b352798b1ff958c23c0bc5f35"
}
Frame {
msec: 3456
- hash: "b06b58b250d3df365806a3f8991d57f3"
+ hash: "028fee3630fdb3cf862213c0466a56fe"
}
Frame {
msec: 3472
- hash: "7a6fb03feb2ae0af1f143daedd22a88b"
+ hash: "3ab76009ca029723e5cf0bf9bc154102"
}
Frame {
msec: 3488
- hash: "e9fe338dbe7afb69f3870743b0a18805"
+ hash: "866c59b7dd545364b70ddbf21a8ee874"
}
Frame {
msec: 3504
- hash: "04b8def2085e9ce4065b02b938915557"
+ hash: "9b4ff972b1055db38900fc0c5007e7b0"
}
Frame {
msec: 3520
- hash: "7e6942f72012875ba83a1c9121e1f786"
+ hash: "cbe0073c84617e23f0679a08c1a78492"
}
Frame {
msec: 3536
- hash: "291e2d79a79959d9c8c586b6bdc31689"
+ hash: "374a5e6070dd628ed031e80d44be1f3f"
}
Frame {
msec: 3552
- hash: "e490bc7fd92f486b964cca967bd33b38"
+ hash: "4d16c81f877585a82549cfc4f68c574d"
}
Frame {
msec: 3568
- hash: "0c9858e0445e25d2b12c84801de441cb"
+ hash: "64b2b4c374a730b138b3573095f45d2c"
}
Frame {
msec: 3584
- hash: "72ba7a4aacb150e1e9c6de72cff82258"
+ hash: "26c59f4131fdb01ac4771231341c75c3"
}
Frame {
msec: 3600
- hash: "1daca95256842545a5b77bcc46782478"
+ hash: "bf6a3fdb7c516ca9cfc09f1059cc8cdf"
}
Frame {
msec: 3616
- hash: "869f3d16e203ad47f1ae7ca83e369b75"
+ hash: "1bfb86796087cd293c68205cce6ac294"
}
Frame {
msec: 3632
- hash: "9cc9cb20aab3369f4e3c5259d291708c"
+ hash: "e0f76f8fc7bd7756a4e004655f97f782"
}
Frame {
msec: 3648
- hash: "a507b957bab3efe2023a65f8c8b3540a"
+ hash: "61d3aa5f827452482d8a4a903fe64acc"
}
Frame {
msec: 3664
- hash: "9fce2a6cddd8b06a80ce16599b56caa6"
+ hash: "c8e42d3a5df195eaa091e50fc9dcd51e"
}
Frame {
msec: 3680
- hash: "2f85d3064968e3e7b669f733fad58459"
+ hash: "bb684dccf4c0a74dc091fb78c1be4f2b"
}
Frame {
msec: 3696
- hash: "6dd6fad85dc5317a22a05a8486317767"
+ hash: "54341e5a76fb4657021c41e6e3f3d496"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 117; y: 142
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 118; y: 142
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3712
- hash: "b0faa2ec225cd96fb6d2fd05dc66bed1"
+ hash: "435ee710e108df42f659250ad7dbdb5e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 118; y: 143
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3728
- hash: "3188219f095c2a9ac7c0f6034463d769"
+ hash: "0c7078ec0d4a1dea84e0fba06323c533"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 119; y: 143
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 120; y: 143
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3744
- hash: "b269e9fe4d14537c8bef0b66effe7319"
+ hash: "854103790c02ca86fa011ef1b0f2be0a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 121; y: 144
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 122; y: 144
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3760
- hash: "b269e9fe4d14537c8bef0b66effe7319"
+ hash: "1a5995196e5bb4d1464ca76191af72d5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 123; y: 144
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 124; y: 144
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3776
- hash: "b269e9fe4d14537c8bef0b66effe7319"
+ hash: "397bbd080cae99790621642fab6ded91"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 126; y: 144
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 129; y: 145
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3792
- hash: "b269e9fe4d14537c8bef0b66effe7319"
+ hash: "66ecad306911060329dcf7695c358e87"
}
Mouse {
- type: 2
- button: 1
+ type: 5
+ button: 0
buttons: 1
- x: 174; y: 234
+ x: 132; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 135; y: 146
modifiers: 0
sendToViewport: true
}
Frame {
msec: 3808
- hash: "9480eb8761d4ce90971903fcfab1e09e"
+ hash: "c06da5f40f3f59f576a1d540d0b3244f"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 176; y: 236
+ x: 139; y: 147
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 143; y: 149
modifiers: 0
sendToViewport: true
}
Frame {
msec: 3824
- hash: "30a6ac631e1a3433f252f56ee4337cdc"
+ hash: "a88d97691539dce19af4c14baf610275"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 179; y: 238
+ x: 147; y: 150
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 152; y: 151
modifiers: 0
sendToViewport: true
}
Frame {
msec: 3840
- image: "test-pathview.3.png"
+ hash: "a07dca2c0014609ca5241612550992f5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 156; y: 152
+ modifiers: 0
+ sendToViewport: true
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 184; y: 243
+ x: 161; y: 153
modifiers: 0
sendToViewport: true
}
Frame {
msec: 3856
- hash: "ed07f9eea6cd2cd78a3e2479137f843d"
+ image: "test-pathview.4.png"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 185; y: 244
+ x: 168; y: 155
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 175; y: 155
modifiers: 0
sendToViewport: true
}
Frame {
msec: 3872
- hash: "7a5b201cc8725dbf15d89907fffd4ee3"
+ hash: "e5a4e76dd607ba1bae97aaf184ee009a"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 197; y: 250
+ x: 184; y: 157
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 194; y: 158
modifiers: 0
sendToViewport: true
}
Frame {
msec: 3888
- hash: "bc2433b9e5f03cdbd35922d145a4ce59"
+ hash: "bb1d2614e590562479fc8d301bc7402f"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 213; y: 256
+ x: 203; y: 160
modifiers: 0
sendToViewport: true
}
Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 213; y: 256
+ type: 5
+ button: 0
+ buttons: 1
+ x: 211; y: 160
modifiers: 0
sendToViewport: true
}
Frame {
msec: 3904
- hash: "d443f23aa5449d5f2b11c47feab5a0ae"
+ hash: "5d9fd2238666d3ae04613f1bba0fab05"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 221; y: 162
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 231; y: 162
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3920
- hash: "c43f00d3ae4c8abbd20fc7157363b19d"
+ hash: "b12a944cb5e593afbb21a10453879b52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 241; y: 162
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 251; y: 164
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3936
- hash: "22d6f5e9fdfe44e73020e6f504002b7c"
+ hash: "2f04c990978627b86fb2ad04579db0db"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 276; y: 167
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3952
- hash: "4a9a285834aad5795adbefbe167028e2"
+ hash: "e7ddf142fc36174fcaaa70b9340ef7a8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 288; y: 167
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 301; y: 169
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3968
- hash: "561a6c005950830acf2a45ab9a207346"
+ hash: "4fce53c6f5347fe03ecf17b07fabe3ac"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 312; y: 169
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 324; y: 171
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 324; y: 171
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 3984
- hash: "b0387e3cfd455e1144d0bce9b51d6767"
+ hash: "75a0ec2c0158c55a90147c3f4afaa19c"
}
Frame {
msec: 4000
- hash: "610237f67aa7e5f8d5b363b1612b4966"
+ hash: "e89e98b7c1f36b74c664c77e121dedcb"
}
Frame {
msec: 4016
- hash: "8034a5a7e0558d73051ea6c5bc750866"
+ hash: "f4c1e52a7b97a25fba640be2a1430d2d"
}
Frame {
msec: 4032
- hash: "0e4dc8a9c124b51c5f1225f4c6a9ec63"
+ hash: "be58ca8f63dac8373825231512f483ca"
}
Frame {
msec: 4048
- hash: "dc4e94522e8c64e9f2dbbf12a1f1aa3e"
+ hash: "755b16d4be00cb52595d42775d6227ac"
}
Frame {
msec: 4064
- hash: "7466c076a95f2f6bbc2b6ce306773337"
+ hash: "c62f1ebbb1e4ae4ca22c060078d6240b"
}
Frame {
msec: 4080
- hash: "787e2749905b97159fd0922c6cb388e2"
+ hash: "5f1187e9530584f9eb81ce1ce8267da0"
}
Frame {
msec: 4096
- hash: "1e510d01afad190ec21de253bd8b4821"
+ hash: "5dc9921e9ddf15ee0457fcdc834544c5"
}
Frame {
msec: 4112
- hash: "d740f40eb21be71ec70c00411d2ee76b"
+ hash: "efacedc2782435ef4e269e6956fb3547"
}
Frame {
msec: 4128
- hash: "887a6f445af8fccf4932eed575a09cbb"
+ hash: "5b356dd3082f6b0920bb41d332595ce1"
}
Frame {
msec: 4144
- hash: "fbb7e1d8cb9dd9016df0c33c69b1451a"
+ hash: "5d8afcc1abd890beb2badf85bcf02897"
}
Frame {
msec: 4160
- hash: "5025e5f04a0807cb298037d6dda8c3af"
+ hash: "03c56ab4fea11cce19fcbb62dccb7683"
}
Frame {
msec: 4176
- hash: "b9924f24f60c24087be165e8e385ebb0"
+ hash: "236254ce32a8e06dc42f2fd3c9ac6c7c"
}
Frame {
msec: 4192
- hash: "2bab970787ac8b056401c8a73cb1a3c5"
+ hash: "4beb33da77bc2b41eb882a2a5cdeb539"
}
Frame {
msec: 4208
- hash: "bda954bfafaa2915d760cf7a602b326f"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 187; y: 242
- modifiers: 0
- sendToViewport: true
+ hash: "b345470adead1ffb3af4d1091ffbd95c"
}
Frame {
msec: 4224
- hash: "9b109bb9e786a45a78849436ea32a484"
+ hash: "c2677f1653b08952338a5c26a724ebe7"
}
Frame {
msec: 4240
- hash: "9b109bb9e786a45a78849436ea32a484"
+ hash: "45b6633acf0ac28c5b5462920cf61282"
}
Frame {
msec: 4256
- hash: "9b109bb9e786a45a78849436ea32a484"
+ hash: "26a9a6609ce8eee1f744c2bd43494f22"
+ }
+ Frame {
+ msec: 4272
+ hash: "9373a8010a05d05cb5b3c2ec75359493"
+ }
+ Frame {
+ msec: 4288
+ hash: "d0c561761825512a02a9e3640139cadc"
+ }
+ Frame {
+ msec: 4304
+ hash: "d0c561761825512a02a9e3640139cadc"
+ }
+ Frame {
+ msec: 4320
+ hash: "d0c561761825512a02a9e3640139cadc"
+ }
+ Frame {
+ msec: 4336
+ hash: "d0c561761825512a02a9e3640139cadc"
+ }
+ Frame {
+ msec: 4352
+ hash: "d0c561761825512a02a9e3640139cadc"
+ }
+ Frame {
+ msec: 4368
+ hash: "d0c561761825512a02a9e3640139cadc"
+ }
+ Frame {
+ msec: 4384
+ hash: "d0c561761825512a02a9e3640139cadc"
+ }
+ Frame {
+ msec: 4400
+ hash: "d0c561761825512a02a9e3640139cadc"
}
Mouse {
- type: 5
- button: 0
+ type: 2
+ button: 1
buttons: 1
- x: 187; y: 243
+ x: 112; y: 126
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4272
- hash: "9b109bb9e786a45a78849436ea32a484"
+ msec: 4416
+ hash: "d0c561761825512a02a9e3640139cadc"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 199; y: 252
+ x: 112; y: 128
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4288
- hash: "cc3c61f49a7b3c395670b86c8078a337"
+ msec: 4432
+ hash: "d0c561761825512a02a9e3640139cadc"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 223; y: 262
+ x: 114; y: 128
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 115; y: 130
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4304
- hash: "464d09b53b78fe5474d9c1d022bee9fd"
+ msec: 4448
+ hash: "d0c561761825512a02a9e3640139cadc"
}
Mouse {
type: 5
button: 0
buttons: 1
- x: 251; y: 272
+ x: 116; y: 130
modifiers: 0
sendToViewport: true
}
Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 251; y: 272
+ type: 5
+ button: 0
+ buttons: 1
+ x: 119; y: 132
modifiers: 0
sendToViewport: true
}
Frame {
- msec: 4320
- hash: "aab17f48ff506cda84543cbe0d8a1ce4"
- }
- Frame {
- msec: 4336
- hash: "b7ba6c107f4085822a738120a913ba0c"
- }
- Frame {
- msec: 4352
- hash: "751b79e202a70dcc9a86c3a1450172b8"
- }
- Frame {
- msec: 4368
- hash: "bb03f969fd6987255ff113ef98ed2bb1"
+ msec: 4464
+ hash: "0e7554f077e2d6d8c6cf9496b20ab009"
}
- Frame {
- msec: 4384
- hash: "c33302b366441fa2d8753d5ce314cd37"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 122; y: 134
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 4400
- hash: "4cdf32004382bcaca5a68cb92761caa2"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 131; y: 138
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 4416
- hash: "d3fe18ea7dcbee0709a2041e50b87154"
+ msec: 4480
+ hash: "d6e78f43c971abcc1d2aadb96e8b80b0"
}
- Frame {
- msec: 4432
- hash: "ac58a7adb0e7a354a058d7e9a7010c06"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 147; y: 144
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 4448
- hash: "bdf8a8934a372ab49f4b6e9c95c7f591"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 168; y: 151
+ modifiers: 0
+ sendToViewport: true
}
Frame {
- msec: 4464
- hash: "d2e8b417b74ec5f6e23f0935a4d0aa98"
+ msec: 4496
+ hash: "10d8e0ee5bd432c639963c9cedd25b85"
}
- Frame {
- msec: 4480
- hash: "0f94c6ca3ffbd730c2d813a991d21ca3"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 190; y: 157
+ modifiers: 0
+ sendToViewport: true
}
- Frame {
- msec: 4496
- hash: "fb7728eebb2fa8f5255dc7435d20bbb6"
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 219; y: 164
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4512
- hash: "c8211e8adcef525c296531a3d369f717"
+ hash: "53e142d6b0112644d75df29f7865fbb4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 269; y: 171
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4528
- hash: "f24de36c85b87953977fa8b6456209dc"
+ hash: "9609807e6c2a27a8b9f1d5c878c3dadf"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 319; y: 176
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4544
- hash: "9ce7cf389af08cb1ba2534418f51857b"
+ hash: "a0a1e5fd37e9d8033f182f4f2b20fd26"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 361; y: 180
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4560
- hash: "17d1f3ae0dba0bde222bb2483a403fbd"
+ hash: "b40e553dc373e4018488d5421b9a8914"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 406; y: 185
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4576
- hash: "1748d75e229945012ece689b3784a02c"
+ hash: "22e36512a0af86fac12c09f735dcb1f7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 428; y: 187
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 428; y: 187
+ modifiers: 0
+ sendToViewport: true
}
Frame {
msec: 4592
- hash: "6786fa9e31d6f0a71a285c790aa5b008"
+ hash: "70e9ad0f56e4c37f8684e38f614b889d"
}
Frame {
msec: 4608
- hash: "f2a2ba33b41d8d522e8aab34c7da8f7b"
+ hash: "0754126f5738e3dcec35fc1ef65fdec3"
}
Frame {
msec: 4624
- hash: "aa53142d1b433ae9f748aef5cb7bef46"
+ hash: "b3d84ceeecc294d21bc09a3197195c20"
}
Frame {
msec: 4640
- hash: "9c6802b2b0a419a4aaf9909c0f88c66e"
+ hash: "ce00501e194b1056edf1ebd43b954a70"
}
Frame {
msec: 4656
- hash: "206b11f2acd742d55ddd8acf7415bbeb"
+ hash: "793f41ac2568530e6d630446216833dc"
}
Frame {
msec: 4672
- hash: "36876cf600cbf9c3b15f243617c9474e"
+ hash: "e8573de724b653439bde85c15e9555ab"
}
Frame {
msec: 4688
- hash: "1f5daf97294b490546657c5d9e12022e"
+ hash: "bfb3f3645c7b2425b686ac23bcef82b8"
}
Frame {
msec: 4704
- hash: "637fc34fc2cf6139ba8809be54a2a0fc"
+ hash: "faa78596e208c2cf4593ea25e31fabde"
}
Frame {
msec: 4720
- hash: "9f824bd9e156980873619b1978f226bb"
+ hash: "f1b0931bffce37abfe5a6d635f1f8454"
}
Frame {
msec: 4736
- hash: "7002444129a5077ce5be44a5e2530328"
+ hash: "0975630a55bfd56eb3e39426c1c3f1e5"
}
Frame {
msec: 4752
- hash: "42b7a44030ad4fc50ceb6a60bc97991e"
+ hash: "98f1d79153a8009123abc94141375779"
}
Frame {
msec: 4768
- hash: "ae986cac541033398076fb918136212e"
+ hash: "d864817f877a9eeb44c665518ea19687"
}
Frame {
msec: 4784
- hash: "6bdd9f764b1675e5b0feced8c2d831a6"
+ hash: "79745c267d14e7790e1bb3a7e76f20b4"
}
Frame {
msec: 4800
- image: "test-pathview.4.png"
+ hash: "ec038d4cec64b847711fa221f808bead"
}
Frame {
msec: 4816
- hash: "07dfffe85adc4b52565e9ed156fa3ed6"
+ image: "test-pathview.5.png"
}
Frame {
msec: 4832
- hash: "c987bbe9fbf74bb6cf2686a5ee97c59a"
+ hash: "ef7b3f93abbf210f8f0d38a58380dc8f"
}
Frame {
msec: 4848
- hash: "19568159ec2282d5f150583baa0a8a94"
+ hash: "f0eea63127df25f7f818596fc034fef8"
}
Frame {
msec: 4864
- hash: "5b176ef6bf70ff1a9805ca85b1b0c1a2"
+ hash: "8000dee3ea54522a8193a7f9f2e86023"
}
Frame {
msec: 4880
- hash: "de716a8c15a46bf1621878794e968c53"
+ hash: "111485ebaf93aae4f5e0a83da898bbac"
}
Frame {
msec: 4896
- hash: "241af9ab77c86cdb75f73339548604ad"
+ hash: "4b2dee1fd88dcaeabc8235f6a0e5c090"
}
Frame {
msec: 4912
- hash: "afc7168ecb7fa7e3310ca818b75f7a1c"
+ hash: "5e560c777d0294dfa8f249232bfcf3a2"
}
Frame {
msec: 4928
- hash: "83bff911b502a34d139a724f686bb1f9"
+ hash: "d8b490092ca5ce3ef9b078f4768c382a"
}
Frame {
msec: 4944
- hash: "f4d3fb54ae5be2b13065cd4316b06837"
+ hash: "28b2bbc3fd19786dd9c0ab718141c525"
}
Frame {
msec: 4960
- hash: "d29c7dfedf9dd355d60e394528b3b938"
+ hash: "d1a61000ebc5a475c0223dde649c8054"
}
Frame {
msec: 4976
- hash: "ddf23d860ea71ab4b407de1a5f913f74"
+ hash: "d3e8aae08a2518c039d6bda80fc520a4"
}
Frame {
msec: 4992
- hash: "a0dbb6ecbfd08f9ebdd641fea5dae16c"
+ hash: "9f3bd8654adb9af0457dd50ff71fcd43"
}
Frame {
msec: 5008
- hash: "7ed3170e55e3c3c9561959ad4c56d326"
+ hash: "befe00fef613b7616e2dc668a5ed59c7"
}
Frame {
msec: 5024
- hash: "dbde5f508aabc2d1f2ccfaf135efeca9"
+ hash: "24e84e6998389aa119d7d9e0ac2206ac"
}
Frame {
msec: 5040
- hash: "72039739be41bf63b3959bdc90ce25bb"
+ hash: "2d3d2b66bf016c8e499f527dbf8923db"
}
Frame {
msec: 5056
- hash: "417789daefe6bc01320db7803ae31d61"
+ hash: "52d24673729dbd53d3227675b7001b24"
}
Frame {
msec: 5072
- hash: "7e57dbddaf379f4316182048fa9e2d6f"
+ hash: "4e5c807682d7b6b7839c047a7fb4ad93"
}
Frame {
msec: 5088
- hash: "aeca9a4df94d2b9ac2a713531a7d98f1"
+ hash: "319affea47c4a0b0e2c3db51b85430bc"
}
Frame {
msec: 5104
- hash: "98ad6694f23678819020d6ac0161651c"
+ hash: "344962f0b88c7e8a33df71b4708fd1c0"
}
Frame {
msec: 5120
- hash: "b6eba3872da19ec677eee419ae9cccbc"
+ hash: "ac099ba8a5639b9c83b6f58f2b5bcf93"
}
Frame {
msec: 5136
- hash: "e824909bfe7b6d54773bb218ba93e884"
+ hash: "2f8e57c93289dcdc758281531300e949"
}
Frame {
msec: 5152
- hash: "3be04f3ff6d948538f4472bc6bfadb0f"
+ hash: "e4cc3bdf6068064bcfdd0014cc301e65"
}
Frame {
msec: 5168
- hash: "e05ff21dda1d978a2ac2eedd3826b6f7"
+ hash: "598c8a33e2bbf47b21df8b0636e0f0bc"
}
Frame {
msec: 5184
- hash: "8ee970b2b197c8d879a7b1703cbd4dcd"
+ hash: "6aea67c85370eee8447a22e2b9e8c44c"
}
Frame {
msec: 5200
- hash: "e583845e7719d2776c6362c34f77937c"
+ hash: "39e27a3376f4aba8510f7b0d90ca0e33"
}
Frame {
msec: 5216
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "0ff93a16a07af43bd5e22a2b00fd2588"
}
Frame {
msec: 5232
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "8b6004368b9b0a766f6b519820fe1ff6"
}
Frame {
msec: 5248
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "5d92c0a12ff138d1b2c75bd042be4ea2"
}
Frame {
msec: 5264
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "4386b0abe49106a0174154c726c301f6"
}
Frame {
msec: 5280
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "832da8d2a86caa3ca96f33d2cd49178e"
}
Frame {
msec: 5296
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "efee6ab1ba4a1112f2129aad12825667"
}
Frame {
msec: 5312
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "f20a7e67a4789c559b0b0a7656bd89b1"
}
Frame {
msec: 5328
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "350cc8c0085a8f79c9ea8880737a0b75"
}
Frame {
msec: 5344
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "b19715b4029ea489debf7c5a269aca98"
}
Frame {
msec: 5360
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "f383fcaf603af41650c5622bfaf136b3"
}
Frame {
msec: 5376
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "0c62a442367fc0bac5117da1327ed39a"
}
Frame {
msec: 5392
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "323ba45d158d983f359211f1a87b7ebd"
}
Frame {
msec: 5408
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "aeed1a31b8b77dac2c2858969ff2d86c"
}
Frame {
msec: 5424
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "27a9357730a97846ffeddd18492df04d"
}
Frame {
msec: 5440
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "42f78593e64585b33c8854e8ea92710e"
}
Frame {
msec: 5456
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "064f5cec99b9a351bebe2088019f46d1"
}
Frame {
msec: 5472
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "d3669826f94aa2afc1069ab967f677a3"
}
Frame {
msec: 5488
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "a118cf8892d29e6b70b4e65e42380c15"
}
Frame {
msec: 5504
- hash: "593fd590531ccfb59d890b8043eaab9c"
+ hash: "f254260f01ff4697e9e3146cc106140d"
}
Frame {
msec: 5520
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "ec062b2bb87444115c2e8744b7f80bde"
}
Frame {
msec: 5536
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "4d45522a4e4253c810cac9cbf24c9b76"
}
Frame {
msec: 5552
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "532c3d3ead73836948a1036e8e69cadf"
}
Frame {
msec: 5568
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "4debea14aeac85ff4e64387938d8b010"
}
Frame {
msec: 5584
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "d8940cf6e39a1bd5e7216a83ce87a676"
}
Frame {
msec: 5600
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "fba6485f8a60a38ce2f3110137b1f2df"
}
Frame {
msec: 5616
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "8a8909b114332dd932b784a2640e9ff4"
}
Frame {
msec: 5632
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "fd901422400333c137240ef5f91928a3"
}
Frame {
msec: 5648
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "97b84a957515d5823e381fdd86d31fb8"
}
Frame {
msec: 5664
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "f3547ea694b88dd7d2fb8b04d6bf76a9"
}
Frame {
msec: 5680
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "9eb0da29d0c323b45e62d31bee97ce8c"
}
Frame {
msec: 5696
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "9d814096d27e9fbcffdf7e29866e0059"
}
Frame {
msec: 5712
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "6087185e1e8bf17545a7372be2990ab2"
}
Frame {
msec: 5728
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "82e534c416dfe884e5abc2f91d902484"
}
Frame {
msec: 5744
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "82e534c416dfe884e5abc2f91d902484"
}
Frame {
msec: 5760
- image: "test-pathview.5.png"
+ hash: "82e534c416dfe884e5abc2f91d902484"
}
Frame {
msec: 5776
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ image: "test-pathview.6.png"
}
Frame {
msec: 5792
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "82e534c416dfe884e5abc2f91d902484"
}
Frame {
msec: 5808
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "82e534c416dfe884e5abc2f91d902484"
}
Frame {
msec: 5824
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "82e534c416dfe884e5abc2f91d902484"
}
Frame {
msec: 5840
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "82e534c416dfe884e5abc2f91d902484"
}
Frame {
msec: 5856
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "82e534c416dfe884e5abc2f91d902484"
}
Frame {
msec: 5872
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "82e534c416dfe884e5abc2f91d902484"
}
Frame {
msec: 5888
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "82e534c416dfe884e5abc2f91d902484"
}
Frame {
msec: 5904
- hash: "c0d0f62d9078f6be493d5545a2ae78ad"
+ hash: "82e534c416dfe884e5abc2f91d902484"
+ }
+ Frame {
+ msec: 5920
+ hash: "82e534c416dfe884e5abc2f91d902484"
+ }
+ Frame {
+ msec: 5936
+ hash: "82e534c416dfe884e5abc2f91d902484"
+ }
+ Frame {
+ msec: 5952
+ hash: "82e534c416dfe884e5abc2f91d902484"
+ }
+ Frame {
+ msec: 5968
+ hash: "82e534c416dfe884e5abc2f91d902484"
+ }
+ Frame {
+ msec: 5984
+ hash: "82e534c416dfe884e5abc2f91d902484"
+ }
+ Frame {
+ msec: 6000
+ hash: "82e534c416dfe884e5abc2f91d902484"
+ }
+ Frame {
+ msec: 6016
+ hash: "82e534c416dfe884e5abc2f91d902484"
+ }
+ Frame {
+ msec: 6032
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6048
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6064
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6080
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6096
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6112
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6128
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6144
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6160
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6176
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6192
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6208
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6224
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6240
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6256
+ hash: "6839b467f32eaa79d4c1ce4905145350"
+ }
+ Frame {
+ msec: 6272
+ hash: "6839b467f32eaa79d4c1ce4905145350"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview-2.qml b/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview-2.qml
index 38368d4e24..3171203424 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview-2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview-2.qml
@@ -1,7 +1,7 @@
import QtQuick 1.0
Rectangle {
- width: 800; height: 450
+ width: 580; height: 220
//Same as test-pathview, but with pathItemCount < model.count
ListModel {
@@ -20,8 +20,10 @@ Rectangle {
id: photoDelegate
Rectangle {
id: wrapper
- width: 85; height: 85; color: lColor
+ width: 65; height: 65; color: lColor
scale: wrapper.PathView.scale
+
+ MouseArea { anchors.fill: parent }
transform: Rotation {
id: itemRotation; origin.x: wrapper.width/2; origin.y: wrapper.height/2
@@ -31,9 +33,10 @@ Rectangle {
}
PathView {
- id: pathView; model: rssModel; delegate: photoDelegate
- y: 100; width: 800; height: 330; pathItemCount: 6; z: 1
- focus: true
+ id: photoPathView; model: rssModel; delegate: photoDelegate
+ anchors.fill: parent; z: 1
+ anchors.topMargin:40
+ pathItemCount: 6
path: Path {
startX: -50; startY: 40;
@@ -41,22 +44,27 @@ Rectangle {
PathAttribute { name: "angle"; value: -45 }
PathCubic {
- x: 400; y: 220
- control1X: 140; control1Y: 40
- control2X: 210; control2Y: 220
+ x: 300; y: 140
+ control1X: 90; control1Y: 30
+ control2X: 140; control2Y: 150
}
PathAttribute { name: "scale"; value: 1.2 }
PathAttribute { name: "angle"; value: 0 }
PathCubic {
- x: 850; y: 40
- control2X: 660; control2Y: 40
- control1X: 590; control1Y: 220
+ x: 600; y: 30
+ control2X: 440; control2Y: 30
+ control1X: 420; control1Y: 150
}
PathAttribute { name: "scale"; value: 0.5 }
PathAttribute { name: "angle"; value: 45 }
}
}
+
+ Column {
+ Rectangle { width: 20; height: 20; color: "red"; opacity: photoPathView.moving ? 1 : 0 }
+ Rectangle { width: 20; height: 20; color: "blue"; opacity: photoPathView.flicking ? 1 : 0 }
+ }
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview.qml b/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview.qml
index ce516ac77e..4374b846da 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepathview/test-pathview.qml
@@ -1,7 +1,7 @@
import QtQuick 1.0
Rectangle {
- width: 800; height: 450
+ width: 580; height: 220
ListModel {
id: rssModel
@@ -19,7 +19,7 @@ Rectangle {
id: photoDelegate
Rectangle {
id: wrapper
- width: 85; height: 85; color: lColor
+ width: 65; height: 65; color: lColor
scale: wrapper.PathView.scale
MouseArea { anchors.fill: parent }
@@ -33,7 +33,8 @@ Rectangle {
PathView {
id: photoPathView; model: rssModel; delegate: photoDelegate
- y: 100; width: 800; height: 330; pathItemCount: 10; z: 1
+ anchors.fill: parent; z: 1
+ anchors.topMargin:40
path: Path {
startX: -50; startY: 40;
@@ -41,18 +42,18 @@ Rectangle {
PathAttribute { name: "angle"; value: -45 }
PathCubic {
- x: 400; y: 220
- control1X: 140; control1Y: 40
- control2X: 210; control2Y: 220
+ x: 300; y: 140
+ control1X: 90; control1Y: 30
+ control2X: 140; control2Y: 150
}
PathAttribute { name: "scale"; value: 1.2 }
PathAttribute { name: "angle"; value: 0 }
PathCubic {
- x: 850; y: 40
- control2X: 660; control2Y: 40
- control1X: 590; control1Y: 220
+ x: 600; y: 30
+ control2X: 440; control2Y: 30
+ control1X: 420; control1Y: 150
}
PathAttribute { name: "scale"; value: 0.5 }
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.0.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.0.png
index f474afecdc..a02a00dd78 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.1.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.1.png
index 8b7ae74b13..be18b8dc2d 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.2.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.2.png
index 9088bb4f48..e4db4bca2e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.3.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.3.png
index 18cd4298f9..d464e79d00 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.4.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.4.png
index 739afc17ca..b0b93863e1 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.5.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.5.png
index 93f0682397..4ea4b24e16 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.6.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.6.png
new file mode 100644
index 0000000000..a115867d2a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.qml
index 4b36e166ab..5f1e8be157 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/dynamic.qml
@@ -6,1598 +6,1598 @@ VisualTest {
}
Frame {
msec: 16
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ image: "dynamic.0.png"
}
Frame {
msec: 32
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 48
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 64
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 80
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 96
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 112
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 128
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 144
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 160
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 176
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 192
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 208
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 224
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 240
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 256
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 272
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 288
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 304
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 320
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 336
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 352
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 368
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 384
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 400
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 416
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 432
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 448
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 464
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 480
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 496
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 512
- hash: "ee42cfa8cbbd67becb7d50998d26fe73"
+ hash: "d203c2cb69cb0841827e14bddc206d1f"
}
Frame {
msec: 528
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "453d5fb9d38f37bb8c23e376de76db06"
}
Frame {
msec: 544
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "c4a103de3b7207b3c6277e8ecf79f7dc"
}
Frame {
msec: 560
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "f58b0eb42d9b6ace87379f205da57550"
}
Frame {
msec: 576
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "3384c5b5939d8297e0834c7cd347d579"
}
Frame {
msec: 592
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "420b55371c69c6e1a17ef85a600c75d1"
}
Frame {
msec: 608
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "55cc6fb3424ef69d316ef29f6563a025"
}
Frame {
msec: 624
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "045b5ac545e69777b814423f77575990"
}
Frame {
msec: 640
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "45b05241e8e83180a8d92a37dc859ce0"
}
Frame {
msec: 656
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "97915dfbe4943e1f583ee134bc7a0117"
}
Frame {
msec: 672
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "9b4ce5ed20dd81698b4dd8e48f799c5c"
}
Frame {
msec: 688
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "24bdcea108cdbb3898a4d9216e9f9510"
}
Frame {
msec: 704
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "d1427093b1a375e86a69c6f65cb1f8e5"
}
Frame {
msec: 720
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "43dd666b15697ae18eb2410017256e4c"
}
Frame {
msec: 736
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "8043755f5a8a528353f1e7c310a46a97"
}
Frame {
msec: 752
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "d6b2ef0cb81395cd7454392aed4571f0"
}
Frame {
msec: 768
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "c249fd272e02cbdde972e85fc6dac695"
}
Frame {
msec: 784
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "1df5f8fce7b0c102e9902912600054e7"
}
Frame {
msec: 800
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "a9d16b180634620e3fe6caacb730885b"
}
Frame {
msec: 816
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "7228ce597720520bc12911fdef70ca86"
}
Frame {
msec: 832
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "1faa5c3e72740941234ff4a93388edc9"
}
Frame {
msec: 848
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "997ee1c6d5838153182473a3724df4ad"
}
Frame {
msec: 864
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "6ebbc0a0427825ea701f5bb4758f11a2"
}
Frame {
msec: 880
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "a2ac19360d631fd6d58f8a5ee85e40b4"
}
Frame {
msec: 896
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "17a5842b47a220bb8bd74a368cea6c1f"
}
Frame {
msec: 912
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "b37bae9c3384c068a7dd4f1135d3bfaa"
}
Frame {
msec: 928
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "65ffb0b6629364ebc687da7785601abd"
}
Frame {
msec: 944
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "27c7a43515fb2d8cddde42263f6ac9df"
}
Frame {
msec: 960
- image: "dynamic.0.png"
+ hash: "cc292df8a090c08d135dedf5e2a0af7c"
}
Frame {
msec: 976
- hash: "62727b1025930e19bb03c8f533a12ced"
+ image: "dynamic.1.png"
}
Frame {
msec: 992
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "59735c8372774b50052d15232d2f6d01"
}
Frame {
msec: 1008
- hash: "62727b1025930e19bb03c8f533a12ced"
+ hash: "9c239c4439009465dd91606ac84a3bf0"
}
Frame {
msec: 1024
- hash: "3e52e7d7d428cf1b850cb9c60dbb3c21"
+ hash: "8b9715d6468c8501895545bd84bf7f57"
}
Frame {
msec: 1040
- hash: "64f75ab14c979d33d6e0c0d86b76cd35"
+ hash: "0f7a123bfff1dbe059b6ceb3a3f44180"
}
Frame {
msec: 1056
- hash: "c198a48f4050f176465649d203d6e09a"
+ hash: "c1bc31a379d15ca67d0ffc7139800b3f"
}
Frame {
msec: 1072
- hash: "6dd8cee5a585a96e78f2cf7478c4da62"
+ hash: "ebf470cd7cff4a836da9e721acfd327d"
}
Frame {
msec: 1088
- hash: "09edfbce2ea4b8a547f769ce709dcb6b"
+ hash: "e2b89846459f8ae48117ab4393d493bf"
}
Frame {
msec: 1104
- hash: "e93d01aa6e4f5d3fc82cf5a008e3ea17"
+ hash: "5b980dcc070faf4ab4099cd5f711259c"
}
Frame {
msec: 1120
- hash: "0e2e7b5eec0e62853972b0139b8c17c6"
+ hash: "4640ed55c1608d76109407279a1f02db"
}
Frame {
msec: 1136
- hash: "26d4f54628ce20f5665bdc6ddc7f3b6a"
+ hash: "d839b597a3afef61de7b14ffb7ae518e"
}
Frame {
msec: 1152
- hash: "59836aa6eff85b0152be352b97076d89"
+ hash: "2810e01355c32d3f7a9352676e6b5eef"
}
Frame {
msec: 1168
- hash: "47cc9894096731a52ca342ab04df9aad"
+ hash: "f1ac8b222e0068320827564e759e87ba"
}
Frame {
msec: 1184
- hash: "ec95dd3b34a0f17f6fb9b5bedab73653"
+ hash: "7da89563319dd4045e7f9c40a712d722"
}
Frame {
msec: 1200
- hash: "e32c2b70882828b5082ca3ec889a0dde"
+ hash: "09c55dba364e484eec1a1badb4319003"
}
Frame {
msec: 1216
- hash: "68d3f8e9c9d5388a6f8360368c8f4d2f"
+ hash: "defd5c9a8003c58a7bef1930efdd6f29"
}
Frame {
msec: 1232
- hash: "17378b2bd8bde7f357fa5463f457c7b2"
+ hash: "0f84e515b41b5c064ece9002e5edff0d"
}
Frame {
msec: 1248
- hash: "03db786cd54ec34ce8db15953a5fc847"
+ hash: "d1a0405a18fe5b54e79ca0cadf46743b"
}
Frame {
msec: 1264
- hash: "9e22a82a622ed0287c44cc629059d5bd"
+ hash: "6046feb2fad386ae25ddd0d0e8ecb673"
}
Frame {
msec: 1280
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "b4374b0d9d709b0d7a9f8949616a16bf"
}
Frame {
msec: 1296
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "4d9d7d28f32ce2acd14c8dca0bc11fa0"
}
Frame {
msec: 1312
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "384afb63bdf34729132ac57080fa2988"
}
Frame {
msec: 1328
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "44ac2a9783c450a8c39b09387f0439e2"
}
Frame {
msec: 1344
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "26e1dfc2b54370f94881c2341b6e0618"
}
Frame {
msec: 1360
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "be47d72ae7c57e255706a8a5afe1fd3f"
}
Frame {
msec: 1376
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "92cb490b081bccedf0bbdee86dbc50ed"
}
Frame {
msec: 1392
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "1f0a09601474246e94c5ec3763cfa83e"
}
Frame {
msec: 1408
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "73f1a5c57a2c96e18ba894a7adb9a014"
}
Frame {
msec: 1424
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "8aa130cf4b2706afc8d582ee4c5f510d"
}
Frame {
msec: 1440
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "1c0de0f1f4aa5f44bdf774169296487d"
}
Frame {
msec: 1456
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "1e9b701ee63effb760e733ac623d75d7"
}
Frame {
msec: 1472
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "c30620b6d5d41937217fa9d3e0bf367d"
}
Frame {
msec: 1488
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "1f96e1da113d4a6cdb7179771ef7967d"
}
Frame {
msec: 1504
- hash: "42955cd23747f7c37d0f0229c0955e90"
+ hash: "aa31458e44ba42a633421e8688a3af7e"
}
Frame {
msec: 1520
- hash: "981fb1ee75e307b548a32df08a86f4cd"
+ hash: "a7a560c05566d0bbea3f2bf397a0063a"
}
Frame {
msec: 1536
- hash: "f77568307e93d8cd9f0ae417cc19d6e3"
+ hash: "fdd290bc46b86a11afdffb95570d9a67"
}
Frame {
msec: 1552
- hash: "3bdd4468e26aceee0dad6b3b97b1c1ea"
+ hash: "46574d7bfc15bc5b9124eb0e12741724"
}
Frame {
msec: 1568
- hash: "252c9ebc2c32755b2289ee1b03877fe3"
+ hash: "aed2015031da6c7e5064fe5fcd1e86e3"
}
Frame {
msec: 1584
- hash: "64169b7eb7b7ae8573556c5f80230965"
+ hash: "dea39f30e686771ca516ac32e3dc4cb0"
}
Frame {
msec: 1600
- hash: "4965dfa709a9ac7d8f7dfb4bf8303c65"
+ hash: "4a9839f52a7ee6732c5e18c0d67534be"
}
Frame {
msec: 1616
- hash: "8c53cf92510154087341ac65a93aae5a"
+ hash: "df21723df1031542483684ff92aaf40a"
}
Frame {
msec: 1632
- hash: "4dd7502e3e238743d2f3cf038270491e"
+ hash: "53683b7b52d0940aac744f0ef03a4527"
}
Frame {
msec: 1648
- hash: "cd9a58316837eb92f4ac92dbd86bdba3"
+ hash: "e6177b60c5586e79ca82e1bc7af41737"
}
Frame {
msec: 1664
- hash: "5de043e3ac8696b59293a2fa60ed7e65"
+ hash: "592a60e226aa6967a8a41bc0e4288583"
}
Frame {
msec: 1680
- hash: "1bf42a6f6be5a3468d2f47cccfac761e"
+ hash: "534512915d800d00350803c3fdcccaf3"
}
Frame {
msec: 1696
- hash: "ca05510c1ad25e5d3b002603f4379a09"
+ hash: "a01ffd7ab177f850f3d8320da19a03ce"
}
Frame {
msec: 1712
- hash: "f6904a918a6475f1965d74372e52a4b1"
+ hash: "15bd47f2c5c8cefe7565790b429aa6a4"
}
Frame {
msec: 1728
- hash: "9e2312ddfc1648b615288107a06c9f9c"
+ hash: "b90692eafe68c2b04057af887617667c"
}
Frame {
msec: 1744
- hash: "95c470273b1cb08d4d602efcce339554"
+ hash: "edb22bd93a83de0cd3a046ed5a513ece"
}
Frame {
msec: 1760
- hash: "dade96f707d4a21885480e13b258b7e9"
+ hash: "f08fa88d05f48c42dd1eba538dc464d4"
}
Frame {
msec: 1776
- hash: "0bfbd46f1d4cf562253fb383776cb601"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 1792
- hash: "0bfbd46f1d4cf562253fb383776cb601"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 1808
- hash: "0bfbd46f1d4cf562253fb383776cb601"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 1824
- hash: "0bfbd46f1d4cf562253fb383776cb601"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 1840
- hash: "0bfbd46f1d4cf562253fb383776cb601"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 1856
- hash: "0bfbd46f1d4cf562253fb383776cb601"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 1872
- hash: "0bfbd46f1d4cf562253fb383776cb601"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 1888
- hash: "0bfbd46f1d4cf562253fb383776cb601"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 1904
- hash: "0bfbd46f1d4cf562253fb383776cb601"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 1920
- image: "dynamic.1.png"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 1936
- hash: "0bfbd46f1d4cf562253fb383776cb601"
+ image: "dynamic.2.png"
}
Frame {
msec: 1952
- hash: "0bfbd46f1d4cf562253fb383776cb601"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 1968
- hash: "0bfbd46f1d4cf562253fb383776cb601"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 1984
- hash: "0bfbd46f1d4cf562253fb383776cb601"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2000
- hash: "0bfbd46f1d4cf562253fb383776cb601"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2016
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2032
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2048
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2064
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2080
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2096
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2112
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2128
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2144
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2160
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2176
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2192
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2208
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2224
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2240
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2256
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ec46803523ee0516ed2c89923ff2ded7"
}
Frame {
msec: 2272
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "6b8b68e359f532729bf25a6851563ad7"
}
Frame {
msec: 2288
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "1ee3cf0c3c738a909f1b40b4ef49ac50"
}
Frame {
msec: 2304
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "71889e0f81eeb252dd91a46af5ce24e7"
}
Frame {
msec: 2320
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "99390a696ac524d752672df6f2136fa3"
}
Frame {
msec: 2336
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "00919914f1623bb260e0f99b471aa182"
}
Frame {
msec: 2352
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "64bd7ff1518a3e84c4b40511c5c0ff2d"
}
Frame {
msec: 2368
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "b68da721bf79592e49408b098f72e884"
}
Frame {
msec: 2384
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "6a8ca937b7c961c403ab1662d170c1a5"
}
Frame {
msec: 2400
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "3f4034da4cd71738d1130c3baa38cf9b"
}
Frame {
msec: 2416
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "97a86d3c04d07508604b46732b121edd"
}
Frame {
msec: 2432
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "42e9ab3ed744d1a9a7eb5b7a206f29b3"
}
Frame {
msec: 2448
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "ff86192c1b9c0faabb5563260cb1bff2"
}
Frame {
msec: 2464
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "e1de0e431b971deb546935b6b2fc78e7"
}
Frame {
msec: 2480
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "b7817a7f15d8e727e25719de8cc7d50a"
}
Frame {
msec: 2496
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "66772971897fc00d01d067e5fc38f848"
}
Frame {
msec: 2512
- hash: "6fc83e8d4ac99b34062c122a8f7f1850"
+ hash: "175db8c0324af4c206f9673f0a8d0477"
}
Frame {
msec: 2528
- hash: "fabf4e535bc4cc17497939d2eeae4a2d"
+ hash: "f3dea687e0ca335b987b6b3c7d736469"
}
Frame {
msec: 2544
- hash: "a7981035f46869f5ae824d0c58b263b2"
+ hash: "44d035dd8e302b75c5a7f98a2005fe75"
}
Frame {
msec: 2560
- hash: "86d8e369bdceb499b244f84ed9e80ba3"
+ hash: "140cf53cb6873b14e6263537f84b0aa0"
}
Frame {
msec: 2576
- hash: "e28a7dc7ea8690da75670b5a6e93a26b"
+ hash: "6c9090d4488289e69562747271459d7d"
}
Frame {
msec: 2592
- hash: "bf4e815360a67bd80732bd8812269b21"
+ hash: "49e92db256f5be8c4e35566eea8fca70"
}
Frame {
msec: 2608
- hash: "a6f8c56cb93da8acc0c90e35596a60d4"
+ hash: "80f41d2eb743ee13fcc486651e310fe2"
}
Frame {
msec: 2624
- hash: "1e60656f0758605169e51b57bd03af36"
+ hash: "f581fdcaf30c0efd4518e538e88c2ebf"
}
Frame {
msec: 2640
- hash: "c069b26b9fae47e0104070d702ba9562"
+ hash: "c028db6753cf60bf587e6c46080a31ea"
}
Frame {
msec: 2656
- hash: "457eb2ca1adff6cbb158afa140b2f20b"
+ hash: "231b69aa9bdadbaf47cbfbc44a322a51"
}
Frame {
msec: 2672
- hash: "4e5e750b0d94b6777aebff85d38225d9"
+ hash: "f0bcc02aaab3fad2ff53fc2d7541d4aa"
}
Frame {
msec: 2688
- hash: "96d9840c2354a8786a8470309be97544"
+ hash: "80e34154585ba3480e37eaac6bfa396c"
}
Frame {
msec: 2704
- hash: "ac7570cc7eeff1acd8c47f2d9328f8be"
+ hash: "e1ebf3ba98b2df53ac9f72744034ba6d"
}
Frame {
msec: 2720
- hash: "887f937bb263c54f29659f27f2b7a3e3"
+ hash: "b8f749a58888f90ed5cabe7aa2eee1ee"
}
Frame {
msec: 2736
- hash: "616371183c82b97f69a4c6e2367b8066"
+ hash: "3a78458aa124a331f5b1616be5eea914"
}
Frame {
msec: 2752
- hash: "36de8ffa9abe850fb681b37aea45ef8b"
+ hash: "c442c02859bc35a8e5493200e68b1730"
}
Frame {
msec: 2768
- hash: "0505101f0edaaf7ff17deeaaddc6bbf9"
+ hash: "0cc4d24a1e1fa75a339a5b3dd07f18f3"
}
Frame {
msec: 2784
- hash: "e8c53dd8343d7d4c384c2f8507ff0631"
+ hash: "0d124bc578058db99e32d58f4b412758"
}
Frame {
msec: 2800
- hash: "e8c53dd8343d7d4c384c2f8507ff0631"
+ hash: "fc174a039606c5457532c9ac27c6faec"
}
Frame {
msec: 2816
- hash: "e8c53dd8343d7d4c384c2f8507ff0631"
+ hash: "db5d25d7c01605ec81cdab3e239a1f0f"
}
Frame {
msec: 2832
- hash: "e8c53dd8343d7d4c384c2f8507ff0631"
+ hash: "7dcffdbf9ac992aac0751bed5c38a0eb"
}
Frame {
msec: 2848
- hash: "e8c53dd8343d7d4c384c2f8507ff0631"
+ hash: "b59dc4f39b3e032d5cd34ffca098889f"
}
Frame {
msec: 2864
- hash: "e8c53dd8343d7d4c384c2f8507ff0631"
+ hash: "925d232189a3eee4bae08a8fe86a488b"
}
Frame {
msec: 2880
- image: "dynamic.2.png"
+ hash: "4ab3a889e27de8f45670c240f6d452a6"
}
Frame {
msec: 2896
- hash: "e8c53dd8343d7d4c384c2f8507ff0631"
+ image: "dynamic.3.png"
}
Frame {
msec: 2912
- hash: "e8c53dd8343d7d4c384c2f8507ff0631"
+ hash: "9b8629b588dcb840fcd32f73f66016ee"
}
Frame {
msec: 2928
- hash: "e8c53dd8343d7d4c384c2f8507ff0631"
+ hash: "dca8e45e930314a860f36343f4577738"
}
Frame {
msec: 2944
- hash: "e8c53dd8343d7d4c384c2f8507ff0631"
+ hash: "b68f3b38e154b65225211c6a1ca8ddb8"
}
Frame {
msec: 2960
- hash: "e8c53dd8343d7d4c384c2f8507ff0631"
+ hash: "d8168aea7962cad60132da9baf66f95c"
}
Frame {
msec: 2976
- hash: "e8c53dd8343d7d4c384c2f8507ff0631"
+ hash: "6f83cd7be71666e08172a2c59e715f2e"
}
Frame {
msec: 2992
- hash: "e8c53dd8343d7d4c384c2f8507ff0631"
+ hash: "f98c68954ed98f340e86c159fcf4f013"
}
Frame {
msec: 3008
- hash: "e8c53dd8343d7d4c384c2f8507ff0631"
+ hash: "e4692a0e6d82864e9027bcf893e0cf90"
}
Frame {
msec: 3024
- hash: "99e4d853d64a381e8db27707b5ff2b25"
+ hash: "ed02ff4d37ad03c0d0d53cf8163ed1c5"
}
Frame {
msec: 3040
- hash: "ab0e62aeffc0d57a5e1d63e6cf49b809"
+ hash: "fb116353a2ceabae2d93c9aac48727d8"
}
Frame {
msec: 3056
- hash: "4ab11bbf1fb6adb0eec8895f78a24a41"
+ hash: "7b8c99b86838c46db4e756cc039ba045"
}
Frame {
msec: 3072
- hash: "634ff2ceb39a3f263a3362238a4ae252"
+ hash: "c8d8e194bc957402fe2236b1a472faa6"
}
Frame {
msec: 3088
- hash: "7f4856873dc23a02297b2497101de9b9"
+ hash: "f0f3d8c8ac3604cd11b7492fe5ee023e"
}
Frame {
msec: 3104
- hash: "bca3919e9d8e6dc5badd8090401dc934"
+ hash: "b41cf314e4684423b4708ccd55904d60"
}
Frame {
msec: 3120
- hash: "824bfe40c3657cfe1368563640e4cfce"
+ hash: "4f578969386627b6e620e83bad5a6a6c"
}
Frame {
msec: 3136
- hash: "f831c1600f68bda139697c406ca70c5e"
+ hash: "bd9fcfaa4e79f969548af12d072c1ec2"
}
Frame {
msec: 3152
- hash: "f8102ca251a9ff46a8fe5a24cff0d2d6"
+ hash: "a418dc92f8b04fddf95f38bd24825ee6"
}
Frame {
msec: 3168
- hash: "f33407ad684aa16efc6615d1cf6fa4b9"
+ hash: "4684b3e318a08f0f2331a13143592d18"
}
Frame {
msec: 3184
- hash: "a73d27f776a6ebfc90309b34421700e5"
+ hash: "1e135a4fd2e7336d8a59ca3497374a3d"
}
Frame {
msec: 3200
- hash: "ff2a4e2663fc50dfec35152f0e79f935"
+ hash: "d1be76e2c56422b469a9d09e22f62df5"
}
Frame {
msec: 3216
- hash: "4935f5f58f2672e9d240625151044bda"
+ hash: "8827523a7f8fa89a56d932102dff7b52"
}
Frame {
msec: 3232
- hash: "f3ad5c203f621fe4d5d321c3c1880743"
+ hash: "e12e6b907af5e6feffed0b9e68c71895"
}
Frame {
msec: 3248
- hash: "d4fb7cd2e1f6a533dae65ddbb50da8ac"
+ hash: "7bc3605f5f241170732aba19ca649896"
}
Frame {
msec: 3264
- hash: "91705e9234c4f02d0a730f6270f9e95f"
+ hash: "d7da9274f30cacd419f0b0b7c8c8a728"
}
Frame {
msec: 3280
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "154775464235d2a2fb338c27f1490f27"
}
Frame {
msec: 3296
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "1657f65e8759eec3c026262bb271dd1c"
}
Frame {
msec: 3312
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "29b4c68846aab3c1dcf4e58861915c33"
}
Frame {
msec: 3328
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "fe22b3b991a80b34d6fe12515bfa2fd0"
}
Frame {
msec: 3344
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "961343bb9dcc1fbe81b4c20392c28cb9"
}
Frame {
msec: 3360
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "a2adb3179465e34b517bf906491a1b60"
}
Frame {
msec: 3376
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "067fb8a2f5043dd4616fb1539e3e9c4a"
}
Frame {
msec: 3392
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "009329915e9027d77218fd83334960ed"
}
Frame {
msec: 3408
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "81b05d8aef8152830c6f199d6dd94fd5"
}
Frame {
msec: 3424
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "b23fa537f88a97490e48fb3a8cd4b507"
}
Frame {
msec: 3440
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "182464f620768efe0253c97cda75d839"
}
Frame {
msec: 3456
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "f1ddbec396cead5d4acf9b65822becb6"
}
Frame {
msec: 3472
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "a73085722d33638517b3f60a16ce9fcd"
}
Frame {
msec: 3488
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "ecce53b0c525834341ee4b3c546e670c"
}
Frame {
msec: 3504
- hash: "41e177bec783497b996d6d5f6dac1a15"
+ hash: "86f1da737164290a90c1aef9355e2375"
}
Frame {
msec: 3520
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "722ec874122ad8dcc73820a3a2fb7dca"
}
Frame {
msec: 3536
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "35eb086b11482b752e2c02f1dc4d9099"
}
Frame {
msec: 3552
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "83cf9c0b5d0afd5d3cee4c446274f5c4"
}
Frame {
msec: 3568
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "e1bbef11fe02adb0756113e1106fe7f1"
}
Frame {
msec: 3584
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "774c8bb4585954274852d6bb07e64916"
}
Frame {
msec: 3600
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "b0264bcddf313d4e819a608143a86ac9"
}
Frame {
msec: 3616
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "5e3859fd56e5022cbc7831e22447f05d"
}
Frame {
msec: 3632
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "8c2a8b7321d2598b08d483914d4f319c"
}
Frame {
msec: 3648
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "f13913dbc015836e35d5a2ebc94bbeef"
}
Frame {
msec: 3664
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "1309af996f2d7a686f1d9177bc5c9be6"
}
Frame {
msec: 3680
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "460b3500b41624486fe8dcfde087d2b5"
}
Frame {
msec: 3696
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "de0837d19497021528dc782db4da084a"
}
Frame {
msec: 3712
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "18afb8f8e9aa6d4a5db376e26cd9a56d"
}
Frame {
msec: 3728
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "4fc1a8173824c2725160798b7d70aec2"
}
Frame {
msec: 3744
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "87a593f74c946d6af6e31c5a25898766"
}
Frame {
msec: 3760
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "57e68ec2aa5a21b11d21f388399713e5"
}
Frame {
msec: 3776
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "4cb9ee1d12b99fb98bedcbcc048867e4"
}
Frame {
msec: 3792
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "3eebd1f4f58210f6b546715997a984c2"
}
Frame {
msec: 3808
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "39eabc07bfcefb2ecd369abf94d706cd"
}
Frame {
msec: 3824
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "a0c46402b4700cc2099bdf42c47faf9b"
}
Frame {
msec: 3840
- image: "dynamic.3.png"
+ hash: "3c8b4831583922c7c1c85f227ef2b3dc"
}
Frame {
msec: 3856
- hash: "496dc6261695bcf04a8e574146544e98"
+ image: "dynamic.4.png"
}
Frame {
msec: 3872
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "e1b0d4cae609f3074fb1ac46c172bf4a"
}
Frame {
msec: 3888
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "09b76db3e4a95666ba9c37dd89996fa3"
}
Frame {
msec: 3904
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "b692386f34972d80aded2347e64ad2b6"
}
Frame {
msec: 3920
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "dc65b0a791002efffec05884aa948842"
}
Frame {
msec: 3936
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "069bab78e29d322894647f81d315184a"
}
Frame {
msec: 3952
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "39c8d804b3caf53845baba4ce98e007d"
}
Frame {
msec: 3968
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "3b477dfd05f07bdf0ba562d6068cafdb"
}
Frame {
msec: 3984
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "eb84ee75bdbf25dcc32587007f5dc9bd"
}
Frame {
msec: 4000
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "441d34bff2755e3c30bed80e2bdde69c"
}
Frame {
msec: 4016
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "4cb9ee1d12b99fb98bedcbcc048867e4"
}
Frame {
msec: 4032
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "3eebd1f4f58210f6b546715997a984c2"
}
Frame {
msec: 4048
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "39eabc07bfcefb2ecd369abf94d706cd"
}
Frame {
msec: 4064
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "a0c46402b4700cc2099bdf42c47faf9b"
}
Frame {
msec: 4080
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "3c8b4831583922c7c1c85f227ef2b3dc"
}
Frame {
msec: 4096
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "c92cba3c2825db4293153588c4b7b229"
}
Frame {
msec: 4112
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "e1b0d4cae609f3074fb1ac46c172bf4a"
}
Frame {
msec: 4128
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "09b76db3e4a95666ba9c37dd89996fa3"
}
Frame {
msec: 4144
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "b692386f34972d80aded2347e64ad2b6"
}
Frame {
msec: 4160
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "dc65b0a791002efffec05884aa948842"
}
Frame {
msec: 4176
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "069bab78e29d322894647f81d315184a"
}
Frame {
msec: 4192
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "39c8d804b3caf53845baba4ce98e007d"
}
Frame {
msec: 4208
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "3b477dfd05f07bdf0ba562d6068cafdb"
}
Frame {
msec: 4224
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "eb84ee75bdbf25dcc32587007f5dc9bd"
}
Frame {
msec: 4240
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "441d34bff2755e3c30bed80e2bdde69c"
}
Frame {
msec: 4256
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "57e68ec2aa5a21b11d21f388399713e5"
}
Frame {
msec: 4272
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "4cb9ee1d12b99fb98bedcbcc048867e4"
}
Frame {
msec: 4288
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "3eebd1f4f58210f6b546715997a984c2"
}
Frame {
msec: 4304
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "39eabc07bfcefb2ecd369abf94d706cd"
}
Frame {
msec: 4320
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "a0c46402b4700cc2099bdf42c47faf9b"
}
Frame {
msec: 4336
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "3c8b4831583922c7c1c85f227ef2b3dc"
}
Frame {
msec: 4352
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "c92cba3c2825db4293153588c4b7b229"
}
Frame {
msec: 4368
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "e1b0d4cae609f3074fb1ac46c172bf4a"
}
Frame {
msec: 4384
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "09b76db3e4a95666ba9c37dd89996fa3"
}
Frame {
msec: 4400
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "b692386f34972d80aded2347e64ad2b6"
}
Frame {
msec: 4416
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "dc65b0a791002efffec05884aa948842"
}
Frame {
msec: 4432
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "069bab78e29d322894647f81d315184a"
}
Frame {
msec: 4448
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "39c8d804b3caf53845baba4ce98e007d"
}
Frame {
msec: 4464
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "3b477dfd05f07bdf0ba562d6068cafdb"
}
Frame {
msec: 4480
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "eb84ee75bdbf25dcc32587007f5dc9bd"
}
Frame {
msec: 4496
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "441d34bff2755e3c30bed80e2bdde69c"
}
Frame {
msec: 4512
- hash: "496dc6261695bcf04a8e574146544e98"
+ hash: "57e68ec2aa5a21b11d21f388399713e5"
}
Frame {
msec: 4528
- hash: "9681be99003f8a14cc5654d06d2c8255"
+ hash: "4cb9ee1d12b99fb98bedcbcc048867e4"
}
Frame {
msec: 4544
- hash: "bcb592a2335aa2e35956881fd028f4e6"
+ hash: "3eebd1f4f58210f6b546715997a984c2"
}
Frame {
msec: 4560
- hash: "f914b25fdcb02a02b71220d82b7b2a75"
+ hash: "39eabc07bfcefb2ecd369abf94d706cd"
}
Frame {
msec: 4576
- hash: "63c82c08eb7f2bd50b54b94c952df3f2"
+ hash: "a0c46402b4700cc2099bdf42c47faf9b"
}
Frame {
msec: 4592
- hash: "8a8dc82be81fa55605c6c2e749895120"
+ hash: "3c8b4831583922c7c1c85f227ef2b3dc"
}
Frame {
msec: 4608
- hash: "271f8d79b8052dfcd840ffa9ba9ffeec"
+ hash: "c92cba3c2825db4293153588c4b7b229"
}
Frame {
msec: 4624
- hash: "8f77bbd0585b57e69ac1919bd81ee3b1"
+ hash: "e1b0d4cae609f3074fb1ac46c172bf4a"
}
Frame {
msec: 4640
- hash: "b974260a2f90e141ebc33ced98fbca88"
+ hash: "09b76db3e4a95666ba9c37dd89996fa3"
}
Frame {
msec: 4656
- hash: "77ada180f8a45652a6fa636d7ece4d9d"
+ hash: "b692386f34972d80aded2347e64ad2b6"
}
Frame {
msec: 4672
- hash: "4c8dc2e33cd989cb3b0938c6c75b5f95"
+ hash: "dc65b0a791002efffec05884aa948842"
}
Frame {
msec: 4688
- hash: "a145954989508b925a444e14f0c27a20"
+ hash: "069bab78e29d322894647f81d315184a"
}
Frame {
msec: 4704
- hash: "8d27ff203819174747ae4a5cee8d0ae8"
+ hash: "39c8d804b3caf53845baba4ce98e007d"
}
Frame {
msec: 4720
- hash: "830f34b0dab780c6efe2294872ba8508"
+ hash: "3b477dfd05f07bdf0ba562d6068cafdb"
}
Frame {
msec: 4736
- hash: "5d70a4bbd815569cfe5735b596bad080"
+ hash: "eb84ee75bdbf25dcc32587007f5dc9bd"
}
Frame {
msec: 4752
- hash: "964527bb82ea006e03b030c787a8597c"
+ hash: "441d34bff2755e3c30bed80e2bdde69c"
}
Frame {
msec: 4768
- hash: "1ad54954b818fa9e6032ac4b6114e7db"
+ hash: "4cb9ee1d12b99fb98bedcbcc048867e4"
}
Frame {
msec: 4784
- hash: "47865243cc252aef67774001af70c54c"
+ hash: "3eebd1f4f58210f6b546715997a984c2"
}
Frame {
msec: 4800
- image: "dynamic.4.png"
+ hash: "39eabc07bfcefb2ecd369abf94d706cd"
}
Frame {
msec: 4816
- hash: "47865243cc252aef67774001af70c54c"
+ image: "dynamic.5.png"
}
Frame {
msec: 4832
- hash: "47865243cc252aef67774001af70c54c"
+ hash: "3c8b4831583922c7c1c85f227ef2b3dc"
}
Frame {
msec: 4848
- hash: "47865243cc252aef67774001af70c54c"
+ hash: "c92cba3c2825db4293153588c4b7b229"
}
Frame {
msec: 4864
- hash: "47865243cc252aef67774001af70c54c"
+ hash: "e1b0d4cae609f3074fb1ac46c172bf4a"
}
Frame {
msec: 4880
- hash: "47865243cc252aef67774001af70c54c"
+ hash: "09b76db3e4a95666ba9c37dd89996fa3"
}
Frame {
msec: 4896
- hash: "47865243cc252aef67774001af70c54c"
+ hash: "b692386f34972d80aded2347e64ad2b6"
}
Frame {
msec: 4912
- hash: "47865243cc252aef67774001af70c54c"
+ hash: "dc65b0a791002efffec05884aa948842"
}
Frame {
msec: 4928
- hash: "47865243cc252aef67774001af70c54c"
+ hash: "069bab78e29d322894647f81d315184a"
}
Frame {
msec: 4944
- hash: "47865243cc252aef67774001af70c54c"
+ hash: "39c8d804b3caf53845baba4ce98e007d"
}
Frame {
msec: 4960
- hash: "47865243cc252aef67774001af70c54c"
+ hash: "3b477dfd05f07bdf0ba562d6068cafdb"
}
Frame {
msec: 4976
- hash: "47865243cc252aef67774001af70c54c"
+ hash: "eb84ee75bdbf25dcc32587007f5dc9bd"
}
Frame {
msec: 4992
- hash: "47865243cc252aef67774001af70c54c"
+ hash: "441d34bff2755e3c30bed80e2bdde69c"
}
Frame {
msec: 5008
- hash: "47865243cc252aef67774001af70c54c"
+ hash: "57e68ec2aa5a21b11d21f388399713e5"
}
Frame {
msec: 5024
- hash: "47865243cc252aef67774001af70c54c"
+ hash: "4cb9ee1d12b99fb98bedcbcc048867e4"
}
Frame {
msec: 5040
- hash: "baeb8adffc13e230e797e0437f2ad5fa"
+ hash: "3eebd1f4f58210f6b546715997a984c2"
}
Frame {
msec: 5056
- hash: "d2e440fcad0ee2b7b35d7e5c4e581f73"
+ hash: "39eabc07bfcefb2ecd369abf94d706cd"
}
Frame {
msec: 5072
- hash: "fb8acb2f69234d3ee089281d0297ad7c"
+ hash: "a0c46402b4700cc2099bdf42c47faf9b"
}
Frame {
msec: 5088
- hash: "7fda29a83dc535ed8d6b35e999400311"
+ hash: "3c8b4831583922c7c1c85f227ef2b3dc"
}
Frame {
msec: 5104
- hash: "6482e3eb10cfdbdeb57dd38ba3e3d67e"
+ hash: "c92cba3c2825db4293153588c4b7b229"
}
Frame {
msec: 5120
- hash: "4d222549bc2565c1598a532460aae4e6"
+ hash: "e1b0d4cae609f3074fb1ac46c172bf4a"
}
Frame {
msec: 5136
- hash: "776d1b0f9945c0e1ceda0cf117264919"
+ hash: "09b76db3e4a95666ba9c37dd89996fa3"
}
Frame {
msec: 5152
- hash: "f2c362b34a0982ee1a11dea6b063945e"
+ hash: "b692386f34972d80aded2347e64ad2b6"
}
Frame {
msec: 5168
- hash: "115f02b8893972b5b1d63525ce70762e"
+ hash: "dc65b0a791002efffec05884aa948842"
}
Frame {
msec: 5184
- hash: "7f2d53581fe2c6c45a628fa4cd9b5742"
+ hash: "069bab78e29d322894647f81d315184a"
}
Frame {
msec: 5200
- hash: "b5ed1120c4edf842b15d5144adbd93b0"
+ hash: "39c8d804b3caf53845baba4ce98e007d"
}
Frame {
msec: 5216
- hash: "3511938df57c4cdce316692de204b057"
+ hash: "3b477dfd05f07bdf0ba562d6068cafdb"
}
Frame {
msec: 5232
- hash: "99583918d068ab5d132fe7a699c2a7a6"
+ hash: "eb84ee75bdbf25dcc32587007f5dc9bd"
}
Frame {
msec: 5248
- hash: "c0ce9df18479dbb57fb1dbc777f4f0e5"
+ hash: "441d34bff2755e3c30bed80e2bdde69c"
}
Frame {
msec: 5264
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "57e68ec2aa5a21b11d21f388399713e5"
}
Frame {
msec: 5280
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "4cb9ee1d12b99fb98bedcbcc048867e4"
}
Frame {
msec: 5296
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "3eebd1f4f58210f6b546715997a984c2"
}
Frame {
msec: 5312
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "39eabc07bfcefb2ecd369abf94d706cd"
}
Frame {
msec: 5328
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "a0c46402b4700cc2099bdf42c47faf9b"
}
Frame {
msec: 5344
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "3c8b4831583922c7c1c85f227ef2b3dc"
}
Frame {
msec: 5360
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "c92cba3c2825db4293153588c4b7b229"
}
Frame {
msec: 5376
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "e1b0d4cae609f3074fb1ac46c172bf4a"
}
Frame {
msec: 5392
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "09b76db3e4a95666ba9c37dd89996fa3"
}
Frame {
msec: 5408
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "b692386f34972d80aded2347e64ad2b6"
}
Frame {
msec: 5424
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "dc65b0a791002efffec05884aa948842"
}
Frame {
msec: 5440
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "069bab78e29d322894647f81d315184a"
}
Frame {
msec: 5456
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "39c8d804b3caf53845baba4ce98e007d"
}
Frame {
msec: 5472
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "3b477dfd05f07bdf0ba562d6068cafdb"
}
Frame {
msec: 5488
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "eb84ee75bdbf25dcc32587007f5dc9bd"
}
Frame {
msec: 5504
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "441d34bff2755e3c30bed80e2bdde69c"
}
Frame {
msec: 5520
- hash: "b24db7b5c406328380fcf9927fb26c5c"
+ hash: "4cb9ee1d12b99fb98bedcbcc048867e4"
}
Frame {
msec: 5536
- hash: "98cc64411264d8a635a6afe6b11cee6e"
+ hash: "3eebd1f4f58210f6b546715997a984c2"
}
Frame {
msec: 5552
- hash: "b86434b7af8ad1db946c43a2791d69ab"
+ hash: "39eabc07bfcefb2ecd369abf94d706cd"
}
Frame {
msec: 5568
- hash: "f45616f9e33658d1dddb537e842c8768"
+ hash: "a0c46402b4700cc2099bdf42c47faf9b"
}
Frame {
msec: 5584
- hash: "e49d8955e27cdc19a37c331e56c81af1"
+ hash: "3c8b4831583922c7c1c85f227ef2b3dc"
}
Frame {
msec: 5600
- hash: "b2dbe764906b50195f65dc11a5842515"
+ hash: "c92cba3c2825db4293153588c4b7b229"
}
Frame {
msec: 5616
- hash: "71ce7c63d65c29cdffd83f5ae07f0b93"
+ hash: "e1b0d4cae609f3074fb1ac46c172bf4a"
}
Frame {
msec: 5632
- hash: "901d01e1fc777ec185cd023ad0ace4c1"
+ hash: "09b76db3e4a95666ba9c37dd89996fa3"
}
Frame {
msec: 5648
- hash: "a3f31de30fc2e92bae1f735504216216"
+ hash: "b692386f34972d80aded2347e64ad2b6"
}
Frame {
msec: 5664
- hash: "0fc52dd8102506e3e7671fa548551b23"
+ hash: "dc65b0a791002efffec05884aa948842"
}
Frame {
msec: 5680
- hash: "fb92809e728416035dbb91116ad8fe0e"
+ hash: "069bab78e29d322894647f81d315184a"
}
Frame {
msec: 5696
- hash: "9003dc8ca4f781909035cb03dc45864f"
+ hash: "39c8d804b3caf53845baba4ce98e007d"
}
Frame {
msec: 5712
- hash: "2bff1de793ad8521fd54413849c3cf29"
+ hash: "3b477dfd05f07bdf0ba562d6068cafdb"
}
Frame {
msec: 5728
- hash: "8362e4db7c4446282d844a4fc6632d19"
+ hash: "eb84ee75bdbf25dcc32587007f5dc9bd"
}
Frame {
msec: 5744
- hash: "b874fa274c6ec77c106ff4a0288f9169"
+ hash: "441d34bff2755e3c30bed80e2bdde69c"
}
Frame {
msec: 5760
- image: "dynamic.5.png"
+ hash: "57e68ec2aa5a21b11d21f388399713e5"
}
Frame {
msec: 5776
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ image: "dynamic.6.png"
}
Frame {
msec: 5792
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "3eebd1f4f58210f6b546715997a984c2"
}
Frame {
msec: 5808
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "39eabc07bfcefb2ecd369abf94d706cd"
}
Frame {
msec: 5824
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "a0c46402b4700cc2099bdf42c47faf9b"
}
Frame {
msec: 5840
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "3c8b4831583922c7c1c85f227ef2b3dc"
}
Frame {
msec: 5856
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "c92cba3c2825db4293153588c4b7b229"
}
Frame {
msec: 5872
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "e1b0d4cae609f3074fb1ac46c172bf4a"
}
Frame {
msec: 5888
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "09b76db3e4a95666ba9c37dd89996fa3"
}
Frame {
msec: 5904
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "b692386f34972d80aded2347e64ad2b6"
}
Frame {
msec: 5920
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "dc65b0a791002efffec05884aa948842"
}
Frame {
msec: 5936
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "069bab78e29d322894647f81d315184a"
}
Frame {
msec: 5952
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "39c8d804b3caf53845baba4ce98e007d"
}
Frame {
msec: 5968
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "3b477dfd05f07bdf0ba562d6068cafdb"
}
Frame {
msec: 5984
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "eb84ee75bdbf25dcc32587007f5dc9bd"
}
Frame {
msec: 6000
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "441d34bff2755e3c30bed80e2bdde69c"
}
Frame {
msec: 6016
- hash: "e64ac8e11e36cafb25c947c5802d54b9"
+ hash: "4cb9ee1d12b99fb98bedcbcc048867e4"
}
Frame {
msec: 6032
- hash: "7621e64568058b82bcb6f6b46cee3ebc"
+ hash: "3eebd1f4f58210f6b546715997a984c2"
}
Frame {
msec: 6048
- hash: "f77f6de6fc88813f49427b4888a59dbf"
+ hash: "39eabc07bfcefb2ecd369abf94d706cd"
}
Frame {
msec: 6064
- hash: "d3a48f596219372ac25941e4c5ec5b2b"
+ hash: "a0c46402b4700cc2099bdf42c47faf9b"
}
Frame {
msec: 6080
- hash: "d572d932b613f9ca1e0acf144f127dd1"
+ hash: "3c8b4831583922c7c1c85f227ef2b3dc"
}
Frame {
msec: 6096
- hash: "edf317eaf51d933bcd0f57f214921a81"
+ hash: "c92cba3c2825db4293153588c4b7b229"
}
Frame {
msec: 6112
- hash: "e0cee7959a5a8a08ad03d75e7b5c6ca1"
+ hash: "e1b0d4cae609f3074fb1ac46c172bf4a"
}
Frame {
msec: 6128
- hash: "96877a15f44d4a2c8d9974cb28b9e1b6"
+ hash: "09b76db3e4a95666ba9c37dd89996fa3"
}
Frame {
msec: 6144
- hash: "c0ffb0ef6dd9d007d201feebd2f68e44"
+ hash: "b692386f34972d80aded2347e64ad2b6"
}
Frame {
msec: 6160
- hash: "209fb930223243fa19c5dde9e85ec518"
+ hash: "dc65b0a791002efffec05884aa948842"
}
Frame {
msec: 6176
- hash: "ae98ac4dba0e78eb8fb7f7dbe29b2832"
+ hash: "069bab78e29d322894647f81d315184a"
}
Frame {
msec: 6192
- hash: "c94a7d68ce007d83df77a595a5815a96"
+ hash: "39c8d804b3caf53845baba4ce98e007d"
}
Frame {
msec: 6208
- hash: "4c28e409bf5a6c1289bcab8cd59a9e42"
+ hash: "3b477dfd05f07bdf0ba562d6068cafdb"
}
Frame {
msec: 6224
- hash: "ea1009f1a3446dd5ce937e6949794794"
+ hash: "eb84ee75bdbf25dcc32587007f5dc9bd"
}
Frame {
msec: 6240
- hash: "940c16766c2f87feef48e1187672ca9b"
+ hash: "441d34bff2755e3c30bed80e2bdde69c"
}
Frame {
msec: 6256
- hash: "93664c87c8dcfadc0345f646b2508625"
+ hash: "57e68ec2aa5a21b11d21f388399713e5"
}
Frame {
msec: 6272
- hash: "93664c87c8dcfadc0345f646b2508625"
+ hash: "4cb9ee1d12b99fb98bedcbcc048867e4"
}
Frame {
msec: 6288
- hash: "93664c87c8dcfadc0345f646b2508625"
+ hash: "3eebd1f4f58210f6b546715997a984c2"
}
Frame {
msec: 6304
- hash: "93664c87c8dcfadc0345f646b2508625"
+ hash: "39eabc07bfcefb2ecd369abf94d706cd"
}
Frame {
msec: 6320
- hash: "93664c87c8dcfadc0345f646b2508625"
+ hash: "a0c46402b4700cc2099bdf42c47faf9b"
}
Frame {
msec: 6336
- hash: "93664c87c8dcfadc0345f646b2508625"
+ hash: "3c8b4831583922c7c1c85f227ef2b3dc"
}
Frame {
msec: 6352
- hash: "93664c87c8dcfadc0345f646b2508625"
+ hash: "c92cba3c2825db4293153588c4b7b229"
}
Frame {
msec: 6368
- hash: "93664c87c8dcfadc0345f646b2508625"
+ hash: "e1b0d4cae609f3074fb1ac46c172bf4a"
}
Frame {
msec: 6384
- hash: "93664c87c8dcfadc0345f646b2508625"
+ hash: "09b76db3e4a95666ba9c37dd89996fa3"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/repeater.0.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/repeater.0.png
deleted file mode 100644
index f7018fd9d2..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/repeater.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.0.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.0.png
new file mode 100644
index 0000000000..75a6c49b35
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml
index b293d702a9..3365d4058a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml
@@ -6,334 +6,130 @@ VisualTest {
}
Frame {
msec: 16
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ image: "usingRepeater.0.png"
}
Frame {
msec: 32
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 48
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 64
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 80
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 96
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 112
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 128
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 144
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 160
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 176
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 192
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 208
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 224
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 240
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 256
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "1a396cf01a6c31155609532654653599"
}
Frame {
msec: 272
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 288
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 304
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 320
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 336
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 352
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 368
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 384
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 400
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 416
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 432
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 448
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 464
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 480
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 496
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
Frame {
msec: 512
- hash: "b72bfb206ae52e0e4fb8927b82d64b64"
- }
- Frame {
- msec: 528
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 544
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 560
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 576
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 592
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 608
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 624
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 640
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 656
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 672
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 688
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 704
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 720
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 736
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 752
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 768
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 784
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 800
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 816
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 832
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 848
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 864
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 880
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 896
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 912
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 928
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 944
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 960
- image: "usingRepeater.0.png"
- }
- Frame {
- msec: 976
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 992
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1008
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1024
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1040
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1056
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1072
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1088
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1104
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1120
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1136
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1152
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1168
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1184
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1200
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1216
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1232
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1248
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1264
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1280
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1296
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1312
- hash: "f2de1f70c5f242604beb4ee0251c8032"
- }
- Frame {
- msec: 1328
- hash: "f2de1f70c5f242604beb4ee0251c8032"
+ hash: "8a4565aee33d40840bda26b65b6a0d90"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/dynamic.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/dynamic.qml
index 8da3602aa5..b5685d1a9a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/dynamic.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/dynamic.qml
@@ -1,13 +1,14 @@
import QtQuick 1.0
Item {
- width: 400; height: 400;
+ property string skip: "Expected to fail until QTBUG-14839 is resolved"
+ width: 120; height: 60;
property int step: 0
function tick()
{
step++;
if(step == 1){
- row1.destroy(); //Not dynamically created, so is this valid?
+ //row1.destroy(); //Not dynamically created, so is this valid?
}else if(step == 2){
r2a.destroy();
}else if(step == 3){
@@ -21,42 +22,46 @@ Item {
}else if(step == 7){
r3c.parent = row2;
}else if(step == 8){
- row3.destroy();
+ //row3.destroy();//empty now, so should have no effect//May be invalid, but was deleting the reparent items at one point
}else{
repeater.model++;
}
}
- //Tests base positioner functionality, so just using row
- Row{
- id: row1
- Rectangle{id: r1a; width:20; height:20; color: "red"}
- Rectangle{id: r1b; width:20; height:20; color: "green"}
- Rectangle{id: r1c; width:20; height:20; color: "blue"}
- }
- Row{
- y:20
- id: row2
- move: Transition{NumberAnimation{properties:"x"}}
- Repeater{
- id: repeater
- model: 0;
- delegate: Component{ Rectangle { color: "yellow"; width:20; height:20;}}
+ //Tests base positioner functionality, so don't need them all.
+ Column{
+ move: Transition{NumberAnimation{properties:"y"}}
+ Row{
+ id: row1
+ height: childrenRect.height
+ Rectangle{id: r1a; width:20; height:20; color: "red"}
+ Rectangle{id: r1b; width:20; height:20; color: "green"}
+ Rectangle{id: r1c; width:20; height:20; color: "blue"}
+ }
+ Row{
+ id: row2
+ height: childrenRect.height
+ move: Transition{NumberAnimation{properties:"x"}}
+ Repeater{
+ id: repeater
+ model: 0;
+ delegate: Component{ Rectangle { color: "yellow"; width:20; height:20;}}
+ }
+ Rectangle{id: r2a; width:20; height:20; color: "red"}
+ Rectangle{id: r2b; width:20; height:20; color: "green"}
+ Rectangle{id: r2c; width:20; height:20; color: "blue"}
+ }
+ Row{
+ move: Transition{NumberAnimation{properties:"x"}}
+ id: row3
+ height: childrenRect.height
+ Rectangle{id: r3a; width:20; height:20; color: "red"}
+ Rectangle{id: r3b; width:20; height:20; color: "green"}
+ Rectangle{id: r3c; width:20; height:20; color: "blue"}
}
- Rectangle{id: r2a; width:20; height:20; color: "red"}
- Rectangle{id: r2b; width:20; height:20; color: "green"}
- Rectangle{id: r2c; width:20; height:20; color: "blue"}
- }
- Row{
- move: Transition{NumberAnimation{properties:"x"}}
- y:40
- id: row3
- Rectangle{id: r3a; width:20; height:20; color: "red"}
- Rectangle{id: r3b; width:20; height:20; color: "green"}
- Rectangle{id: r3c; width:20; height:20; color: "blue"}
}
Timer{
- interval: 500;
+ interval: 250;
running: true;
repeat: true;
onTriggered: tick();
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/usingRepeater.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/usingRepeater.qml
index c318a99b75..c236b6a73a 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/usingRepeater.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/usingRepeater.qml
@@ -1,7 +1,7 @@
import QtQuick 1.0
Item{
- width: 200; height: 600
+ width: 40; height: 320
Column{
Rectangle{color:"Red"; width:40; height:40;}
Repeater{
@@ -11,5 +11,6 @@ Item{
}
Rectangle{color:"Blue"; width:40; height:40;}
}
- Timer{ interval: 500; running: true; onTriggered: rep.model=6;}
+ Timer{ interval: 250; running: true; onTriggered: rep.model=6;}
+ Timer{ interval: 500; running: true; onTriggered: Qt.quit();}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.0.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.0.png
deleted file mode 100644
index 21b6afbed9..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.1.png
deleted file mode 100644
index bb8a02bc4c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.2.png
deleted file mode 100644
index da60237b23..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.3.png
deleted file mode 100644
index 3e943e8819..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.4.png
deleted file mode 100644
index 4fbaf2634c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.5.png
deleted file mode 100644
index c10d1966ab..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.6.png
deleted file mode 100644
index a672c064c4..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.qml b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.qml
deleted file mode 100644
index 2500ef0d3f..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/easefollow.qml
+++ /dev/null
@@ -1,1807 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "1f60efdb8704b92c9361daa468a25391"
- }
- Frame {
- msec: 32
- hash: "3bb6a87617e0e5d4922e573eec975886"
- }
- Frame {
- msec: 48
- hash: "268941737e6324d580890b151de621fb"
- }
- Frame {
- msec: 64
- hash: "99c674eccc082d7f0982257a748d93e5"
- }
- Frame {
- msec: 80
- hash: "2970467e8262c8a3f0b11be71245d048"
- }
- Frame {
- msec: 96
- hash: "63cbd06d6bb035d27c18dba49238d8b2"
- }
- Frame {
- msec: 112
- hash: "49f77bb3d323f882c0ec56e1f1040b3a"
- }
- Frame {
- msec: 128
- hash: "40263c5f9b5d2236536163785f832b4d"
- }
- Frame {
- msec: 144
- hash: "dc63b1c21a2027c4beb9c297a3677fbd"
- }
- Frame {
- msec: 160
- hash: "4fab52ea29a819fec032f19dbcbef012"
- }
- Frame {
- msec: 176
- hash: "60b48407a8f8ae2cce7d3e7c8b21991c"
- }
- Frame {
- msec: 192
- hash: "6e542c681092a5ebeef0534fa2bd2d6c"
- }
- Frame {
- msec: 208
- hash: "c7c6471969bbf81efdb86d1695548fc6"
- }
- Frame {
- msec: 224
- hash: "b7f4ad9a49feb400894209c02b94478a"
- }
- Frame {
- msec: 240
- hash: "3eb58b2f5233aead976183c13f241113"
- }
- Frame {
- msec: 256
- hash: "54f2036c50c6d8079fc0cadc01385980"
- }
- Frame {
- msec: 272
- hash: "f297659d75f6e724d72bd548821f4c9f"
- }
- Frame {
- msec: 288
- hash: "112798f080336fc9c603a7e9097dd8aa"
- }
- Frame {
- msec: 304
- hash: "c432e6ec2b53ca43cb7a7325d0cc379b"
- }
- Frame {
- msec: 320
- hash: "4a6d3db3efd665ad7f372bf3f2508ed7"
- }
- Frame {
- msec: 336
- hash: "0befa5dc4d2cc196fed0eb1a3aa75b8f"
- }
- Frame {
- msec: 352
- hash: "a34d010b50d59c362b54e44d69c2df91"
- }
- Frame {
- msec: 368
- hash: "cbdacced50186c87066ce1d46548b27e"
- }
- Frame {
- msec: 384
- hash: "a4060010ae4d3c0973bda48d68f7bd0a"
- }
- Frame {
- msec: 400
- hash: "47353437da587f732f986004c09884d0"
- }
- Frame {
- msec: 416
- hash: "080c348145167bbec671a04da6f7564f"
- }
- Frame {
- msec: 432
- hash: "69dead737c717a076ae3865680341fb4"
- }
- Frame {
- msec: 448
- hash: "1efdc31c5c8fa72fc848877deb6caaa4"
- }
- Frame {
- msec: 464
- hash: "28d7da1e933d0585d03acf4a529e7b42"
- }
- Frame {
- msec: 480
- hash: "bf85534124bf025b7ede0d6c80b8e443"
- }
- Frame {
- msec: 496
- hash: "cdbeb2d51541b1b1eff060efe993db91"
- }
- Frame {
- msec: 512
- hash: "52ad56ae16c8ab523adda8edc512dd87"
- }
- Frame {
- msec: 528
- hash: "61b1937f4c8dd2cb0ddd7031c5bfb3ab"
- }
- Frame {
- msec: 544
- hash: "1b109baba71b16827f90da654af093a3"
- }
- Frame {
- msec: 560
- hash: "d56621362802c8626868f36ba1e7db22"
- }
- Frame {
- msec: 576
- hash: "ee5555ec3ad8760f43bbf5958a925936"
- }
- Frame {
- msec: 592
- hash: "1ed2831144a453af1978605c0e42d17c"
- }
- Frame {
- msec: 608
- hash: "c74d5cdb3395a702269dfa88c8c9d975"
- }
- Frame {
- msec: 624
- hash: "ea98ddd9588cc23fd82a342ec2925ba8"
- }
- Frame {
- msec: 640
- hash: "e76b94d6d57f1a510f7649eaab892562"
- }
- Frame {
- msec: 656
- hash: "022f40b6fe9dbaf8019855234acb3461"
- }
- Frame {
- msec: 672
- hash: "467da4f48aa6aeb113f0797facf157e8"
- }
- Frame {
- msec: 688
- hash: "8df407aadd4d896eb6537e1555a0242f"
- }
- Frame {
- msec: 704
- hash: "122e4671881e31f54e617729f4fbb3b0"
- }
- Frame {
- msec: 720
- hash: "562718f101c3cd7525b890076413df5e"
- }
- Frame {
- msec: 736
- hash: "07feae99ecf4b70eb094fd3e10deca56"
- }
- Frame {
- msec: 752
- hash: "0980d133b1006cc07796023880415163"
- }
- Frame {
- msec: 768
- hash: "7112b6ac97678b3b942c64c5108f0329"
- }
- Frame {
- msec: 784
- hash: "bb9f893a9aaee60ab6c30918552828a4"
- }
- Frame {
- msec: 800
- hash: "65d1f29437aaaea33676757276f1e434"
- }
- Frame {
- msec: 816
- hash: "52adcf2509f3236ac8ef571708e77206"
- }
- Frame {
- msec: 832
- hash: "22df5e7eda8a813531d0e0366cbfbf64"
- }
- Frame {
- msec: 848
- hash: "fe9b7b7812dd2410b8ed2eb19aa78f4d"
- }
- Frame {
- msec: 864
- hash: "141e22de4469f316b5ef5471f3c7bba0"
- }
- Frame {
- msec: 880
- hash: "1125c0a105fc4a2cae36b798058ce23f"
- }
- Frame {
- msec: 896
- hash: "8c17c5da2ae867fb0016a485ba9e4166"
- }
- Frame {
- msec: 912
- hash: "d8da9fc7ec4dcefb894c5a6a71e9d001"
- }
- Frame {
- msec: 928
- hash: "00ff642bea89fd89de394d78f8c5db33"
- }
- Frame {
- msec: 944
- hash: "8549063d517a3ce1ffd44c56b3b6cf5e"
- }
- Frame {
- msec: 960
- image: "easefollow.0.png"
- }
- Frame {
- msec: 976
- hash: "95a642caa72bb31cc1e04ecc12d07cd0"
- }
- Frame {
- msec: 992
- hash: "e65c823476bf920d0386f62ca831e6a0"
- }
- Frame {
- msec: 1008
- hash: "91e8913dc693c91a674a10b5b088dd8f"
- }
- Frame {
- msec: 1024
- hash: "1a469ffa0d530f72c78dc14783891c78"
- }
- Frame {
- msec: 1040
- hash: "6e46a83d07f8bc034b421103ef0e4f8c"
- }
- Frame {
- msec: 1056
- hash: "8ddacab411a8b73b6c9e69576fa1b003"
- }
- Frame {
- msec: 1072
- hash: "41f419a85fe44efe27c9a526d83a1e9a"
- }
- Frame {
- msec: 1088
- hash: "73d4ece31b258f9caf4556ce20a5be1f"
- }
- Frame {
- msec: 1104
- hash: "ef3ebe0acb50386cf79b9f08fbba2fbc"
- }
- Frame {
- msec: 1120
- hash: "c11a84d2fa80f28adb1466409812e987"
- }
- Frame {
- msec: 1136
- hash: "2e9db854b02d28b38063ff2a8e821ed1"
- }
- Frame {
- msec: 1152
- hash: "48e073c0e6b19aea8314629a2179af87"
- }
- Frame {
- msec: 1168
- hash: "77e518b7428d93b67a8fb0d33d85ed97"
- }
- Frame {
- msec: 1184
- hash: "1d18323af9c62e015513451883f8b39f"
- }
- Frame {
- msec: 1200
- hash: "df49889ba157cdc1ca240d08d2760ad7"
- }
- Frame {
- msec: 1216
- hash: "7b8cd2bcf0a4c38ab870f27894a43d2f"
- }
- Frame {
- msec: 1232
- hash: "84f10e0c9fd57dd1799df7fc34c5ef01"
- }
- Frame {
- msec: 1248
- hash: "ead4e609bc4a0755032b1648485b9625"
- }
- Frame {
- msec: 1264
- hash: "9a9829c3bd4a3a4155383c37e21e8db8"
- }
- Frame {
- msec: 1280
- hash: "5008917f60256abad867f32c1caf954d"
- }
- Frame {
- msec: 1296
- hash: "c21455d66ed0754177af5ce44b7c7600"
- }
- Frame {
- msec: 1312
- hash: "e8332f2586d80a2700b610e8fe5c72d9"
- }
- Frame {
- msec: 1328
- hash: "0d0c8af138f98bae8a370ebec4a4796c"
- }
- Frame {
- msec: 1344
- hash: "04065e8feeb900d18deeb941572f7f10"
- }
- Frame {
- msec: 1360
- hash: "992a225b1f25bf5b21dd7f8a55dc4b70"
- }
- Frame {
- msec: 1376
- hash: "8ef739d91ee2a4337cbfc3dc94ce9845"
- }
- Frame {
- msec: 1392
- hash: "46744977a26b37ab65e65e1891ceafe7"
- }
- Frame {
- msec: 1408
- hash: "1b4c0d79eeb8d6b2e30172f3664407b9"
- }
- Frame {
- msec: 1424
- hash: "d572831ed34d14d1125570b8b8767bdb"
- }
- Frame {
- msec: 1440
- hash: "8b785c756d11e0fc18959d0897a45673"
- }
- Frame {
- msec: 1456
- hash: "164a71ffcea63ceb6c1ebeb8d0d07af1"
- }
- Frame {
- msec: 1472
- hash: "e128dc12d5117eed9f7c0a16e8348ba2"
- }
- Frame {
- msec: 1488
- hash: "4c7db5b12d83bf22b1c88ac06ca7c385"
- }
- Frame {
- msec: 1504
- hash: "c7283df8dbd78121e17a5893e3ea4f3c"
- }
- Frame {
- msec: 1520
- hash: "fea768e5bb43f6d86d88ced9f73915de"
- }
- Frame {
- msec: 1536
- hash: "b99b54f8e75452c539bb4e7b6a36e944"
- }
- Frame {
- msec: 1552
- hash: "b7274938d16f03b376ad9739e2e893f1"
- }
- Frame {
- msec: 1568
- hash: "e61601942193add8c1c8ebf5c5319932"
- }
- Frame {
- msec: 1584
- hash: "8fdc2181e0120391505706716ba7e5d7"
- }
- Frame {
- msec: 1600
- hash: "66f737ed28453da5175d6b5e807c374d"
- }
- Frame {
- msec: 1616
- hash: "2e00a7895d61edbe794f0a8000871b30"
- }
- Frame {
- msec: 1632
- hash: "1a279fc6b7c4105eccc4e3bc99481bef"
- }
- Frame {
- msec: 1648
- hash: "bc1dea4d23ca9bc29b72a8c2bde4787b"
- }
- Frame {
- msec: 1664
- hash: "8ef40e0be5fb82b32b365b3d4b85421d"
- }
- Frame {
- msec: 1680
- hash: "ee37c68bf38d5eed4e3e9a31306f6801"
- }
- Frame {
- msec: 1696
- hash: "303d760c87a7a833606c8e9f46cb5fc0"
- }
- Frame {
- msec: 1712
- hash: "cc2563b47c58efd39bec6b4e0f2995bb"
- }
- Frame {
- msec: 1728
- hash: "33f7daf09497510475283d6dc7c51228"
- }
- Frame {
- msec: 1744
- hash: "5b5e2de9934c80bd49e0eb7afd85151d"
- }
- Frame {
- msec: 1760
- hash: "5e6bf706336789ca6b60a82998b70113"
- }
- Frame {
- msec: 1776
- hash: "b4d4a860f49bfb88dd2079862b40b7ec"
- }
- Frame {
- msec: 1792
- hash: "07b571fa55327487e34a592c778beb67"
- }
- Frame {
- msec: 1808
- hash: "cb5b349a536cf75a83734181b3eab92b"
- }
- Frame {
- msec: 1824
- hash: "ce903bb58c5c86f2955e68412893aedf"
- }
- Frame {
- msec: 1840
- hash: "ffa89e879558c83ed538812a93e2fe29"
- }
- Frame {
- msec: 1856
- hash: "562aa66bf537853be82a654542c8b80e"
- }
- Frame {
- msec: 1872
- hash: "dc45dac0cc20220bcc81210fb5506ee2"
- }
- Frame {
- msec: 1888
- hash: "3b429eb827df0800a1ad8b906ea32ef9"
- }
- Frame {
- msec: 1904
- hash: "d6ebaf12515d9e24cdbf6d75080c0b28"
- }
- Frame {
- msec: 1920
- image: "easefollow.1.png"
- }
- Frame {
- msec: 1936
- hash: "9f6d26224055c809dc2f3490cd0ff880"
- }
- Frame {
- msec: 1952
- hash: "5630cc8f0b401f7d81bdceaaae5cce68"
- }
- Frame {
- msec: 1968
- hash: "dafda60467e5e2b99c41543dd191ac2d"
- }
- Frame {
- msec: 1984
- hash: "e053cb07a734278cd111d612883c165e"
- }
- Frame {
- msec: 2000
- hash: "63870f3e99c11707004dab9439d61389"
- }
- Frame {
- msec: 2016
- hash: "14c311a6fab45f828c3a19535ea9edc8"
- }
- Frame {
- msec: 2032
- hash: "13e614446cbfcbfd2a7ecc5f0e8688df"
- }
- Frame {
- msec: 2048
- hash: "173c97f59da05b9347180a4824e60c06"
- }
- Frame {
- msec: 2064
- hash: "932e2a9bbcb7dc5befca8f63d8fa3c95"
- }
- Frame {
- msec: 2080
- hash: "4b8f232ffe0cbc7f900de5737c9f95be"
- }
- Frame {
- msec: 2096
- hash: "9686d294d4e931a5eed0e6b5bda63377"
- }
- Frame {
- msec: 2112
- hash: "969c569d92e3ec51dfbdd20d64432224"
- }
- Frame {
- msec: 2128
- hash: "0cef3550cca9fb5611b836098c517dd1"
- }
- Frame {
- msec: 2144
- hash: "6728080a09aa5d48462a3abb8e285e8a"
- }
- Frame {
- msec: 2160
- hash: "4b904dc671b7fc72db0b6e52543e96bd"
- }
- Frame {
- msec: 2176
- hash: "38232f89dffc9b16db6ea60b02f8d1be"
- }
- Frame {
- msec: 2192
- hash: "6b41f2a0f950eddad217a03e137f9a9b"
- }
- Frame {
- msec: 2208
- hash: "be576ea74c2c404da46fcf1d22de6df9"
- }
- Frame {
- msec: 2224
- hash: "3f44bad4b51ceff2944337064a5efa91"
- }
- Frame {
- msec: 2240
- hash: "e1ab98ac1366e9fd8af62a6a26878c73"
- }
- Frame {
- msec: 2256
- hash: "bd131e1725a54b3dbbb86a29ca8a56a9"
- }
- Frame {
- msec: 2272
- hash: "4d3e8af70f228643803f780c4e36f1a6"
- }
- Frame {
- msec: 2288
- hash: "853a5ab4271af7a7638454cfa883aa33"
- }
- Frame {
- msec: 2304
- hash: "ede9260157000f346900153ce2409278"
- }
- Frame {
- msec: 2320
- hash: "b2b16d8ce1ba89f0d9558ac387e25c3d"
- }
- Frame {
- msec: 2336
- hash: "387d338910453637c5cf80fa35528e56"
- }
- Frame {
- msec: 2352
- hash: "26deabf9cdd994455f2a8802eb0e04dc"
- }
- Frame {
- msec: 2368
- hash: "13939659a315dae1b81e3ea166102edf"
- }
- Frame {
- msec: 2384
- hash: "be92b55bb7562372401b25a9167abb2b"
- }
- Frame {
- msec: 2400
- hash: "ee7bf60d7ee97b7de5e909b9af88df80"
- }
- Frame {
- msec: 2416
- hash: "434313a3bcd1d7582b0d89b9a145ef09"
- }
- Frame {
- msec: 2432
- hash: "0857ca59a283897e3df62b9633488f83"
- }
- Frame {
- msec: 2448
- hash: "76718fc7e3d21b54930bc8307a57733a"
- }
- Frame {
- msec: 2464
- hash: "93a91588b38129053a462b920fd686e3"
- }
- Frame {
- msec: 2480
- hash: "2a2486c52fde915696fd8cbd3682e8db"
- }
- Frame {
- msec: 2496
- hash: "b1f4ab6cc5fb4a3a1b4885f2d1b29277"
- }
- Frame {
- msec: 2512
- hash: "4258afce8a85a2e9ead149e34b43d8fc"
- }
- Frame {
- msec: 2528
- hash: "6672c71b98e13d51ebb523aed9036a72"
- }
- Frame {
- msec: 2544
- hash: "eaa39af7eb78948f433e3b44a9454317"
- }
- Frame {
- msec: 2560
- hash: "0a766bc97bea67d4b848c703eaa6777a"
- }
- Frame {
- msec: 2576
- hash: "0b461ec1885ede1dd96b71cf38bfd3d6"
- }
- Frame {
- msec: 2592
- hash: "15efc929370a3864529080e30db1026a"
- }
- Frame {
- msec: 2608
- hash: "e1529e30ff1e4ea1b092a88e85f2f1f6"
- }
- Frame {
- msec: 2624
- hash: "f29bd9dbf7317e94b885da63f0cb7374"
- }
- Frame {
- msec: 2640
- hash: "e5294e087e2ce0d7d936c0129b6c37ae"
- }
- Frame {
- msec: 2656
- hash: "9c63129e774b391cc398cf5da5c9339c"
- }
- Frame {
- msec: 2672
- hash: "4371d85854419d4b00671176bb7c5a2b"
- }
- Frame {
- msec: 2688
- hash: "dd10b3f50e2fdc56c75f00321634b1cc"
- }
- Frame {
- msec: 2704
- hash: "aac6256b21152a5f1f8c576b667d275e"
- }
- Frame {
- msec: 2720
- hash: "c937c44037b2228590d334df4d56a86f"
- }
- Frame {
- msec: 2736
- hash: "f6c714db51cbd1bdb737afe612c33f9c"
- }
- Frame {
- msec: 2752
- hash: "0bba45af79f3201bc7cf042d5c648f73"
- }
- Frame {
- msec: 2768
- hash: "941b08ddbafea3bd46262c060b1e290b"
- }
- Frame {
- msec: 2784
- hash: "d898918dc2023de239b4ab38f7420960"
- }
- Frame {
- msec: 2800
- hash: "d1a16dc2282329113093d06862e7a871"
- }
- Frame {
- msec: 2816
- hash: "bba5359475f643fbeee240e71e843d4c"
- }
- Frame {
- msec: 2832
- hash: "03cf861f4b6bc767e723e47e95c2448b"
- }
- Frame {
- msec: 2848
- hash: "a64bf158c6199b88bc2db3b741d342f0"
- }
- Frame {
- msec: 2864
- hash: "cf0fe7cb42ba842f1c28c1211adb768d"
- }
- Frame {
- msec: 2880
- image: "easefollow.2.png"
- }
- Frame {
- msec: 2896
- hash: "9b3c6414e4ef5a452a5c92bb0b893fc3"
- }
- Frame {
- msec: 2912
- hash: "7cc7ddec3ac2d8cac33c0b0f80a7544d"
- }
- Frame {
- msec: 2928
- hash: "7dd4e7d606e953c872c57fad786d64aa"
- }
- Frame {
- msec: 2944
- hash: "117cc903a39d99ca22f6556095e6f883"
- }
- Frame {
- msec: 2960
- hash: "c6c9304fd65fee1909473bdb21ac7806"
- }
- Frame {
- msec: 2976
- hash: "8e704fe81c040f49c4d80e7dcc46084d"
- }
- Frame {
- msec: 2992
- hash: "d202d5c0a058e1e088fdd280e59f17bb"
- }
- Frame {
- msec: 3008
- hash: "90c072dea32c056f8bd6d010df681929"
- }
- Frame {
- msec: 3024
- hash: "80b4e99f1b47e64084e295a2a3e1121e"
- }
- Frame {
- msec: 3040
- hash: "41d6307075ec9ae9e92d227921f71289"
- }
- Frame {
- msec: 3056
- hash: "f33de23cf4a5c4881310c6866261d387"
- }
- Frame {
- msec: 3072
- hash: "441faa0a1fc95d66b27479dfc1e40188"
- }
- Frame {
- msec: 3088
- hash: "2314b5f6ba3864abd5e87bc87bd621b0"
- }
- Frame {
- msec: 3104
- hash: "e71e3b0ad953258ceef3101e38283fdb"
- }
- Frame {
- msec: 3120
- hash: "890c3b0e727f136bf1ccc486531c9677"
- }
- Frame {
- msec: 3136
- hash: "2a0d23e6dcc6475c323dbf8eb36e8094"
- }
- Frame {
- msec: 3152
- hash: "692682e82347936f87a66484b428e959"
- }
- Frame {
- msec: 3168
- hash: "cf4005c08789762ad21be1a1d78755c9"
- }
- Frame {
- msec: 3184
- hash: "566184563091626bb20ae679e3ce3b91"
- }
- Frame {
- msec: 3200
- hash: "f88a24ad3bbc2699924bb9a7ff6490b3"
- }
- Frame {
- msec: 3216
- hash: "23f3f63d07b2bdc2b82ff4e8606a634d"
- }
- Frame {
- msec: 3232
- hash: "fe121c71ce469ec6f0bf957eb2f0447b"
- }
- Frame {
- msec: 3248
- hash: "ba217690a33c701afe11842aa8105cbb"
- }
- Frame {
- msec: 3264
- hash: "e5c7c1323108f13ba26f5198cc62c137"
- }
- Frame {
- msec: 3280
- hash: "664f76d3d0008b56be2790c470befc91"
- }
- Frame {
- msec: 3296
- hash: "b3f54070ba64b983ccd2a15941ef4c35"
- }
- Frame {
- msec: 3312
- hash: "8a0ba2ae36ad3811778f3a3bc55743f5"
- }
- Frame {
- msec: 3328
- hash: "bfdc71733ca45a2ba2e8abf751554a62"
- }
- Frame {
- msec: 3344
- hash: "686e4d7bb5ae148d37fc2a1f6004a33a"
- }
- Frame {
- msec: 3360
- hash: "29c553d9fe42fdbbd019d0ead61dffa0"
- }
- Frame {
- msec: 3376
- hash: "bfa2b72c6554a2ed80a3b86f2cbed986"
- }
- Frame {
- msec: 3392
- hash: "074ff90417a947f0a04926d5675d073b"
- }
- Frame {
- msec: 3408
- hash: "6f56f9e0aa40149156ca71d6f8d4476a"
- }
- Frame {
- msec: 3424
- hash: "950ce749bbf572021de2dd1688cb87e6"
- }
- Frame {
- msec: 3440
- hash: "2d0903bd71862dc6f28bd702d955ae99"
- }
- Frame {
- msec: 3456
- hash: "2733adae56728f1b744a4086ecb98052"
- }
- Frame {
- msec: 3472
- hash: "779859d739e799bba15beeb97d18e682"
- }
- Frame {
- msec: 3488
- hash: "9074386cfabe136b8839637e5cd58f57"
- }
- Frame {
- msec: 3504
- hash: "fa5bcbf20c6ad0a218f23d98961229a1"
- }
- Frame {
- msec: 3520
- hash: "5406c94da1717eaa5eb0010564216059"
- }
- Frame {
- msec: 3536
- hash: "27d0a3c3a33c04df843bebd72ef79824"
- }
- Frame {
- msec: 3552
- hash: "270df9c99c2679071b854b3d82337f79"
- }
- Frame {
- msec: 3568
- hash: "5b3945505443a67e7a91f66fe42b4fe3"
- }
- Frame {
- msec: 3584
- hash: "9a2f8565c354cb366725368ed323ccf4"
- }
- Frame {
- msec: 3600
- hash: "6702cb7ccd61c008b511932d7bd5d107"
- }
- Frame {
- msec: 3616
- hash: "f6b86c3a1cc88357f588b6dae11aae30"
- }
- Frame {
- msec: 3632
- hash: "b10c23937f420db72af8abaf126f71c2"
- }
- Frame {
- msec: 3648
- hash: "7d6b0810ffc6e488c8168e19bccb7358"
- }
- Frame {
- msec: 3664
- hash: "c01ef69ec46391909619434e9d9dd0ce"
- }
- Frame {
- msec: 3680
- hash: "a046464fccb0c5ba1f63f8b569821a44"
- }
- Frame {
- msec: 3696
- hash: "8763c526924d882438f9aa9bfb4fe87d"
- }
- Frame {
- msec: 3712
- hash: "dede7a62d6e5c10e8f30caa075bd8dfd"
- }
- Frame {
- msec: 3728
- hash: "3b408e5c986f5bb01d8c3949876b792f"
- }
- Frame {
- msec: 3744
- hash: "0a458f3b17cdd3ea85522779c9346af9"
- }
- Frame {
- msec: 3760
- hash: "fef521f0301cce90af88d37e6d441ec8"
- }
- Frame {
- msec: 3776
- hash: "3d083e0822242b3b37c6839ca91a1f68"
- }
- Frame {
- msec: 3792
- hash: "f8fe013a717e6e61830137bdc78a8b40"
- }
- Frame {
- msec: 3808
- hash: "0ae80ad65dd194043500fa50b5a547a6"
- }
- Frame {
- msec: 3824
- hash: "a53c67fa32ef971eaea202fa5d8a6ad6"
- }
- Frame {
- msec: 3840
- image: "easefollow.3.png"
- }
- Frame {
- msec: 3856
- hash: "41f86bbf0658b127f01e8d46d7ec941b"
- }
- Frame {
- msec: 3872
- hash: "d20f21df127565f9eb87c5d759a638d9"
- }
- Frame {
- msec: 3888
- hash: "85ff94f03cea3e111807e90d062c1367"
- }
- Frame {
- msec: 3904
- hash: "aa637850fe5f05a71ac4c7d31dbb36ee"
- }
- Frame {
- msec: 3920
- hash: "c86a67096c5e62bb73b785cdf6a5b6b1"
- }
- Frame {
- msec: 3936
- hash: "9d53537f2c50a0016bf7bb522b2ec3d8"
- }
- Frame {
- msec: 3952
- hash: "b48630c27c27785ddce568a85d4dc58f"
- }
- Frame {
- msec: 3968
- hash: "01c1bdb6e261cc509f26712b13eeb554"
- }
- Frame {
- msec: 3984
- hash: "af8a44284695fd999acd5944434f0372"
- }
- Frame {
- msec: 4000
- hash: "b156d9d6d5163f007ac4a309d8927ae9"
- }
- Frame {
- msec: 4016
- hash: "2df3715416c3c005f04b66fe1258c0d8"
- }
- Frame {
- msec: 4032
- hash: "96b4a7c6b8542b50fc345b54d38ec82a"
- }
- Frame {
- msec: 4048
- hash: "7e62e757fafa06833444c3a7e1d96ce4"
- }
- Frame {
- msec: 4064
- hash: "5222a8f9366c7d974d0687d05d229069"
- }
- Frame {
- msec: 4080
- hash: "ec96169f4633c3bddfd582feeb8e9ad4"
- }
- Frame {
- msec: 4096
- hash: "cb10db893d1e1cb2a370507dc5679985"
- }
- Frame {
- msec: 4112
- hash: "d7e346c2ac77796bde639bd829b72e85"
- }
- Frame {
- msec: 4128
- hash: "ba5bea8857e4fb444bedd3873563e7db"
- }
- Frame {
- msec: 4144
- hash: "05556fba5d1714f70fd6c2bfb43d213b"
- }
- Frame {
- msec: 4160
- hash: "aeeabf35f9759f045a670a9b9f90dc68"
- }
- Frame {
- msec: 4176
- hash: "131bd453f4c7726e5fdd546252700e2e"
- }
- Frame {
- msec: 4192
- hash: "7c5c3b5bb7a4082e6b9b43640e29f4e2"
- }
- Frame {
- msec: 4208
- hash: "07515e21b7a7895f333e4a8bbd2202eb"
- }
- Frame {
- msec: 4224
- hash: "6cf136f223ac6edd39ba6ed9b4445884"
- }
- Frame {
- msec: 4240
- hash: "84264f5745add8a922101735ed8def84"
- }
- Frame {
- msec: 4256
- hash: "660863d1e4b361f2e5445b417be0d2ad"
- }
- Frame {
- msec: 4272
- hash: "7ceb86f4b16546370d72164d0ca3147c"
- }
- Frame {
- msec: 4288
- hash: "a13e97da9722545ad87ac3c5eb92c497"
- }
- Frame {
- msec: 4304
- hash: "5896b5307cbd609d2062d3607786d40c"
- }
- Frame {
- msec: 4320
- hash: "c8c511115394116e4544c67f615ea5d5"
- }
- Frame {
- msec: 4336
- hash: "59ca5fdf12a735e5c292901b54acccb2"
- }
- Frame {
- msec: 4352
- hash: "155cce2738d34e0eac86f5eb63d638f0"
- }
- Frame {
- msec: 4368
- hash: "83a840c3ae7dbd9a05c17fdd8be07d7a"
- }
- Frame {
- msec: 4384
- hash: "800a15de28b14d88f0ad58fc3f4a2520"
- }
- Frame {
- msec: 4400
- hash: "c8381439a3cd3f9e7f80061023723a6e"
- }
- Frame {
- msec: 4416
- hash: "e3d63000db4b9458b202dece49d1bdba"
- }
- Frame {
- msec: 4432
- hash: "c943e56781695798f3c221f8ab09681a"
- }
- Frame {
- msec: 4448
- hash: "1137ee66d7fbf5a84c33f5ffff15b3dd"
- }
- Frame {
- msec: 4464
- hash: "5a98013cc4462aad18cad8d941f77aa0"
- }
- Frame {
- msec: 4480
- hash: "d0b3748fb49a13c0ad9a68b0e2914921"
- }
- Frame {
- msec: 4496
- hash: "12113f71f9117670acbd7877edded7e0"
- }
- Frame {
- msec: 4512
- hash: "22983424da08cdae7a9c6a8905b37736"
- }
- Frame {
- msec: 4528
- hash: "b2db5618a025cefb2650124c81880c49"
- }
- Frame {
- msec: 4544
- hash: "84fb5e7edc5b42163a83e0cd362b3a46"
- }
- Frame {
- msec: 4560
- hash: "39d6f1ed0f60a0c366c22e1442c455ac"
- }
- Frame {
- msec: 4576
- hash: "702367f6e4aaa2a862e57f9e02a08758"
- }
- Frame {
- msec: 4592
- hash: "ecc75293bc156c560d55cb7d278a4e58"
- }
- Frame {
- msec: 4608
- hash: "e68af8e97ce65376fd7904e599440c92"
- }
- Frame {
- msec: 4624
- hash: "75fe9f766d6cf636cd72d8879a461439"
- }
- Frame {
- msec: 4640
- hash: "162aef147ef4bbb0cd92bd70e4f37f62"
- }
- Frame {
- msec: 4656
- hash: "d879aae8949976c7bad4d97f1e5b5549"
- }
- Frame {
- msec: 4672
- hash: "8a983d7228190721f988de2d72cb3aa2"
- }
- Frame {
- msec: 4688
- hash: "a4f3c63fde664d128cd35b129a4f9a23"
- }
- Frame {
- msec: 4704
- hash: "115fb5f3c9b7f1c28ab379596faba91c"
- }
- Frame {
- msec: 4720
- hash: "ea9600c4d6c77a3b32e59401aa84fe96"
- }
- Frame {
- msec: 4736
- hash: "bd6531fdd9cfd46af2df73bacb31f4c5"
- }
- Frame {
- msec: 4752
- hash: "33bdcf1df50eab5e7963c649fbd32226"
- }
- Frame {
- msec: 4768
- hash: "236e88fb72369a55f9eba4b50712ae85"
- }
- Frame {
- msec: 4784
- hash: "5eb3c14a6296fb3a1c58603b2fc937c8"
- }
- Frame {
- msec: 4800
- image: "easefollow.4.png"
- }
- Frame {
- msec: 4816
- hash: "31d11a1ce6422524241c77603fe53e61"
- }
- Frame {
- msec: 4832
- hash: "44e8b9947026c10b922c84883dd8e889"
- }
- Frame {
- msec: 4848
- hash: "d049e4f7c4bc1849398859a4d630c1b3"
- }
- Frame {
- msec: 4864
- hash: "e83b4757898e4eeef74be8213619fbfa"
- }
- Frame {
- msec: 4880
- hash: "d08f40615f2d5abc6236e856a67575dd"
- }
- Frame {
- msec: 4896
- hash: "d9cb26bf1b8bbafb2aed8f74bd454077"
- }
- Frame {
- msec: 4912
- hash: "aa321b94a6cc53b2ebac80e834c0a908"
- }
- Frame {
- msec: 4928
- hash: "48da37164be156b67a4b3b14e50f2375"
- }
- Frame {
- msec: 4944
- hash: "f522ce7728a4a9e7fad86c72f29bd8f9"
- }
- Frame {
- msec: 4960
- hash: "9bc1d16b4bda596702a3d8a3fad8a5c5"
- }
- Frame {
- msec: 4976
- hash: "5275dccf18745dec6c59b846de17d9ef"
- }
- Frame {
- msec: 4992
- hash: "4eb6babc177b96f69b148d52f56d82d7"
- }
- Frame {
- msec: 5008
- hash: "ccdfb454070ac04c4fe4f3513c52f8c8"
- }
- Frame {
- msec: 5024
- hash: "07f6adad6e8ff4f0eff92c758636a951"
- }
- Frame {
- msec: 5040
- hash: "241e0ad9218d49be477509e008e45548"
- }
- Frame {
- msec: 5056
- hash: "151a482e821779da8a61063f1cc73f8c"
- }
- Frame {
- msec: 5072
- hash: "1499d207c5a3a9bc7bbb84d9c5e35578"
- }
- Frame {
- msec: 5088
- hash: "c253753f653157a5058ef071f16b8bbb"
- }
- Frame {
- msec: 5104
- hash: "ec9fea5a870724a106b952edef7fb466"
- }
- Frame {
- msec: 5120
- hash: "99b673f8ed049d31a2aecabcc46d841d"
- }
- Frame {
- msec: 5136
- hash: "61e77fea693ea55aafbdc94c40c3ab33"
- }
- Frame {
- msec: 5152
- hash: "53e44a3732ee6858d5bd596b4c5d5305"
- }
- Frame {
- msec: 5168
- hash: "5b25d3894a56dc4f4a0aa8f88cb69e23"
- }
- Frame {
- msec: 5184
- hash: "5683ad02f1b9126f4e4ff6b03044fdc6"
- }
- Frame {
- msec: 5200
- hash: "0a3ec255575ec1b70e0b10cf59c7c5fd"
- }
- Frame {
- msec: 5216
- hash: "0f5f46fe3fdf42d4651891f13c8afc7e"
- }
- Frame {
- msec: 5232
- hash: "b6955407245c73e356a460d99dad77be"
- }
- Frame {
- msec: 5248
- hash: "6018b53414921943b37c33fa04a29697"
- }
- Frame {
- msec: 5264
- hash: "ff184d349ce0b648f8c1fce91ae997f6"
- }
- Frame {
- msec: 5280
- hash: "9c112a3a785d970593887eeab72fa7fe"
- }
- Frame {
- msec: 5296
- hash: "00384fb20d4c6cd6236d519d2d734cc3"
- }
- Frame {
- msec: 5312
- hash: "601ea99400e5f50ee9a5a4b74b6f3017"
- }
- Frame {
- msec: 5328
- hash: "9afed04bf7eca24d9b6d31ac84ae59c2"
- }
- Frame {
- msec: 5344
- hash: "1983319c8043bfe403513af7ccb5b924"
- }
- Frame {
- msec: 5360
- hash: "b0244e4e1b61202ede78405415c22bca"
- }
- Frame {
- msec: 5376
- hash: "ec5516b1aaeace8784b04649c51ab40b"
- }
- Frame {
- msec: 5392
- hash: "8ff7d2001594abb588f769bab15406d7"
- }
- Frame {
- msec: 5408
- hash: "64d5fd96a1726aa5276f9b508566676f"
- }
- Frame {
- msec: 5424
- hash: "ab49497a6c825038354f076bdbbbc235"
- }
- Frame {
- msec: 5440
- hash: "6b821e43be932800b20af58a7b5a1ff7"
- }
- Frame {
- msec: 5456
- hash: "683a2902300f930e2a81a82dc37c583b"
- }
- Frame {
- msec: 5472
- hash: "86d7946d7fbb66369ccbf26430939225"
- }
- Frame {
- msec: 5488
- hash: "fb38f5fb6555fc14e95a47c595a6ea0c"
- }
- Frame {
- msec: 5504
- hash: "3878f685d9fa3299e9ffe78c22595387"
- }
- Frame {
- msec: 5520
- hash: "b48840a68ff007901b02332c7177f315"
- }
- Frame {
- msec: 5536
- hash: "9d847abc99220b04aceef12e5c09aac0"
- }
- Frame {
- msec: 5552
- hash: "9893ac89fda64d96ec4140c3c87e17a5"
- }
- Frame {
- msec: 5568
- hash: "cd94e1c36e6be9877cd9c12df42bd968"
- }
- Frame {
- msec: 5584
- hash: "c1ce5e53b74af022dc103ad74ff5f1af"
- }
- Frame {
- msec: 5600
- hash: "b3630e08eac02a9578a00b01baabaaba"
- }
- Frame {
- msec: 5616
- hash: "0eb9241aa1f9526c1e24ba76d630805c"
- }
- Frame {
- msec: 5632
- hash: "1b532ae7f9253469467522d4ca66c47b"
- }
- Frame {
- msec: 5648
- hash: "7e6e49079ed6330da2e337a5e4ffd730"
- }
- Frame {
- msec: 5664
- hash: "0391d668f4b906b244a5f5c1713573c2"
- }
- Frame {
- msec: 5680
- hash: "8070fa3280d0d64bf976d4a276359c4c"
- }
- Frame {
- msec: 5696
- hash: "f7d0d36a2d40c798f56ac7ecc1effca6"
- }
- Frame {
- msec: 5712
- hash: "9f8e35ee5080e811c670c480a9c2bd9f"
- }
- Frame {
- msec: 5728
- hash: "c7fea75a43a59a11aa504df32afcdaf8"
- }
- Frame {
- msec: 5744
- hash: "7e549a93ffc6ddcc3d8111f10c05b29e"
- }
- Frame {
- msec: 5760
- image: "easefollow.5.png"
- }
- Frame {
- msec: 5776
- hash: "92d298262f610a2dafa095e3d67c80af"
- }
- Frame {
- msec: 5792
- hash: "db8826b0b2feece0999863b8827a6234"
- }
- Frame {
- msec: 5808
- hash: "12c7050e8094bb39212aed0163666d1a"
- }
- Frame {
- msec: 5824
- hash: "69531beace5c749bf90160a4b25f736a"
- }
- Frame {
- msec: 5840
- hash: "ce873e4dbc8853183b54d59991b2e030"
- }
- Frame {
- msec: 5856
- hash: "fa1078973634578d69527402b11fb7e0"
- }
- Frame {
- msec: 5872
- hash: "1e3b3db590567c0afd1913101192cda9"
- }
- Frame {
- msec: 5888
- hash: "7b9e097018278b784973a546da3d401a"
- }
- Frame {
- msec: 5904
- hash: "a7b0667093888480de6697280aeea9ba"
- }
- Frame {
- msec: 5920
- hash: "e381f2422ead86575abf643b0b0c9797"
- }
- Frame {
- msec: 5936
- hash: "44b08f5a0de2a6955e02f67753f409c8"
- }
- Frame {
- msec: 5952
- hash: "db04665e58448ecc7f95baa3e4ea79a5"
- }
- Frame {
- msec: 5968
- hash: "0e4aae728d8d543538a9446c41e18e91"
- }
- Frame {
- msec: 5984
- hash: "e3cd1bbb1d9963e5c74d36e526a871b0"
- }
- Frame {
- msec: 6000
- hash: "bcd893a0e200ddda4e1468c159018865"
- }
- Frame {
- msec: 6016
- hash: "9c5293356aa6312f909e655e9bcf961b"
- }
- Frame {
- msec: 6032
- hash: "0bab7b9166f6af554d4fa0badeec739e"
- }
- Frame {
- msec: 6048
- hash: "e74996581f0aaeced118c5cbfd977d90"
- }
- Frame {
- msec: 6064
- hash: "5d128eb20a2a23da8c2d9a35293e5769"
- }
- Frame {
- msec: 6080
- hash: "ebbbc343698287faf7ffa7526a726b54"
- }
- Frame {
- msec: 6096
- hash: "d812172192cc19590f9a2d7dbf970439"
- }
- Frame {
- msec: 6112
- hash: "60263addb1b4b5ac43f8199b8ed77e40"
- }
- Frame {
- msec: 6128
- hash: "702a1ff2876eaaa59359811bb6437c5b"
- }
- Frame {
- msec: 6144
- hash: "8f81dc43decce5094ee7a089f0009730"
- }
- Frame {
- msec: 6160
- hash: "efda5dd9edd83a0da089d0b28806c6b6"
- }
- Frame {
- msec: 6176
- hash: "7274a33a7a5272d7abdaf41f4b2bf664"
- }
- Frame {
- msec: 6192
- hash: "0cc80077476e721a3da85c17cc56a65e"
- }
- Frame {
- msec: 6208
- hash: "e65a534f0e7e70520a9c2cfa09ee8159"
- }
- Frame {
- msec: 6224
- hash: "b05b514c63bd8998785382e6a9cbd849"
- }
- Frame {
- msec: 6240
- hash: "10a04d641e0cc65c120d8bcf2f3e54c8"
- }
- Frame {
- msec: 6256
- hash: "68418e2206a496dd15a05b50fec6f87e"
- }
- Frame {
- msec: 6272
- hash: "6549e0989e1c86e3a7eb0dcc8dd31380"
- }
- Frame {
- msec: 6288
- hash: "bd0193c2cbc8958f674f4ec52a693b72"
- }
- Frame {
- msec: 6304
- hash: "746440b45a3688dbd32b34c57454e956"
- }
- Frame {
- msec: 6320
- hash: "6b54ee8af30be2178e8b3afab5dcb4c7"
- }
- Frame {
- msec: 6336
- hash: "ba2fbad3fe2fe25ec0c0c542659168dc"
- }
- Frame {
- msec: 6352
- hash: "84bd72703bd8200f8f090783d06ae451"
- }
- Frame {
- msec: 6368
- hash: "17c9fb063280c2ee4cb4a13273bbb199"
- }
- Frame {
- msec: 6384
- hash: "df28fd55719f5c2d164596d02c2faff2"
- }
- Frame {
- msec: 6400
- hash: "c2e280e78e892200d40022d17ce695b7"
- }
- Frame {
- msec: 6416
- hash: "c657caa0c5158e178ec5df80bbad6bcb"
- }
- Frame {
- msec: 6432
- hash: "d91f4f6ec6503fe8280f9b02dd11e64a"
- }
- Frame {
- msec: 6448
- hash: "0fb9400cdca9dbd4035fbf8af9952360"
- }
- Frame {
- msec: 6464
- hash: "cac0e1b4aa094306b95f90ede4705391"
- }
- Frame {
- msec: 6480
- hash: "e60a4bb14300a937a767effee931c60f"
- }
- Frame {
- msec: 6496
- hash: "8b461397e3f210ee7e9305dcab2af2db"
- }
- Frame {
- msec: 6512
- hash: "6ce9ec0942dd06c9f73929a7e176852c"
- }
- Frame {
- msec: 6528
- hash: "da36e254635eea854a6552ba008117f9"
- }
- Frame {
- msec: 6544
- hash: "0bec6402b5eb09d05ce8e9ff5253ea8d"
- }
- Frame {
- msec: 6560
- hash: "72f6610527d395ca590eda166ef6bc4e"
- }
- Frame {
- msec: 6576
- hash: "622ae3fd47adb2432e2a40d3c5539393"
- }
- Frame {
- msec: 6592
- hash: "0b18c49e2bbf9370216e06b555faf183"
- }
- Frame {
- msec: 6608
- hash: "0c090bb975fb883301b52479fd6f5fdf"
- }
- Frame {
- msec: 6624
- hash: "c4205d7ecb7327426d9591e77247acab"
- }
- Frame {
- msec: 6640
- hash: "f0e0075243e4b8aa97056248fe6033ed"
- }
- Frame {
- msec: 6656
- hash: "47f99b40a8764ee9d9e429061fb7acb2"
- }
- Frame {
- msec: 6672
- hash: "49e8c1e974b0716570d85109b53817a5"
- }
- Frame {
- msec: 6688
- hash: "72f981bad831b6ed858009527902f734"
- }
- Frame {
- msec: 6704
- hash: "e959a0493b06369a429f90f66cb65977"
- }
- Frame {
- msec: 6720
- image: "easefollow.6.png"
- }
- Frame {
- msec: 6736
- hash: "93470d983282f24425558f47ad705154"
- }
- Frame {
- msec: 6752
- hash: "cdccbe1a7c7abd4a6a6ee754ed0c9759"
- }
- Frame {
- msec: 6768
- hash: "0e1b7b5332a9fcdb492db5314a2a0267"
- }
- Frame {
- msec: 6784
- hash: "1e1ffe3439aab51d0b325474e7d8dc28"
- }
- Frame {
- msec: 6800
- hash: "e8e7e9b5871caf77f15678616d6c9c8a"
- }
- Frame {
- msec: 6816
- hash: "9771fff3b7752154d093c038bea73d28"
- }
- Frame {
- msec: 6832
- hash: "1af851ea214cbddb0e3a743084a5cf6b"
- }
- Frame {
- msec: 6848
- hash: "1566182a7e29bbb738705a90c4909617"
- }
- Frame {
- msec: 6864
- hash: "feed650e1d948fe622234d212fb745f2"
- }
- Frame {
- msec: 6880
- hash: "3cd3d063275b91f9680717421c118ba4"
- }
- Frame {
- msec: 6896
- hash: "c1f088801334762cd499e7cc70e1e59a"
- }
- Frame {
- msec: 6912
- hash: "e8f8d153e7a027a5092a9209411d97f7"
- }
- Frame {
- msec: 6928
- hash: "f11747c3533b4b2fc77a64ca0cace8b0"
- }
- Frame {
- msec: 6944
- hash: "21618c67a2a8bbce86fc872060ad40e8"
- }
- Frame {
- msec: 6960
- hash: "02da96335db74b87ceefe91b1dfe72e6"
- }
- Frame {
- msec: 6976
- hash: "2b2e4143143ead8dea5865fd782f1775"
- }
- Frame {
- msec: 6992
- hash: "13e710900b05e26cdb030b1e2b2be715"
- }
- Frame {
- msec: 7008
- hash: "29e8995d17aac4d02034debcbb9fcb98"
- }
- Frame {
- msec: 7024
- hash: "1099db1b3e4c69e84c6ab1b7c311bf1e"
- }
- Frame {
- msec: 7040
- hash: "cc7cb720043334f1eeb385dce4389dc2"
- }
- Frame {
- msec: 7056
- hash: "34c7a62c1bc7261e2fd31c40068b37a7"
- }
- Frame {
- msec: 7072
- hash: "7fafbe05cbcaa21893e3aa0f1fcfb5a0"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 7088
- hash: "5b26c8cf047706633795a8ed3e703a89"
- }
- Frame {
- msec: 7104
- hash: "e0774bf9e74d0cde81c5cb216a9258fc"
- }
- Frame {
- msec: 7120
- hash: "0870262f643245e13f4fba79fd575897"
- }
- Frame {
- msec: 7136
- hash: "8faf0d050bb435ade8af5012c1a6b0dc"
- }
- Frame {
- msec: 7152
- hash: "382c037895cc39a6870db57b5016c01f"
- }
- Frame {
- msec: 7168
- hash: "f1f5a2cbc103ab1bee9f537fa8266e03"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.0.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.0.png
index bf02e1a121..dd380195af 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.1.png
index ae71dc808d..d749080904 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.2.png
index 6f631b0782..57a3ae0e92 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.3.png
new file mode 100644
index 0000000000..3a75ec4ac6
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.qml b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.qml
index 31249736c9..14280a08c9 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/data/smoothedfollow.qml
@@ -6,790 +6,790 @@ VisualTest {
}
Frame {
msec: 16
- hash: "2c6600b50a18c415032fa95fe5089da6"
+ image: "smoothedfollow.0.png"
}
Frame {
msec: 32
- hash: "aefd5a2570cc0252be102644ec1e49e3"
+ hash: "1d0005639ad631a4f88fb2372b955741"
}
Frame {
msec: 48
- hash: "6183d0554a8b812bee02719dc4df21d1"
+ hash: "b303c2fb08eb8158c322719d072deb06"
}
Frame {
msec: 64
- hash: "e1b3a94d033626338de0e04dba7b6df9"
+ hash: "4b3d7a5b9b5f1a335e81e3aafce2a244"
}
Frame {
msec: 80
- hash: "7d1a5a265fb20ac4d741d76ab7b3a41f"
+ hash: "33d144e82787ac28f9012105645f5eb8"
}
Frame {
msec: 96
- hash: "0ce7d2acda3e5ccb7b2364e2a7b409a4"
+ hash: "b6e16400c1364241da2fc12810780b9b"
}
Frame {
msec: 112
- hash: "21f3a66ee80fcb2dd4dce0d1666aa4dd"
+ hash: "e32e552a0ac9e517df2826d82ed3e483"
}
Frame {
msec: 128
- hash: "ea5b81ff2805210111cb388ab9be0d8f"
+ hash: "855e317677189a8aa97909ac5c7a831c"
}
Frame {
msec: 144
- hash: "a8a54a3c524dcf6777b71d99ae2d50bd"
+ hash: "cddb47ce0a793dc74c6cbc2b3fb138d0"
}
Frame {
msec: 160
- hash: "6b658c468af8a88e4a282d57fdcbc3b0"
+ hash: "21932fa377c6c9652eb22bbae4bf7d23"
}
Frame {
msec: 176
- hash: "986121c9d928cc9ceb912a975f75760a"
+ hash: "95adc0bfe18070001d531a36785af2a2"
}
Frame {
msec: 192
- hash: "4bf3593d0edc4347cf77670a48ba4440"
+ hash: "b3c39dc57a658b1ff7c24194a4214696"
}
Frame {
msec: 208
- hash: "ea00f25295fb019f949930fb7109ceb4"
+ hash: "d145d38d45f824f3dd2f43eddf38d310"
}
Frame {
msec: 224
- hash: "ad6cc7563e2720c405842317d0ce731a"
+ hash: "dee8ad57b625965d3045089d5f6e80aa"
}
Frame {
msec: 240
- hash: "8a03a1207cdb5bd92f5227b25a7b638e"
+ hash: "94263216e2b0ab77980b3cc0b42350a6"
}
Frame {
msec: 256
- hash: "f355321aa47d18e8b6dde503565d0e97"
+ hash: "a9ea122b9b67428f9d28368ffb862c37"
}
Frame {
msec: 272
- hash: "e18f671cac8e68948f32a468bf2630cf"
+ hash: "d1101c25521fd2308ccbe5ec318d9922"
}
Frame {
msec: 288
- hash: "264bca92fba53f25439d240afef62880"
+ hash: "e854bb4accb78052ec3df32a80d29a94"
}
Frame {
msec: 304
- hash: "a1a226c73fb97d5302ce683f901ee5c4"
+ hash: "10898f94cc74a888fc57f76897a56b2a"
}
Frame {
msec: 320
- hash: "05578552476372fc58e463e84a147ddd"
+ hash: "65668c114d62e3e901953c9aca9fe276"
}
Frame {
msec: 336
- hash: "0a3e0a651f9eb3e6a44a55a6786e60ff"
+ hash: "a67cd21b3c451134961d5890b05cff49"
}
Frame {
msec: 352
- hash: "4ca362f079f96a01360ee8062fbb8238"
+ hash: "40fbf54e37f46dce2aeda74ed6815e42"
}
Frame {
msec: 368
- hash: "ba512c117d97ce16ff92d03ce2b08056"
+ hash: "dc86af89de1edce0986c6e1a56bd0e21"
}
Frame {
msec: 384
- hash: "8688355f0f97afe000d02f71c841d5dc"
+ hash: "b9700d510fe9b936d60a0ef22b1a4d23"
}
Frame {
msec: 400
- hash: "a2ea6ad008da95a67d3bc70e11e3811d"
+ hash: "620edf9a854b1f32911b4af69be95076"
}
Frame {
msec: 416
- hash: "83bc9c444ab8618438dc2b8b14716f7b"
+ hash: "28d9670eb3dea66506affaf8b8672c52"
}
Frame {
msec: 432
- hash: "fafbba34fc8f9d33b559e6fcd0c5f1c6"
+ hash: "9deaf655b9e71dc835377526c5ae7d96"
}
Frame {
msec: 448
- hash: "92d245951b759f74182602a7a337cb0f"
+ hash: "a19709d7bf37fd126f15da386527d0f8"
}
Frame {
msec: 464
- hash: "e0634d25088a6855df8d86d84fe37cd7"
+ hash: "32dbd7c98038abf3775a2c788a687b27"
}
Frame {
msec: 480
- hash: "7f4d05f4c3b1a365732e448f2c751740"
+ hash: "d1a22b8e8cbd429dc0e8bc22bfce5d4b"
}
Frame {
msec: 496
- hash: "fcd6f55929f753f77b1617c0984b8690"
+ hash: "04a48f9f304a614535821f1278950789"
}
Frame {
msec: 512
- hash: "7e88f100a7012d739cd3c97c4e7f4b45"
+ hash: "ba26b58e109d5b63e972e4acd7229162"
}
Frame {
msec: 528
- hash: "8f9d029b3850ee2f11cdf6630d100682"
+ hash: "b92d3329f744c7de158a472b8b542437"
}
Frame {
msec: 544
- hash: "b915f712b24f187ee759b3337fb0df7a"
+ hash: "c44139265be3def1cc73ea7198a64537"
}
Frame {
msec: 560
- hash: "eae400a0c72d38156f7ae0f16ab9ee66"
+ hash: "6f211c82a64c7e0ef2e7700359ac226e"
}
Frame {
msec: 576
- hash: "e913a1e317cca355b06a393f44cc0243"
+ hash: "1690781b90e6e4ad264db76943d3b6d2"
}
Frame {
msec: 592
- hash: "abf075ea63a6f5cce43c38e20dbcdbb2"
+ hash: "2ab7e97b7426843f2488121fdda87b48"
}
Frame {
msec: 608
- hash: "a6e85caa1eb933343a4605bc434e2841"
+ hash: "91fe6ed4d44d69e9ce79aa3636faf0cb"
}
Frame {
msec: 624
- hash: "8e33e2582dd127d3f04017bf493b0ac6"
+ hash: "9b4638d2eb6ecc0b50c30e74dc4b098e"
}
Frame {
msec: 640
- hash: "959e4062262bcc759abfc7b0bf3e10b6"
+ hash: "0e18542d1b5b887eaf22f936adb38bd0"
}
Frame {
msec: 656
- hash: "9529e2241df0d90ea640fdb3752b0837"
+ hash: "f4a123a8811654d033c3613a80a8f3f7"
}
Frame {
msec: 672
- hash: "5595b64495996ce66b5f6892e9457456"
+ hash: "14edd1cf660429e95c55ae81ce57d05d"
}
Frame {
msec: 688
- hash: "532259c3577553622093eba907ae82d3"
+ hash: "1114235b75e814b80b70ce4109a0b6f3"
}
Frame {
msec: 704
- hash: "85c4332100b6f5256702b594c83f4eff"
+ hash: "8ed2a94fab38d951325bbf79597134c6"
}
Frame {
msec: 720
- hash: "b96292d85b12fa8e68c5de3deb29b980"
+ hash: "315a34cfe26778d86cadceea78fd15f6"
}
Frame {
msec: 736
- hash: "64febec9c8b58e2b93249f19c57b7aba"
+ hash: "4a95ae04f498f93bf19ab2bc45c0be21"
}
Frame {
msec: 752
- hash: "88e588af29131cf942e02b1080e564e5"
+ hash: "d241f7cfdfd241facb0b7f7a3d328d01"
}
Frame {
msec: 768
- hash: "07f911478be2f36d0c1b9cb878f4fe47"
+ hash: "fae3040a9e0b2f9c76cc26bda47e04e9"
}
Frame {
msec: 784
- hash: "8ffbf2381efefcbca413f6e3455018fb"
+ hash: "a444297639db23413810b2df5c47ed9c"
}
Frame {
msec: 800
- hash: "6e456af680e40799d3f38bdde29a85f9"
+ hash: "8084ee95169c3176af563fc4cc033332"
}
Frame {
msec: 816
- hash: "48a8dbc64d7823164c992f55b270115d"
+ hash: "8f6ac972fb537f496a69f7bde0e8bc22"
}
Frame {
msec: 832
- hash: "a6d28eb1d0aafd387e35ca7b362bec53"
+ hash: "b7e632bc5c8a0a0c5d2b752e581ff5db"
}
Frame {
msec: 848
- hash: "2e9f2b2ebf1b24f01fc986ded320d7c9"
+ hash: "341c29c41dc1d938dcf5d94d20ff9160"
}
Frame {
msec: 864
- hash: "d0cafd9be3263193c207c39eeb051bb8"
+ hash: "2c7eb6f2974c6520bc2fbbb65c118124"
}
Frame {
msec: 880
- hash: "8dee1a5365fa3ccd7036c8afa6a805cc"
+ hash: "8dd08316d3d4b17bd3d656dff2b69019"
}
Frame {
msec: 896
- hash: "42f893afb80633f0ffb82f1725bb097f"
+ hash: "5c2a7456afbb094671e693df0a5fa37d"
}
Frame {
msec: 912
- hash: "f466a404940abcd4c8f3180696da1a29"
+ hash: "d169ce70699b020f62bc33160b74887b"
}
Frame {
msec: 928
- hash: "e5746e33b3eb155a354bc5900b7593ee"
+ hash: "e67ef3cd8dbcef11cf156b32eb0aae67"
}
Frame {
msec: 944
- hash: "a1c2eb7048356f4ebc803d9d5439db24"
+ hash: "16d0d8676f754f0e85a3b425a4401c26"
}
Frame {
msec: 960
- image: "smoothedfollow.0.png"
+ hash: "7681c0a07803c3eadedf05b60acca9be"
}
Frame {
msec: 976
- hash: "338aec0e679a8f2e79f6a5503dfbd6c3"
+ image: "smoothedfollow.1.png"
}
Frame {
msec: 992
- hash: "59321f1eb26c379e9e2a37b6890d922d"
+ hash: "5f87209dc76264d5c259092ccfd0663a"
}
Frame {
msec: 1008
- hash: "f37a821b9cf9f67fd011c6790a2757f0"
+ hash: "c647b4725e7f1ce05b5b7bd067d54bff"
}
Frame {
msec: 1024
- hash: "c3f1b8722c616ecd55d8496e76a9bf06"
+ hash: "d43d241fa85cadc042ae510fa441d01d"
}
Frame {
msec: 1040
- hash: "ca6aff9addda2e3ac51e5e2013393365"
+ hash: "87a4b4fb8981b1ddb765236cd74a9084"
}
Frame {
msec: 1056
- hash: "17d1aa7821ce8169a3100a3cd3a0df2b"
+ hash: "607fb5055cc0d5b6e8a1a37134a9686c"
}
Frame {
msec: 1072
- hash: "d85dd272f35868d6832316e862db4ec1"
+ hash: "9ed861affdaf4de535ff65b26e1fa8ee"
}
Frame {
msec: 1088
- hash: "8bce5bdadfa974655dc7e020ad43edeb"
+ hash: "cdfbf1d934a46b85c9d7a07e25eb3fee"
}
Frame {
msec: 1104
- hash: "b97f71587a5187d5175e5d9f1409c00a"
+ hash: "94cc78c6be827b3f3b3d74d72af5a4db"
}
Frame {
msec: 1120
- hash: "53d438e601c25aebfd2ecb0064cdf5cc"
+ hash: "50cd154de9141528f0417c0e0f0090a9"
}
Frame {
msec: 1136
- hash: "18c43dd35b3e0d8f9ab5c8de3e48886a"
+ hash: "86e4a163ad5d7d9bee8f513a814fcac2"
}
Frame {
msec: 1152
- hash: "e4ab585684d083de118b7862ef5cbd63"
+ hash: "61b927a9a58264b827ab00c30cddb4c1"
}
Frame {
msec: 1168
- hash: "48ab046a2e2ca1a1225574b94925482e"
+ hash: "e50d30e42cb035e52cf88664182b7ac1"
}
Frame {
msec: 1184
- hash: "c4bd06a5c329ef6975a60453f588bce7"
+ hash: "33a45c3ab72e3e582ef0e4a759064050"
}
Frame {
msec: 1200
- hash: "864393a984dce3e9dd2daec56ddb3fe7"
+ hash: "323be0228c50a87f380c9b4e5af0c6c0"
}
Frame {
msec: 1216
- hash: "fcdf4cfcd8a6d8667868ba9633475fe0"
+ hash: "d82e3de64104096e0cce7bc23d1f3f96"
}
Frame {
msec: 1232
- hash: "5ac2b96158045c9b9eb35f1cbabe5b1f"
+ hash: "e8872b9d98dff227cb3eb8765cbfa5f5"
}
Frame {
msec: 1248
- hash: "83c409e5d3e6fe9e953d9ce14d731b3b"
+ hash: "23ee9e4d9d5388c900072df7fb063164"
}
Frame {
msec: 1264
- hash: "01805526b04e17b89238e7b929be48dd"
+ hash: "e23cb4cdcc53a364004a55144ea1af8a"
}
Frame {
msec: 1280
- hash: "4708345219b3732f9aaf8b40645f65d2"
+ hash: "816ee1ba2a5fe2db4ee09cecb8d56c34"
}
Frame {
msec: 1296
- hash: "12716f84b6f648df2cbe08cfea58764c"
+ hash: "d0f01509412d1e4aa192db8aa6dbc50d"
}
Frame {
msec: 1312
- hash: "6cce1e6354bd338f364bcca84a5fd081"
+ hash: "ba37ba506ce63c6cda06f23a73c928d9"
}
Frame {
msec: 1328
- hash: "c5da6f6b00402e0de00490792b963cdf"
+ hash: "194a5a791ee5008f585cf215e5cabc26"
}
Frame {
msec: 1344
- hash: "0eacadf69c0818e818abaf3aaf823aff"
+ hash: "09c9466b27e57cf936653fdd91e885a8"
}
Frame {
msec: 1360
- hash: "c68cd79bf0d329a3c672896b9ce2044d"
+ hash: "ee8ef68a1d5cde45431ac233d1cbe191"
}
Frame {
msec: 1376
- hash: "26786f921ddddd9d2f975e1193943d2d"
+ hash: "45f3bede3b5ae8cde9d385746740760e"
}
Frame {
msec: 1392
- hash: "68c7c1779bb19ee5cd9370b5c06f4ce7"
+ hash: "10ae672c18a84fec45513850797220b5"
}
Frame {
msec: 1408
- hash: "5e87c3e00ef7fab01c17d9e89c661aab"
+ hash: "6d72fb8d4d1f7499b38e4969ae26409b"
}
Frame {
msec: 1424
- hash: "0b459122be303c38d3564dd7fea53fc1"
+ hash: "7c6bf427b0f7aac8c869a0dd83277ca0"
}
Frame {
msec: 1440
- hash: "3b13101a45b470fd04fa02f34548984b"
+ hash: "1289b04711ef38d4e37161f1385bf4d2"
}
Frame {
msec: 1456
- hash: "6308fa1ed015bb698251af0d1b9be084"
+ hash: "2414780f52880801eea13dc9efba1cb2"
}
Frame {
msec: 1472
- hash: "f219427d8fdf826f33351ba64db55d33"
+ hash: "37efbf23005659b4f2b29f224c929502"
}
Frame {
msec: 1488
- hash: "0c9ad8c5224d3cdefb8ac793cac3ca79"
+ hash: "e70091696edf26a8dc8dc51d4932fd86"
}
Frame {
msec: 1504
- hash: "38438307162bceef76afb043c82b6a82"
+ hash: "21e8d0b6eee7bc71ae7ccd05d9bb9280"
}
Frame {
msec: 1520
- hash: "78b367e6bab0463fe08f5e634cfbced2"
+ hash: "321553e3e415cf7695d46a90050f8265"
}
Frame {
msec: 1536
- hash: "81e56f9d3bb9b360a07dc85697a59340"
+ hash: "235f975c8b382caee2004a8bf9533385"
}
Frame {
msec: 1552
- hash: "cef4fdb8c12485d3590e598090312297"
+ hash: "abeeb9ff4c51f2b4ba5c9fee98e72926"
}
Frame {
msec: 1568
- hash: "8ea0c90a100c583558f92843030543cc"
+ hash: "d2de1c552fdf4675baccab402100aabb"
}
Frame {
msec: 1584
- hash: "0037f0f17a50bdfe3bf0de810ff837f1"
+ hash: "26d2ac9f31c9181222edda09a4452b5f"
}
Frame {
msec: 1600
- hash: "2b060ac0dfa045b916d3fd5ff6f84bfb"
+ hash: "8c1ac1872a6720185ec670150e344683"
}
Frame {
msec: 1616
- hash: "b20705dcc6176efd83cff6927991ff0a"
+ hash: "3b792cf960fc8dd6b424ce4c9f2aa0a1"
}
Frame {
msec: 1632
- hash: "0af69e490bdc54f27d3e50c1fdfd12a8"
+ hash: "4f0e2dad54e5be44c0345732deae067d"
}
Frame {
msec: 1648
- hash: "8e4cceadc01de5b51082889efabcbb7e"
+ hash: "17f21faa9293cfd4ef63fcee9d07f264"
}
Frame {
msec: 1664
- hash: "b64958786a7007686fb1734783d553f5"
+ hash: "0ea885db3c4c5facb96306f1fbf6bc43"
}
Frame {
msec: 1680
- hash: "e0b9d98bb3a596fd235d58b6a761a0e0"
+ hash: "a68e7bb730b29b4c3b5468fd7b3d1d4f"
}
Frame {
msec: 1696
- hash: "1a5d7dc4dfd3ee86a36978d4effd299c"
+ hash: "719de171d8413f691e4ece4bcb00896c"
}
Frame {
msec: 1712
- hash: "4946561f008635599651bf24b9aa0594"
+ hash: "ee9f5c2bfda6718a23fdd6c8f3f2e765"
}
Frame {
msec: 1728
- hash: "8427d33046af64c6e63939238c101e86"
+ hash: "0f01834bbcfe690e5ee2d5897e5ea225"
}
Frame {
msec: 1744
- hash: "cdcfab5cea86c33f276c3613d76067c4"
+ hash: "68af59f35ff14d9ff12a2a05f22cca69"
}
Frame {
msec: 1760
- hash: "966005d62bd69b53d77459e5ab65116c"
+ hash: "50c9141aae689a8f09acf4d914075299"
}
Frame {
msec: 1776
- hash: "8a3c4ff083a973325c4ab09e09027ef6"
+ hash: "beb9e30c9b4f0d351c1387c69ea99208"
}
Frame {
msec: 1792
- hash: "737ffd6f52fa3d812ecaf835a30495af"
+ hash: "2079cd433d9d29ad330e0782853712c7"
}
Frame {
msec: 1808
- hash: "6731007c97ba3ba60e73ab50803868e5"
+ hash: "de18d8be8fc1414cc19d446c659d1bcd"
}
Frame {
msec: 1824
- hash: "caa4ea08c5c330e77a7445cc1adf1666"
+ hash: "031807325492a899da9a91a9512487dd"
}
Frame {
msec: 1840
- hash: "73778bfbae55a81557a128acb4a197c8"
+ hash: "4fdd8f3b01b4b61d269001604144bb7c"
}
Frame {
msec: 1856
- hash: "7d8609f1336ddf4e25b505e54142114e"
+ hash: "1172ec8a63f431f457b9a398b3d03571"
}
Frame {
msec: 1872
- hash: "d8b4514d2bd77dbe67e27d400dc1a2f3"
+ hash: "4741a14556e9d32c2b180cca9009c63a"
}
Frame {
msec: 1888
- hash: "ac3e7040f1e9fc680f52f46d25eb3faa"
+ hash: "ec2c6d187a97037b5c1edea65d4b17cc"
}
Frame {
msec: 1904
- hash: "509c21774f0fca9dde0657133a1cc363"
+ hash: "ea7d445310c28aa3e07735f1c7db4a28"
}
Frame {
msec: 1920
- image: "smoothedfollow.1.png"
+ hash: "3424b2d983a8962d9abb232c3d7c7814"
}
Frame {
msec: 1936
- hash: "545bcb0c362a083ee698a5c8cd225014"
+ image: "smoothedfollow.2.png"
}
Frame {
msec: 1952
- hash: "77370c9b2880c55fecf07457dd0d455b"
+ hash: "c362edcbe4e4460aa18599c05e993312"
}
Frame {
msec: 1968
- hash: "6c44209f31f5f010f1b3e05490468821"
+ hash: "1a1291338c205ef2d315a43cca1caae2"
}
Frame {
msec: 1984
- hash: "2dffac0c44e52f2984525d3d3700e6ed"
+ hash: "ff6f0f47955d069a65cf9d19b7a061ff"
}
Frame {
msec: 2000
- hash: "d70f2db1b166b2de3bef74bc4bf94a80"
+ hash: "3a6b787bbfe0510fdc8693a4827043e5"
}
Frame {
msec: 2016
- hash: "50e4f6a82f498066fc9b6588762f59f9"
+ hash: "8198a6eec71a6da13b77397f3ead05a3"
}
Frame {
msec: 2032
- hash: "956a7d7db9aef1b7abefac1a69622f02"
+ hash: "4c0fcb8d2105f104f6e1db0d58077c01"
}
Frame {
msec: 2048
- hash: "13f19d5baefb6c8c9f71c16163663a27"
+ hash: "d9146739fa248ddcb6b4308d125825e7"
}
Frame {
msec: 2064
- hash: "076ff84405ddb29a12ed30d27cee558b"
+ hash: "5bda4f61879d0e9c714f2c138a91f4fd"
}
Frame {
msec: 2080
- hash: "6af0261639f809da8f7e4831559596d3"
+ hash: "30c0f8016506edb6875fd4cfa16cfa0f"
}
Frame {
msec: 2096
- hash: "a0500b18e99bfe3a48d52cc62b4a946b"
+ hash: "bc04c5ae627073fcc467b86bea097630"
}
Frame {
msec: 2112
- hash: "bb0ea576c9136fb70720d4540731d2ca"
+ hash: "7fcc2f6a7c620202a55618e66ed3c5f9"
}
Frame {
msec: 2128
- hash: "d9b12ad9bf54d7db0ef1b36297a6dd6c"
+ hash: "36f0855b78bbbf08ddf28f7a5775aea8"
}
Frame {
msec: 2144
- hash: "2de77e082872f072a849ba9ea93e3aec"
+ hash: "4acd7d6bceab6c8ba4508f9edddab6e7"
}
Frame {
msec: 2160
- hash: "69e186c3e8e6b2c75da2ca87043129da"
+ hash: "2074776f5bd921148a50fad1004c00ea"
}
Frame {
msec: 2176
- hash: "0c2f23b0cbedb45a68f0cbe6132b4820"
+ hash: "0d79e1f38609320586831d93d87532a9"
}
Frame {
msec: 2192
- hash: "533bad00e5624611ea8a15d5fa98f0f2"
+ hash: "0402d99770dd23cbfc051eb576a29b57"
}
Frame {
msec: 2208
- hash: "d9c60bc821205aa4ea38d846e5b00f3a"
+ hash: "456ba4fbe1ff68e1c9e22c9182c98ac6"
}
Frame {
msec: 2224
- hash: "d4de041edf15c6b6806d7f5992146711"
+ hash: "de41559e07d9e58a68e26cf4daab879f"
}
Frame {
msec: 2240
- hash: "100145df5271efaaee1d619bd50b69fc"
+ hash: "ad5087eae86c1b2afe5dbbcf8d098b18"
}
Frame {
msec: 2256
- hash: "22905b794fee24f3a25e4944d5505e96"
+ hash: "117dc7b2e560a6959ef82dc461580620"
}
Frame {
msec: 2272
- hash: "aeed7adea08fe6e8b60310082cf87b6c"
+ hash: "4ce30665d1e63f728018cddfda1e3249"
}
Frame {
msec: 2288
- hash: "82bf8d40b6ed8aae9d6172eae76d1859"
+ hash: "c1e66d2c554b81631aff66e695e05ee0"
}
Frame {
msec: 2304
- hash: "b1881778936744db3df0898638e4b0df"
+ hash: "293b4c3a8ba18d9000f1a0c35ba3dbed"
}
Frame {
msec: 2320
- hash: "87195016996f8786a8a2430c54f13494"
+ hash: "eefcc0eb3e4847dbf7edc52979c19cfb"
}
Frame {
msec: 2336
- hash: "56f99b14320662b90eb10e77845bba30"
+ hash: "1e25f0a629cffa99c3c962c5ce72cba3"
}
Frame {
msec: 2352
- hash: "69a84022d8d2b3cdb1d7eae6ce5ccef2"
+ hash: "e86a378941f876143cf13ef8c161d155"
}
Frame {
msec: 2368
- hash: "578ca8c66da6aa64392b253ab6cccbc0"
+ hash: "7063d2895353e4e2659e0911f8959a92"
}
Frame {
msec: 2384
- hash: "4c2058e4708001f82f3bcb8110d6a54f"
+ hash: "d26161aad10ec6d446dbae65bcc73926"
}
Frame {
msec: 2400
- hash: "a838be752168bc6feb3151327147bb23"
+ hash: "3322df938aa5d2ffa32e445ad1f8b1a2"
}
Frame {
msec: 2416
- hash: "bf6cde06f0ee814cd4a23f3d43e7d270"
+ hash: "4ce384ace0527cb637865426a42d382f"
}
Frame {
msec: 2432
- hash: "9162ec43bc84261c0eb9ea2425da0b8a"
+ hash: "5f49f970488f457681a9a59e82a1650e"
}
Frame {
msec: 2448
- hash: "7be19df0ee54f9bb31ebee2d786addc8"
+ hash: "d5494958d0c8f4307506c0b27f4a350c"
}
Frame {
msec: 2464
- hash: "542a4c004f5b1b8efa7588b27cc2ba43"
+ hash: "cebee9854c54f2badef1cfa6b12adc88"
}
Frame {
msec: 2480
- hash: "f9e2edd343be212a9679f1e2ad0e73b3"
+ hash: "9824242313879d9494b561a0a3a7fdc2"
}
Frame {
msec: 2496
- hash: "b6d4e9169fc4446cdbd3a36f485b943b"
+ hash: "a14019028da0d3bf08782bf8285a188c"
}
Frame {
msec: 2512
- hash: "0d3b7a652a94162b71e88ed213559af4"
+ hash: "f241eb27a0460182d08c6e4e1ebbc25b"
}
Frame {
msec: 2528
- hash: "9d4a2383a4d43ac94ff0a344f217b22d"
+ hash: "3b243c79d097f89e5a3f8ece97321026"
}
Frame {
msec: 2544
- hash: "719d402379c40de5cd6d4c8fa92f5472"
+ hash: "95755ce577ab0b8ede949851ce842d9d"
}
Frame {
msec: 2560
- hash: "78fb55f5b9c2033a91e41100229e4465"
+ hash: "0cd40a2a4b9d0b7dbba8dff247db178f"
}
Frame {
msec: 2576
- hash: "0a9ec91eee6c7c770ce2e414fa881229"
+ hash: "b964995f06ab287a98569baab365c475"
}
Frame {
msec: 2592
- hash: "5d9f81f1becf486a09f086e15a64d1f0"
+ hash: "a28aca3ba953c52ac00fea0c84a6aba9"
}
Frame {
msec: 2608
- hash: "0f5e18af1eac31e6993ea2df51a143f0"
+ hash: "d45d2eaeab472eaa1bd9460f4464c62b"
}
Frame {
msec: 2624
- hash: "08a292373756b06c3a624b8f3bf06236"
+ hash: "0872615e2d8d2ec1192ec6e60aff01c7"
}
Frame {
msec: 2640
- hash: "f3c8101429753ce8f0ee094fe0db98ac"
+ hash: "8724c4128b869be51053deafd68e4e47"
}
Frame {
msec: 2656
- hash: "1603ad220d68ae0a2f613687533c2ebc"
+ hash: "8c8e0a8fed148120b2b79d3c6b886651"
}
Frame {
msec: 2672
- hash: "e2b8049d18fd36fff0180bd4bc199732"
+ hash: "35357a5689398f6f594ae45743555107"
}
Frame {
msec: 2688
- hash: "d1bfeadaa9046ec5013734938a8f4af1"
+ hash: "848a069b9e8334482e118ba0df14dc1c"
}
Frame {
msec: 2704
- hash: "3cb3a0e9dc73e76101288395ffeb2b7b"
+ hash: "26cb86bd54616c69966d949424d4d41f"
}
Frame {
msec: 2720
- hash: "104a10e6bd48dacfedf5c98cf641ae93"
+ hash: "437669b1efa8b33ee469547527ccb4d9"
}
Frame {
msec: 2736
- hash: "f04a2985e7c203dd6fce46b60fcb23fc"
+ hash: "ff040bafe5c484d7b516008f17411ad2"
}
Frame {
msec: 2752
- hash: "30cb747f4604c208d7dc697d5fe2af6b"
+ hash: "fdab8b8cf64a2b15ab07691ca2ad115f"
}
Frame {
msec: 2768
- hash: "b9eca6ee8fe29351cadeb9a2caf36fa6"
+ hash: "e3867ffaf98270f6efe77d816a8254cb"
}
Frame {
msec: 2784
- hash: "7bc56e712d713a00a684e07cf3d09907"
+ hash: "cbad5ba7c09567166f063955b45aa647"
}
Frame {
msec: 2800
- hash: "0d7a5e2ff588b71e77abb72723c763b2"
+ hash: "336049bb4ff2e945483648feabe997c2"
}
Frame {
msec: 2816
- hash: "0d961843e54cbe5ba76c11bcd634bc39"
+ hash: "45e65f29cc932090a3bfc2292c4e5e72"
}
Frame {
msec: 2832
- hash: "6328b52965a002944c501d9888928caa"
+ hash: "d617d33fe22196f88844a7adc5305413"
}
Frame {
msec: 2848
- hash: "63e668a7688167b604b641929843d0cf"
+ hash: "fb32358f314d9cd6ac6646888f402b46"
}
Frame {
msec: 2864
- hash: "7f5e71332268be68de9dcb25f173d2e0"
+ hash: "2897322c869a0bd7a851ff779c8591bf"
}
Frame {
msec: 2880
- image: "smoothedfollow.2.png"
+ hash: "c41d71d62727f0fc26dc790f09c67168"
}
Frame {
msec: 2896
- hash: "dc6e83fcc5a403913a94c498f1571098"
+ image: "smoothedfollow.3.png"
}
Frame {
msec: 2912
- hash: "8deb275bd08df9b3abdcf3e2796a0601"
+ hash: "b5c2182ce797d91175d9f7493a77aae8"
}
Frame {
msec: 2928
- hash: "6c08a25a442b97a8cb359792b6a01641"
+ hash: "4436d56d8dba299619be367cf57dc41d"
}
Frame {
msec: 2944
- hash: "5f7ccd5706c77f0b0ddced41ed6352d8"
+ hash: "fe2d68f672a78568da1a281be13eda36"
}
Frame {
msec: 2960
- hash: "6668d1936524f0fdc490720a962a3698"
+ hash: "90731590c28f254a213f83f83b988608"
}
Frame {
msec: 2976
- hash: "e36f901fb4b8ad754592642a7575e4ee"
+ hash: "e276149e000e768a5b2704fde77bff2b"
}
Frame {
msec: 2992
- hash: "7453182980e458d827f3ff83aa3f2c88"
+ hash: "616b2d32f6b0f047a252f0b698408d87"
}
Frame {
msec: 3008
- hash: "0e15d75b2a7f2e4a39906093b930d6a8"
+ hash: "ebd003e7712060ec45d7be9bebb9ab8f"
}
Frame {
msec: 3024
- hash: "822ccc6c629eabf38fd5ac56abb638f5"
+ hash: "d97b14eb1fe9556b283b5d7b35f30fcc"
}
Frame {
msec: 3040
- hash: "331ef5b3e3dd5642f8532d337fd22def"
+ hash: "a926b60b28442c4318fb3c2c5474540c"
}
Frame {
msec: 3056
- hash: "3c29aae83f28239f31125ef02f523d02"
+ hash: "7908c0356da3bc27d2513c843a0d4feb"
}
Frame {
msec: 3072
- hash: "56ed674bf2d345861eb235a4239078e2"
+ hash: "48644d6fb0dbd280b806c991b3b72417"
}
Frame {
msec: 3088
- hash: "5412b9ad01a6780b67bc59b80a274cd5"
+ hash: "4efbb4954b2d2c26f3e32f9f1bba6b41"
}
Frame {
msec: 3104
- hash: "a6f9ae09a7386f06a84c251083660dd6"
+ hash: "d9c5e5ca5d6c1189740706673abab943"
}
Frame {
msec: 3120
- hash: "83f07277c9bec7419dd6a4d40d8accf7"
+ hash: "d0acc9b7ee97220e551df16e0c3d1f53"
}
Frame {
msec: 3136
- hash: "e6cb74961dfef68a32f255176e0ebff3"
+ hash: "2610d1de5d32e74ab8fd238cd721ef2e"
}
Frame {
msec: 3152
- hash: "9e6c3ac0190beaf30754155a5d64b81c"
+ hash: "b8d1e724d5cb172ab5d7475d2f7a6ee6"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedanimation.qml b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedanimation.qml
deleted file mode 100644
index ac0c14159d..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedanimation.qml
+++ /dev/null
@@ -1,45 +0,0 @@
-import QtQuick 1.0
-
-Rectangle {
- width: 800; height: 240; color: "gray"
-
- Rectangle {
- id: rect
- width: 50; height: 20; y: 30; color: "black"
- SequentialAnimation on x {
- loops: Animation.Infinite
- NumberAnimation { from: 50; to: 700; duration: 2000 }
- NumberAnimation { from: 700; to: 50; duration: 2000 }
- }
- }
-
- Rectangle {
- width: 50; height: 20; y: 60; color: "red"
- x: rect.x
- Behavior on x { SmoothedAnimation { velocity: 400 } }
- }
-
- Rectangle {
- width: 50; height: 20; y: 90; color: "yellow"
- x: rect.x
- Behavior on x { SmoothedAnimation { velocity: 300; reversingMode: SmoothedAnimation.Immediate } }
- }
-
- Rectangle {
- width: 50; height: 20; y: 120; color: "green"
- x: rect.x
- Behavior on x { SmoothedAnimation { reversingMode: SmoothedAnimation.Sync } }
- }
-
- Rectangle {
- width: 50; height: 20; y: 150; color: "purple"
- x: rect.x
- Behavior on x { SmoothedAnimation { maximumEasingTime: 200 } }
- }
-
- Rectangle {
- width: 50; height: 20; y: 180; color: "blue"
- x: rect.x
- Behavior on x { SmoothedAnimation { duration: 300 } }
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedfollow.qml b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedfollow.qml
index 720d2e64fc..c154aa06e2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedfollow.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativesmoothedanimation/smoothedfollow.qml
@@ -1,40 +1,40 @@
import QtQuick 1.0
Rectangle {
- width: 800; height: 720; color: "gray"
+ width: 400; height: 360; color: "gray"
Rectangle {
id: rect
- width: 50; height: 20; y: 30; color: "black"
+ width: 25; height: 10; y: 15; color: "black"
SequentialAnimation on x {
loops: Animation.Infinite
- NumberAnimation { from: 50; to: 700; duration: 1000 }
- NumberAnimation { from: 700; to: 50; duration: 1000 }
+ NumberAnimation { from: 25; to: 350; duration: 1000 }
+ NumberAnimation { from: 350; to: 25; duration: 1000 }
}
}
Rectangle {
- width: 50; height: 20; x: rect.x; y: 60; color: "red"
- Behavior on x { SmoothedAnimation { velocity: 400 } }
+ width: 25; height: 10; x: rect.x; y: 30; color: "red"
+ Behavior on x { SmoothedAnimation { velocity: 200 } }
}
Rectangle {
- width: 50; height: 20; x: rect.x; y: 90; color: "yellow"
- Behavior on x { SmoothedAnimation { velocity: 300; reversingMode: SmoothedAnimation.Immediate } }
+ width: 25; height: 10; x: rect.x; y: 45; color: "yellow"
+ Behavior on x { SmoothedAnimation { velocity: 150; reversingMode: SmoothedAnimation.Immediate } }
}
Rectangle {
- width: 50; height: 20; x: rect.x; y: 120; color: "green"
- Behavior on x { SmoothedAnimation { velocity: 200; reversingMode: SmoothedAnimation.Sync } }
+ width: 25; height: 10; x: rect.x; y: 60; color: "green"
+ Behavior on x { SmoothedAnimation { velocity: 100; reversingMode: SmoothedAnimation.Sync } }
}
Rectangle {
- width: 50; height: 20; x: rect.x; y: 150; color: "purple"
- Behavior on x { SmoothedAnimation { velocity: 200; maximumEasingTime: 100 } }
+ width: 25; height: 10; x: rect.x; y: 75; color: "purple"
+ Behavior on x { SmoothedAnimation { velocity: 100; maximumEasingTime: 100 } }
}
Rectangle {
- width: 50; height: 20; x: rect.x; y: 180; color: "blue"
+ width: 25; height: 10; x: rect.x; y: 90; color: "blue"
Behavior on x { SmoothedAnimation { velocity: -1; duration: 300 } }
}
@@ -42,13 +42,13 @@ Rectangle {
Rectangle {
id: rect2
property int dir: 1
- width: 50; height: 20; x:50; y: 240; color: "black"
+ width: 25; height: 10; x:25; y: 120; color: "black"
function advance(){
- if(x >= 700)
+ if(x >= 350)
dir = -1;
- if(x <= 50)
+ if(x <= 25)
dir = 1;
- x += 130.0 * dir;
+ x += 65.0 * dir;
}
}
Timer{
@@ -59,39 +59,39 @@ Rectangle {
}
Rectangle {
- width: 50; height: 20; x: rect2.x; y: 270; color: "red"
- Behavior on x { SmoothedAnimation { velocity: 400 } }
+ width: 25; height: 10; x: rect2.x; y: 135; color: "red"
+ Behavior on x { SmoothedAnimation { velocity: 200 } }
}
Rectangle {
- width: 50; height: 20; x: rect2.x; y: 300; color: "yellow"
- Behavior on x { SmoothedAnimation { velocity: 300; reversingMode: SmoothedAnimation.Immediate } }
+ width: 25; height: 10; x: rect2.x; y: 150; color: "yellow"
+ Behavior on x { SmoothedAnimation { velocity: 150; reversingMode: SmoothedAnimation.Immediate } }
}
Rectangle {
- width: 50; height: 20; x: rect2.x; y: 330; color: "green"
- Behavior on x { SmoothedAnimation { velocity: 200; reversingMode: SmoothedAnimation.Sync } }
+ width: 25; height: 10; x: rect2.x; y: 165; color: "green"
+ Behavior on x { SmoothedAnimation { velocity: 100; reversingMode: SmoothedAnimation.Sync } }
}
Rectangle {
- width: 50; height: 20; x: rect2.x; y: 360; color: "purple"
- Behavior on x { SmoothedAnimation { velocity: 200; maximumEasingTime: 100 } }
+ width: 25; height: 10; x: rect2.x; y: 180; color: "purple"
+ Behavior on x { SmoothedAnimation { velocity: 100; maximumEasingTime: 100 } }
}
Rectangle {
- width: 50; height: 20; x: rect2.x; y: 390; color: "blue"
+ width: 25; height: 10; x: rect2.x; y: 195; color: "blue"
Behavior on x { SmoothedAnimation { velocity: -1; duration: 300 } }
}
//rect3 just jumps , but the rects following it should be smooth
Rectangle {
id: rect3
- width: 50; height: 20; x:50; y: 480; color: "black"
+ width: 25; height: 10; x:25; y: 240; color: "black"
function advance(){
- if(x == 50)
- x = 700;
+ if(x == 25)
+ x = 350;
else
- x = 50;
+ x = 25;
}
}
Timer{
@@ -102,27 +102,27 @@ Rectangle {
}
Rectangle {
- width: 50; height: 20; x: rect3.x; y: 510; color: "red"
- Behavior on x { SmoothedAnimation { velocity: 400 } }
+ width: 25; height: 10; x: rect3.x; y: 255; color: "red"
+ Behavior on x { SmoothedAnimation { velocity: 200 } }
}
Rectangle {
- width: 50; height: 20; x: rect3.x; y: 540; color: "yellow"
- Behavior on x { SmoothedAnimation { velocity: 300; reversingMode: SmoothedAnimation.Immediate } }
+ width: 25; height: 10; x: rect3.x; y: 270; color: "yellow"
+ Behavior on x { SmoothedAnimation { velocity: 150; reversingMode: SmoothedAnimation.Immediate } }
}
Rectangle {
- width: 50; height: 20; x: rect3.x; y: 570; color: "green"
- Behavior on x { SmoothedAnimation { velocity: 200; reversingMode: SmoothedAnimation.Sync } }
+ width: 25; height: 10; x: rect3.x; y: 285; color: "green"
+ Behavior on x { SmoothedAnimation { velocity: 100; reversingMode: SmoothedAnimation.Sync } }
}
Rectangle {
- width: 50; height: 20; x: rect3.x; y: 600; color: "purple"
- Behavior on x { SmoothedAnimation { velocity: 200; maximumEasingTime: 100 } }
+ width: 25; height: 10; x: rect3.x; y: 300; color: "purple"
+ Behavior on x { SmoothedAnimation { velocity: 100; maximumEasingTime: 100 } }
}
Rectangle {
- width: 50; height: 20; x: rect3.x; y: 630; color: "blue"
+ width: 25; height: 10; x: rect3.x; y: 315; color: "blue"
Behavior on x { SmoothedAnimation { velocity: -1; duration: 300 } }
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/clock.qml
index 44c4dcdf7c..0e4e6429c2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/clock.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/clock.qml
@@ -19,7 +19,6 @@ Rectangle {
Image {
x: 92.5; y: 27
source: "content/hour.png"
- smooth: true
transform: Rotation {
id: hourRotation
origin.x: 7.5; origin.y: 73
@@ -34,7 +33,6 @@ Rectangle {
Image {
x: 93.5; y: 17
source: "content/minute.png"
- smooth: true
transform: Rotation {
id: minuteRotation
origin.x: 6.5; origin.y: 83
@@ -49,7 +47,6 @@ Rectangle {
Image {
x: 97.5; y: 20
source: "content/second.png"
- smooth: true
transform: Rotation {
id: secondRotation
origin.x: 2.5; origin.y: 80
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/background.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/background.png
index a885950862..a885950862 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/background.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/background.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/center.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/center.png
index 7fbd802a44..7fbd802a44 100755
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/center.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/center.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/clock.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/clock.png
index 462edacc0e..462edacc0e 100755
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/clock.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/clock.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/hour.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/hour.png
index f8061a1235..f8061a1235 100755
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/hour.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/hour.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/minute.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/minute.png
index 1297ec7c2b..1297ec7c2b 100755
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/minute.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/minute.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/second.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/second.png
index 4aa9fb5e8e..4aa9fb5e8e 100755
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/content/second.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/content/second.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.0.png
new file mode 100644
index 0000000000..8714f580f5
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.1.png
new file mode 100644
index 0000000000..05e4a98561
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.2.png
new file mode 100644
index 0000000000..29df073c2b
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.3.png
new file mode 100644
index 0000000000..b38486ee11
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.4.png
new file mode 100644
index 0000000000..4de915b78d
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.5.png
new file mode 100644
index 0000000000..61a4684fa8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.6.png
new file mode 100644
index 0000000000..4ce5e3047d
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.7.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.7.png
new file mode 100644
index 0000000000..2376b13971
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.qml
new file mode 100644
index 0000000000..893355b656
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.qml
@@ -0,0 +1,1763 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "follow.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "e94ba580322887dbbbf9cb6309e39c23"
+ }
+ Frame {
+ msec: 48
+ hash: "787a59cda2c0b27d8959026e6d1b9427"
+ }
+ Frame {
+ msec: 64
+ hash: "9ca724d4b31aa16015b5cbb50eea0c3a"
+ }
+ Frame {
+ msec: 80
+ hash: "8a2c62a0190da1b7c1bade243baea6b8"
+ }
+ Frame {
+ msec: 96
+ hash: "e129bebca7ad348c3134569d8eee4efc"
+ }
+ Frame {
+ msec: 112
+ hash: "fd6387415e1c02fe6d17d9c3aa1d1ed8"
+ }
+ Frame {
+ msec: 128
+ hash: "a82a4042fdca7c30facd2c4740c455f7"
+ }
+ Frame {
+ msec: 144
+ hash: "62195722eb3acbfbad137ec71fd50bfe"
+ }
+ Frame {
+ msec: 160
+ hash: "449819cdc880d59650732b5447ec6237"
+ }
+ Frame {
+ msec: 176
+ hash: "552a838ebcacc0e08fa93b64a2433831"
+ }
+ Frame {
+ msec: 192
+ hash: "3984992606d54f05eb31dd0974af2183"
+ }
+ Frame {
+ msec: 208
+ hash: "3fd7225bbb0215ca8b6397580f2352a5"
+ }
+ Frame {
+ msec: 224
+ hash: "0fd8f26f40a9049de1cf2a9493d579d1"
+ }
+ Frame {
+ msec: 240
+ hash: "d08f0c57f071dc42e79fc5e0e3c32eeb"
+ }
+ Frame {
+ msec: 256
+ hash: "084c2db330ee82cd032df248ecc9629d"
+ }
+ Frame {
+ msec: 272
+ hash: "98da0d7f280d7fc4579c970c9a173b51"
+ }
+ Frame {
+ msec: 288
+ hash: "4c819c54ced1b6ef0574417a7e11f2e7"
+ }
+ Frame {
+ msec: 304
+ hash: "3dc5f7b412cb176c3b23d37cda3ef87c"
+ }
+ Frame {
+ msec: 320
+ hash: "c368a01b43d94205c03f9c750c37f330"
+ }
+ Frame {
+ msec: 336
+ hash: "8842bd0c8b17cac4fc9df84835999174"
+ }
+ Frame {
+ msec: 352
+ hash: "26829e9c7ca44dfcb0c03852f4158a18"
+ }
+ Frame {
+ msec: 368
+ hash: "ecffdb0888f1721e27b163e1f29a1950"
+ }
+ Frame {
+ msec: 384
+ hash: "eaead96f2683c464a12df8aadba20691"
+ }
+ Frame {
+ msec: 400
+ hash: "1e931963925bd208dce1ec9011372a3b"
+ }
+ Frame {
+ msec: 416
+ hash: "1c3fd049001c1e883f21d0d1e0e32cba"
+ }
+ Frame {
+ msec: 432
+ hash: "e8c3422ca637750ac52565594737d092"
+ }
+ Frame {
+ msec: 448
+ hash: "b1c36322cf89e15a80af7c43f2aebca1"
+ }
+ Frame {
+ msec: 464
+ hash: "f676c3171495f7bb2cb1812cfebaa17a"
+ }
+ Frame {
+ msec: 480
+ hash: "255119e2efa99c8e31fee611aaaa5137"
+ }
+ Frame {
+ msec: 496
+ hash: "e0bd32e3d44cfc2351db105f4595f18a"
+ }
+ Frame {
+ msec: 512
+ hash: "b7f23b8f3769f929b42491efda7ebe19"
+ }
+ Frame {
+ msec: 528
+ hash: "718cee11d869a8a8c5191cc0c09f2d30"
+ }
+ Frame {
+ msec: 544
+ hash: "fbdbf92f8c5f507605ff50abc594682b"
+ }
+ Frame {
+ msec: 560
+ hash: "c07fdc69c72b40d3c8dd1cc499008888"
+ }
+ Frame {
+ msec: 576
+ hash: "38e17ecd537dc0f51211ad672a2ebb21"
+ }
+ Frame {
+ msec: 592
+ hash: "2cbdc8728ef779c62f9938672986658a"
+ }
+ Frame {
+ msec: 608
+ hash: "7fb66509d5d1df34861e9c70f9a579f0"
+ }
+ Frame {
+ msec: 624
+ hash: "410b89392e859058718a08b79ec3d8fa"
+ }
+ Frame {
+ msec: 640
+ hash: "9bd90f80700217d08dafed93b81ee9cf"
+ }
+ Frame {
+ msec: 656
+ hash: "6d83671504a4274887b4e0d9bd2b24e7"
+ }
+ Frame {
+ msec: 672
+ hash: "51ff7bd3fd4a776af33fce7b935b145c"
+ }
+ Frame {
+ msec: 688
+ hash: "20f27392368b63b248bcd455cf3c9106"
+ }
+ Frame {
+ msec: 704
+ hash: "1a5ab296bd55aa215c9b04a7ff6c73a1"
+ }
+ Frame {
+ msec: 720
+ hash: "020fd7b14e8662fc006b0c39adca7c6a"
+ }
+ Frame {
+ msec: 736
+ hash: "2619120bdb25a153963bdf05c4a16d44"
+ }
+ Frame {
+ msec: 752
+ hash: "fd321314031efeb9ce71146764289d9f"
+ }
+ Frame {
+ msec: 768
+ hash: "378a71f09445dfff284db919787cbf87"
+ }
+ Frame {
+ msec: 784
+ hash: "d59eefe82ab8a00c903141dd9ea767ef"
+ }
+ Frame {
+ msec: 800
+ hash: "0a65004d69a4567f2a5c7e84dab3a905"
+ }
+ Frame {
+ msec: 816
+ hash: "92a4631716a51ff484ca14d9cfe05b2e"
+ }
+ Frame {
+ msec: 832
+ hash: "87203f627cf410cad56d6ba38a140efa"
+ }
+ Frame {
+ msec: 848
+ hash: "054cc085998cc059a6b7b4a7300dd36b"
+ }
+ Frame {
+ msec: 864
+ hash: "af3fefeb908a0485c723d36f61eff0a4"
+ }
+ Frame {
+ msec: 880
+ hash: "3f905d1e1ea79858b5a9bbfeab4eb255"
+ }
+ Frame {
+ msec: 896
+ hash: "f935f1fc5f26a201098d894fca9a4d1f"
+ }
+ Frame {
+ msec: 912
+ hash: "42b003dbb531da514716b9c32bdd3614"
+ }
+ Frame {
+ msec: 928
+ hash: "a82fed83ee4efee7896b639c7691b13a"
+ }
+ Frame {
+ msec: 944
+ hash: "31ad8cbf875233ea495330b0d3d4d2dd"
+ }
+ Frame {
+ msec: 960
+ hash: "00586f2f1d49fa81f90f7b06614311b4"
+ }
+ Frame {
+ msec: 976
+ image: "follow.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "5d71ff48b865ad4266eb8292f981b04e"
+ }
+ Frame {
+ msec: 1008
+ hash: "df599d934d131c92b209284277009efb"
+ }
+ Frame {
+ msec: 1024
+ hash: "5aaf33d11eb70ffdfe89246c637caed7"
+ }
+ Frame {
+ msec: 1040
+ hash: "9648cf623a66ded145c4fd23a42917b3"
+ }
+ Frame {
+ msec: 1056
+ hash: "9d33c2cc44ceac5a527ddcf809a51df6"
+ }
+ Frame {
+ msec: 1072
+ hash: "6d0ad2e0d012e53a03e246e6d5e49e13"
+ }
+ Frame {
+ msec: 1088
+ hash: "d33fa68796e38b19f44571d11c1bcd33"
+ }
+ Frame {
+ msec: 1104
+ hash: "636680f49bbf30b0fac31a6c581f18dd"
+ }
+ Frame {
+ msec: 1120
+ hash: "66801dbc39301e6b46b244fe502e0340"
+ }
+ Frame {
+ msec: 1136
+ hash: "f8fa6a033483279e78636f26493b10ac"
+ }
+ Frame {
+ msec: 1152
+ hash: "11b46611550173df42986dee4339d907"
+ }
+ Frame {
+ msec: 1168
+ hash: "5c9afdb519006079ee8d28b2b60d0b76"
+ }
+ Frame {
+ msec: 1184
+ hash: "9a55c38b2cd8abf25fbe448c7ef80971"
+ }
+ Frame {
+ msec: 1200
+ hash: "27ebdf1424e892b35c93ec009d942407"
+ }
+ Frame {
+ msec: 1216
+ hash: "2d9e3f0ae56f7337012b51c4dd173108"
+ }
+ Frame {
+ msec: 1232
+ hash: "e6f89ca892131d68ff1f4ca95c95d807"
+ }
+ Frame {
+ msec: 1248
+ hash: "f75791f1b12a217d37acb09bdb114cc5"
+ }
+ Frame {
+ msec: 1264
+ hash: "94c5ab1460fb1b0f957a9718b45bca36"
+ }
+ Frame {
+ msec: 1280
+ hash: "e246c8a0ec3d01ea20258b24a5673fe1"
+ }
+ Frame {
+ msec: 1296
+ hash: "529de7735e73409dff266d8c1275215c"
+ }
+ Frame {
+ msec: 1312
+ hash: "330400763a670580570cb62241ebec62"
+ }
+ Frame {
+ msec: 1328
+ hash: "ae444d1de9c509fc6f74136ca90f927a"
+ }
+ Frame {
+ msec: 1344
+ hash: "c43631ca8ee90ea5dc7664be5bc45429"
+ }
+ Frame {
+ msec: 1360
+ hash: "b366ac4a5b66c331a7667e9df0fc4eda"
+ }
+ Frame {
+ msec: 1376
+ hash: "1c7f4c47a9c57a34787cc9703e99bff1"
+ }
+ Frame {
+ msec: 1392
+ hash: "5555535609d512e8d34549b6624f74b8"
+ }
+ Frame {
+ msec: 1408
+ hash: "be59df714541923494b59f31f57e310e"
+ }
+ Frame {
+ msec: 1424
+ hash: "63e434f053032e54298f6e61c8d4da7d"
+ }
+ Frame {
+ msec: 1440
+ hash: "b0bb838637eceb6f8993ebc5b887afed"
+ }
+ Frame {
+ msec: 1456
+ hash: "fc39f33add4ebcaf578558ecd4aea281"
+ }
+ Frame {
+ msec: 1472
+ hash: "3f36faa7cc1e5898d4d5890c47633ff3"
+ }
+ Frame {
+ msec: 1488
+ hash: "4b328002b4461869b1f7de48e7291902"
+ }
+ Frame {
+ msec: 1504
+ hash: "26252c63924d2abcaebea2c7caf1d7aa"
+ }
+ Frame {
+ msec: 1520
+ hash: "a9a6023484ae439be86b2c2ff59dc40b"
+ }
+ Frame {
+ msec: 1536
+ hash: "620dab11bd4aab84cc0d949c48dd9a5d"
+ }
+ Frame {
+ msec: 1552
+ hash: "3b45ef80ee3e6fbbd3533bfa0d666e2f"
+ }
+ Frame {
+ msec: 1568
+ hash: "b33306abcb6a8402e491b7216495c778"
+ }
+ Frame {
+ msec: 1584
+ hash: "3cc52e8649a02e87785f1dc63f5c1efd"
+ }
+ Frame {
+ msec: 1600
+ hash: "fe21141f48da685213ed9d7641b2e7a0"
+ }
+ Frame {
+ msec: 1616
+ hash: "205aac4e822e20bd32f637256250f3c8"
+ }
+ Frame {
+ msec: 1632
+ hash: "124df0948f36aaf6151556d301f4b930"
+ }
+ Frame {
+ msec: 1648
+ hash: "c1701edd5eaf143fd1dbdc4a5324b48a"
+ }
+ Frame {
+ msec: 1664
+ hash: "117402df55367c918a3835958f4ab1d6"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 195; y: 95
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1680
+ hash: "73e3b86a1da28490cae4b03fdceefe19"
+ }
+ Frame {
+ msec: 1696
+ hash: "172e329fb47d6db0180242990a84fe3b"
+ }
+ Frame {
+ msec: 1712
+ hash: "82cf704cdfd406bab22689bc888ddc8d"
+ }
+ Frame {
+ msec: 1728
+ hash: "4c288f198a06d1b2815d34c3c8f97051"
+ }
+ Frame {
+ msec: 1744
+ hash: "6404d81456bb95a6b1c1ae55a181e40e"
+ }
+ Frame {
+ msec: 1760
+ hash: "6c11b9f079936ea08d11aa1172bfd954"
+ }
+ Frame {
+ msec: 1776
+ hash: "95388037c1f79a9dab951031f1d7c307"
+ }
+ Frame {
+ msec: 1792
+ hash: "c4ee57d9bffbb5f0ff173db48eadf2e3"
+ }
+ Frame {
+ msec: 1808
+ hash: "703ac9672a9c55cf08e6381ef76ac13c"
+ }
+ Frame {
+ msec: 1824
+ hash: "ea7726d2a2923290398262c8f70d511e"
+ }
+ Frame {
+ msec: 1840
+ hash: "9897c12603326a30c62381015c9adae3"
+ }
+ Frame {
+ msec: 1856
+ hash: "a52aa37b10a05382f1b136896b7e00e8"
+ }
+ Frame {
+ msec: 1872
+ hash: "a5acc1a45c95a67725e5e15084b7be18"
+ }
+ Frame {
+ msec: 1888
+ hash: "c9fac8b5a4110493958d49b073ea96ed"
+ }
+ Frame {
+ msec: 1904
+ hash: "6fca3a5c6d1cfbf1b905aca25b7785c5"
+ }
+ Frame {
+ msec: 1920
+ hash: "a40e5e2744d1d84c8b9a45525801a745"
+ }
+ Frame {
+ msec: 1936
+ image: "follow.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "b2f980ab19d44ee98ab3e82a19adfe2d"
+ }
+ Frame {
+ msec: 1968
+ hash: "e01732623930aebefd76ab62c81dc722"
+ }
+ Frame {
+ msec: 1984
+ hash: "3a59c6851bc89eb31100092b1ceddbd9"
+ }
+ Frame {
+ msec: 2000
+ hash: "2949de19eacb9f35816aa7ba69614f2c"
+ }
+ Frame {
+ msec: 2016
+ hash: "f2c4c1f4429cbb6bd10f2318b2cb6904"
+ }
+ Frame {
+ msec: 2032
+ hash: "2c48af64162e7e028cd536dba03eab71"
+ }
+ Frame {
+ msec: 2048
+ hash: "7fe13b8f9253f720b6591b396cfba2d1"
+ }
+ Frame {
+ msec: 2064
+ hash: "559947a03e650575a764801366cc504b"
+ }
+ Frame {
+ msec: 2080
+ hash: "a8d09f6c862fd5ec2dcf34f06d1ef744"
+ }
+ Frame {
+ msec: 2096
+ hash: "e3bb4b62209631ff84134f2243bfdb42"
+ }
+ Frame {
+ msec: 2112
+ hash: "a1956a9d1939bc154ea0c88d596948cc"
+ }
+ Frame {
+ msec: 2128
+ hash: "c98a375727860da1e827d4dd74af8f63"
+ }
+ Frame {
+ msec: 2144
+ hash: "df4edcbb2ef5348341ff55c808609b6c"
+ }
+ Frame {
+ msec: 2160
+ hash: "6287564be85b7cbadc6bb6f0232bc837"
+ }
+ Frame {
+ msec: 2176
+ hash: "9826fdb48f7ea770fa5f198ec49d7cb7"
+ }
+ Frame {
+ msec: 2192
+ hash: "56f82641a5591df9bb929cc0d32eb95d"
+ }
+ Frame {
+ msec: 2208
+ hash: "526c55e555fb2e58796561efa3568c50"
+ }
+ Frame {
+ msec: 2224
+ hash: "6b4b74613421c1841a17c369cb316754"
+ }
+ Frame {
+ msec: 2240
+ hash: "37f785c30947d5eec113dcf6af649abf"
+ }
+ Frame {
+ msec: 2256
+ hash: "5ff2c975dd9e261c764537c836627c4d"
+ }
+ Frame {
+ msec: 2272
+ hash: "efe554981583749c3d09988bce7fed02"
+ }
+ Frame {
+ msec: 2288
+ hash: "0f7204b4afb0ea5d58e49650e8027c0c"
+ }
+ Frame {
+ msec: 2304
+ hash: "817291f91f4b309710ad3aed53a7d47a"
+ }
+ Frame {
+ msec: 2320
+ hash: "c15c9cd03089090cf8a777c1f0d88de7"
+ }
+ Frame {
+ msec: 2336
+ hash: "05f45cb8d0856dcc81091351615e35d6"
+ }
+ Frame {
+ msec: 2352
+ hash: "99785a16fed6d6409b4b47ec55afb56b"
+ }
+ Frame {
+ msec: 2368
+ hash: "39032cb4432ee9536af500673fccf526"
+ }
+ Frame {
+ msec: 2384
+ hash: "9057653e3cd6042831037d3590e7595b"
+ }
+ Frame {
+ msec: 2400
+ hash: "76c772eb2ab8f117c260c9c96bc99e1d"
+ }
+ Frame {
+ msec: 2416
+ hash: "b6474665b8f8bcdd76d1a38efecad889"
+ }
+ Frame {
+ msec: 2432
+ hash: "106c2d2efafad0181e3ded3a6805f2c6"
+ }
+ Frame {
+ msec: 2448
+ hash: "5275fa4ffef6c1909f9d03bb1e7b9cae"
+ }
+ Frame {
+ msec: 2464
+ hash: "0c1043c0087d60000dc7259d4ac03618"
+ }
+ Frame {
+ msec: 2480
+ hash: "645748569b4f5cb9b206b0808bb7d23d"
+ }
+ Frame {
+ msec: 2496
+ hash: "dd95dfa80e1b3ff511e7c75efd0d87ce"
+ }
+ Frame {
+ msec: 2512
+ hash: "86b3dd03b04d7610837cdc67cad07e0a"
+ }
+ Frame {
+ msec: 2528
+ hash: "8264f67ac92e4ebcfe4cc8e954f8c5d2"
+ }
+ Frame {
+ msec: 2544
+ hash: "6bf52377d822b09eb28a1ec36d3a36a9"
+ }
+ Frame {
+ msec: 2560
+ hash: "7ae1d65cdaf7fa71eb4ec318b37bb0aa"
+ }
+ Frame {
+ msec: 2576
+ hash: "860f5ce9844c90cf9e6a6d383ff0972f"
+ }
+ Frame {
+ msec: 2592
+ hash: "5502229c038dfc59d966f69ae6ed8957"
+ }
+ Frame {
+ msec: 2608
+ hash: "21843c027bc1434ae60b3bb0fced2c54"
+ }
+ Frame {
+ msec: 2624
+ hash: "962df45680949c3eb6c968f98cd76b20"
+ }
+ Frame {
+ msec: 2640
+ hash: "f313c26fa76a0edce61244bdf92528e4"
+ }
+ Frame {
+ msec: 2656
+ hash: "b7bbde239e98cbd66b1e51b54b747f51"
+ }
+ Frame {
+ msec: 2672
+ hash: "62340707fbc832fcb805c8f80ab353d1"
+ }
+ Frame {
+ msec: 2688
+ hash: "d008a3f7af1810ff70b68b38a4cd0f0d"
+ }
+ Frame {
+ msec: 2704
+ hash: "e651dd628af24faf34d716beb392b052"
+ }
+ Frame {
+ msec: 2720
+ hash: "a97733963c7a7616b25741545b07ffba"
+ }
+ Frame {
+ msec: 2736
+ hash: "3e017cc1db720cf16521bd17308e4f44"
+ }
+ Frame {
+ msec: 2752
+ hash: "13652ebaa610cca71486517e2eed21a5"
+ }
+ Frame {
+ msec: 2768
+ hash: "09f0f500c6f7d11be39c31f9e589b38a"
+ }
+ Frame {
+ msec: 2784
+ hash: "b87968cbc60ddc6a5f5699e830410eab"
+ }
+ Frame {
+ msec: 2800
+ hash: "50e65b043d1f07a321a08ee4c25204f6"
+ }
+ Frame {
+ msec: 2816
+ hash: "122d1ffa1510468e8c4067e0f511588f"
+ }
+ Frame {
+ msec: 2832
+ hash: "585f6c25caaafb99a22a23d8a998d202"
+ }
+ Frame {
+ msec: 2848
+ hash: "9b245a00ad576666c10f509d8a80a61e"
+ }
+ Frame {
+ msec: 2864
+ hash: "9b245a00ad576666c10f509d8a80a61e"
+ }
+ Frame {
+ msec: 2880
+ hash: "3c5d3d10bacc093afc6a9c0b5aa4cddc"
+ }
+ Frame {
+ msec: 2896
+ image: "follow.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "31926d69c2309fdf13fbd7f0e9868c3d"
+ }
+ Frame {
+ msec: 2928
+ hash: "eb3acacce5dd31b0e94b59b9e546ccae"
+ }
+ Frame {
+ msec: 2944
+ hash: "9a51cff3276d75803a0a6e480f7ecb70"
+ }
+ Frame {
+ msec: 2960
+ hash: "fbbd8b9d519993a699815d935bcd2b9f"
+ }
+ Frame {
+ msec: 2976
+ hash: "0314190c6de73f9f374a4eaed0709645"
+ }
+ Frame {
+ msec: 2992
+ hash: "8ca1a203bdb5446094eb948aeb0a333e"
+ }
+ Frame {
+ msec: 3008
+ hash: "301e1b86ce38e11ad9d0d7aba0909985"
+ }
+ Frame {
+ msec: 3024
+ hash: "922095867d0a91b73ab7a63df2041279"
+ }
+ Frame {
+ msec: 3040
+ hash: "ba8275f3ba4633bf64a1f81f630c90f1"
+ }
+ Frame {
+ msec: 3056
+ hash: "efe39545279a7bd015d2de75d2b9d8b1"
+ }
+ Frame {
+ msec: 3072
+ hash: "78926c3c0c6fcf89b9291f9902710964"
+ }
+ Frame {
+ msec: 3088
+ hash: "ea63dcb7f00d3ddede0d8be59ad9d6bc"
+ }
+ Frame {
+ msec: 3104
+ hash: "286ad493301b713a49e378f123482a53"
+ }
+ Frame {
+ msec: 3120
+ hash: "a4bbbb8bb88188d3e99996502e3eebd1"
+ }
+ Frame {
+ msec: 3136
+ hash: "a6100e79f3dc5af594e86ab6cd8dfb76"
+ }
+ Frame {
+ msec: 3152
+ hash: "d9e3f777dc89bcf1b7f712206db768e2"
+ }
+ Frame {
+ msec: 3168
+ hash: "768045c600c0aa0b1e9e6f012733c600"
+ }
+ Frame {
+ msec: 3184
+ hash: "d8b4caa641ddee786f7898359efe9d07"
+ }
+ Frame {
+ msec: 3200
+ hash: "f7c3b76d5bb7c263ac9447eaad685158"
+ }
+ Frame {
+ msec: 3216
+ hash: "f7f97db815d653ec29fa31b87f72af2a"
+ }
+ Frame {
+ msec: 3232
+ hash: "18524623762487b60943312cd8bd4388"
+ }
+ Frame {
+ msec: 3248
+ hash: "5823dee5dd56e9f7515601f9629ccbae"
+ }
+ Frame {
+ msec: 3264
+ hash: "5823dee5dd56e9f7515601f9629ccbae"
+ }
+ Frame {
+ msec: 3280
+ hash: "5823dee5dd56e9f7515601f9629ccbae"
+ }
+ Frame {
+ msec: 3296
+ hash: "5823dee5dd56e9f7515601f9629ccbae"
+ }
+ Frame {
+ msec: 3312
+ hash: "18524623762487b60943312cd8bd4388"
+ }
+ Frame {
+ msec: 3328
+ hash: "430995770b655054aaeda383df8e27f7"
+ }
+ Frame {
+ msec: 3344
+ hash: "16a3a00f2b89aed676f80d63c4933ec3"
+ }
+ Frame {
+ msec: 3360
+ hash: "6c55aa62079ec546522edbf69c37b270"
+ }
+ Frame {
+ msec: 3376
+ hash: "0d68ca3ccecdd831013950cc7405e46e"
+ }
+ Frame {
+ msec: 3392
+ hash: "9da2511bc8b434218695fa74ed543439"
+ }
+ Frame {
+ msec: 3408
+ hash: "05afdd0b99dab81a500cdc2b2f0786fe"
+ }
+ Frame {
+ msec: 3424
+ hash: "e6f8882d146ae60bcc6ea47ff41a637b"
+ }
+ Frame {
+ msec: 3440
+ hash: "154542ed0e88321294f382501819aefc"
+ }
+ Frame {
+ msec: 3456
+ hash: "8f47b6980c387c5020145bf04645fd2d"
+ }
+ Frame {
+ msec: 3472
+ hash: "b34b055c7602f1f4e1cde875b258120c"
+ }
+ Frame {
+ msec: 3488
+ hash: "5a697f675575f05e297d4877604b9a47"
+ }
+ Frame {
+ msec: 3504
+ hash: "729dff1d1b357d19fc81804ec8940d0e"
+ }
+ Frame {
+ msec: 3520
+ hash: "c6f3fee46baa94a6139d2ee40254b160"
+ }
+ Frame {
+ msec: 3536
+ hash: "af0e700bb8ae34834510830f8b44afdb"
+ }
+ Frame {
+ msec: 3552
+ hash: "9c87bb54c2dfe58c2da9194dae6f7502"
+ }
+ Frame {
+ msec: 3568
+ hash: "2132356a92c75d725f9feafb8201b142"
+ }
+ Frame {
+ msec: 3584
+ hash: "50d855d2595eeae2bfd6aaa8c2fa0454"
+ }
+ Frame {
+ msec: 3600
+ hash: "5fde3c62d6e53a9056e3586f9dcda59e"
+ }
+ Frame {
+ msec: 3616
+ hash: "8f04460254a1e9fb949d5165894cd92a"
+ }
+ Frame {
+ msec: 3632
+ hash: "2b514c5e3b20d30f9c7e71092c69f081"
+ }
+ Frame {
+ msec: 3648
+ hash: "2c1ba6224037790e15f5c0f2864ace4d"
+ }
+ Frame {
+ msec: 3664
+ hash: "0d5b8e7bd5f560888aacaf2b3c6827a8"
+ }
+ Frame {
+ msec: 3680
+ hash: "ae25004530e7df134414018e4a34780e"
+ }
+ Frame {
+ msec: 3696
+ hash: "1a8fd9eaf9a91f1b42924f8986fbed9a"
+ }
+ Frame {
+ msec: 3712
+ hash: "2ea6de2025d40ed5beeff12a5b70ccc9"
+ }
+ Frame {
+ msec: 3728
+ hash: "624e417718d3cac1e4b7e4ce258ce6ea"
+ }
+ Frame {
+ msec: 3744
+ hash: "8b56d29391257c7be8966af6be26ea9f"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 195; y: 95
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3760
+ hash: "5c0d977d8b446d9191bde57335cf1062"
+ }
+ Frame {
+ msec: 3776
+ hash: "100be2b21d069e3a5dbb694a90da4d4f"
+ }
+ Frame {
+ msec: 3792
+ hash: "caab03f6c81080dd8fdbedb4e94ae4a5"
+ }
+ Frame {
+ msec: 3808
+ hash: "3328a4d06f2f80a7e9ccf2ff21522fca"
+ }
+ Frame {
+ msec: 3824
+ hash: "a534e6cc28daf3eff6a9cf8379bd6375"
+ }
+ Frame {
+ msec: 3840
+ hash: "6686f9c1a814c6a6b785b70f94937b68"
+ }
+ Frame {
+ msec: 3856
+ image: "follow.4.png"
+ }
+ Frame {
+ msec: 3872
+ hash: "d3f1c3593375ca5c022a1361a7ec70bd"
+ }
+ Frame {
+ msec: 3888
+ hash: "67843e6192e2ecaa3820c37dc2f93106"
+ }
+ Frame {
+ msec: 3904
+ hash: "19a022f678e5b8f4ebdff936162323dc"
+ }
+ Frame {
+ msec: 3920
+ hash: "34e55ae70c9e156db339ae15642359c3"
+ }
+ Frame {
+ msec: 3936
+ hash: "3784778c817f9d9bb73d990cfe12685a"
+ }
+ Frame {
+ msec: 3952
+ hash: "0403fdf79e3ba339c7e3786db0c9c0f0"
+ }
+ Frame {
+ msec: 3968
+ hash: "93e4a0d5645d1cfc916f1e8422655555"
+ }
+ Frame {
+ msec: 3984
+ hash: "29080bfabb87160b7c51385fb36b474b"
+ }
+ Frame {
+ msec: 4000
+ hash: "9da2d83edc9d35f00fb8a159e79de4d9"
+ }
+ Frame {
+ msec: 4016
+ hash: "5505a42d4788f00cfc7499fbfda851ce"
+ }
+ Frame {
+ msec: 4032
+ hash: "bdd3040ab16fa9ffdd2fbc66b06699f8"
+ }
+ Frame {
+ msec: 4048
+ hash: "2a347e30a20c693a9440caa60ade0a0f"
+ }
+ Frame {
+ msec: 4064
+ hash: "0307f1857c091a639d47f112ce1a2f5a"
+ }
+ Frame {
+ msec: 4080
+ hash: "778d18e539bbd562ebe39283a6315df1"
+ }
+ Frame {
+ msec: 4096
+ hash: "0369cf6c3d1f5db2e92ee1f7c5d3b8ed"
+ }
+ Frame {
+ msec: 4112
+ hash: "9f7413587ab50f1abf776bf180ec2d6f"
+ }
+ Frame {
+ msec: 4128
+ hash: "7d04a27236485808e571e8a39f23ea17"
+ }
+ Frame {
+ msec: 4144
+ hash: "a1dff63b723473d5a4c9c59975a2fb81"
+ }
+ Frame {
+ msec: 4160
+ hash: "9795ea70a3b9d3b7805221a58c19e5da"
+ }
+ Frame {
+ msec: 4176
+ hash: "f1392c489e21107136eb8e0d1e8b427e"
+ }
+ Frame {
+ msec: 4192
+ hash: "95c225ef07171a96335e99078195b06a"
+ }
+ Frame {
+ msec: 4208
+ hash: "d46ef3e7f9cec06e8c18afc0d07be4f3"
+ }
+ Frame {
+ msec: 4224
+ hash: "b017f5b51d423bb0fca0d6df3aaded8b"
+ }
+ Frame {
+ msec: 4240
+ hash: "60584d085b0cd6fbc436773be678597e"
+ }
+ Frame {
+ msec: 4256
+ hash: "117951465dfd5c386826b295560d2dec"
+ }
+ Frame {
+ msec: 4272
+ hash: "1b70137da5f4e024593999e93121fe8b"
+ }
+ Frame {
+ msec: 4288
+ hash: "bd50dffd41941fef127f39b55c4748e0"
+ }
+ Frame {
+ msec: 4304
+ hash: "8eec34d8e1d2e22d11b85a671cd4d3aa"
+ }
+ Frame {
+ msec: 4320
+ hash: "9e3c97cfad5002ef5f3fcc365aeb7bd0"
+ }
+ Frame {
+ msec: 4336
+ hash: "28e1cf1ee033915ea2ee39c9ab00a73d"
+ }
+ Frame {
+ msec: 4352
+ hash: "99101a156a553f441f00221f6facbf1f"
+ }
+ Frame {
+ msec: 4368
+ hash: "419023e5d59d16c26b35bee7d3cea559"
+ }
+ Frame {
+ msec: 4384
+ hash: "485d23519293975b04031fe4baa5c276"
+ }
+ Frame {
+ msec: 4400
+ hash: "c8bc60735e0ede26dbaf228294853f9a"
+ }
+ Frame {
+ msec: 4416
+ hash: "ada3680b807d59843e3adf6640704066"
+ }
+ Frame {
+ msec: 4432
+ hash: "3e28f3adf9241512cd0d6918d81ffffb"
+ }
+ Frame {
+ msec: 4448
+ hash: "8f339acc33cbc89ae1c62391ce021bb3"
+ }
+ Frame {
+ msec: 4464
+ hash: "d303960c0853a90557d64a04b8283c94"
+ }
+ Frame {
+ msec: 4480
+ hash: "f907dbdacf2cfa9fdf8f9c8dead5b4c4"
+ }
+ Frame {
+ msec: 4496
+ hash: "30c6e6f283f4a3f538cdda9c2e92de8c"
+ }
+ Frame {
+ msec: 4512
+ hash: "04d2ac55774b43107a43a7d33764199b"
+ }
+ Frame {
+ msec: 4528
+ hash: "cddf3e111cbc59e721725daa1d8a0c31"
+ }
+ Frame {
+ msec: 4544
+ hash: "15b1b63cd1695207ebf9f04387be0739"
+ }
+ Frame {
+ msec: 4560
+ hash: "690769b9bbe86a3c5b1fbdee39615fbd"
+ }
+ Frame {
+ msec: 4576
+ hash: "2bd640d8ddbf878d808f22656fef1ed9"
+ }
+ Frame {
+ msec: 4592
+ hash: "a654f1e4519bf883d554276ebbe96323"
+ }
+ Frame {
+ msec: 4608
+ hash: "68f0313cfc3f51a0bb9b47c5407c19b6"
+ }
+ Frame {
+ msec: 4624
+ hash: "77f29806b084de4cabf7ab9bf1a93d5e"
+ }
+ Frame {
+ msec: 4640
+ hash: "f9991189e3282d107b98fb0ae5f5ef00"
+ }
+ Frame {
+ msec: 4656
+ hash: "0cd1f2f6e347d48feea1b26a4968dec7"
+ }
+ Frame {
+ msec: 4672
+ hash: "e75a6f6a088e2289042572a161ffb0e9"
+ }
+ Frame {
+ msec: 4688
+ hash: "5a541081444c0a71128223a4c4c3144c"
+ }
+ Frame {
+ msec: 4704
+ hash: "6813d442cc610f346a5441ed0cd723e5"
+ }
+ Frame {
+ msec: 4720
+ hash: "24ec539bc57899819915f833f26deacd"
+ }
+ Frame {
+ msec: 4736
+ hash: "3a7ed1b4b533b817674aa141c420cd61"
+ }
+ Frame {
+ msec: 4752
+ hash: "d0a643fae97bb152e97ca60e96299003"
+ }
+ Frame {
+ msec: 4768
+ hash: "c84093931520f4661eff6645091a294b"
+ }
+ Frame {
+ msec: 4784
+ hash: "81e7ceaece82505a4a16ead195a66162"
+ }
+ Frame {
+ msec: 4800
+ hash: "315764d20b647f6ab1ba30239a69bf72"
+ }
+ Frame {
+ msec: 4816
+ image: "follow.5.png"
+ }
+ Frame {
+ msec: 4832
+ hash: "d1824ced8af34ad9edb36a58ae9aa7f5"
+ }
+ Frame {
+ msec: 4848
+ hash: "167b9a49fbb94908e09e7e9c9147cd8b"
+ }
+ Frame {
+ msec: 4864
+ hash: "442d5f0906840de526d59a80ada322c0"
+ }
+ Frame {
+ msec: 4880
+ hash: "78206c4d4d23c7c1ba888b9062b09432"
+ }
+ Frame {
+ msec: 4896
+ hash: "e898202cfebbff1952efc6e01254d855"
+ }
+ Frame {
+ msec: 4912
+ hash: "ab31dc7bbad2b0552359866bb8d92f0c"
+ }
+ Frame {
+ msec: 4928
+ hash: "f093304e88964376baf9721d53d4fb49"
+ }
+ Frame {
+ msec: 4944
+ hash: "3ef76f3e1c44d13c3a469bd192ff7b5d"
+ }
+ Frame {
+ msec: 4960
+ hash: "5d3b6d0d91f8cc5b89e39407bc3b5a15"
+ }
+ Frame {
+ msec: 4976
+ hash: "3c73573f12f49b34e1d990a55ad913fa"
+ }
+ Frame {
+ msec: 4992
+ hash: "d1bac071b01a1c6fddab90cdc435fad4"
+ }
+ Frame {
+ msec: 5008
+ hash: "36a219aadec910f1dbef616c641e1d2b"
+ }
+ Frame {
+ msec: 5024
+ hash: "5871fc67d361cc988551592ee21dfb23"
+ }
+ Frame {
+ msec: 5040
+ hash: "6e65ee6c814b9a9da205c36925e663bf"
+ }
+ Frame {
+ msec: 5056
+ hash: "290b20fa8e91d34000d7c2d81745f6d2"
+ }
+ Frame {
+ msec: 5072
+ hash: "19e7405a9083a8143f7bb040f8837b29"
+ }
+ Frame {
+ msec: 5088
+ hash: "c0a0fa2b4c1ceb6c70594994a1ac8713"
+ }
+ Frame {
+ msec: 5104
+ hash: "c236224c16743fb606deb78bcb8afc8d"
+ }
+ Frame {
+ msec: 5120
+ hash: "7d44db15eb300b4338ffc26e9bcfce20"
+ }
+ Frame {
+ msec: 5136
+ hash: "067a79148a194c45c6f32d85316a1e11"
+ }
+ Frame {
+ msec: 5152
+ hash: "9075c379044476994a87f0fdcce8e332"
+ }
+ Frame {
+ msec: 5168
+ hash: "b2316988fbd51096a4f512e71fe7d0a2"
+ }
+ Frame {
+ msec: 5184
+ hash: "280f70877d93af5f84e178aad6a102d8"
+ }
+ Frame {
+ msec: 5200
+ hash: "3eef4ae7e43a8cf1cd9dd562237296f8"
+ }
+ Frame {
+ msec: 5216
+ hash: "e3184f77ce3a47ca4dca6386f42d7fec"
+ }
+ Frame {
+ msec: 5232
+ hash: "a2a5df66fe4808ea8d466cac84ba910c"
+ }
+ Frame {
+ msec: 5248
+ hash: "9f8a0e54788112d6c30482e840504f35"
+ }
+ Frame {
+ msec: 5264
+ hash: "ae69cf84798844f9f360c86790feaecd"
+ }
+ Frame {
+ msec: 5280
+ hash: "0244526572acb6266db5b7eb9d29c6fc"
+ }
+ Frame {
+ msec: 5296
+ hash: "8fb53d60b95ddb5aef27442934ea9983"
+ }
+ Frame {
+ msec: 5312
+ hash: "930fcfde491b4f5681e3861764003895"
+ }
+ Frame {
+ msec: 5328
+ hash: "bcdcd0a637112d113ebe11dc18823237"
+ }
+ Frame {
+ msec: 5344
+ hash: "65a564d5a5afbc14c0cdad4d52753507"
+ }
+ Frame {
+ msec: 5360
+ hash: "0c5056d438d2d54938f31ef5f996673a"
+ }
+ Frame {
+ msec: 5376
+ hash: "11c157ad2236fc390ffbdf339366cbc1"
+ }
+ Frame {
+ msec: 5392
+ hash: "6cb341b1f281a97a35c2e41bfd4c4d9d"
+ }
+ Frame {
+ msec: 5408
+ hash: "553a945f7f19f70ddae4ebe88e52a79b"
+ }
+ Frame {
+ msec: 5424
+ hash: "d10b42b4095a2474e66a5a322f72e936"
+ }
+ Frame {
+ msec: 5440
+ hash: "0f943d61e8072d70eddee8aa1ba0de5a"
+ }
+ Frame {
+ msec: 5456
+ hash: "3df18e237b666e78d57857739b759e6d"
+ }
+ Frame {
+ msec: 5472
+ hash: "1ddc0bfdb2ca7b6dee63f1024e62f26e"
+ }
+ Frame {
+ msec: 5488
+ hash: "aaa397714528f41238059e3a88833abc"
+ }
+ Frame {
+ msec: 5504
+ hash: "c94bd69f925c782656afc5f9618180a6"
+ }
+ Frame {
+ msec: 5520
+ hash: "824ff8c0e1ab43e3c0eaa79b7cc19b9c"
+ }
+ Frame {
+ msec: 5536
+ hash: "6c440a0b2293811335bdbf2c4f25f47d"
+ }
+ Frame {
+ msec: 5552
+ hash: "bfc7936cdf833d5b720ec9baca740112"
+ }
+ Frame {
+ msec: 5568
+ hash: "375fa305dbae2872dc9b20e59381cc0c"
+ }
+ Frame {
+ msec: 5584
+ hash: "fffd6173aa49e74164dc17a238bcd830"
+ }
+ Frame {
+ msec: 5600
+ hash: "44d9007e00fab161fd393b653255d7f4"
+ }
+ Frame {
+ msec: 5616
+ hash: "f669ee25c58b4fa20a01705d334f0065"
+ }
+ Frame {
+ msec: 5632
+ hash: "2dbb7d57711b67d5d9e1b81f70e22d34"
+ }
+ Frame {
+ msec: 5648
+ hash: "19351b91448265cb95c1670ee283c611"
+ }
+ Frame {
+ msec: 5664
+ hash: "19351b91448265cb95c1670ee283c611"
+ }
+ Frame {
+ msec: 5680
+ hash: "3a24b99d048348a21f4e4bd69393de89"
+ }
+ Frame {
+ msec: 5696
+ hash: "35a6fe955a52950bbfa954a453e4008e"
+ }
+ Frame {
+ msec: 5712
+ hash: "896f4ec28c976237b34fb2725a44460e"
+ }
+ Frame {
+ msec: 5728
+ hash: "ed3008ea950ec84c57518e573ea36d15"
+ }
+ Frame {
+ msec: 5744
+ hash: "3447c7be992759f772c1db2033eead99"
+ }
+ Frame {
+ msec: 5760
+ hash: "b7133225daa03563d3f5b1dac5f56a23"
+ }
+ Frame {
+ msec: 5776
+ image: "follow.6.png"
+ }
+ Frame {
+ msec: 5792
+ hash: "adc55f2fcf312a90b025a75fa80aa079"
+ }
+ Frame {
+ msec: 5808
+ hash: "3ac85cad400d2b8e4f33798f4f6b7b42"
+ }
+ Frame {
+ msec: 5824
+ hash: "1c115efd84ccbe489d24c3c521c4a61c"
+ }
+ Frame {
+ msec: 5840
+ hash: "39518f1bbc0c4aba6ff517bc3dc7c279"
+ }
+ Frame {
+ msec: 5856
+ hash: "7bd28d32996f4de61c415d3217da16d0"
+ }
+ Frame {
+ msec: 5872
+ hash: "f5d06e25d775bf8db07e95625a712733"
+ }
+ Frame {
+ msec: 5888
+ hash: "4820ea6ea3be88af2f86111c547a19d7"
+ }
+ Frame {
+ msec: 5904
+ hash: "fa6e681c368118b7f135a47ae8fc12ff"
+ }
+ Frame {
+ msec: 5920
+ hash: "f6b30e618aeeb837d2b3eca270b0a060"
+ }
+ Frame {
+ msec: 5936
+ hash: "ac8504bde8d3063a8bf02b9d4b69d755"
+ }
+ Frame {
+ msec: 5952
+ hash: "9670537bb77caa8e23fda7bbfa96ca60"
+ }
+ Frame {
+ msec: 5968
+ hash: "8cd292865ce5c1d240e9ddc93881a0ed"
+ }
+ Frame {
+ msec: 5984
+ hash: "de112013e526203d151c46e6cfba9f92"
+ }
+ Frame {
+ msec: 6000
+ hash: "cd61066e697de8c055aaa168791c2d8c"
+ }
+ Frame {
+ msec: 6016
+ hash: "cd61066e697de8c055aaa168791c2d8c"
+ }
+ Frame {
+ msec: 6032
+ hash: "e68b27ff14aac03c827fd43ac488d23e"
+ }
+ Frame {
+ msec: 6048
+ hash: "e68b27ff14aac03c827fd43ac488d23e"
+ }
+ Frame {
+ msec: 6064
+ hash: "1f61d857a8c26587fbda5895c603441a"
+ }
+ Frame {
+ msec: 6080
+ hash: "1e0dffdd02e05ade1ae444427d4aa345"
+ }
+ Frame {
+ msec: 6096
+ hash: "9a416ee7a1de9ac45ab2d609233c9520"
+ }
+ Frame {
+ msec: 6112
+ hash: "dfa35bf1cd908011c3214a506bcbdcb8"
+ }
+ Frame {
+ msec: 6128
+ hash: "bd502dc72dce4af3036f7af9ed7cf9e9"
+ }
+ Frame {
+ msec: 6144
+ hash: "c77280527612408daa3037aab45da59d"
+ }
+ Frame {
+ msec: 6160
+ hash: "a38ed1532a40210ad7da4c0d4d1a7195"
+ }
+ Frame {
+ msec: 6176
+ hash: "8ac8a8df937da526bbffb9a3590d89ac"
+ }
+ Frame {
+ msec: 6192
+ hash: "07527cb9a4494e11f4c9f99eb72598b9"
+ }
+ Frame {
+ msec: 6208
+ hash: "655b0327ef0f8711810714ba50f2f8cc"
+ }
+ Frame {
+ msec: 6224
+ hash: "549fd25292012a2be1f78118998ca892"
+ }
+ Frame {
+ msec: 6240
+ hash: "7a382ae4e6a48826eaa2c83ee7a73fb2"
+ }
+ Frame {
+ msec: 6256
+ hash: "5acd5f250c5b32d9006ed68dfecbfa1c"
+ }
+ Frame {
+ msec: 6272
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6288
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6304
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6320
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6336
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6352
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6368
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6384
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6400
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6416
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6432
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6448
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6464
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6480
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6496
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6512
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6528
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6544
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6560
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6576
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6592
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6608
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6624
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6640
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6656
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6672
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6688
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6704
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6720
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6736
+ image: "follow.7.png"
+ }
+ Frame {
+ msec: 6752
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6768
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6784
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6800
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6816
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6832
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 6848
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6864
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6880
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6896
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6912
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6928
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.0.png
new file mode 100644
index 0000000000..a3bb3ac1bf
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.1.png
new file mode 100644
index 0000000000..f159b6b2a3
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.2.png
new file mode 100644
index 0000000000..d24af1aab2
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.qml
new file mode 100644
index 0000000000..2e8337ec99
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/clock.qml
@@ -0,0 +1,615 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "clock.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "cb33c89e5108c85e43b53489d1255862"
+ }
+ Frame {
+ msec: 48
+ hash: "fcf631cb42237d2ce9e57ef5fef85f93"
+ }
+ Frame {
+ msec: 64
+ hash: "a9f1e24d60588ff9b565b15847669438"
+ }
+ Frame {
+ msec: 80
+ hash: "c5a07045cd24b835fdd0653db5b34f9f"
+ }
+ Frame {
+ msec: 96
+ hash: "bce3e9bfa92f81f0c8746a4777ce1b3e"
+ }
+ Frame {
+ msec: 112
+ hash: "6da93132be1be8b42aaf007306ce5990"
+ }
+ Frame {
+ msec: 128
+ hash: "8695e73f009bd20f3f3aae4a6b8f0098"
+ }
+ Frame {
+ msec: 144
+ hash: "172ece19e661999ce48053007a92f107"
+ }
+ Frame {
+ msec: 160
+ hash: "6e02e658d8873dd678dc9cc7cc8035a0"
+ }
+ Frame {
+ msec: 176
+ hash: "d8e9bad91fd91bce0310a24233ecb906"
+ }
+ Frame {
+ msec: 192
+ hash: "9c23533f0a4d47ec192bed2e48f11c60"
+ }
+ Frame {
+ msec: 208
+ hash: "9c23533f0a4d47ec192bed2e48f11c60"
+ }
+ Frame {
+ msec: 224
+ hash: "be0ee20e9eb94b80171f66fa6f1c2441"
+ }
+ Frame {
+ msec: 240
+ hash: "83b841f7ea7a5e92a21ec0d0130b4281"
+ }
+ Frame {
+ msec: 256
+ hash: "3bbf822e403f4198fbfaa6973726947d"
+ }
+ Frame {
+ msec: 272
+ hash: "172ece19e661999ce48053007a92f107"
+ }
+ Frame {
+ msec: 288
+ hash: "602ca5ac2fc928b831d8e10de01f5bf7"
+ }
+ Frame {
+ msec: 304
+ hash: "9f07659e63a5b3412ede3c8400678cc6"
+ }
+ Frame {
+ msec: 320
+ hash: "6104f86706bd11cee6b5aeef495eacfa"
+ }
+ Frame {
+ msec: 336
+ hash: "b564cfe8c73b3d51e07bbcf5320868f8"
+ }
+ Frame {
+ msec: 352
+ hash: "b2136411eee23d64718a63269071499f"
+ }
+ Frame {
+ msec: 368
+ hash: "7f610f3b80c2cf002c6565ac4b7a8325"
+ }
+ Frame {
+ msec: 384
+ hash: "5480e79cc96fdaffecb2d9dec254c8d4"
+ }
+ Frame {
+ msec: 400
+ hash: "50eea6c6f135c21ecf05fc83ad1ae9a8"
+ }
+ Frame {
+ msec: 416
+ hash: "2d3634d621782194674da127abe66039"
+ }
+ Frame {
+ msec: 432
+ hash: "285180aa632c9247c3b7aa26f5544da6"
+ }
+ Frame {
+ msec: 448
+ hash: "8695e73f009bd20f3f3aae4a6b8f0098"
+ }
+ Frame {
+ msec: 464
+ hash: "914dc6254f29a6cffc80e90a23b61130"
+ }
+ Frame {
+ msec: 480
+ hash: "a564dc3a53b607ca7e9fc6920b65abc3"
+ }
+ Frame {
+ msec: 496
+ hash: "6104f86706bd11cee6b5aeef495eacfa"
+ }
+ Frame {
+ msec: 512
+ hash: "6f34176630c5d9d421a1a31cb3b97a28"
+ }
+ Frame {
+ msec: 528
+ hash: "62199c5663263fee08ba5ce560c7429d"
+ }
+ Frame {
+ msec: 544
+ hash: "1110cb0281044eb0679e9dc373a7d063"
+ }
+ Frame {
+ msec: 560
+ hash: "0ec354101faf6603c9ca56fe82dc8ac3"
+ }
+ Frame {
+ msec: 576
+ hash: "0ec354101faf6603c9ca56fe82dc8ac3"
+ }
+ Frame {
+ msec: 592
+ hash: "1110cb0281044eb0679e9dc373a7d063"
+ }
+ Frame {
+ msec: 608
+ hash: "1110cb0281044eb0679e9dc373a7d063"
+ }
+ Frame {
+ msec: 624
+ hash: "62199c5663263fee08ba5ce560c7429d"
+ }
+ Frame {
+ msec: 640
+ hash: "1716d50c65b4319845fdc7ea1ceafe4d"
+ }
+ Frame {
+ msec: 656
+ hash: "d087befa8f95f70e33604748230d5dd5"
+ }
+ Frame {
+ msec: 672
+ hash: "7ae892fbab85d76e713ab70ca13d3f1f"
+ }
+ Frame {
+ msec: 688
+ hash: "fb069bfb88b35f9f15273e04a62a9534"
+ }
+ Frame {
+ msec: 704
+ hash: "41c69834e756bafc051ff65e149f8994"
+ }
+ Frame {
+ msec: 720
+ hash: "f0c13b542b9ee9b0c9f4ef800900db16"
+ }
+ Frame {
+ msec: 736
+ hash: "f0c13b542b9ee9b0c9f4ef800900db16"
+ }
+ Frame {
+ msec: 752
+ hash: "f0c13b542b9ee9b0c9f4ef800900db16"
+ }
+ Frame {
+ msec: 768
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 784
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 800
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 816
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 832
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 848
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 864
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 880
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 896
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 912
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 928
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 944
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 960
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 976
+ image: "clock.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 1008
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 1024
+ hash: "2ff4e8f394a62892adb348271435205c"
+ }
+ Frame {
+ msec: 1040
+ hash: "0ec9e1163fe8284ab27aa55f94bf3b14"
+ }
+ Frame {
+ msec: 1056
+ hash: "9b6efbb358b1c7928e005620a60ab4a9"
+ }
+ Frame {
+ msec: 1072
+ hash: "5be6fe791a3bb6f72a6c6a3d1e2fa86e"
+ }
+ Frame {
+ msec: 1088
+ hash: "41fefdc45bd52600f7f108d4163d484b"
+ }
+ Frame {
+ msec: 1104
+ hash: "45828a5bef6c4ad4d274c0ea46f72e44"
+ }
+ Frame {
+ msec: 1120
+ hash: "17f0925ae38ee4c523713592d6b9f541"
+ }
+ Frame {
+ msec: 1136
+ hash: "ed3acc723c29321751702903b57a557a"
+ }
+ Frame {
+ msec: 1152
+ hash: "ded71422852eec4464f54e9c1b01b28a"
+ }
+ Frame {
+ msec: 1168
+ hash: "0318d105aa5f7d3bebb0d24a85065f90"
+ }
+ Frame {
+ msec: 1184
+ hash: "9abe4cb4e8ff6ffafd993b10ac55aad9"
+ }
+ Frame {
+ msec: 1200
+ hash: "b92dba35b477ce11822277ba64582232"
+ }
+ Frame {
+ msec: 1216
+ hash: "3a9a6106e1f12ffbc81ae9d4b30376fe"
+ }
+ Frame {
+ msec: 1232
+ hash: "4647b6e6c95e3339094c7e2641458137"
+ }
+ Frame {
+ msec: 1248
+ hash: "0977f3ed3ab6426423f7a7bfb0bd1726"
+ }
+ Frame {
+ msec: 1264
+ hash: "930002bcd6986af36678d23c3dc17330"
+ }
+ Frame {
+ msec: 1280
+ hash: "ded71422852eec4464f54e9c1b01b28a"
+ }
+ Frame {
+ msec: 1296
+ hash: "16164138479aed4db7fd9a1c785556cb"
+ }
+ Frame {
+ msec: 1312
+ hash: "0b884e6a8a1c93d62fcee037f9ad8745"
+ }
+ Frame {
+ msec: 1328
+ hash: "dd1323c721a0ede74910c16df4b47074"
+ }
+ Frame {
+ msec: 1344
+ hash: "ed3acc723c29321751702903b57a557a"
+ }
+ Frame {
+ msec: 1360
+ hash: "e8c528178425f7c6089ed6d094e734fb"
+ }
+ Frame {
+ msec: 1376
+ hash: "f2954641b11004bc4d29a217791e3833"
+ }
+ Frame {
+ msec: 1392
+ hash: "5d4d4086c4aebf04eb5b0045cf9a36a8"
+ }
+ Frame {
+ msec: 1408
+ hash: "f2954641b11004bc4d29a217791e3833"
+ }
+ Frame {
+ msec: 1424
+ hash: "c2e47da0e709c9ddeee01ae29d3ad059"
+ }
+ Frame {
+ msec: 1440
+ hash: "e539f0142b3f6c2f7de084ddedbe979e"
+ }
+ Frame {
+ msec: 1456
+ hash: "ed3acc723c29321751702903b57a557a"
+ }
+ Frame {
+ msec: 1472
+ hash: "ae191ede94be250b60744d81179c5054"
+ }
+ Frame {
+ msec: 1488
+ hash: "f985b1ab4feae3bd7066e15bdd026c1a"
+ }
+ Frame {
+ msec: 1504
+ hash: "dd1323c721a0ede74910c16df4b47074"
+ }
+ Frame {
+ msec: 1520
+ hash: "c99c541e424ebe82f1cceea204f3ffdc"
+ }
+ Frame {
+ msec: 1536
+ hash: "dcdeb76d6e4c676e736ec9fcf68f993b"
+ }
+ Frame {
+ msec: 1552
+ hash: "599bfdb42d46a31bf8639e7b1c89526b"
+ }
+ Frame {
+ msec: 1568
+ hash: "bef384984df19143de0c290a6621146d"
+ }
+ Frame {
+ msec: 1584
+ hash: "bef384984df19143de0c290a6621146d"
+ }
+ Frame {
+ msec: 1600
+ hash: "04192a5408bc1aff5431b4ea0be94b27"
+ }
+ Frame {
+ msec: 1616
+ hash: "8da64659fb7f532eac43a67accd319ee"
+ }
+ Frame {
+ msec: 1632
+ hash: "dcdeb76d6e4c676e736ec9fcf68f993b"
+ }
+ Frame {
+ msec: 1648
+ hash: "fba3a7729e46d8e78d203188ef29d829"
+ }
+ Frame {
+ msec: 1664
+ hash: "c99c541e424ebe82f1cceea204f3ffdc"
+ }
+ Frame {
+ msec: 1680
+ hash: "c99c541e424ebe82f1cceea204f3ffdc"
+ }
+ Frame {
+ msec: 1696
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1712
+ hash: "7f62ba22b5567d4ea96725a6215ff98a"
+ }
+ Frame {
+ msec: 1728
+ hash: "a21cc4fa347929fd816ad36f4b33efab"
+ }
+ Frame {
+ msec: 1744
+ hash: "a21cc4fa347929fd816ad36f4b33efab"
+ }
+ Frame {
+ msec: 1760
+ hash: "a21cc4fa347929fd816ad36f4b33efab"
+ }
+ Frame {
+ msec: 1776
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1792
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1808
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1824
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1840
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1856
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1872
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1888
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1904
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1920
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1936
+ image: "clock.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1968
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 1984
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 2000
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 2016
+ hash: "a3e6173e6d82d2cb52149588b32851e4"
+ }
+ Frame {
+ msec: 2032
+ hash: "dba66886121f802a4a49ee1e220279db"
+ }
+ Frame {
+ msec: 2048
+ hash: "b43648a05b6900bd0402bb56c98692df"
+ }
+ Frame {
+ msec: 2064
+ hash: "8213e39455c952a589a90eea0040edfe"
+ }
+ Frame {
+ msec: 2080
+ hash: "0d72dcbb2de67c84c0cf802e1de2b32b"
+ }
+ Frame {
+ msec: 2096
+ hash: "db5b4994b46f3e0de86149af8b99abb6"
+ }
+ Frame {
+ msec: 2112
+ hash: "440f7414e3db5339f2180bf1fcdc1c55"
+ }
+ Frame {
+ msec: 2128
+ hash: "f757740304369ac45bb88657f79f304e"
+ }
+ Frame {
+ msec: 2144
+ hash: "4521da9bcf198f78f7270cca959adfe4"
+ }
+ Frame {
+ msec: 2160
+ hash: "92d602d139aedf31180f12349a1edcad"
+ }
+ Frame {
+ msec: 2176
+ hash: "4092500cb913f0c9ae49d61e53553371"
+ }
+ Frame {
+ msec: 2192
+ hash: "dee122e2c46b398c48a7ef1619683a6f"
+ }
+ Frame {
+ msec: 2208
+ hash: "1817fa481e8648dd092e29403b0f887e"
+ }
+ Frame {
+ msec: 2224
+ hash: "93a69d88553709c0f164b11d8d765805"
+ }
+ Frame {
+ msec: 2240
+ hash: "92d602d139aedf31180f12349a1edcad"
+ }
+ Frame {
+ msec: 2256
+ hash: "4ff6679a9615ca8bd5dd63c296cca3d5"
+ }
+ Frame {
+ msec: 2272
+ hash: "4521da9bcf198f78f7270cca959adfe4"
+ }
+ Frame {
+ msec: 2288
+ hash: "127b93b536f6266965941af5888a63dd"
+ }
+ Frame {
+ msec: 2304
+ hash: "1a3e36e44069a8bf29b73acfd8340044"
+ }
+ Frame {
+ msec: 2320
+ hash: "1065e18d2b41af8b0b5c4f5ae2a30d4d"
+ }
+ Frame {
+ msec: 2336
+ hash: "37144e92ba8c7edd2ef87ecb6525ed5f"
+ }
+ Frame {
+ msec: 2352
+ hash: "d6445d8270ddbf5fcd196b3d71393da4"
+ }
+ Frame {
+ msec: 2368
+ hash: "b55cc8bdf97531912fa1df1f379e623c"
+ }
+ Frame {
+ msec: 2384
+ hash: "fdb86be92fa17fd4e773e5fd65f249a3"
+ }
+ Frame {
+ msec: 2400
+ hash: "b55cc8bdf97531912fa1df1f379e623c"
+ }
+ Frame {
+ msec: 2416
+ hash: "eb0de8259f7a6be756102f79b5220f56"
+ }
+ Frame {
+ msec: 2432
+ hash: "5afbb87fe77112b86282252a2ffe3821"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.0.png
new file mode 100644
index 0000000000..ae89849bf3
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.1.png
new file mode 100644
index 0000000000..7b7db05640
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.2.png
new file mode 100644
index 0000000000..7c1442f40e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.3.png
new file mode 100644
index 0000000000..c01c980450
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.4.png
new file mode 100644
index 0000000000..8806e4c749
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.5.png
new file mode 100644
index 0000000000..b331119bd8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.6.png
new file mode 100644
index 0000000000..76e3c6f4d8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.7.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.7.png
new file mode 100644
index 0000000000..141753cd91
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml
new file mode 100644
index 0000000000..4548e5b2a8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml
@@ -0,0 +1,1763 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "follow.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "e94ba580322887dbbbf9cb6309e39c23"
+ }
+ Frame {
+ msec: 48
+ hash: "787a59cda2c0b27d8959026e6d1b9427"
+ }
+ Frame {
+ msec: 64
+ hash: "9ca724d4b31aa16015b5cbb50eea0c3a"
+ }
+ Frame {
+ msec: 80
+ hash: "8a2c62a0190da1b7c1bade243baea6b8"
+ }
+ Frame {
+ msec: 96
+ hash: "e129bebca7ad348c3134569d8eee4efc"
+ }
+ Frame {
+ msec: 112
+ hash: "fd6387415e1c02fe6d17d9c3aa1d1ed8"
+ }
+ Frame {
+ msec: 128
+ hash: "a82a4042fdca7c30facd2c4740c455f7"
+ }
+ Frame {
+ msec: 144
+ hash: "62195722eb3acbfbad137ec71fd50bfe"
+ }
+ Frame {
+ msec: 160
+ hash: "449819cdc880d59650732b5447ec6237"
+ }
+ Frame {
+ msec: 176
+ hash: "552a838ebcacc0e08fa93b64a2433831"
+ }
+ Frame {
+ msec: 192
+ hash: "3984992606d54f05eb31dd0974af2183"
+ }
+ Frame {
+ msec: 208
+ hash: "3fd7225bbb0215ca8b6397580f2352a5"
+ }
+ Frame {
+ msec: 224
+ hash: "0fd8f26f40a9049de1cf2a9493d579d1"
+ }
+ Frame {
+ msec: 240
+ hash: "d08f0c57f071dc42e79fc5e0e3c32eeb"
+ }
+ Frame {
+ msec: 256
+ hash: "084c2db330ee82cd032df248ecc9629d"
+ }
+ Frame {
+ msec: 272
+ hash: "98da0d7f280d7fc4579c970c9a173b51"
+ }
+ Frame {
+ msec: 288
+ hash: "4c819c54ced1b6ef0574417a7e11f2e7"
+ }
+ Frame {
+ msec: 304
+ hash: "3dc5f7b412cb176c3b23d37cda3ef87c"
+ }
+ Frame {
+ msec: 320
+ hash: "c368a01b43d94205c03f9c750c37f330"
+ }
+ Frame {
+ msec: 336
+ hash: "8842bd0c8b17cac4fc9df84835999174"
+ }
+ Frame {
+ msec: 352
+ hash: "26829e9c7ca44dfcb0c03852f4158a18"
+ }
+ Frame {
+ msec: 368
+ hash: "ecffdb0888f1721e27b163e1f29a1950"
+ }
+ Frame {
+ msec: 384
+ hash: "eaead96f2683c464a12df8aadba20691"
+ }
+ Frame {
+ msec: 400
+ hash: "1e931963925bd208dce1ec9011372a3b"
+ }
+ Frame {
+ msec: 416
+ hash: "1c3fd049001c1e883f21d0d1e0e32cba"
+ }
+ Frame {
+ msec: 432
+ hash: "e8c3422ca637750ac52565594737d092"
+ }
+ Frame {
+ msec: 448
+ hash: "b1c36322cf89e15a80af7c43f2aebca1"
+ }
+ Frame {
+ msec: 464
+ hash: "f676c3171495f7bb2cb1812cfebaa17a"
+ }
+ Frame {
+ msec: 480
+ hash: "255119e2efa99c8e31fee611aaaa5137"
+ }
+ Frame {
+ msec: 496
+ hash: "e0bd32e3d44cfc2351db105f4595f18a"
+ }
+ Frame {
+ msec: 512
+ hash: "b7f23b8f3769f929b42491efda7ebe19"
+ }
+ Frame {
+ msec: 528
+ hash: "718cee11d869a8a8c5191cc0c09f2d30"
+ }
+ Frame {
+ msec: 544
+ hash: "fbdbf92f8c5f507605ff50abc594682b"
+ }
+ Frame {
+ msec: 560
+ hash: "c07fdc69c72b40d3c8dd1cc499008888"
+ }
+ Frame {
+ msec: 576
+ hash: "38e17ecd537dc0f51211ad672a2ebb21"
+ }
+ Frame {
+ msec: 592
+ hash: "2cbdc8728ef779c62f9938672986658a"
+ }
+ Frame {
+ msec: 608
+ hash: "7fb66509d5d1df34861e9c70f9a579f0"
+ }
+ Frame {
+ msec: 624
+ hash: "410b89392e859058718a08b79ec3d8fa"
+ }
+ Frame {
+ msec: 640
+ hash: "9bd90f80700217d08dafed93b81ee9cf"
+ }
+ Frame {
+ msec: 656
+ hash: "6d83671504a4274887b4e0d9bd2b24e7"
+ }
+ Frame {
+ msec: 672
+ hash: "51ff7bd3fd4a776af33fce7b935b145c"
+ }
+ Frame {
+ msec: 688
+ hash: "20f27392368b63b248bcd455cf3c9106"
+ }
+ Frame {
+ msec: 704
+ hash: "1a5ab296bd55aa215c9b04a7ff6c73a1"
+ }
+ Frame {
+ msec: 720
+ hash: "020fd7b14e8662fc006b0c39adca7c6a"
+ }
+ Frame {
+ msec: 736
+ hash: "2619120bdb25a153963bdf05c4a16d44"
+ }
+ Frame {
+ msec: 752
+ hash: "fd321314031efeb9ce71146764289d9f"
+ }
+ Frame {
+ msec: 768
+ hash: "378a71f09445dfff284db919787cbf87"
+ }
+ Frame {
+ msec: 784
+ hash: "d59eefe82ab8a00c903141dd9ea767ef"
+ }
+ Frame {
+ msec: 800
+ hash: "0a65004d69a4567f2a5c7e84dab3a905"
+ }
+ Frame {
+ msec: 816
+ hash: "92a4631716a51ff484ca14d9cfe05b2e"
+ }
+ Frame {
+ msec: 832
+ hash: "87203f627cf410cad56d6ba38a140efa"
+ }
+ Frame {
+ msec: 848
+ hash: "054cc085998cc059a6b7b4a7300dd36b"
+ }
+ Frame {
+ msec: 864
+ hash: "af3fefeb908a0485c723d36f61eff0a4"
+ }
+ Frame {
+ msec: 880
+ hash: "3f905d1e1ea79858b5a9bbfeab4eb255"
+ }
+ Frame {
+ msec: 896
+ hash: "f935f1fc5f26a201098d894fca9a4d1f"
+ }
+ Frame {
+ msec: 912
+ hash: "42b003dbb531da514716b9c32bdd3614"
+ }
+ Frame {
+ msec: 928
+ hash: "a82fed83ee4efee7896b639c7691b13a"
+ }
+ Frame {
+ msec: 944
+ hash: "31ad8cbf875233ea495330b0d3d4d2dd"
+ }
+ Frame {
+ msec: 960
+ hash: "00586f2f1d49fa81f90f7b06614311b4"
+ }
+ Frame {
+ msec: 976
+ image: "follow.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "5d71ff48b865ad4266eb8292f981b04e"
+ }
+ Frame {
+ msec: 1008
+ hash: "df599d934d131c92b209284277009efb"
+ }
+ Frame {
+ msec: 1024
+ hash: "5aaf33d11eb70ffdfe89246c637caed7"
+ }
+ Frame {
+ msec: 1040
+ hash: "9648cf623a66ded145c4fd23a42917b3"
+ }
+ Frame {
+ msec: 1056
+ hash: "9d33c2cc44ceac5a527ddcf809a51df6"
+ }
+ Frame {
+ msec: 1072
+ hash: "6d0ad2e0d012e53a03e246e6d5e49e13"
+ }
+ Frame {
+ msec: 1088
+ hash: "d33fa68796e38b19f44571d11c1bcd33"
+ }
+ Frame {
+ msec: 1104
+ hash: "636680f49bbf30b0fac31a6c581f18dd"
+ }
+ Frame {
+ msec: 1120
+ hash: "66801dbc39301e6b46b244fe502e0340"
+ }
+ Frame {
+ msec: 1136
+ hash: "f8fa6a033483279e78636f26493b10ac"
+ }
+ Frame {
+ msec: 1152
+ hash: "11b46611550173df42986dee4339d907"
+ }
+ Frame {
+ msec: 1168
+ hash: "5c9afdb519006079ee8d28b2b60d0b76"
+ }
+ Frame {
+ msec: 1184
+ hash: "9a55c38b2cd8abf25fbe448c7ef80971"
+ }
+ Frame {
+ msec: 1200
+ hash: "27ebdf1424e892b35c93ec009d942407"
+ }
+ Frame {
+ msec: 1216
+ hash: "2d9e3f0ae56f7337012b51c4dd173108"
+ }
+ Frame {
+ msec: 1232
+ hash: "e6f89ca892131d68ff1f4ca95c95d807"
+ }
+ Frame {
+ msec: 1248
+ hash: "f75791f1b12a217d37acb09bdb114cc5"
+ }
+ Frame {
+ msec: 1264
+ hash: "94c5ab1460fb1b0f957a9718b45bca36"
+ }
+ Frame {
+ msec: 1280
+ hash: "e246c8a0ec3d01ea20258b24a5673fe1"
+ }
+ Frame {
+ msec: 1296
+ hash: "529de7735e73409dff266d8c1275215c"
+ }
+ Frame {
+ msec: 1312
+ hash: "330400763a670580570cb62241ebec62"
+ }
+ Frame {
+ msec: 1328
+ hash: "ae444d1de9c509fc6f74136ca90f927a"
+ }
+ Frame {
+ msec: 1344
+ hash: "c43631ca8ee90ea5dc7664be5bc45429"
+ }
+ Frame {
+ msec: 1360
+ hash: "b366ac4a5b66c331a7667e9df0fc4eda"
+ }
+ Frame {
+ msec: 1376
+ hash: "1c7f4c47a9c57a34787cc9703e99bff1"
+ }
+ Frame {
+ msec: 1392
+ hash: "5555535609d512e8d34549b6624f74b8"
+ }
+ Frame {
+ msec: 1408
+ hash: "be59df714541923494b59f31f57e310e"
+ }
+ Frame {
+ msec: 1424
+ hash: "63e434f053032e54298f6e61c8d4da7d"
+ }
+ Frame {
+ msec: 1440
+ hash: "b0bb838637eceb6f8993ebc5b887afed"
+ }
+ Frame {
+ msec: 1456
+ hash: "fc39f33add4ebcaf578558ecd4aea281"
+ }
+ Frame {
+ msec: 1472
+ hash: "3f36faa7cc1e5898d4d5890c47633ff3"
+ }
+ Frame {
+ msec: 1488
+ hash: "4b328002b4461869b1f7de48e7291902"
+ }
+ Frame {
+ msec: 1504
+ hash: "26252c63924d2abcaebea2c7caf1d7aa"
+ }
+ Frame {
+ msec: 1520
+ hash: "a9a6023484ae439be86b2c2ff59dc40b"
+ }
+ Frame {
+ msec: 1536
+ hash: "620dab11bd4aab84cc0d949c48dd9a5d"
+ }
+ Frame {
+ msec: 1552
+ hash: "3b45ef80ee3e6fbbd3533bfa0d666e2f"
+ }
+ Frame {
+ msec: 1568
+ hash: "b33306abcb6a8402e491b7216495c778"
+ }
+ Frame {
+ msec: 1584
+ hash: "3cc52e8649a02e87785f1dc63f5c1efd"
+ }
+ Frame {
+ msec: 1600
+ hash: "fe21141f48da685213ed9d7641b2e7a0"
+ }
+ Frame {
+ msec: 1616
+ hash: "205aac4e822e20bd32f637256250f3c8"
+ }
+ Frame {
+ msec: 1632
+ hash: "124df0948f36aaf6151556d301f4b930"
+ }
+ Frame {
+ msec: 1648
+ hash: "c1701edd5eaf143fd1dbdc4a5324b48a"
+ }
+ Frame {
+ msec: 1664
+ hash: "117402df55367c918a3835958f4ab1d6"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 195; y: 95
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1680
+ hash: "73e3b86a1da28490cae4b03fdceefe19"
+ }
+ Frame {
+ msec: 1696
+ hash: "172e329fb47d6db0180242990a84fe3b"
+ }
+ Frame {
+ msec: 1712
+ hash: "82cf704cdfd406bab22689bc888ddc8d"
+ }
+ Frame {
+ msec: 1728
+ hash: "4c288f198a06d1b2815d34c3c8f97051"
+ }
+ Frame {
+ msec: 1744
+ hash: "6404d81456bb95a6b1c1ae55a181e40e"
+ }
+ Frame {
+ msec: 1760
+ hash: "b2b4b3de77e2b7fd58d3da1ad52355a9"
+ }
+ Frame {
+ msec: 1776
+ hash: "95388037c1f79a9dab951031f1d7c307"
+ }
+ Frame {
+ msec: 1792
+ hash: "c4ee57d9bffbb5f0ff173db48eadf2e3"
+ }
+ Frame {
+ msec: 1808
+ hash: "703ac9672a9c55cf08e6381ef76ac13c"
+ }
+ Frame {
+ msec: 1824
+ hash: "ea7726d2a2923290398262c8f70d511e"
+ }
+ Frame {
+ msec: 1840
+ hash: "5d1af6cbdb4ee5b00045751204408632"
+ }
+ Frame {
+ msec: 1856
+ hash: "a52aa37b10a05382f1b136896b7e00e8"
+ }
+ Frame {
+ msec: 1872
+ hash: "a5acc1a45c95a67725e5e15084b7be18"
+ }
+ Frame {
+ msec: 1888
+ hash: "c9fac8b5a4110493958d49b073ea96ed"
+ }
+ Frame {
+ msec: 1904
+ hash: "6fca3a5c6d1cfbf1b905aca25b7785c5"
+ }
+ Frame {
+ msec: 1920
+ hash: "a40e5e2744d1d84c8b9a45525801a745"
+ }
+ Frame {
+ msec: 1936
+ image: "follow.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "b2f980ab19d44ee98ab3e82a19adfe2d"
+ }
+ Frame {
+ msec: 1968
+ hash: "e01732623930aebefd76ab62c81dc722"
+ }
+ Frame {
+ msec: 1984
+ hash: "3a59c6851bc89eb31100092b1ceddbd9"
+ }
+ Frame {
+ msec: 2000
+ hash: "2949de19eacb9f35816aa7ba69614f2c"
+ }
+ Frame {
+ msec: 2016
+ hash: "f2c4c1f4429cbb6bd10f2318b2cb6904"
+ }
+ Frame {
+ msec: 2032
+ hash: "2c48af64162e7e028cd536dba03eab71"
+ }
+ Frame {
+ msec: 2048
+ hash: "7fe13b8f9253f720b6591b396cfba2d1"
+ }
+ Frame {
+ msec: 2064
+ hash: "559947a03e650575a764801366cc504b"
+ }
+ Frame {
+ msec: 2080
+ hash: "a8d09f6c862fd5ec2dcf34f06d1ef744"
+ }
+ Frame {
+ msec: 2096
+ hash: "e3bb4b62209631ff84134f2243bfdb42"
+ }
+ Frame {
+ msec: 2112
+ hash: "a1956a9d1939bc154ea0c88d596948cc"
+ }
+ Frame {
+ msec: 2128
+ hash: "c98a375727860da1e827d4dd74af8f63"
+ }
+ Frame {
+ msec: 2144
+ hash: "df4edcbb2ef5348341ff55c808609b6c"
+ }
+ Frame {
+ msec: 2160
+ hash: "6287564be85b7cbadc6bb6f0232bc837"
+ }
+ Frame {
+ msec: 2176
+ hash: "9826fdb48f7ea770fa5f198ec49d7cb7"
+ }
+ Frame {
+ msec: 2192
+ hash: "56f82641a5591df9bb929cc0d32eb95d"
+ }
+ Frame {
+ msec: 2208
+ hash: "526c55e555fb2e58796561efa3568c50"
+ }
+ Frame {
+ msec: 2224
+ hash: "6b4b74613421c1841a17c369cb316754"
+ }
+ Frame {
+ msec: 2240
+ hash: "37f785c30947d5eec113dcf6af649abf"
+ }
+ Frame {
+ msec: 2256
+ hash: "5ff2c975dd9e261c764537c836627c4d"
+ }
+ Frame {
+ msec: 2272
+ hash: "efe554981583749c3d09988bce7fed02"
+ }
+ Frame {
+ msec: 2288
+ hash: "0f7204b4afb0ea5d58e49650e8027c0c"
+ }
+ Frame {
+ msec: 2304
+ hash: "817291f91f4b309710ad3aed53a7d47a"
+ }
+ Frame {
+ msec: 2320
+ hash: "c15c9cd03089090cf8a777c1f0d88de7"
+ }
+ Frame {
+ msec: 2336
+ hash: "05f45cb8d0856dcc81091351615e35d6"
+ }
+ Frame {
+ msec: 2352
+ hash: "99785a16fed6d6409b4b47ec55afb56b"
+ }
+ Frame {
+ msec: 2368
+ hash: "39032cb4432ee9536af500673fccf526"
+ }
+ Frame {
+ msec: 2384
+ hash: "9057653e3cd6042831037d3590e7595b"
+ }
+ Frame {
+ msec: 2400
+ hash: "76c772eb2ab8f117c260c9c96bc99e1d"
+ }
+ Frame {
+ msec: 2416
+ hash: "b6474665b8f8bcdd76d1a38efecad889"
+ }
+ Frame {
+ msec: 2432
+ hash: "106c2d2efafad0181e3ded3a6805f2c6"
+ }
+ Frame {
+ msec: 2448
+ hash: "5275fa4ffef6c1909f9d03bb1e7b9cae"
+ }
+ Frame {
+ msec: 2464
+ hash: "0c1043c0087d60000dc7259d4ac03618"
+ }
+ Frame {
+ msec: 2480
+ hash: "645748569b4f5cb9b206b0808bb7d23d"
+ }
+ Frame {
+ msec: 2496
+ hash: "dd95dfa80e1b3ff511e7c75efd0d87ce"
+ }
+ Frame {
+ msec: 2512
+ hash: "86b3dd03b04d7610837cdc67cad07e0a"
+ }
+ Frame {
+ msec: 2528
+ hash: "8264f67ac92e4ebcfe4cc8e954f8c5d2"
+ }
+ Frame {
+ msec: 2544
+ hash: "6bf52377d822b09eb28a1ec36d3a36a9"
+ }
+ Frame {
+ msec: 2560
+ hash: "7ae1d65cdaf7fa71eb4ec318b37bb0aa"
+ }
+ Frame {
+ msec: 2576
+ hash: "860f5ce9844c90cf9e6a6d383ff0972f"
+ }
+ Frame {
+ msec: 2592
+ hash: "5502229c038dfc59d966f69ae6ed8957"
+ }
+ Frame {
+ msec: 2608
+ hash: "21843c027bc1434ae60b3bb0fced2c54"
+ }
+ Frame {
+ msec: 2624
+ hash: "962df45680949c3eb6c968f98cd76b20"
+ }
+ Frame {
+ msec: 2640
+ hash: "f313c26fa76a0edce61244bdf92528e4"
+ }
+ Frame {
+ msec: 2656
+ hash: "b7bbde239e98cbd66b1e51b54b747f51"
+ }
+ Frame {
+ msec: 2672
+ hash: "62340707fbc832fcb805c8f80ab353d1"
+ }
+ Frame {
+ msec: 2688
+ hash: "d008a3f7af1810ff70b68b38a4cd0f0d"
+ }
+ Frame {
+ msec: 2704
+ hash: "e651dd628af24faf34d716beb392b052"
+ }
+ Frame {
+ msec: 2720
+ hash: "a97733963c7a7616b25741545b07ffba"
+ }
+ Frame {
+ msec: 2736
+ hash: "3e017cc1db720cf16521bd17308e4f44"
+ }
+ Frame {
+ msec: 2752
+ hash: "13652ebaa610cca71486517e2eed21a5"
+ }
+ Frame {
+ msec: 2768
+ hash: "09f0f500c6f7d11be39c31f9e589b38a"
+ }
+ Frame {
+ msec: 2784
+ hash: "b87968cbc60ddc6a5f5699e830410eab"
+ }
+ Frame {
+ msec: 2800
+ hash: "50e65b043d1f07a321a08ee4c25204f6"
+ }
+ Frame {
+ msec: 2816
+ hash: "122d1ffa1510468e8c4067e0f511588f"
+ }
+ Frame {
+ msec: 2832
+ hash: "585f6c25caaafb99a22a23d8a998d202"
+ }
+ Frame {
+ msec: 2848
+ hash: "9b245a00ad576666c10f509d8a80a61e"
+ }
+ Frame {
+ msec: 2864
+ hash: "9b245a00ad576666c10f509d8a80a61e"
+ }
+ Frame {
+ msec: 2880
+ hash: "3c5d3d10bacc093afc6a9c0b5aa4cddc"
+ }
+ Frame {
+ msec: 2896
+ image: "follow.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "31926d69c2309fdf13fbd7f0e9868c3d"
+ }
+ Frame {
+ msec: 2928
+ hash: "eb3acacce5dd31b0e94b59b9e546ccae"
+ }
+ Frame {
+ msec: 2944
+ hash: "9a51cff3276d75803a0a6e480f7ecb70"
+ }
+ Frame {
+ msec: 2960
+ hash: "fbbd8b9d519993a699815d935bcd2b9f"
+ }
+ Frame {
+ msec: 2976
+ hash: "0314190c6de73f9f374a4eaed0709645"
+ }
+ Frame {
+ msec: 2992
+ hash: "8ca1a203bdb5446094eb948aeb0a333e"
+ }
+ Frame {
+ msec: 3008
+ hash: "301e1b86ce38e11ad9d0d7aba0909985"
+ }
+ Frame {
+ msec: 3024
+ hash: "922095867d0a91b73ab7a63df2041279"
+ }
+ Frame {
+ msec: 3040
+ hash: "ba8275f3ba4633bf64a1f81f630c90f1"
+ }
+ Frame {
+ msec: 3056
+ hash: "efe39545279a7bd015d2de75d2b9d8b1"
+ }
+ Frame {
+ msec: 3072
+ hash: "78926c3c0c6fcf89b9291f9902710964"
+ }
+ Frame {
+ msec: 3088
+ hash: "ea63dcb7f00d3ddede0d8be59ad9d6bc"
+ }
+ Frame {
+ msec: 3104
+ hash: "286ad493301b713a49e378f123482a53"
+ }
+ Frame {
+ msec: 3120
+ hash: "a4bbbb8bb88188d3e99996502e3eebd1"
+ }
+ Frame {
+ msec: 3136
+ hash: "a6100e79f3dc5af594e86ab6cd8dfb76"
+ }
+ Frame {
+ msec: 3152
+ hash: "d9e3f777dc89bcf1b7f712206db768e2"
+ }
+ Frame {
+ msec: 3168
+ hash: "768045c600c0aa0b1e9e6f012733c600"
+ }
+ Frame {
+ msec: 3184
+ hash: "d8b4caa641ddee786f7898359efe9d07"
+ }
+ Frame {
+ msec: 3200
+ hash: "f7c3b76d5bb7c263ac9447eaad685158"
+ }
+ Frame {
+ msec: 3216
+ hash: "f7f97db815d653ec29fa31b87f72af2a"
+ }
+ Frame {
+ msec: 3232
+ hash: "18524623762487b60943312cd8bd4388"
+ }
+ Frame {
+ msec: 3248
+ hash: "5823dee5dd56e9f7515601f9629ccbae"
+ }
+ Frame {
+ msec: 3264
+ hash: "5823dee5dd56e9f7515601f9629ccbae"
+ }
+ Frame {
+ msec: 3280
+ hash: "5823dee5dd56e9f7515601f9629ccbae"
+ }
+ Frame {
+ msec: 3296
+ hash: "5823dee5dd56e9f7515601f9629ccbae"
+ }
+ Frame {
+ msec: 3312
+ hash: "18524623762487b60943312cd8bd4388"
+ }
+ Frame {
+ msec: 3328
+ hash: "430995770b655054aaeda383df8e27f7"
+ }
+ Frame {
+ msec: 3344
+ hash: "16a3a00f2b89aed676f80d63c4933ec3"
+ }
+ Frame {
+ msec: 3360
+ hash: "6c55aa62079ec546522edbf69c37b270"
+ }
+ Frame {
+ msec: 3376
+ hash: "0d68ca3ccecdd831013950cc7405e46e"
+ }
+ Frame {
+ msec: 3392
+ hash: "9da2511bc8b434218695fa74ed543439"
+ }
+ Frame {
+ msec: 3408
+ hash: "05afdd0b99dab81a500cdc2b2f0786fe"
+ }
+ Frame {
+ msec: 3424
+ hash: "e6f8882d146ae60bcc6ea47ff41a637b"
+ }
+ Frame {
+ msec: 3440
+ hash: "154542ed0e88321294f382501819aefc"
+ }
+ Frame {
+ msec: 3456
+ hash: "8f47b6980c387c5020145bf04645fd2d"
+ }
+ Frame {
+ msec: 3472
+ hash: "b34b055c7602f1f4e1cde875b258120c"
+ }
+ Frame {
+ msec: 3488
+ hash: "5a697f675575f05e297d4877604b9a47"
+ }
+ Frame {
+ msec: 3504
+ hash: "729dff1d1b357d19fc81804ec8940d0e"
+ }
+ Frame {
+ msec: 3520
+ hash: "c6f3fee46baa94a6139d2ee40254b160"
+ }
+ Frame {
+ msec: 3536
+ hash: "af0e700bb8ae34834510830f8b44afdb"
+ }
+ Frame {
+ msec: 3552
+ hash: "9c87bb54c2dfe58c2da9194dae6f7502"
+ }
+ Frame {
+ msec: 3568
+ hash: "2132356a92c75d725f9feafb8201b142"
+ }
+ Frame {
+ msec: 3584
+ hash: "50d855d2595eeae2bfd6aaa8c2fa0454"
+ }
+ Frame {
+ msec: 3600
+ hash: "5fde3c62d6e53a9056e3586f9dcda59e"
+ }
+ Frame {
+ msec: 3616
+ hash: "8f04460254a1e9fb949d5165894cd92a"
+ }
+ Frame {
+ msec: 3632
+ hash: "2b514c5e3b20d30f9c7e71092c69f081"
+ }
+ Frame {
+ msec: 3648
+ hash: "2c1ba6224037790e15f5c0f2864ace4d"
+ }
+ Frame {
+ msec: 3664
+ hash: "0d5b8e7bd5f560888aacaf2b3c6827a8"
+ }
+ Frame {
+ msec: 3680
+ hash: "ae25004530e7df134414018e4a34780e"
+ }
+ Frame {
+ msec: 3696
+ hash: "1a8fd9eaf9a91f1b42924f8986fbed9a"
+ }
+ Frame {
+ msec: 3712
+ hash: "2ea6de2025d40ed5beeff12a5b70ccc9"
+ }
+ Frame {
+ msec: 3728
+ hash: "624e417718d3cac1e4b7e4ce258ce6ea"
+ }
+ Frame {
+ msec: 3744
+ hash: "8b56d29391257c7be8966af6be26ea9f"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 195; y: 95
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3760
+ hash: "5c0d977d8b446d9191bde57335cf1062"
+ }
+ Frame {
+ msec: 3776
+ hash: "100be2b21d069e3a5dbb694a90da4d4f"
+ }
+ Frame {
+ msec: 3792
+ hash: "caab03f6c81080dd8fdbedb4e94ae4a5"
+ }
+ Frame {
+ msec: 3808
+ hash: "3328a4d06f2f80a7e9ccf2ff21522fca"
+ }
+ Frame {
+ msec: 3824
+ hash: "a534e6cc28daf3eff6a9cf8379bd6375"
+ }
+ Frame {
+ msec: 3840
+ hash: "6686f9c1a814c6a6b785b70f94937b68"
+ }
+ Frame {
+ msec: 3856
+ image: "follow.4.png"
+ }
+ Frame {
+ msec: 3872
+ hash: "d3f1c3593375ca5c022a1361a7ec70bd"
+ }
+ Frame {
+ msec: 3888
+ hash: "67843e6192e2ecaa3820c37dc2f93106"
+ }
+ Frame {
+ msec: 3904
+ hash: "19a022f678e5b8f4ebdff936162323dc"
+ }
+ Frame {
+ msec: 3920
+ hash: "34e55ae70c9e156db339ae15642359c3"
+ }
+ Frame {
+ msec: 3936
+ hash: "3784778c817f9d9bb73d990cfe12685a"
+ }
+ Frame {
+ msec: 3952
+ hash: "0403fdf79e3ba339c7e3786db0c9c0f0"
+ }
+ Frame {
+ msec: 3968
+ hash: "93e4a0d5645d1cfc916f1e8422655555"
+ }
+ Frame {
+ msec: 3984
+ hash: "29080bfabb87160b7c51385fb36b474b"
+ }
+ Frame {
+ msec: 4000
+ hash: "9da2d83edc9d35f00fb8a159e79de4d9"
+ }
+ Frame {
+ msec: 4016
+ hash: "5505a42d4788f00cfc7499fbfda851ce"
+ }
+ Frame {
+ msec: 4032
+ hash: "bdd3040ab16fa9ffdd2fbc66b06699f8"
+ }
+ Frame {
+ msec: 4048
+ hash: "2a347e30a20c693a9440caa60ade0a0f"
+ }
+ Frame {
+ msec: 4064
+ hash: "0307f1857c091a639d47f112ce1a2f5a"
+ }
+ Frame {
+ msec: 4080
+ hash: "778d18e539bbd562ebe39283a6315df1"
+ }
+ Frame {
+ msec: 4096
+ hash: "0369cf6c3d1f5db2e92ee1f7c5d3b8ed"
+ }
+ Frame {
+ msec: 4112
+ hash: "9f7413587ab50f1abf776bf180ec2d6f"
+ }
+ Frame {
+ msec: 4128
+ hash: "7d04a27236485808e571e8a39f23ea17"
+ }
+ Frame {
+ msec: 4144
+ hash: "a1dff63b723473d5a4c9c59975a2fb81"
+ }
+ Frame {
+ msec: 4160
+ hash: "9795ea70a3b9d3b7805221a58c19e5da"
+ }
+ Frame {
+ msec: 4176
+ hash: "f1392c489e21107136eb8e0d1e8b427e"
+ }
+ Frame {
+ msec: 4192
+ hash: "95c225ef07171a96335e99078195b06a"
+ }
+ Frame {
+ msec: 4208
+ hash: "d46ef3e7f9cec06e8c18afc0d07be4f3"
+ }
+ Frame {
+ msec: 4224
+ hash: "b017f5b51d423bb0fca0d6df3aaded8b"
+ }
+ Frame {
+ msec: 4240
+ hash: "60584d085b0cd6fbc436773be678597e"
+ }
+ Frame {
+ msec: 4256
+ hash: "117951465dfd5c386826b295560d2dec"
+ }
+ Frame {
+ msec: 4272
+ hash: "1b70137da5f4e024593999e93121fe8b"
+ }
+ Frame {
+ msec: 4288
+ hash: "bd50dffd41941fef127f39b55c4748e0"
+ }
+ Frame {
+ msec: 4304
+ hash: "8eec34d8e1d2e22d11b85a671cd4d3aa"
+ }
+ Frame {
+ msec: 4320
+ hash: "9e3c97cfad5002ef5f3fcc365aeb7bd0"
+ }
+ Frame {
+ msec: 4336
+ hash: "28e1cf1ee033915ea2ee39c9ab00a73d"
+ }
+ Frame {
+ msec: 4352
+ hash: "99101a156a553f441f00221f6facbf1f"
+ }
+ Frame {
+ msec: 4368
+ hash: "419023e5d59d16c26b35bee7d3cea559"
+ }
+ Frame {
+ msec: 4384
+ hash: "485d23519293975b04031fe4baa5c276"
+ }
+ Frame {
+ msec: 4400
+ hash: "c8bc60735e0ede26dbaf228294853f9a"
+ }
+ Frame {
+ msec: 4416
+ hash: "ada3680b807d59843e3adf6640704066"
+ }
+ Frame {
+ msec: 4432
+ hash: "3e28f3adf9241512cd0d6918d81ffffb"
+ }
+ Frame {
+ msec: 4448
+ hash: "8f339acc33cbc89ae1c62391ce021bb3"
+ }
+ Frame {
+ msec: 4464
+ hash: "d303960c0853a90557d64a04b8283c94"
+ }
+ Frame {
+ msec: 4480
+ hash: "f907dbdacf2cfa9fdf8f9c8dead5b4c4"
+ }
+ Frame {
+ msec: 4496
+ hash: "30c6e6f283f4a3f538cdda9c2e92de8c"
+ }
+ Frame {
+ msec: 4512
+ hash: "04d2ac55774b43107a43a7d33764199b"
+ }
+ Frame {
+ msec: 4528
+ hash: "cddf3e111cbc59e721725daa1d8a0c31"
+ }
+ Frame {
+ msec: 4544
+ hash: "15b1b63cd1695207ebf9f04387be0739"
+ }
+ Frame {
+ msec: 4560
+ hash: "690769b9bbe86a3c5b1fbdee39615fbd"
+ }
+ Frame {
+ msec: 4576
+ hash: "2bd640d8ddbf878d808f22656fef1ed9"
+ }
+ Frame {
+ msec: 4592
+ hash: "a654f1e4519bf883d554276ebbe96323"
+ }
+ Frame {
+ msec: 4608
+ hash: "68f0313cfc3f51a0bb9b47c5407c19b6"
+ }
+ Frame {
+ msec: 4624
+ hash: "77f29806b084de4cabf7ab9bf1a93d5e"
+ }
+ Frame {
+ msec: 4640
+ hash: "f9991189e3282d107b98fb0ae5f5ef00"
+ }
+ Frame {
+ msec: 4656
+ hash: "0cd1f2f6e347d48feea1b26a4968dec7"
+ }
+ Frame {
+ msec: 4672
+ hash: "e75a6f6a088e2289042572a161ffb0e9"
+ }
+ Frame {
+ msec: 4688
+ hash: "5a541081444c0a71128223a4c4c3144c"
+ }
+ Frame {
+ msec: 4704
+ hash: "6813d442cc610f346a5441ed0cd723e5"
+ }
+ Frame {
+ msec: 4720
+ hash: "24ec539bc57899819915f833f26deacd"
+ }
+ Frame {
+ msec: 4736
+ hash: "3a7ed1b4b533b817674aa141c420cd61"
+ }
+ Frame {
+ msec: 4752
+ hash: "d0a643fae97bb152e97ca60e96299003"
+ }
+ Frame {
+ msec: 4768
+ hash: "c84093931520f4661eff6645091a294b"
+ }
+ Frame {
+ msec: 4784
+ hash: "81e7ceaece82505a4a16ead195a66162"
+ }
+ Frame {
+ msec: 4800
+ hash: "315764d20b647f6ab1ba30239a69bf72"
+ }
+ Frame {
+ msec: 4816
+ image: "follow.5.png"
+ }
+ Frame {
+ msec: 4832
+ hash: "d1824ced8af34ad9edb36a58ae9aa7f5"
+ }
+ Frame {
+ msec: 4848
+ hash: "167b9a49fbb94908e09e7e9c9147cd8b"
+ }
+ Frame {
+ msec: 4864
+ hash: "442d5f0906840de526d59a80ada322c0"
+ }
+ Frame {
+ msec: 4880
+ hash: "78206c4d4d23c7c1ba888b9062b09432"
+ }
+ Frame {
+ msec: 4896
+ hash: "e898202cfebbff1952efc6e01254d855"
+ }
+ Frame {
+ msec: 4912
+ hash: "ab31dc7bbad2b0552359866bb8d92f0c"
+ }
+ Frame {
+ msec: 4928
+ hash: "f093304e88964376baf9721d53d4fb49"
+ }
+ Frame {
+ msec: 4944
+ hash: "3ef76f3e1c44d13c3a469bd192ff7b5d"
+ }
+ Frame {
+ msec: 4960
+ hash: "5d3b6d0d91f8cc5b89e39407bc3b5a15"
+ }
+ Frame {
+ msec: 4976
+ hash: "3c73573f12f49b34e1d990a55ad913fa"
+ }
+ Frame {
+ msec: 4992
+ hash: "d1bac071b01a1c6fddab90cdc435fad4"
+ }
+ Frame {
+ msec: 5008
+ hash: "36a219aadec910f1dbef616c641e1d2b"
+ }
+ Frame {
+ msec: 5024
+ hash: "5871fc67d361cc988551592ee21dfb23"
+ }
+ Frame {
+ msec: 5040
+ hash: "6e65ee6c814b9a9da205c36925e663bf"
+ }
+ Frame {
+ msec: 5056
+ hash: "290b20fa8e91d34000d7c2d81745f6d2"
+ }
+ Frame {
+ msec: 5072
+ hash: "19e7405a9083a8143f7bb040f8837b29"
+ }
+ Frame {
+ msec: 5088
+ hash: "c0a0fa2b4c1ceb6c70594994a1ac8713"
+ }
+ Frame {
+ msec: 5104
+ hash: "c236224c16743fb606deb78bcb8afc8d"
+ }
+ Frame {
+ msec: 5120
+ hash: "7d44db15eb300b4338ffc26e9bcfce20"
+ }
+ Frame {
+ msec: 5136
+ hash: "067a79148a194c45c6f32d85316a1e11"
+ }
+ Frame {
+ msec: 5152
+ hash: "9075c379044476994a87f0fdcce8e332"
+ }
+ Frame {
+ msec: 5168
+ hash: "b2316988fbd51096a4f512e71fe7d0a2"
+ }
+ Frame {
+ msec: 5184
+ hash: "280f70877d93af5f84e178aad6a102d8"
+ }
+ Frame {
+ msec: 5200
+ hash: "3eef4ae7e43a8cf1cd9dd562237296f8"
+ }
+ Frame {
+ msec: 5216
+ hash: "e3184f77ce3a47ca4dca6386f42d7fec"
+ }
+ Frame {
+ msec: 5232
+ hash: "a2a5df66fe4808ea8d466cac84ba910c"
+ }
+ Frame {
+ msec: 5248
+ hash: "9f8a0e54788112d6c30482e840504f35"
+ }
+ Frame {
+ msec: 5264
+ hash: "ae69cf84798844f9f360c86790feaecd"
+ }
+ Frame {
+ msec: 5280
+ hash: "0244526572acb6266db5b7eb9d29c6fc"
+ }
+ Frame {
+ msec: 5296
+ hash: "8fb53d60b95ddb5aef27442934ea9983"
+ }
+ Frame {
+ msec: 5312
+ hash: "930fcfde491b4f5681e3861764003895"
+ }
+ Frame {
+ msec: 5328
+ hash: "bcdcd0a637112d113ebe11dc18823237"
+ }
+ Frame {
+ msec: 5344
+ hash: "65a564d5a5afbc14c0cdad4d52753507"
+ }
+ Frame {
+ msec: 5360
+ hash: "0c5056d438d2d54938f31ef5f996673a"
+ }
+ Frame {
+ msec: 5376
+ hash: "11c157ad2236fc390ffbdf339366cbc1"
+ }
+ Frame {
+ msec: 5392
+ hash: "6cb341b1f281a97a35c2e41bfd4c4d9d"
+ }
+ Frame {
+ msec: 5408
+ hash: "553a945f7f19f70ddae4ebe88e52a79b"
+ }
+ Frame {
+ msec: 5424
+ hash: "d10b42b4095a2474e66a5a322f72e936"
+ }
+ Frame {
+ msec: 5440
+ hash: "0f943d61e8072d70eddee8aa1ba0de5a"
+ }
+ Frame {
+ msec: 5456
+ hash: "3df18e237b666e78d57857739b759e6d"
+ }
+ Frame {
+ msec: 5472
+ hash: "1ddc0bfdb2ca7b6dee63f1024e62f26e"
+ }
+ Frame {
+ msec: 5488
+ hash: "aaa397714528f41238059e3a88833abc"
+ }
+ Frame {
+ msec: 5504
+ hash: "c94bd69f925c782656afc5f9618180a6"
+ }
+ Frame {
+ msec: 5520
+ hash: "824ff8c0e1ab43e3c0eaa79b7cc19b9c"
+ }
+ Frame {
+ msec: 5536
+ hash: "6c440a0b2293811335bdbf2c4f25f47d"
+ }
+ Frame {
+ msec: 5552
+ hash: "bfc7936cdf833d5b720ec9baca740112"
+ }
+ Frame {
+ msec: 5568
+ hash: "375fa305dbae2872dc9b20e59381cc0c"
+ }
+ Frame {
+ msec: 5584
+ hash: "fffd6173aa49e74164dc17a238bcd830"
+ }
+ Frame {
+ msec: 5600
+ hash: "44d9007e00fab161fd393b653255d7f4"
+ }
+ Frame {
+ msec: 5616
+ hash: "f669ee25c58b4fa20a01705d334f0065"
+ }
+ Frame {
+ msec: 5632
+ hash: "2dbb7d57711b67d5d9e1b81f70e22d34"
+ }
+ Frame {
+ msec: 5648
+ hash: "19351b91448265cb95c1670ee283c611"
+ }
+ Frame {
+ msec: 5664
+ hash: "19351b91448265cb95c1670ee283c611"
+ }
+ Frame {
+ msec: 5680
+ hash: "3a24b99d048348a21f4e4bd69393de89"
+ }
+ Frame {
+ msec: 5696
+ hash: "35a6fe955a52950bbfa954a453e4008e"
+ }
+ Frame {
+ msec: 5712
+ hash: "896f4ec28c976237b34fb2725a44460e"
+ }
+ Frame {
+ msec: 5728
+ hash: "ed3008ea950ec84c57518e573ea36d15"
+ }
+ Frame {
+ msec: 5744
+ hash: "3447c7be992759f772c1db2033eead99"
+ }
+ Frame {
+ msec: 5760
+ hash: "b7133225daa03563d3f5b1dac5f56a23"
+ }
+ Frame {
+ msec: 5776
+ image: "follow.6.png"
+ }
+ Frame {
+ msec: 5792
+ hash: "adc55f2fcf312a90b025a75fa80aa079"
+ }
+ Frame {
+ msec: 5808
+ hash: "3ac85cad400d2b8e4f33798f4f6b7b42"
+ }
+ Frame {
+ msec: 5824
+ hash: "1c115efd84ccbe489d24c3c521c4a61c"
+ }
+ Frame {
+ msec: 5840
+ hash: "39518f1bbc0c4aba6ff517bc3dc7c279"
+ }
+ Frame {
+ msec: 5856
+ hash: "7bd28d32996f4de61c415d3217da16d0"
+ }
+ Frame {
+ msec: 5872
+ hash: "f5d06e25d775bf8db07e95625a712733"
+ }
+ Frame {
+ msec: 5888
+ hash: "4820ea6ea3be88af2f86111c547a19d7"
+ }
+ Frame {
+ msec: 5904
+ hash: "fa6e681c368118b7f135a47ae8fc12ff"
+ }
+ Frame {
+ msec: 5920
+ hash: "f6b30e618aeeb837d2b3eca270b0a060"
+ }
+ Frame {
+ msec: 5936
+ hash: "ac8504bde8d3063a8bf02b9d4b69d755"
+ }
+ Frame {
+ msec: 5952
+ hash: "9670537bb77caa8e23fda7bbfa96ca60"
+ }
+ Frame {
+ msec: 5968
+ hash: "8cd292865ce5c1d240e9ddc93881a0ed"
+ }
+ Frame {
+ msec: 5984
+ hash: "de112013e526203d151c46e6cfba9f92"
+ }
+ Frame {
+ msec: 6000
+ hash: "cd61066e697de8c055aaa168791c2d8c"
+ }
+ Frame {
+ msec: 6016
+ hash: "cd61066e697de8c055aaa168791c2d8c"
+ }
+ Frame {
+ msec: 6032
+ hash: "e68b27ff14aac03c827fd43ac488d23e"
+ }
+ Frame {
+ msec: 6048
+ hash: "e68b27ff14aac03c827fd43ac488d23e"
+ }
+ Frame {
+ msec: 6064
+ hash: "1f61d857a8c26587fbda5895c603441a"
+ }
+ Frame {
+ msec: 6080
+ hash: "1e0dffdd02e05ade1ae444427d4aa345"
+ }
+ Frame {
+ msec: 6096
+ hash: "9a416ee7a1de9ac45ab2d609233c9520"
+ }
+ Frame {
+ msec: 6112
+ hash: "dfa35bf1cd908011c3214a506bcbdcb8"
+ }
+ Frame {
+ msec: 6128
+ hash: "bd502dc72dce4af3036f7af9ed7cf9e9"
+ }
+ Frame {
+ msec: 6144
+ hash: "8cd5edce652013a2ed4bf95693259538"
+ }
+ Frame {
+ msec: 6160
+ hash: "a38ed1532a40210ad7da4c0d4d1a7195"
+ }
+ Frame {
+ msec: 6176
+ hash: "8ac8a8df937da526bbffb9a3590d89ac"
+ }
+ Frame {
+ msec: 6192
+ hash: "07527cb9a4494e11f4c9f99eb72598b9"
+ }
+ Frame {
+ msec: 6208
+ hash: "655b0327ef0f8711810714ba50f2f8cc"
+ }
+ Frame {
+ msec: 6224
+ hash: "4c1ce8b4eb16c69614e2560c04ad48cf"
+ }
+ Frame {
+ msec: 6240
+ hash: "7a382ae4e6a48826eaa2c83ee7a73fb2"
+ }
+ Frame {
+ msec: 6256
+ hash: "5acd5f250c5b32d9006ed68dfecbfa1c"
+ }
+ Frame {
+ msec: 6272
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6288
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6304
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6320
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6336
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6352
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6368
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Frame {
+ msec: 6384
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6400
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6416
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6432
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6448
+ hash: "877aca1c64e588845329ca8a38222604"
+ }
+ Frame {
+ msec: 6464
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6480
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6496
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6512
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6528
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6544
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6560
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6576
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6592
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6608
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6624
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6640
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6656
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6672
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6688
+ hash: "b0f28e923f93dcdcea8460ca9d8cd674"
+ }
+ Frame {
+ msec: 6704
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6720
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6736
+ image: "follow.7.png"
+ }
+ Frame {
+ msec: 6752
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6768
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6784
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6800
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6816
+ hash: "228920e994ebf71d542c71ce8263614e"
+ }
+ Frame {
+ msec: 6832
+ hash: "07e5f1277558bfe7638b00cf9d967baf"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 6848
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6864
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6880
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6896
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6912
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+ Frame {
+ msec: 6928
+ hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/follow.qml
index 0097449cab..0097449cab 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/follow.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/follow.qml
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.0.png
deleted file mode 100644
index baf1d45a21..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.1.png
deleted file mode 100644
index 932f63f4d7..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.2.png
deleted file mode 100644
index a5cb437fad..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.3.png
deleted file mode 100644
index 62e895c730..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.qml
deleted file mode 100644
index 5da471e04c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/clock.qml
+++ /dev/null
@@ -1,1135 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "d17c9cd015b065adf7e36ad0d4f6c00c"
- }
- Frame {
- msec: 32
- hash: "e759f652c69a06d01837302cc0369a58"
- }
- Frame {
- msec: 48
- hash: "392855ef490903121fb894858961dfb0"
- }
- Frame {
- msec: 64
- hash: "5ba4248f606a3a35d840cb98eff30b46"
- }
- Frame {
- msec: 80
- hash: "3b97e1ab4054c20d19c1d05f795b71de"
- }
- Frame {
- msec: 96
- hash: "81904d248125cf35249f79da7e94d8d7"
- }
- Frame {
- msec: 112
- hash: "474179152aad4b64904c8b7c63581a89"
- }
- Frame {
- msec: 128
- hash: "583a7906d1dc41d8ce8d0c8f28c9b8c5"
- }
- Frame {
- msec: 144
- hash: "341437083f858e2dca36a8bb39559a1e"
- }
- Frame {
- msec: 160
- hash: "ed75a933c176ed6ac3fa5b2986cbfade"
- }
- Frame {
- msec: 176
- hash: "5494c10d3984a9be607b8b5ee659ebfc"
- }
- Frame {
- msec: 192
- hash: "7af8dfca43036ee69012cbb100d110ad"
- }
- Frame {
- msec: 208
- hash: "356b8185889e560b5a1a2d6436dac834"
- }
- Frame {
- msec: 224
- hash: "f601a66de5dc1a388e515ba4ff14be6e"
- }
- Frame {
- msec: 240
- hash: "4cfb9f3a72070533288b2e50820cbbbd"
- }
- Frame {
- msec: 256
- hash: "ddcb670af0806dadf5897bcd3fd65cd7"
- }
- Frame {
- msec: 272
- hash: "3fedf4aa340d7632359273b1eb71c5a3"
- }
- Frame {
- msec: 288
- hash: "3dab7e1eaccb68b14e30741775db6ff7"
- }
- Frame {
- msec: 304
- hash: "015ab6c080c2ffab8ac763681bf3f95c"
- }
- Frame {
- msec: 320
- hash: "74f438510f0d8f64120cc45bca7f4f5d"
- }
- Frame {
- msec: 336
- hash: "e57666fb224cdbf869e5be4ef3391be9"
- }
- Frame {
- msec: 352
- hash: "ff8b3dddd4d10b111b38801470fcbfd0"
- }
- Frame {
- msec: 368
- hash: "e547ee9f1e509d5db980cb91fce5f6ee"
- }
- Frame {
- msec: 384
- hash: "aaa9fb71bd47ad3a1c753d7ac918e399"
- }
- Frame {
- msec: 400
- hash: "54a335aac86669138730c0735ea99c8b"
- }
- Frame {
- msec: 416
- hash: "ff8f30aaa7afd8abfdd147b830e9d6c4"
- }
- Frame {
- msec: 432
- hash: "07f8fca270953cf815cb0e77534da824"
- }
- Frame {
- msec: 448
- hash: "30799c12182b2c3eb2f28b05d81ed6fc"
- }
- Frame {
- msec: 464
- hash: "6244e3b740218aec56c81c92dc57abcb"
- }
- Frame {
- msec: 480
- hash: "cb10a34e3d234043704e633b49184607"
- }
- Frame {
- msec: 496
- hash: "66de73779b5f86a6a1692eb74be24201"
- }
- Frame {
- msec: 512
- hash: "4c4c0b5e75f0f587ace8002720d78309"
- }
- Frame {
- msec: 528
- hash: "88c774ec272c72457b35b60306c2bc21"
- }
- Frame {
- msec: 544
- hash: "28ce64adc1d35d6bc34174765beda553"
- }
- Frame {
- msec: 560
- hash: "37238c3d6dc0c34bf4e00ba2a82ce3aa"
- }
- Frame {
- msec: 576
- hash: "d14dd306fec80f1a1ff9a85aa51b9a57"
- }
- Frame {
- msec: 592
- hash: "bfa2ec6fa546c75ee85e2ebeb3af8e3c"
- }
- Frame {
- msec: 608
- hash: "d1ec3faab47065f34e9397fd73f9edce"
- }
- Frame {
- msec: 624
- hash: "0b59b5dba365fff38872b520afc84edb"
- }
- Frame {
- msec: 640
- hash: "3c4ae01b5e878b85a2eea403f3ad478a"
- }
- Frame {
- msec: 656
- hash: "329111f7079230e8b3cfda1217e8fcdf"
- }
- Frame {
- msec: 672
- hash: "97761329ac9ba03ec41e3d5b35f245df"
- }
- Frame {
- msec: 688
- hash: "9d26e3a3357530e903ee89f7bf439357"
- }
- Frame {
- msec: 704
- hash: "1cf4c130ea3565547ff74280211f10c9"
- }
- Frame {
- msec: 720
- hash: "d60284711cb557b1dab4d27072c95597"
- }
- Frame {
- msec: 736
- hash: "98195e02405ee26c0a6a3177cebe9eaa"
- }
- Frame {
- msec: 752
- hash: "f0a776c39363e340ebfb7736f368f609"
- }
- Frame {
- msec: 768
- hash: "5a146b4b76f93e3064d5dfa13107b1c3"
- }
- Frame {
- msec: 784
- hash: "7f7fef3a7ff2047f598bfca0fc7d5935"
- }
- Frame {
- msec: 800
- hash: "85a2fd48605f8a77764bf96542db14c3"
- }
- Frame {
- msec: 816
- hash: "89bdc99d16e6605e2106dfa5f53d7c8e"
- }
- Frame {
- msec: 832
- hash: "d03754d56d85508b7c77959d1ab7b34a"
- }
- Frame {
- msec: 848
- hash: "8d330472a376b47d65cec0b8e3df25cb"
- }
- Frame {
- msec: 864
- hash: "401adaeecfd2c0a5598194e9ead4dd5d"
- }
- Frame {
- msec: 880
- hash: "5c600e940e0a01fec15505fba595df3d"
- }
- Frame {
- msec: 896
- hash: "b7940b041fbd3df5e6969130bf97da10"
- }
- Frame {
- msec: 912
- hash: "62314bb115c307eeff4c4c7c91ee74a2"
- }
- Frame {
- msec: 928
- hash: "54745a8a7ed96a4d5e2d4ec2de605882"
- }
- Frame {
- msec: 944
- hash: "a4145b63f59d060ac0e0dc32dd22c815"
- }
- Frame {
- msec: 960
- image: "clock.0.png"
- }
- Frame {
- msec: 976
- hash: "c420b1298329c7eb0d3ec6a90a7eb802"
- }
- Frame {
- msec: 992
- hash: "e63a5384cde6287c3cd8bdb823f35dca"
- }
- Frame {
- msec: 1008
- hash: "af708b5e4a2a706385afd43896eeff16"
- }
- Frame {
- msec: 1024
- hash: "32011e16d4b1c14619820ade020f6416"
- }
- Frame {
- msec: 1040
- hash: "fbf9f8f075b15922f7306e469075d3cf"
- }
- Frame {
- msec: 1056
- hash: "bf0fab116eae6e7fb5b3209220a3a52a"
- }
- Frame {
- msec: 1072
- hash: "7a21aee4bcb99feb12a2a2c6bb3fd893"
- }
- Frame {
- msec: 1088
- hash: "d721462af9c94e13f12374b2590dad1e"
- }
- Frame {
- msec: 1104
- hash: "70385b585c2cbf1b2d64f1b9ebb5fb56"
- }
- Frame {
- msec: 1120
- hash: "fc7adc3dd2f42bfe6cd74c2ee1ea9aa8"
- }
- Frame {
- msec: 1136
- hash: "232884da74c9843d1349e82a7300cc19"
- }
- Frame {
- msec: 1152
- hash: "c6790d9c8cbea7bf97cbedf443da330c"
- }
- Frame {
- msec: 1168
- hash: "1847875f98555ef46a103c107bd5bc37"
- }
- Frame {
- msec: 1184
- hash: "d7b35992b44a0220bd83a00b7f75dcdd"
- }
- Frame {
- msec: 1200
- hash: "fc9e1db602c34863088d82ed8f601364"
- }
- Frame {
- msec: 1216
- hash: "404e2d071f8a6409ba6c6bfd8450693c"
- }
- Frame {
- msec: 1232
- hash: "dc2b6be9bc4c32460797e94ec617406c"
- }
- Frame {
- msec: 1248
- hash: "5077b6afd808f7a2c319e66f0aef3002"
- }
- Frame {
- msec: 1264
- hash: "07f07a04ec7c864196faeb44eff65b4c"
- }
- Frame {
- msec: 1280
- hash: "5d9089a68ef0b8b78b68c33d3082b597"
- }
- Frame {
- msec: 1296
- hash: "d955c9f66eaf123351a19947240e8847"
- }
- Frame {
- msec: 1312
- hash: "f1821cbcb3883a041f22a114f7158532"
- }
- Frame {
- msec: 1328
- hash: "77f17db09c5a7125c42359c304f274de"
- }
- Frame {
- msec: 1344
- hash: "bc38a4c859f596f6cf3c399d3a04b1cd"
- }
- Frame {
- msec: 1360
- hash: "982c43a4a1c9fae8bf3980b5885cee2f"
- }
- Frame {
- msec: 1376
- hash: "c15bb9b7dd77d505ee9918eb36b75c31"
- }
- Frame {
- msec: 1392
- hash: "bda534fd941a6f8289bfbec9b8dde717"
- }
- Frame {
- msec: 1408
- hash: "7ad5c54b481525ace42ae8926a5c0556"
- }
- Frame {
- msec: 1424
- hash: "2399778158f63481eb8514245277b917"
- }
- Frame {
- msec: 1440
- hash: "6c200d090b34a0152c7eb233c97c3886"
- }
- Frame {
- msec: 1456
- hash: "7ba4500e81df31e3e2c5d165bacf771a"
- }
- Frame {
- msec: 1472
- hash: "c7e13f3d9bdfe35eb905c1d4ed6b73ac"
- }
- Frame {
- msec: 1488
- hash: "808b72766f5dce71fc983ffa01945665"
- }
- Frame {
- msec: 1504
- hash: "899ac513755476db1e1304317524a755"
- }
- Frame {
- msec: 1520
- hash: "27190dce033171966981672e52f07107"
- }
- Frame {
- msec: 1536
- hash: "5d9ef583b6b3cb5257cb044cf376eff2"
- }
- Frame {
- msec: 1552
- hash: "77b648fe26a942b246eec0fa018ad86f"
- }
- Frame {
- msec: 1568
- hash: "744a61493816338113ba4ba7c05f76de"
- }
- Frame {
- msec: 1584
- hash: "2eb0da64d5937c1a38754fd55ca684d0"
- }
- Frame {
- msec: 1600
- hash: "6f799c2c0c0e1ed419af03f8bbb9fae1"
- }
- Frame {
- msec: 1616
- hash: "5b84344f31d5e4d15be6b53ad3bf9c84"
- }
- Frame {
- msec: 1632
- hash: "997b5967e3e3a35d02f10e1eae417dbf"
- }
- Frame {
- msec: 1648
- hash: "c522369c836e8d08c56e2e332dd005ac"
- }
- Frame {
- msec: 1664
- hash: "22f4072da05d261cfcca232ea54d2cb4"
- }
- Frame {
- msec: 1680
- hash: "7081a90c33785306800b7a57a4a9a75c"
- }
- Frame {
- msec: 1696
- hash: "32a8bea14c92ce61ede89182765f0759"
- }
- Frame {
- msec: 1712
- hash: "4bafe476d5301974c616311073763ab4"
- }
- Frame {
- msec: 1728
- hash: "291188ca795d455ae293437c2fb2303d"
- }
- Frame {
- msec: 1744
- hash: "99d2658f863c82dd71fde0f0b93b4d62"
- }
- Frame {
- msec: 1760
- hash: "8a7183e11fde2846d5435847ad9add45"
- }
- Frame {
- msec: 1776
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1792
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1808
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1824
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1840
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1856
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1872
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1888
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1904
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1920
- image: "clock.1.png"
- }
- Frame {
- msec: 1936
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1952
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1968
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 1984
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 2000
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 2016
- hash: "34b6180b74f0653ce1f18c22022d333f"
- }
- Frame {
- msec: 2032
- hash: "150f511972394d8485979a6d9badcee5"
- }
- Frame {
- msec: 2048
- hash: "50b420f72479ec613fd443b5faa3cb94"
- }
- Frame {
- msec: 2064
- hash: "a51cbeea7ad5407b2784a3a3c8ca1ecf"
- }
- Frame {
- msec: 2080
- hash: "0f658f4c91f890cd252d0f9d9bbe064d"
- }
- Frame {
- msec: 2096
- hash: "c814c99815a91547eff01dc899c275f2"
- }
- Frame {
- msec: 2112
- hash: "f9dac59029008e52efe4225cf919f013"
- }
- Frame {
- msec: 2128
- hash: "b87bdcf09b425f2b2d6aed65f96ae8a3"
- }
- Frame {
- msec: 2144
- hash: "f353bf64e664166a542aa027dc625529"
- }
- Frame {
- msec: 2160
- hash: "12492b26c2f1c018e034c0fa936fa7b5"
- }
- Frame {
- msec: 2176
- hash: "33f04d25bced580f15590f12ddafef62"
- }
- Frame {
- msec: 2192
- hash: "cdd8ee656e4fec3ac6e72b6f7626de3b"
- }
- Frame {
- msec: 2208
- hash: "22a94ea46fb9ee78830eab79e4adc5c5"
- }
- Frame {
- msec: 2224
- hash: "64a10c9d4738c004c7f08f95b48a7a4d"
- }
- Frame {
- msec: 2240
- hash: "ff3300fb49a735e0a958362aead1905f"
- }
- Frame {
- msec: 2256
- hash: "8289dfdad12a8c13513175e5aad6a2d9"
- }
- Frame {
- msec: 2272
- hash: "49e5cbb94f7d8bc853ca3c9366d737c9"
- }
- Frame {
- msec: 2288
- hash: "76d2d8df4ad0359bb8ae102b225b3a68"
- }
- Frame {
- msec: 2304
- hash: "98d925b3306aa7dd1b1fb9e066cd8a02"
- }
- Frame {
- msec: 2320
- hash: "3911b53eb0346af1773ad991232e61ee"
- }
- Frame {
- msec: 2336
- hash: "8991c10234f9f286ebab39d72729525d"
- }
- Frame {
- msec: 2352
- hash: "ca2c8c6f23b30957a5cc20d9750a3ffe"
- }
- Frame {
- msec: 2368
- hash: "80abe9b146b31dbedf1fe2357d922dda"
- }
- Frame {
- msec: 2384
- hash: "0e34091d6bceab00bdabcec78e99e265"
- }
- Frame {
- msec: 2400
- hash: "ba04053c25e53b3dc790feac9a33e221"
- }
- Frame {
- msec: 2416
- hash: "cb6f7f2cce4f68ef1d35f765e00bbf7b"
- }
- Frame {
- msec: 2432
- hash: "1e63fb94f5fbf3b600ec9298cbb97c8a"
- }
- Frame {
- msec: 2448
- hash: "8991c10234f9f286ebab39d72729525d"
- }
- Frame {
- msec: 2464
- hash: "00531d4a5fe98bbb487ad835414e7d07"
- }
- Frame {
- msec: 2480
- hash: "7af9f861cb57c937c87b24eee9fbb558"
- }
- Frame {
- msec: 2496
- hash: "7ecd1a4a75753e70ad5937e5bc897e03"
- }
- Frame {
- msec: 2512
- hash: "557766fe964033f6a488574af7306cac"
- }
- Frame {
- msec: 2528
- hash: "bd0f7164dd0a84ce1a1b2a6acbc2157b"
- }
- Frame {
- msec: 2544
- hash: "d24ef664cf13519b99d6193bf98fcfd1"
- }
- Frame {
- msec: 2560
- hash: "6c3626248bbb41cab85ec2a908b7874b"
- }
- Frame {
- msec: 2576
- hash: "0f9bea8d474690164a09dfd3b13ff80b"
- }
- Frame {
- msec: 2592
- hash: "e5197674c91de893a970614e650547e5"
- }
- Frame {
- msec: 2608
- hash: "ce6861e9a7e75b809df026f078c8516b"
- }
- Frame {
- msec: 2624
- hash: "eb0539e30fd53fb905d7b28ff0bc6cfd"
- }
- Frame {
- msec: 2640
- hash: "45f70dda0d647119175457fb4d451e85"
- }
- Frame {
- msec: 2656
- hash: "ca6b75fa4ee612bf6bb1776ef4115b16"
- }
- Frame {
- msec: 2672
- hash: "c7d6bd687be6d5476300539411b97fc5"
- }
- Frame {
- msec: 2688
- hash: "27da9137b936d813d3c79a873053ed38"
- }
- Frame {
- msec: 2704
- hash: "4389a5758bf9df9553300c074aa7bb36"
- }
- Frame {
- msec: 2720
- hash: "30476b70a29716b359a046f99b6387e5"
- }
- Frame {
- msec: 2736
- hash: "b91c6f1e57d718e95ab05d1f386aedb9"
- }
- Frame {
- msec: 2752
- hash: "578b022173dcac39d227ffeb043e53d0"
- }
- Frame {
- msec: 2768
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2784
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2800
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2816
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2832
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2848
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2864
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2880
- image: "clock.2.png"
- }
- Frame {
- msec: 2896
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2912
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2928
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2944
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2960
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2976
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 2992
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 3008
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 3024
- hash: "fe8ffe202a5f58b184a65d0ebc9c5f32"
- }
- Frame {
- msec: 3040
- hash: "294d542f880356b4cbb171170c28dcd7"
- }
- Frame {
- msec: 3056
- hash: "946b5937974e28ffd996ce132c8fad15"
- }
- Frame {
- msec: 3072
- hash: "bb61994ff1dc36d3933084b874073832"
- }
- Frame {
- msec: 3088
- hash: "ec337c7ae77deeb41f38adb1851720e5"
- }
- Frame {
- msec: 3104
- hash: "7691c6c048b78e1551b46a37b6e95b16"
- }
- Frame {
- msec: 3120
- hash: "b3116620d319ae4b681f4ca76c068b32"
- }
- Frame {
- msec: 3136
- hash: "ed5a27e5be3dbde3867715f877da41db"
- }
- Frame {
- msec: 3152
- hash: "8dcc220cc652f57aa8ac33364edc96a3"
- }
- Frame {
- msec: 3168
- hash: "a7832d86283e27ee1523c4808b42fc43"
- }
- Frame {
- msec: 3184
- hash: "fc90d18b072638f2df1bacee12fe1743"
- }
- Frame {
- msec: 3200
- hash: "cdd7b5598155eba57783ebe1872db818"
- }
- Frame {
- msec: 3216
- hash: "b45e32d12bbc2e56f4a3e7e473528d3e"
- }
- Frame {
- msec: 3232
- hash: "5762a693ea6287e8987c604ef9fac361"
- }
- Frame {
- msec: 3248
- hash: "2e46a8df5ec0c7070a374186a313f2c6"
- }
- Frame {
- msec: 3264
- hash: "e612134417f3f901661b658801a72848"
- }
- Frame {
- msec: 3280
- hash: "5de468fac915894ef34f3fee1c637e01"
- }
- Frame {
- msec: 3296
- hash: "e29c8713573e49fc98387311d80c7510"
- }
- Frame {
- msec: 3312
- hash: "6fce67b704f613e6fd9181ccb9ee237f"
- }
- Frame {
- msec: 3328
- hash: "bf499add3d91d751ffa1cce28bece380"
- }
- Frame {
- msec: 3344
- hash: "7d50cad7b18a4a37be6aac7796014195"
- }
- Frame {
- msec: 3360
- hash: "6695208c8d39373ff0846c821c819cb2"
- }
- Frame {
- msec: 3376
- hash: "0140ec2286b0fb94340d2dd6d418f539"
- }
- Frame {
- msec: 3392
- hash: "9f92a99737aa6a7da48af7e7a4ed7a6a"
- }
- Frame {
- msec: 3408
- hash: "8e593e8192d17d07c2265d6fa840f281"
- }
- Frame {
- msec: 3424
- hash: "ea70e72eb12d5595d9bf0d9cc77efd4d"
- }
- Frame {
- msec: 3440
- hash: "faeeb9e6e6a260a266ac8965f204b542"
- }
- Frame {
- msec: 3456
- hash: "d50987082d056997a8e7fe5940cb7968"
- }
- Frame {
- msec: 3472
- hash: "44089138e01bfee916306ae66ba43e9f"
- }
- Frame {
- msec: 3488
- hash: "60256356ca6fe8bd323ef36bc149a3ea"
- }
- Frame {
- msec: 3504
- hash: "6caae71d6bd897d755aeb22f10862171"
- }
- Frame {
- msec: 3520
- hash: "8ba18bf5df010718f83d6bb25aa1858b"
- }
- Frame {
- msec: 3536
- hash: "a903996370fb7efcaf295f00b9b4c4b6"
- }
- Frame {
- msec: 3552
- hash: "cc0b736c8b4d46d3d809dcfe82068c88"
- }
- Frame {
- msec: 3568
- hash: "037b2f65d162d44c39706d322cd6b6e5"
- }
- Frame {
- msec: 3584
- hash: "92c2b4f346329ffbcae07db74332ebbe"
- }
- Frame {
- msec: 3600
- hash: "3f9b2b5aade31333568a7cccf89e3176"
- }
- Frame {
- msec: 3616
- hash: "b40f9cce4cddf9fa5245276a105a3e0d"
- }
- Frame {
- msec: 3632
- hash: "74eb3e8a282693bd6bc92f381e380d61"
- }
- Frame {
- msec: 3648
- hash: "43d85dd9e0de49c639db0d91047c88bb"
- }
- Frame {
- msec: 3664
- hash: "563a07f4aa618252933e0356cc300bba"
- }
- Frame {
- msec: 3680
- hash: "73d1e5745154996fd245a91a831d5462"
- }
- Frame {
- msec: 3696
- hash: "7b2785b605c64135ea6914ad8388eb8f"
- }
- Frame {
- msec: 3712
- hash: "b2d989af972715a86ca374753d32f757"
- }
- Frame {
- msec: 3728
- hash: "96311aac52bc9167a7350af29741f3dc"
- }
- Frame {
- msec: 3744
- hash: "56e4b98816896f7353dddeac090f70d1"
- }
- Frame {
- msec: 3760
- hash: "7bd8ac36107e9e5db39e1aa37f2c5ca8"
- }
- Frame {
- msec: 3776
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3792
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3808
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3824
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3840
- image: "clock.3.png"
- }
- Frame {
- msec: 3856
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3872
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3888
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3904
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3920
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3936
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3952
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3968
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 3984
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 4000
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 4016
- hash: "b9545df89c8bec940678b65d5ef9ce04"
- }
- Frame {
- msec: 4032
- hash: "df3a1204f6243673d567724d27d07a9e"
- }
- Frame {
- msec: 4048
- hash: "7d0d3e92cb61d868d062bdf173924a4d"
- }
- Frame {
- msec: 4064
- hash: "29948b5d7807a6ed0076a9637ec3eb79"
- }
- Frame {
- msec: 4080
- hash: "2986b5e0a4a49bbe9f4ffada30433a48"
- }
- Frame {
- msec: 4096
- hash: "0d9e3813141a1ee15474380902d87815"
- }
- Frame {
- msec: 4112
- hash: "c5197a932430d498b7344c1f37454320"
- }
- Frame {
- msec: 4128
- hash: "c8ef8acf314486c157e74bdd2695ddb2"
- }
- Frame {
- msec: 4144
- hash: "adeb73de4b967912a9f2b04ba2b6fe4c"
- }
- Frame {
- msec: 4160
- hash: "da5fddd1e4ab8c096af0acc62114d69f"
- }
- Frame {
- msec: 4176
- hash: "5ef0784315603da196e66b4628524c5c"
- }
- Frame {
- msec: 4192
- hash: "1ff2a89c510953d71198056f5ac5b1a6"
- }
- Frame {
- msec: 4208
- hash: "f63d409e134e59b875099ab11b469d21"
- }
- Frame {
- msec: 4224
- hash: "e353748e0b0c49a217d6e2d06a9bfeb6"
- }
- Frame {
- msec: 4240
- hash: "a9d7470902a232d815bd2580e24fdc22"
- }
- Frame {
- msec: 4256
- hash: "eecbad718aa4eaf5bef7cd921b2ce9f9"
- }
- Frame {
- msec: 4272
- hash: "7a51cadbfb93eb4a66acc9cb150002ed"
- }
- Frame {
- msec: 4288
- hash: "2aa511fb96a51a50e3a45b784e349c15"
- }
- Frame {
- msec: 4304
- hash: "a1ad19593dc6b9f4c027f388e802dcbe"
- }
- Frame {
- msec: 4320
- hash: "ef6787f03bc1e33ea5f2a54aa1ba3a41"
- }
- Frame {
- msec: 4336
- hash: "3386337bbc1ab82374d9965b7b0ffdef"
- }
- Frame {
- msec: 4352
- hash: "c76afb4f412b4d5dd8eca74db6c54fb8"
- }
- Frame {
- msec: 4368
- hash: "f91ac74ec153152670d43f42b1e2a2db"
- }
- Frame {
- msec: 4384
- hash: "58f22723fa0c67379972238e0e7ed5e2"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 4400
- hash: "a4730b0a8d6e0dd9e7eb58b51fb631ec"
- }
- Frame {
- msec: 4416
- hash: "193bf624efefcad70af29f41eeab128e"
- }
- Frame {
- msec: 4432
- hash: "d692f262facf26c2be2b0f747903d476"
- }
- Frame {
- msec: 4448
- hash: "e59e43b5d4abebea0a55b1d072d148bc"
- }
- Frame {
- msec: 4464
- hash: "134ff829e91161146b5f048a50c7eef7"
- }
- Frame {
- msec: 4480
- hash: "07a80e45e70cb13f45e3858404c5f8dd"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.0.png
deleted file mode 100644
index 3f42e75259..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.1.png
deleted file mode 100644
index d661df6745..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.10.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.10.png
deleted file mode 100644
index e8c96e174c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.10.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.2.png
deleted file mode 100644
index 35bfa4382c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.3.png
deleted file mode 100644
index 74141cf876..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.4.png
deleted file mode 100644
index 9544054841..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.5.png
deleted file mode 100644
index 4b02c797cf..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.6.png
deleted file mode 100644
index 8ea83459d1..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.7.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.7.png
deleted file mode 100644
index 76a73e8ae5..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.8.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.8.png
deleted file mode 100644
index 88249403ee..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.8.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.9.png b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.9.png
deleted file mode 100644
index f954cc58ee..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.9.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.qml
deleted file mode 100644
index e7e5b3c48b..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativespringfollow/data/follow.qml
+++ /dev/null
@@ -1,1763 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "3561ebf22b19c7bd5a70947d36b50b63"
- }
- Frame {
- msec: 32
- hash: "3561ebf22b19c7bd5a70947d36b50b63"
- }
- Frame {
- msec: 48
- hash: "bd0006fc34f58ec1ea6aa4c4acbb0070"
- }
- Frame {
- msec: 64
- hash: "c25f9fb6aea93413bfef5eb176c02476"
- }
- Frame {
- msec: 80
- hash: "4ce0eb12fb41960e60e208dffb09ed3a"
- }
- Frame {
- msec: 96
- hash: "75b3375881969710b6eb21f2a93c36cc"
- }
- Frame {
- msec: 112
- hash: "91e9b13e332959e41a29c0b225675a05"
- }
- Frame {
- msec: 128
- hash: "8e04a31a953b42903dffe86b37b3f59f"
- }
- Frame {
- msec: 144
- hash: "837e0e646a2853d3fde571f9dd966fc7"
- }
- Frame {
- msec: 160
- hash: "7367e25ae1e3a3731d83da76d5795f8c"
- }
- Frame {
- msec: 176
- hash: "3621846fb85b286a886a02de442e76c4"
- }
- Frame {
- msec: 192
- hash: "ed20a4c3476b8bb5545d5343747c39c8"
- }
- Frame {
- msec: 208
- hash: "1fc73efb410e9beb3f791cbff8e814b3"
- }
- Frame {
- msec: 224
- hash: "199c99a4e3aa14fbc8c8a0d8baacf998"
- }
- Frame {
- msec: 240
- hash: "513ce5a2f57e40002a26b7722c8a10db"
- }
- Frame {
- msec: 256
- hash: "b80b51cd4e75bdc799bbe79e66b7d02b"
- }
- Frame {
- msec: 272
- hash: "e1531b6c5b3ac872563fdfaf49d32a27"
- }
- Frame {
- msec: 288
- hash: "6d7cfd78ebd56ae6adfc97aad5d11b13"
- }
- Frame {
- msec: 304
- hash: "4252ebb2fba165e39f025f631e0a676a"
- }
- Frame {
- msec: 320
- hash: "04d6ae51415b083bbb0eabd1b0304ca4"
- }
- Frame {
- msec: 336
- hash: "750df1f1626c8b84dd72a35bf081fe00"
- }
- Frame {
- msec: 352
- hash: "003d7a846e09ba23ee8a7ae6d473be9f"
- }
- Frame {
- msec: 368
- hash: "5cf3abdbb9a5b8cba6a8afe8abb60ced"
- }
- Frame {
- msec: 384
- hash: "0669f86043a0c84d0b4672cc5c1136b4"
- }
- Frame {
- msec: 400
- hash: "94f59435fe4f3ca06699c996b537ae8c"
- }
- Frame {
- msec: 416
- hash: "211c8ec42a6d6949253af71c6eeffa53"
- }
- Frame {
- msec: 432
- hash: "6de6c6d1b4a37a864b96c0293be8ebf5"
- }
- Frame {
- msec: 448
- hash: "468d67d069eaac1968a6ad52e56f3ab5"
- }
- Frame {
- msec: 464
- hash: "18d8de7a5c73d8c8188e6ae00a701820"
- }
- Frame {
- msec: 480
- hash: "4387c724ed49bfbbca238bf57a704a14"
- }
- Frame {
- msec: 496
- hash: "f317c59f65c7266765333048d8545748"
- }
- Frame {
- msec: 512
- hash: "6575d40c2f27f110443a2ede8a873c77"
- }
- Frame {
- msec: 528
- hash: "3e65cb675124dbd9db5116fa7584e223"
- }
- Frame {
- msec: 544
- hash: "df80612a74b33eca81db6f43aa33e411"
- }
- Frame {
- msec: 560
- hash: "6b2bc20397f3fb452ea14d81e9efd61d"
- }
- Frame {
- msec: 576
- hash: "e5b8a2476487f6cd9fd37e3b3f54f88d"
- }
- Frame {
- msec: 592
- hash: "e93f8156e2dc278a5e20d9e28b48d9fa"
- }
- Frame {
- msec: 608
- hash: "e524d5117888b0b68781ffaf1a3e7303"
- }
- Frame {
- msec: 624
- hash: "f3b777409534d87c59e60499fd6a3808"
- }
- Frame {
- msec: 640
- hash: "09d1fa8f1306eb6f51db97d04c2d7ad3"
- }
- Frame {
- msec: 656
- hash: "acebdcebe6880c8b3b94ad7606181b72"
- }
- Frame {
- msec: 672
- hash: "347945a94002cd44d7a2df47f82940a1"
- }
- Frame {
- msec: 688
- hash: "c716014d63ff2a22cab04dadc18b10c1"
- }
- Frame {
- msec: 704
- hash: "ced019e3f8b5ca079582d01f1f585a8e"
- }
- Frame {
- msec: 720
- hash: "d61d31de835ea8d1ffa56fd04c873ac1"
- }
- Frame {
- msec: 736
- hash: "2eec542c5af4c6eecc153cc0fcae7dd3"
- }
- Frame {
- msec: 752
- hash: "c13b9443e1c000a2877e4586428da308"
- }
- Frame {
- msec: 768
- hash: "c5c2e30b3dc3298afc201f6045e79e59"
- }
- Frame {
- msec: 784
- hash: "308f2ca66133d37c2fcb222e68698d25"
- }
- Frame {
- msec: 800
- hash: "bf820215986a35b56daf07c164fd2a79"
- }
- Frame {
- msec: 816
- hash: "a0bb21475100fb25b767d055d70b062f"
- }
- Frame {
- msec: 832
- hash: "bfb0927bcb23689820b0f96ea56426fc"
- }
- Frame {
- msec: 848
- hash: "8f294742ca9dd6ab10689f1f4ec2ed96"
- }
- Frame {
- msec: 864
- hash: "f60c232307570fb4ec6e74f18e243553"
- }
- Frame {
- msec: 880
- hash: "7411970ab72d8b2dbf48ee8d4e6503b3"
- }
- Frame {
- msec: 896
- hash: "d4d766038daeae2fbec290204ca3983b"
- }
- Frame {
- msec: 912
- hash: "f85525c3fd784ee7f9a3d9465e37d6f3"
- }
- Frame {
- msec: 928
- hash: "c5e63da86ddbd2a54c7cd3d03e5428a2"
- }
- Frame {
- msec: 944
- hash: "369a7405b1717ddf06c99ab1dd6d4cb0"
- }
- Frame {
- msec: 960
- image: "follow.0.png"
- }
- Frame {
- msec: 976
- hash: "18d5c4378f9daf63bf4cb76d76374548"
- }
- Frame {
- msec: 992
- hash: "f36e649db2e1ec9fbe15e7711ea13ab5"
- }
- Frame {
- msec: 1008
- hash: "f68515607dca1bda14b6afa6e05ebb6b"
- }
- Frame {
- msec: 1024
- hash: "bc5cc4c9050a5bd4c64debd12643fd73"
- }
- Frame {
- msec: 1040
- hash: "f053a18bca4d8c47a0f181fad8118e9a"
- }
- Frame {
- msec: 1056
- hash: "9a2218f51faed4fa891c507fe6828d2c"
- }
- Frame {
- msec: 1072
- hash: "ce671ff4dd1f343243f2fcc263d137f4"
- }
- Frame {
- msec: 1088
- hash: "8624f8d814094ad25a1482a11f424990"
- }
- Frame {
- msec: 1104
- hash: "324dad940b3adb54491d6cdd4e7d8aa7"
- }
- Frame {
- msec: 1120
- hash: "0cd7c53ec5b591053de6769967b8bad5"
- }
- Frame {
- msec: 1136
- hash: "e9e8f5e9c2dc179498943d0b5912af09"
- }
- Frame {
- msec: 1152
- hash: "5f1552ccd61f09335a88658ee1c4e97e"
- }
- Frame {
- msec: 1168
- hash: "866e01eed7e26dd1bd9af8aaddf4d7c0"
- }
- Frame {
- msec: 1184
- hash: "2efba3c33c4c7b6d89ce7efca2dc516a"
- }
- Frame {
- msec: 1200
- hash: "2de9d8a2ad64d2491b3444712be032dc"
- }
- Frame {
- msec: 1216
- hash: "84206972322eae033d05f71b178180c9"
- }
- Frame {
- msec: 1232
- hash: "8571d11da1a893edcbe5add1a9399d7a"
- }
- Frame {
- msec: 1248
- hash: "c0d65ecefa77ee7cb1c08a560e3ad572"
- }
- Frame {
- msec: 1264
- hash: "0f8a8523969713771a6c7984069b15e4"
- }
- Frame {
- msec: 1280
- hash: "2e80e4b54538b7b586f4a3be55eb6da3"
- }
- Frame {
- msec: 1296
- hash: "ae028381f311a60946ecd26eab95bb42"
- }
- Frame {
- msec: 1312
- hash: "ac5902d58bc116a002c093f55cf20278"
- }
- Frame {
- msec: 1328
- hash: "242f8617718048cfab9950b812eb1b26"
- }
- Frame {
- msec: 1344
- hash: "b642f2f0d3161f80a702b09a910c589b"
- }
- Frame {
- msec: 1360
- hash: "d1508034ecd908120c6f58cf08360c3c"
- }
- Frame {
- msec: 1376
- hash: "ad10a5ea8598616f2ffa633eecfbd43a"
- }
- Frame {
- msec: 1392
- hash: "1d2c3cfaac1cca868f31872bf4248de8"
- }
- Frame {
- msec: 1408
- hash: "28da57a6aec84318ff6aa029ac17f1dd"
- }
- Frame {
- msec: 1424
- hash: "6f9bf89843d5e40f6c282e69337e7d25"
- }
- Frame {
- msec: 1440
- hash: "1c5733ad9620805127372fb76f5b0228"
- }
- Frame {
- msec: 1456
- hash: "16f21041e9e475a37c478cf38cdc353b"
- }
- Frame {
- msec: 1472
- hash: "b39ea2e8a1991b3ea5be818a284ff69f"
- }
- Frame {
- msec: 1488
- hash: "4f5bdc935080707525a2b74936b41b2e"
- }
- Frame {
- msec: 1504
- hash: "a39426dc761df1d2ba398aa17d220ded"
- }
- Frame {
- msec: 1520
- hash: "2e965042273b377958b04190250d273e"
- }
- Frame {
- msec: 1536
- hash: "51f021c1d50291b425c98dee4894b330"
- }
- Frame {
- msec: 1552
- hash: "88fea2e6d6898084acb5897833adb182"
- }
- Frame {
- msec: 1568
- hash: "12f55e64c8ec9825bf6c5cfd5d50d2bb"
- }
- Frame {
- msec: 1584
- hash: "365b358eb7a678e1076774c36a82f452"
- }
- Frame {
- msec: 1600
- hash: "a992b326739bff87bf042c711a7fa65c"
- }
- Frame {
- msec: 1616
- hash: "083aa3c766a3b50492e51aab3ee128d0"
- }
- Frame {
- msec: 1632
- hash: "16a2db3b3a773e2612bc57f7a7d7fbbe"
- }
- Frame {
- msec: 1648
- hash: "32a28101a53d308b107d26a30ae7cdd9"
- }
- Frame {
- msec: 1664
- hash: "da3908e584542ff2f73cb22369f49c1c"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 195; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 1680
- hash: "8ad535bb0c5decd8c970aa36286d57e7"
- }
- Frame {
- msec: 1696
- hash: "5bfbcab7607622486c350a9117ab0884"
- }
- Frame {
- msec: 1712
- hash: "17e13c8bfd81081f6400d3e71daecb4c"
- }
- Frame {
- msec: 1728
- hash: "9411a66b6c3ef9a98bc62dea282d6a51"
- }
- Frame {
- msec: 1744
- hash: "423cded80165ee13f903460e5396526b"
- }
- Frame {
- msec: 1760
- hash: "709cc55316e6702c1359b66c06676603"
- }
- Frame {
- msec: 1776
- hash: "27232931c000a2edb5c3d480a6692e6b"
- }
- Frame {
- msec: 1792
- hash: "22311fd0903b53f50df824ba345ca350"
- }
- Frame {
- msec: 1808
- hash: "9bb066e60e7e5b3eaa0a221b8ba1a431"
- }
- Frame {
- msec: 1824
- hash: "517000255d372d384773dff8c80f5a65"
- }
- Frame {
- msec: 1840
- hash: "329dbd77ae53ea8e4beb669a976033a8"
- }
- Frame {
- msec: 1856
- hash: "2acd5d3e878e1db5413270c1a50ffc83"
- }
- Frame {
- msec: 1872
- hash: "8eb5946ac5d53dfc2813d1f1c6a2b6c5"
- }
- Frame {
- msec: 1888
- hash: "375299e5b1067e02d5de3238a37659f2"
- }
- Frame {
- msec: 1904
- hash: "f385c90e585db5555e873996165f55af"
- }
- Frame {
- msec: 1920
- image: "follow.1.png"
- }
- Frame {
- msec: 1936
- hash: "6c13bb69b6483c72463437e102a9dabb"
- }
- Frame {
- msec: 1952
- hash: "c1b5d10688681c3b2363bb6d4173deca"
- }
- Frame {
- msec: 1968
- hash: "b434649e4c9b2c184d2f9036f9d041bf"
- }
- Frame {
- msec: 1984
- hash: "ca32e9f9080983803bb37b7231ed1c84"
- }
- Frame {
- msec: 2000
- hash: "976eab47b2d6445fdd8293f2c73564c1"
- }
- Frame {
- msec: 2016
- hash: "e63daea8f3bc79cea7a6b8dcfd31a094"
- }
- Frame {
- msec: 2032
- hash: "626cbe5e6b79f2fd0ef57c943666b571"
- }
- Frame {
- msec: 2048
- hash: "4e07255ce12a21966eec33c0cc623d96"
- }
- Frame {
- msec: 2064
- hash: "94045005de77725c63c62575a6b06852"
- }
- Frame {
- msec: 2080
- hash: "3b6dcf783c5e9fe99ce3d9ca02bceff6"
- }
- Frame {
- msec: 2096
- hash: "e901ed7e831e2d012b97b98b3ab6fa1b"
- }
- Frame {
- msec: 2112
- hash: "74ef03f72d032daaff13114fde02b824"
- }
- Frame {
- msec: 2128
- hash: "9eb334d7dda3801c1fe292844040e014"
- }
- Frame {
- msec: 2144
- hash: "82bf8fb5e3a9bf167f3f00b1f6ab3c06"
- }
- Frame {
- msec: 2160
- hash: "df3a2bc7758d00d595347e62c7e53c4a"
- }
- Frame {
- msec: 2176
- hash: "e77ac04a6ad9f97226b45d202a0d5196"
- }
- Frame {
- msec: 2192
- hash: "37411333a28ea840c59cabd96fd1deba"
- }
- Frame {
- msec: 2208
- hash: "8d1eb90ffd080bcd078b69c9635108d1"
- }
- Frame {
- msec: 2224
- hash: "68ee5d58b2edeb6b5a64a714115e4499"
- }
- Frame {
- msec: 2240
- hash: "003ddf0a5dd3d4bb947a34bdd22ad8c1"
- }
- Frame {
- msec: 2256
- hash: "bf3c89d0a09ed2159a78f10124f5d7bb"
- }
- Frame {
- msec: 2272
- hash: "6ec994f41d4540db988846416c2f7b4f"
- }
- Frame {
- msec: 2288
- hash: "9ca7e3ca6ea26e8259d34a8c0f80f7a9"
- }
- Frame {
- msec: 2304
- hash: "edf5cea581d46400914610213c8503ea"
- }
- Frame {
- msec: 2320
- hash: "9b96aac3f98cd37a361788be8b81e308"
- }
- Frame {
- msec: 2336
- hash: "5d304a8398512ebc85bebf973ed6a4f4"
- }
- Frame {
- msec: 2352
- hash: "cf2a27a395f23f7976a48d69f5e8e120"
- }
- Frame {
- msec: 2368
- hash: "458323a37208ea14972d8f84cebc66a5"
- }
- Frame {
- msec: 2384
- hash: "da9c8e4d168b9cd32d5ec3f5857d2942"
- }
- Frame {
- msec: 2400
- hash: "5d6663be8e02b0a7a4701595c9c26663"
- }
- Frame {
- msec: 2416
- hash: "4190712a39ca07f810a6d84e15488393"
- }
- Frame {
- msec: 2432
- hash: "26b22be0a1c2fecec1e25a6513b19484"
- }
- Frame {
- msec: 2448
- hash: "3e623bc2b9e8cec49671571291cf6afb"
- }
- Frame {
- msec: 2464
- hash: "3e623bc2b9e8cec49671571291cf6afb"
- }
- Frame {
- msec: 2480
- hash: "2cb2968d16323af4659b3197d391bb91"
- }
- Frame {
- msec: 2496
- hash: "5376b1285647950428b29e75f2e27c4f"
- }
- Frame {
- msec: 2512
- hash: "baaacc3940c8d36f715d90e046346bed"
- }
- Frame {
- msec: 2528
- hash: "277719afea4c119f17c34c59ef0b7984"
- }
- Frame {
- msec: 2544
- hash: "00a172ff8afd1e8444fb84249a3af0fd"
- }
- Frame {
- msec: 2560
- hash: "bf8a0f939a5602a0a9f5a3bc7c8d0d86"
- }
- Frame {
- msec: 2576
- hash: "b22860751790b3113b2cb299c9f628b8"
- }
- Frame {
- msec: 2592
- hash: "fdda1e520457974443720bd44f21d929"
- }
- Frame {
- msec: 2608
- hash: "538af31f9463cd07163d54adc2721345"
- }
- Frame {
- msec: 2624
- hash: "2ca50398746c8fb1c936fd412c7556b4"
- }
- Frame {
- msec: 2640
- hash: "63cd898c3e22a29846489e5c47f455a1"
- }
- Frame {
- msec: 2656
- hash: "1e69cc765c3f2c27c2b6e7f3e47f515a"
- }
- Frame {
- msec: 2672
- hash: "9d7ce0df7bee9a387917ef228fd50652"
- }
- Frame {
- msec: 2688
- hash: "afa0b735a9dd0734362b3f3f7d7177c3"
- }
- Frame {
- msec: 2704
- hash: "91bee07133319a0adbf9a31c430e58ad"
- }
- Frame {
- msec: 2720
- hash: "6aee88b6391e524bafc15524825ada74"
- }
- Frame {
- msec: 2736
- hash: "655ce421faa628b3389f084fe675ad53"
- }
- Frame {
- msec: 2752
- hash: "367fd34b54f12e896839b0ef4fb06925"
- }
- Frame {
- msec: 2768
- hash: "0b3ac04504bfe876c4338a4dc3721280"
- }
- Frame {
- msec: 2784
- hash: "c6cdb77888f1a3cbfe4cfec28bfad12d"
- }
- Frame {
- msec: 2800
- hash: "ef01302544f4da4575035d3e4f2443c9"
- }
- Frame {
- msec: 2816
- hash: "53f01d26a75f7e91d14b8975c81638d5"
- }
- Frame {
- msec: 2832
- hash: "10fc7b3f7e5dff21edef4123d252cba0"
- }
- Frame {
- msec: 2848
- hash: "10fc7b3f7e5dff21edef4123d252cba0"
- }
- Frame {
- msec: 2864
- hash: "10fc7b3f7e5dff21edef4123d252cba0"
- }
- Frame {
- msec: 2880
- image: "follow.2.png"
- }
- Frame {
- msec: 2896
- hash: "143970d31598c017d7f24e8b09fd0f0a"
- }
- Frame {
- msec: 2912
- hash: "fc6c38bfdcd2df7a928e83d57dc0b18d"
- }
- Frame {
- msec: 2928
- hash: "647c09aae23ea5ec7979775d3022cacf"
- }
- Frame {
- msec: 2944
- hash: "f1ed5cd564be1eed3242997c14a99887"
- }
- Frame {
- msec: 2960
- hash: "aec3d7f18d6c4002229ef1d36727c4b0"
- }
- Frame {
- msec: 2976
- hash: "3552e5a3923593a2c66ecd5e2cb2ee25"
- }
- Frame {
- msec: 2992
- hash: "55a72327b726a3c75383cc5a28ba9503"
- }
- Frame {
- msec: 3008
- hash: "c25ff06944f8c92006245452e07215ef"
- }
- Frame {
- msec: 3024
- hash: "cc0187a10a7ccf087838a481f667af6e"
- }
- Frame {
- msec: 3040
- hash: "ae9d7ff04066eb998d052c2e21b58327"
- }
- Frame {
- msec: 3056
- hash: "91707fa1aaa267e6d1d56d173a063bde"
- }
- Frame {
- msec: 3072
- hash: "c076a33b8afcaf915387375f065e49df"
- }
- Frame {
- msec: 3088
- hash: "c24390ec788b5f34356e7a6507507a93"
- }
- Frame {
- msec: 3104
- hash: "e42c9800379de3076d00802c68cc99e8"
- }
- Frame {
- msec: 3120
- hash: "a2d3ba5353b1c967da93d96b61f7927f"
- }
- Frame {
- msec: 3136
- hash: "fe719953aa3468d373801bb80ae93eff"
- }
- Frame {
- msec: 3152
- hash: "e89b9bed1ebc7ebdd37d6975ecb0601c"
- }
- Frame {
- msec: 3168
- hash: "7f3d84f49a7dd4fe39a1ba0ed7f5da3e"
- }
- Frame {
- msec: 3184
- hash: "b16c9e05f72e7c8fa59f80422b987600"
- }
- Frame {
- msec: 3200
- hash: "bd0606da0f7bc6c47a361462b3b2dede"
- }
- Frame {
- msec: 3216
- hash: "88f81db6d705b745c4d2ffe470cb6966"
- }
- Frame {
- msec: 3232
- hash: "4ac6769d3f725720bba6c125b43885cd"
- }
- Frame {
- msec: 3248
- hash: "4ac6769d3f725720bba6c125b43885cd"
- }
- Frame {
- msec: 3264
- hash: "4ac6769d3f725720bba6c125b43885cd"
- }
- Frame {
- msec: 3280
- hash: "4ac6769d3f725720bba6c125b43885cd"
- }
- Frame {
- msec: 3296
- hash: "88f81db6d705b745c4d2ffe470cb6966"
- }
- Frame {
- msec: 3312
- hash: "88f81db6d705b745c4d2ffe470cb6966"
- }
- Frame {
- msec: 3328
- hash: "1f112ff43280a208e967e373db8e3f34"
- }
- Frame {
- msec: 3344
- hash: "6d966dafdfd2cf1927c14f749e24a99c"
- }
- Frame {
- msec: 3360
- hash: "8ab4ce88e52d7cd2ec9059cdb973590d"
- }
- Frame {
- msec: 3376
- hash: "62d877f18b8d3fcf6b076946f2ce05f7"
- }
- Frame {
- msec: 3392
- hash: "efe3729cdeddc4bcee105b27e4062dcd"
- }
- Frame {
- msec: 3408
- hash: "a2eb63f12d434925d0780f4992155556"
- }
- Frame {
- msec: 3424
- hash: "5eee7ec87bb399e1395a8d337ede021b"
- }
- Frame {
- msec: 3440
- hash: "59769ae407be01b016df8d7fbf484243"
- }
- Frame {
- msec: 3456
- hash: "bbadb689ec5b76f76340905252b2376a"
- }
- Frame {
- msec: 3472
- hash: "97cd4f34259ac8370e8557ef3ecf5a96"
- }
- Frame {
- msec: 3488
- hash: "17c1513fe4c0132e15355378c6a6ee11"
- }
- Frame {
- msec: 3504
- hash: "7b19041638fc7d1cf60512f579f388dd"
- }
- Frame {
- msec: 3520
- hash: "4d23bbf68cb8b32638b73ac20551ee50"
- }
- Frame {
- msec: 3536
- hash: "3f0326db5a851887a534e80cc29dc21d"
- }
- Frame {
- msec: 3552
- hash: "df5902d22a31c4deac1428d2758a0ffa"
- }
- Frame {
- msec: 3568
- hash: "21badb1464775fa935c2619b91aa6e6e"
- }
- Frame {
- msec: 3584
- hash: "e8cf87f4a65f6915addc16de29c90108"
- }
- Frame {
- msec: 3600
- hash: "d3d4487b887695b7bba8e0af7756a0f8"
- }
- Frame {
- msec: 3616
- hash: "d7f52590e4f51621ad2d62c975a5d1ef"
- }
- Frame {
- msec: 3632
- hash: "9ebdc2b3ef05748e2cc8988f968f7a37"
- }
- Frame {
- msec: 3648
- hash: "74bb7974f9315e70e976c21955390b9e"
- }
- Frame {
- msec: 3664
- hash: "59e16a89e523160f2a482c22f003f87f"
- }
- Frame {
- msec: 3680
- hash: "d8284c216df0fdd37525f26b88707572"
- }
- Frame {
- msec: 3696
- hash: "d8711b4444eea59acc544652cea3c4ce"
- }
- Frame {
- msec: 3712
- hash: "12148c3f2b5f41a4ac4801e990b20114"
- }
- Frame {
- msec: 3728
- hash: "34429cbdfe581a524b1f9072cc404539"
- }
- Frame {
- msec: 3744
- hash: "1f6a17b91d73e10bcbdd166d97546822"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 195; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 3760
- hash: "bccd4f135f27199b3a710576e0013c53"
- }
- Frame {
- msec: 3776
- hash: "6aa4db9ecb8fa4ad4d4f81434c369759"
- }
- Frame {
- msec: 3792
- hash: "a7f2951411d8f5322ce91b3da7e86d64"
- }
- Frame {
- msec: 3808
- hash: "25fe19f3398d3d1a74ad8ed4114149d7"
- }
- Frame {
- msec: 3824
- hash: "05c3dae68897a461de2923824bef9390"
- }
- Frame {
- msec: 3840
- image: "follow.3.png"
- }
- Frame {
- msec: 3856
- hash: "db6265c30dd614720d1532ffc411a28f"
- }
- Frame {
- msec: 3872
- hash: "f5de8e4ba755bc0a1e4c3f36ed3e6a93"
- }
- Frame {
- msec: 3888
- hash: "ad68229e5fe9a2570074648005c5e5df"
- }
- Frame {
- msec: 3904
- hash: "02d894680766289fe659a86b02d6c9ca"
- }
- Frame {
- msec: 3920
- hash: "4f228534dd909207e8d149c74bd8fd90"
- }
- Frame {
- msec: 3936
- hash: "f0b5c64f6a50e156452caf6a352c11e1"
- }
- Frame {
- msec: 3952
- hash: "64d46ff443534dbdb3cca88b7fc3e758"
- }
- Frame {
- msec: 3968
- hash: "717ad4b8012a21c6ed38dee5ea978f36"
- }
- Frame {
- msec: 3984
- hash: "ed38c7b528bcbb3e291761104bf1e86e"
- }
- Frame {
- msec: 4000
- hash: "8cc8674d325a2c72c41654ffbe5bce1f"
- }
- Frame {
- msec: 4016
- hash: "ab66dd60cc0e58d23bef5c709fe901ad"
- }
- Frame {
- msec: 4032
- hash: "b3b824cae4ddaac4a224e84f0e282fa4"
- }
- Frame {
- msec: 4048
- hash: "ead7fe4bec7987c24c305e114797284c"
- }
- Frame {
- msec: 4064
- hash: "e5e9501f1ca61ea9f99aadfc5ca02214"
- }
- Frame {
- msec: 4080
- hash: "f74a00eb31e1604f13a6ffb29fbd91b7"
- }
- Frame {
- msec: 4096
- hash: "539aca62492408ccc1815c67b55cb399"
- }
- Frame {
- msec: 4112
- hash: "4f548ad0eb7c4ce88a777e3b7ce2d3a8"
- }
- Frame {
- msec: 4128
- hash: "b0190c5ed53ff812988dd7a2152ffa61"
- }
- Frame {
- msec: 4144
- hash: "48214bdfbdcba256043e2cec7f5e321b"
- }
- Frame {
- msec: 4160
- hash: "952614329111d1d83b0304aa919af177"
- }
- Frame {
- msec: 4176
- hash: "fd874a73062dedfe7b904ad4c9fbcbc9"
- }
- Frame {
- msec: 4192
- hash: "365b9a18cf37521718ef98589ac23933"
- }
- Frame {
- msec: 4208
- hash: "32bbbf93d78925ef12f830386f0dbe2b"
- }
- Frame {
- msec: 4224
- hash: "835d391a498b7d470b317e91453ba2f9"
- }
- Frame {
- msec: 4240
- hash: "07d0cd82a39bfea2567587745f1e330d"
- }
- Frame {
- msec: 4256
- hash: "9560a63581007038e1c463b906a4b346"
- }
- Frame {
- msec: 4272
- hash: "076d25daafe8b582aeff39e247653285"
- }
- Frame {
- msec: 4288
- hash: "f2e66dad3231250b951388396705c839"
- }
- Frame {
- msec: 4304
- hash: "f168773343e928b60aad5430b9ca739d"
- }
- Frame {
- msec: 4320
- hash: "99ed4dc4be1a0e8d98e1a54d51208da3"
- }
- Frame {
- msec: 4336
- hash: "23b3e73a966f52ce6166bc91955570a1"
- }
- Frame {
- msec: 4352
- hash: "00cdb999f3d2c6fcad708c37c3059c3d"
- }
- Frame {
- msec: 4368
- hash: "96f1bef93ba1768afcc42924145d49ff"
- }
- Frame {
- msec: 4384
- hash: "0a76f6d5ec710e4046f32f76be8e0d68"
- }
- Frame {
- msec: 4400
- hash: "98f97a6c7eac1a493e81e79956177668"
- }
- Frame {
- msec: 4416
- hash: "9424ca6ba64d0d0c0bd1ee9da1b5085a"
- }
- Frame {
- msec: 4432
- hash: "2049a22079ac590aad3c9f6496879bcb"
- }
- Frame {
- msec: 4448
- hash: "f70f9f6bd3abf3bdcb70038cda5ed311"
- }
- Frame {
- msec: 4464
- hash: "48d6d01e1d80fea8eb05572ca26b692c"
- }
- Frame {
- msec: 4480
- hash: "af152dc6de929a8231687611cc301f28"
- }
- Frame {
- msec: 4496
- hash: "2ec869cd61570b570586870f80ba3832"
- }
- Frame {
- msec: 4512
- hash: "42be0431c015dcd0f5f6dd59ba7c2d7d"
- }
- Frame {
- msec: 4528
- hash: "abc112f396c5e504a19dce255437720c"
- }
- Frame {
- msec: 4544
- hash: "a371c4f49af16bdacc5ab5abbfc99e99"
- }
- Frame {
- msec: 4560
- hash: "1ebfd139bfabbbaf522acd63e3f47462"
- }
- Frame {
- msec: 4576
- hash: "b36086718a3dd89500adbf67aa7b0f1d"
- }
- Frame {
- msec: 4592
- hash: "e3ea2ad4955cb2ab8d503b331b3594c3"
- }
- Frame {
- msec: 4608
- hash: "4214c9f474d7f11bed74e32f5b3a0e9f"
- }
- Frame {
- msec: 4624
- hash: "f290e1dbf13ae399a2644eea3715804a"
- }
- Frame {
- msec: 4640
- hash: "6538c60446e3303dc1126c3c9c47ae42"
- }
- Frame {
- msec: 4656
- hash: "5319667f181eb5647710ccc6eddf43c9"
- }
- Frame {
- msec: 4672
- hash: "b98b68ea99d5a107115b50c32aa45c35"
- }
- Frame {
- msec: 4688
- hash: "2cc38e2915f77a46082c32c9393ae0c5"
- }
- Frame {
- msec: 4704
- hash: "40c695b17834cbba86d4dde0729f620b"
- }
- Frame {
- msec: 4720
- hash: "e8d5a95cfc726ce2626951ef1c68a948"
- }
- Frame {
- msec: 4736
- hash: "ab96c1668890ceffba74219d83e15e99"
- }
- Frame {
- msec: 4752
- hash: "4d69a73b3940911940b419028dabd223"
- }
- Frame {
- msec: 4768
- hash: "281043e3c045df177cbfae1abf51a8d1"
- }
- Frame {
- msec: 4784
- hash: "8adf6d8154d7950efe6b5bd7e2b760b6"
- }
- Frame {
- msec: 4800
- image: "follow.4.png"
- }
- Frame {
- msec: 4816
- hash: "7fba4249c76b7f81c2b88cf906ce8ce6"
- }
- Frame {
- msec: 4832
- hash: "50b3c89d4d783469843b3acacb9690dd"
- }
- Frame {
- msec: 4848
- hash: "29f950ab7e6299036e78c8f37d114990"
- }
- Frame {
- msec: 4864
- hash: "3f8aecc5453406c9d8160eeb9691ed91"
- }
- Frame {
- msec: 4880
- hash: "ad7ff48fed4ca9e236271d169c3bf696"
- }
- Frame {
- msec: 4896
- hash: "2a2f872e4ef5c062a61fb59238df8794"
- }
- Frame {
- msec: 4912
- hash: "87cf2e21d7e56a82437a8ff3fa2bdc8c"
- }
- Frame {
- msec: 4928
- hash: "c3b04bb24d86d2aebd8fde7845f114cf"
- }
- Frame {
- msec: 4944
- hash: "3ad95d59a1f1841e3ff2324055ca23c0"
- }
- Frame {
- msec: 4960
- hash: "b91068fdce1fb2be9a64902a3dfa6b0d"
- }
- Frame {
- msec: 4976
- hash: "30f0118eb0bba40927a8038da03b652b"
- }
- Frame {
- msec: 4992
- hash: "ce5f3d15d3536be16b960f02a7335b99"
- }
- Frame {
- msec: 5008
- hash: "85b853c3f48b915ed6e80815709e8ac2"
- }
- Frame {
- msec: 5024
- hash: "c3511a76aa6dc2f1422a473ca4d80d0f"
- }
- Frame {
- msec: 5040
- hash: "deb1df70b4e1801c635356c65c0a5a46"
- }
- Frame {
- msec: 5056
- hash: "d04983df9b0ffc45e629af55a8e5cc95"
- }
- Frame {
- msec: 5072
- hash: "2a55c97509819657f5f8604d4789d9d4"
- }
- Frame {
- msec: 5088
- hash: "94589d594fa2e5ed621459ec2c8bd7e8"
- }
- Frame {
- msec: 5104
- hash: "a8a1bd7c15a5bdfe15d6580d719bdba6"
- }
- Frame {
- msec: 5120
- hash: "b4e1a4b1b649820be217c46b5086c8a4"
- }
- Frame {
- msec: 5136
- hash: "4de7d7ce85717eb9a67c61745ea26c0a"
- }
- Frame {
- msec: 5152
- hash: "c8ee53b7e659e10c7dbcf44e1a45f794"
- }
- Frame {
- msec: 5168
- hash: "f46ce03bc5a932c39862577c5a5cd24c"
- }
- Frame {
- msec: 5184
- hash: "d417370ed6fb99ccfa443eb97e6de331"
- }
- Frame {
- msec: 5200
- hash: "336af06572992960c829d4a209048263"
- }
- Frame {
- msec: 5216
- hash: "4066e8eef292abf9b58bc89b4b5f3ce9"
- }
- Frame {
- msec: 5232
- hash: "360f037a02bf4a337b278886266ff2f1"
- }
- Frame {
- msec: 5248
- hash: "79e9f387b0ce164057640c0caab8d10d"
- }
- Frame {
- msec: 5264
- hash: "ee8741d1810303cfe5ecff39c7d52fdd"
- }
- Frame {
- msec: 5280
- hash: "4cba1c857f0af49d7fe68584f99c89d7"
- }
- Frame {
- msec: 5296
- hash: "c0ae482a2fbb9f15a2c2ff631cc85c2c"
- }
- Frame {
- msec: 5312
- hash: "3b6bf6d6a0aeebdc92eff4e336fd3b6e"
- }
- Frame {
- msec: 5328
- hash: "43033eb8aeba6b49c135a1702f6b8f47"
- }
- Frame {
- msec: 5344
- hash: "1319c7e3a84484723891ee43a80bc765"
- }
- Frame {
- msec: 5360
- hash: "838ec693c923565d77b060f262beb1e8"
- }
- Frame {
- msec: 5376
- hash: "74306669836425de03cec617d4ed849a"
- }
- Frame {
- msec: 5392
- hash: "c063f4951755c8939399d0d560a0f762"
- }
- Frame {
- msec: 5408
- hash: "512c739e0ff25f7d6b983a193f7fc2c3"
- }
- Frame {
- msec: 5424
- hash: "6c5f69cc2ce2992fd2ecb0ea3691e2b8"
- }
- Frame {
- msec: 5440
- hash: "f5dbc5ce0ba00eafb9379ee86de67150"
- }
- Frame {
- msec: 5456
- hash: "f62bb7d8d9749272ca3e2bd1931598fb"
- }
- Frame {
- msec: 5472
- hash: "052fdac05286edcdd7fcd4d6d9582f39"
- }
- Frame {
- msec: 5488
- hash: "ac4702306e5be156fe7b069cb90e1038"
- }
- Frame {
- msec: 5504
- hash: "127e94c79f4d33e5f223a0853629245f"
- }
- Frame {
- msec: 5520
- hash: "dd77216b0a90c46dd5c264d38ab0fd74"
- }
- Frame {
- msec: 5536
- hash: "a4e50b39aa367d4cd7650d088d186856"
- }
- Frame {
- msec: 5552
- hash: "6e14946b9b23f0fc137bd61c02af1ca5"
- }
- Frame {
- msec: 5568
- hash: "8c550d5e4cfbcee2c7bd6c20dba53f41"
- }
- Frame {
- msec: 5584
- hash: "9f2385fb614bdaafe022712148f786d2"
- }
- Frame {
- msec: 5600
- hash: "c87903c96ae5a4b91c5bda524bfd4a4f"
- }
- Frame {
- msec: 5616
- hash: "9a98de9b4237b7c0ccb4468344d410bc"
- }
- Frame {
- msec: 5632
- hash: "7ff448f395ff50cde1f6e6cfaf0c1541"
- }
- Frame {
- msec: 5648
- hash: "ab7a6998a5b26e3d58bd1d0a949f3709"
- }
- Frame {
- msec: 5664
- hash: "ab7a6998a5b26e3d58bd1d0a949f3709"
- }
- Frame {
- msec: 5680
- hash: "2e1b5636ab75af91bd5b0d48c04828f5"
- }
- Frame {
- msec: 5696
- hash: "0976b605c78f6f8512acdfb61b9d123a"
- }
- Frame {
- msec: 5712
- hash: "bb816bfd8bd3972c80c3a76c9ddf785e"
- }
- Frame {
- msec: 5728
- hash: "c3518990fc7aa5660a9e86034cf4c46f"
- }
- Frame {
- msec: 5744
- hash: "b27230d8aeb214e18b43de167213ef7b"
- }
- Frame {
- msec: 5760
- image: "follow.5.png"
- }
- Frame {
- msec: 5776
- hash: "fc55f00ae456c2687ed05ab4b6906a33"
- }
- Frame {
- msec: 5792
- hash: "50051a48d1fae3bc9c9d1f0a964d9561"
- }
- Frame {
- msec: 5808
- hash: "279a38d7261241c744c2317ea9843567"
- }
- Frame {
- msec: 5824
- hash: "0b3ed3960713dbda36326b7de492c42e"
- }
- Frame {
- msec: 5840
- hash: "fff5737541317406c4a0ef06f1cdc041"
- }
- Frame {
- msec: 5856
- hash: "47aef0d79da45139a3981a75290cc9b8"
- }
- Frame {
- msec: 5872
- hash: "d79f9f9371c76a855ea4f2cdeed97acd"
- }
- Frame {
- msec: 5888
- hash: "66610a0d5b926d419da26e20b04b55a5"
- }
- Frame {
- msec: 5904
- hash: "9891ad954da8535b44cc234bb2588f30"
- }
- Frame {
- msec: 5920
- hash: "b53056146701fae1598ab49e6399db01"
- }
- Frame {
- msec: 5936
- hash: "064799027a3f60458a3797c6c87d3e29"
- }
- Frame {
- msec: 5952
- hash: "81ad252f10e6f8f2a08e7df1d25e8a47"
- }
- Frame {
- msec: 5968
- hash: "09fbd923da02844f50ad25059f82560c"
- }
- Frame {
- msec: 5984
- hash: "f41d8370afdce8a154ab42204ca8d92d"
- }
- Frame {
- msec: 6000
- hash: "748b2d020c28b3ac36b08377b4a2544b"
- }
- Frame {
- msec: 6016
- hash: "748b2d020c28b3ac36b08377b4a2544b"
- }
- Frame {
- msec: 6032
- hash: "d8c02a54c0d1df20127025d547c741af"
- }
- Frame {
- msec: 6048
- hash: "d8c02a54c0d1df20127025d547c741af"
- }
- Frame {
- msec: 6064
- hash: "d7fd0dab22fec0f68ed01cfd6d32e7f5"
- }
- Frame {
- msec: 6080
- hash: "f0b035eda10c07f5c3c825784ad96437"
- }
- Frame {
- msec: 6096
- hash: "54b83800f8a01e1a4d57b8b1d371fb09"
- }
- Frame {
- msec: 6112
- hash: "19ad51c31e9cfdb314c76f323574806c"
- }
- Frame {
- msec: 6128
- hash: "dcf269a115781eb4df232a527de87a87"
- }
- Frame {
- msec: 6144
- hash: "95053206702a6118c23b541ff7fbef0d"
- }
- Frame {
- msec: 6160
- hash: "933a158398ee746c0465c2e7af9b6b4d"
- }
- Frame {
- msec: 6176
- hash: "ade4a4aa03f5787dce1331ed27ff9c6e"
- }
- Frame {
- msec: 6192
- hash: "9ecc7d4cb5cf0dd815e208e13e2c932a"
- }
- Frame {
- msec: 6208
- hash: "98e40cba2e717e57a5dcd3413e166f65"
- }
- Frame {
- msec: 6224
- hash: "f68f45b71f6d596eaa76fa2bc46cfe1b"
- }
- Frame {
- msec: 6240
- hash: "9230c9b1013b83b073ccb90d2633043f"
- }
- Frame {
- msec: 6256
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6272
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6288
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6304
- hash: "96008d5b8446f67e07129d02300d122d"
- }
- Frame {
- msec: 6320
- hash: "96008d5b8446f67e07129d02300d122d"
- }
- Frame {
- msec: 6336
- hash: "96008d5b8446f67e07129d02300d122d"
- }
- Frame {
- msec: 6352
- hash: "96008d5b8446f67e07129d02300d122d"
- }
- Frame {
- msec: 6368
- hash: "96008d5b8446f67e07129d02300d122d"
- }
- Frame {
- msec: 6384
- hash: "478be760047d33bd66017bdd304ff3ae"
- }
- Frame {
- msec: 6400
- hash: "478be760047d33bd66017bdd304ff3ae"
- }
- Frame {
- msec: 6416
- hash: "478be760047d33bd66017bdd304ff3ae"
- }
- Frame {
- msec: 6432
- hash: "478be760047d33bd66017bdd304ff3ae"
- }
- Frame {
- msec: 6448
- hash: "478be760047d33bd66017bdd304ff3ae"
- }
- Frame {
- msec: 6464
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6480
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6496
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6512
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6528
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6544
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6560
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6576
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6592
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6608
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6624
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6640
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6656
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6672
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6688
- hash: "8ff11dfe2642dc099c240e8aef8285df"
- }
- Frame {
- msec: 6704
- hash: "01ac8ff953f8f83c6fa2252fe6ff6698"
- }
- Frame {
- msec: 6720
- image: "follow.6.png"
- }
- Frame {
- msec: 6736
- hash: "01ac8ff953f8f83c6fa2252fe6ff6698"
- }
- Frame {
- msec: 6752
- hash: "01ac8ff953f8f83c6fa2252fe6ff6698"
- }
- Frame {
- msec: 6768
- hash: "01ac8ff953f8f83c6fa2252fe6ff6698"
- }
- Frame {
- msec: 6784
- hash: "01ac8ff953f8f83c6fa2252fe6ff6698"
- }
- Frame {
- msec: 6800
- hash: "01ac8ff953f8f83c6fa2252fe6ff6698"
- }
- Frame {
- msec: 6816
- hash: "01ac8ff953f8f83c6fa2252fe6ff6698"
- }
- Frame {
- msec: 6832
- hash: "96008d5b8446f67e07129d02300d122d"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 6848
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6864
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6880
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6896
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6912
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
- Frame {
- msec: 6928
- hash: "5d0fc4842b75703d29816fa0330624ba"
- }
-}
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
new file mode 100644
index 0000000000..1b808efd3e
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..5485174eb1
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml
@@ -0,0 +1,247 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "multilineAlign.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "3fc7ab44f913d350f7aef342b958e56d"
+ }
+ Frame {
+ msec: 48
+ hash: "3fc7ab44f913d350f7aef342b958e56d"
+ }
+ Frame {
+ msec: 64
+ hash: "3fc7ab44f913d350f7aef342b958e56d"
+ }
+ Frame {
+ msec: 80
+ hash: "3fc7ab44f913d350f7aef342b958e56d"
+ }
+ Frame {
+ msec: 96
+ hash: "3fc7ab44f913d350f7aef342b958e56d"
+ }
+ Frame {
+ msec: 112
+ hash: "3fc7ab44f913d350f7aef342b958e56d"
+ }
+ Frame {
+ msec: 128
+ hash: "3fc7ab44f913d350f7aef342b958e56d"
+ }
+ Frame {
+ msec: 144
+ hash: "3fc7ab44f913d350f7aef342b958e56d"
+ }
+ Frame {
+ msec: 160
+ hash: "3fc7ab44f913d350f7aef342b958e56d"
+ }
+ Frame {
+ msec: 176
+ hash: "a495a8a95c8aa82ac437c2f2970bd42d"
+ }
+ Frame {
+ msec: 192
+ hash: "a495a8a95c8aa82ac437c2f2970bd42d"
+ }
+ Frame {
+ msec: 208
+ hash: "a495a8a95c8aa82ac437c2f2970bd42d"
+ }
+ Frame {
+ msec: 224
+ hash: "a495a8a95c8aa82ac437c2f2970bd42d"
+ }
+ Frame {
+ msec: 240
+ hash: "a495a8a95c8aa82ac437c2f2970bd42d"
+ }
+ Frame {
+ msec: 256
+ hash: "a495a8a95c8aa82ac437c2f2970bd42d"
+ }
+ Frame {
+ msec: 272
+ hash: "a495a8a95c8aa82ac437c2f2970bd42d"
+ }
+ Frame {
+ msec: 288
+ hash: "a495a8a95c8aa82ac437c2f2970bd42d"
+ }
+ Frame {
+ msec: 304
+ hash: "a495a8a95c8aa82ac437c2f2970bd42d"
+ }
+ Frame {
+ msec: 320
+ hash: "a495a8a95c8aa82ac437c2f2970bd42d"
+ }
+ Frame {
+ msec: 336
+ hash: "e2d2a6e60537b9a434d0029ef5ff26dc"
+ }
+ Frame {
+ msec: 352
+ hash: "e2d2a6e60537b9a434d0029ef5ff26dc"
+ }
+ Frame {
+ msec: 368
+ hash: "e2d2a6e60537b9a434d0029ef5ff26dc"
+ }
+ Frame {
+ msec: 384
+ hash: "e2d2a6e60537b9a434d0029ef5ff26dc"
+ }
+ Frame {
+ msec: 400
+ hash: "e2d2a6e60537b9a434d0029ef5ff26dc"
+ }
+ Frame {
+ msec: 416
+ hash: "e2d2a6e60537b9a434d0029ef5ff26dc"
+ }
+ Frame {
+ msec: 432
+ hash: "e2d2a6e60537b9a434d0029ef5ff26dc"
+ }
+ Frame {
+ msec: 448
+ hash: "e2d2a6e60537b9a434d0029ef5ff26dc"
+ }
+ Frame {
+ msec: 464
+ hash: "e2d2a6e60537b9a434d0029ef5ff26dc"
+ }
+ Frame {
+ msec: 480
+ hash: "e2d2a6e60537b9a434d0029ef5ff26dc"
+ }
+ Frame {
+ msec: 496
+ hash: "00cba961e67c2124ace75dddb657cd6c"
+ }
+ Frame {
+ msec: 512
+ hash: "00cba961e67c2124ace75dddb657cd6c"
+ }
+ Frame {
+ msec: 528
+ hash: "00cba961e67c2124ace75dddb657cd6c"
+ }
+ Frame {
+ msec: 544
+ hash: "00cba961e67c2124ace75dddb657cd6c"
+ }
+ Frame {
+ msec: 560
+ hash: "00cba961e67c2124ace75dddb657cd6c"
+ }
+ Frame {
+ msec: 576
+ hash: "00cba961e67c2124ace75dddb657cd6c"
+ }
+ Frame {
+ msec: 592
+ hash: "00cba961e67c2124ace75dddb657cd6c"
+ }
+ Frame {
+ msec: 608
+ hash: "00cba961e67c2124ace75dddb657cd6c"
+ }
+ Frame {
+ msec: 624
+ hash: "00cba961e67c2124ace75dddb657cd6c"
+ }
+ Frame {
+ msec: 640
+ hash: "00cba961e67c2124ace75dddb657cd6c"
+ }
+ Frame {
+ msec: 656
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 672
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 688
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 704
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 720
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 736
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 752
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 768
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 784
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 800
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 816
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 832
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 848
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 864
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 880
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 896
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 912
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 928
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 944
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+ Frame {
+ msec: 960
+ hash: "31d518de83e195def2d957b7d86b98e5"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.0.png
new file mode 100644
index 0000000000..38f205133e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.qml
new file mode 100644
index 0000000000..d431bb82aa
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.qml
@@ -0,0 +1,247 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "multilineAlign.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "d80fd046c582a26230e547471f290f12"
+ }
+ Frame {
+ msec: 48
+ hash: "d80fd046c582a26230e547471f290f12"
+ }
+ Frame {
+ msec: 64
+ hash: "d80fd046c582a26230e547471f290f12"
+ }
+ Frame {
+ msec: 80
+ hash: "d80fd046c582a26230e547471f290f12"
+ }
+ Frame {
+ msec: 96
+ hash: "d80fd046c582a26230e547471f290f12"
+ }
+ Frame {
+ msec: 112
+ hash: "d80fd046c582a26230e547471f290f12"
+ }
+ Frame {
+ msec: 128
+ hash: "d80fd046c582a26230e547471f290f12"
+ }
+ Frame {
+ msec: 144
+ hash: "d80fd046c582a26230e547471f290f12"
+ }
+ Frame {
+ msec: 160
+ hash: "d80fd046c582a26230e547471f290f12"
+ }
+ Frame {
+ msec: 176
+ hash: "f9e466557e920150c638621536d94e5b"
+ }
+ Frame {
+ msec: 192
+ hash: "f9e466557e920150c638621536d94e5b"
+ }
+ Frame {
+ msec: 208
+ hash: "f9e466557e920150c638621536d94e5b"
+ }
+ Frame {
+ msec: 224
+ hash: "f9e466557e920150c638621536d94e5b"
+ }
+ Frame {
+ msec: 240
+ hash: "f9e466557e920150c638621536d94e5b"
+ }
+ Frame {
+ msec: 256
+ hash: "f9e466557e920150c638621536d94e5b"
+ }
+ Frame {
+ msec: 272
+ hash: "f9e466557e920150c638621536d94e5b"
+ }
+ Frame {
+ msec: 288
+ hash: "f9e466557e920150c638621536d94e5b"
+ }
+ Frame {
+ msec: 304
+ hash: "f9e466557e920150c638621536d94e5b"
+ }
+ Frame {
+ msec: 320
+ hash: "f9e466557e920150c638621536d94e5b"
+ }
+ Frame {
+ msec: 336
+ hash: "40b5718a9370c332f254a3ead05dfe5b"
+ }
+ Frame {
+ msec: 352
+ hash: "40b5718a9370c332f254a3ead05dfe5b"
+ }
+ Frame {
+ msec: 368
+ hash: "40b5718a9370c332f254a3ead05dfe5b"
+ }
+ Frame {
+ msec: 384
+ hash: "40b5718a9370c332f254a3ead05dfe5b"
+ }
+ Frame {
+ msec: 400
+ hash: "40b5718a9370c332f254a3ead05dfe5b"
+ }
+ Frame {
+ msec: 416
+ hash: "40b5718a9370c332f254a3ead05dfe5b"
+ }
+ Frame {
+ msec: 432
+ hash: "40b5718a9370c332f254a3ead05dfe5b"
+ }
+ Frame {
+ msec: 448
+ hash: "40b5718a9370c332f254a3ead05dfe5b"
+ }
+ Frame {
+ msec: 464
+ hash: "40b5718a9370c332f254a3ead05dfe5b"
+ }
+ Frame {
+ msec: 480
+ hash: "40b5718a9370c332f254a3ead05dfe5b"
+ }
+ Frame {
+ msec: 496
+ hash: "3249c560c69e915020f9632acd1c5eca"
+ }
+ Frame {
+ msec: 512
+ hash: "3249c560c69e915020f9632acd1c5eca"
+ }
+ Frame {
+ msec: 528
+ hash: "3249c560c69e915020f9632acd1c5eca"
+ }
+ Frame {
+ msec: 544
+ hash: "3249c560c69e915020f9632acd1c5eca"
+ }
+ Frame {
+ msec: 560
+ hash: "3249c560c69e915020f9632acd1c5eca"
+ }
+ Frame {
+ msec: 576
+ hash: "3249c560c69e915020f9632acd1c5eca"
+ }
+ Frame {
+ msec: 592
+ hash: "3249c560c69e915020f9632acd1c5eca"
+ }
+ Frame {
+ msec: 608
+ hash: "3249c560c69e915020f9632acd1c5eca"
+ }
+ Frame {
+ msec: 624
+ hash: "3249c560c69e915020f9632acd1c5eca"
+ }
+ Frame {
+ msec: 640
+ hash: "3249c560c69e915020f9632acd1c5eca"
+ }
+ Frame {
+ msec: 656
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 672
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 688
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 704
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 720
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 736
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 752
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 768
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 784
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 800
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 816
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 832
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 848
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 864
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 880
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 896
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 912
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 928
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 944
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+ Frame {
+ msec: 960
+ hash: "2df61c56ba08ef258a0d493760127a8d"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.0.png
new file mode 100644
index 0000000000..e6b2b3cc01
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.qml
new file mode 100644
index 0000000000..1b43aa36cc
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data/multilineAlign.qml
@@ -0,0 +1,247 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 32
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 48
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 64
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 80
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 96
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 112
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 128
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 144
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 160
+ hash: "1ec47db85ba34bf1900445a2ab87b5e3"
+ }
+ Frame {
+ msec: 176
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 192
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 208
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 224
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 240
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 256
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 272
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 288
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 304
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 320
+ hash: "1fc2a63fa95e277bed60abfdecc7c82f"
+ }
+ Frame {
+ msec: 336
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 352
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 368
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 384
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 400
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 416
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 432
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 448
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 464
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 480
+ hash: "3a4e863d83f5d475e0c8c5121905bd87"
+ }
+ Frame {
+ msec: 496
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 512
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 528
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 544
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 560
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 576
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 592
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 608
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 624
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 640
+ hash: "8887c8f40667f65a814d74b6edcfb81c"
+ }
+ Frame {
+ msec: 656
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 672
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 688
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 704
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 720
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 736
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 752
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 768
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 784
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 800
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 816
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 832
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 848
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 864
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 880
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 896
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 912
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 928
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 944
+ hash: "436000b48f688120d96919227d9e67b4"
+ }
+ Frame {
+ msec: 960
+ image: "multilineAlign.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/multilineAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/multilineAlign.qml
new file mode 100644
index 0000000000..a427719202
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/multilineAlign.qml
@@ -0,0 +1,25 @@
+import QtQuick 1.0
+import "../../shared" 1.0
+
+/*Tests both the alignments of multiline text, and that
+ it can deal with changing them properly
+*/
+Item{
+ width: 100
+ height: 80
+ property int stage: 0
+ onStageChanged: if(stage == 6) Qt.quit();
+ TestText{
+ text: "I am the very model of a modern major general."
+ anchors.fill: parent;
+ wrapMode: Text.WordWrap
+ horizontalAlignment: (stage<1 ? Text.AlignRight : (stage<3 ? Text.AlignHCenter : Text.AlignLeft))
+ verticalAlignment: (stage<2 ? Text.AlignBottom : (stage<4 ? Text.AlignVCenter : Text.AlignTop))
+ }
+ Timer{
+ interval: 160
+ running: true
+ repeat: true
+ onTriggered: stage += 1
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png
new file mode 100644
index 0000000000..1fd0213767
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml
new file mode 100644
index 0000000000..c5a5a7619a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml
@@ -0,0 +1,131 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "parentanchor.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 48
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 64
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 80
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 96
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 112
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 128
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 144
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 160
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 176
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 192
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 208
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 224
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 240
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 256
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 272
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 288
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 304
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 320
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 336
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 352
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 368
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 384
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 400
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 416
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 432
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 448
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 464
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 480
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+ Frame {
+ msec: 496
+ hash: "f45eda9414f7db5ed1f97a8275459abd"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.0.png
new file mode 100644
index 0000000000..d85498b455
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml
index 880609b674..26cd97b590 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml
@@ -6,126 +6,126 @@ VisualTest {
}
Frame {
msec: 16
- hash: "3e022a120a2dbe688d53657508de36cf"
+ image: "parentanchor.0.png"
}
Frame {
msec: 32
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 48
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 64
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 80
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 96
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 112
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 128
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 144
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 160
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 176
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 192
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 208
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 224
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 240
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 256
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 272
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 288
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 304
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 320
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 336
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 352
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 368
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 384
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 400
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 416
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 432
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 448
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 464
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 480
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
Frame {
msec: 496
- hash: "3e022a120a2dbe688d53657508de36cf"
+ hash: "8e36621abce059cb8579dd04b28e8d58"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/parentanchor.qml
index ec1f8b34da..618a65f063 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; color: "lightsteelblue"
+ 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
new file mode 100644
index 0000000000..aca7c2dd66
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/QTBUG-14469.qml
@@ -0,0 +1,23 @@
+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.
+ Test passes if it goes from "" to 13 back to "" with all numbers being painted (and the text disappearing at 0)
+ */
+
+Item{
+ width: 80
+ height: 80
+ property int val: 0
+ Text{
+ id: txt;
+ text: val == 0 ? "" : val
+ }
+ Timer{
+ interval: 100
+ running: true
+ repeat: true;
+ onTriggered: {val = (val + 1) % 14;}
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.0.png
new file mode 100644
index 0000000000..4d6bf55f73
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.1.png
new file mode 100644
index 0000000000..a75da16eeb
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.qml
new file mode 100644
index 0000000000..002e1c8d77
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.qml
@@ -0,0 +1,475 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "QTBUG-14469.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 48
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 64
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 80
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 96
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 112
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 128
+ hash: "cf74324c2a0c8f45c728d42390aac1e0"
+ }
+ Frame {
+ msec: 144
+ hash: "cf74324c2a0c8f45c728d42390aac1e0"
+ }
+ Frame {
+ msec: 160
+ hash: "cf74324c2a0c8f45c728d42390aac1e0"
+ }
+ Frame {
+ msec: 176
+ hash: "cf74324c2a0c8f45c728d42390aac1e0"
+ }
+ Frame {
+ msec: 192
+ hash: "cf74324c2a0c8f45c728d42390aac1e0"
+ }
+ Frame {
+ msec: 208
+ hash: "cf74324c2a0c8f45c728d42390aac1e0"
+ }
+ Frame {
+ msec: 224
+ hash: "07c938ac9ff9f591e84fc553291c7c49"
+ }
+ Frame {
+ msec: 240
+ hash: "07c938ac9ff9f591e84fc553291c7c49"
+ }
+ Frame {
+ msec: 256
+ hash: "07c938ac9ff9f591e84fc553291c7c49"
+ }
+ Frame {
+ msec: 272
+ hash: "07c938ac9ff9f591e84fc553291c7c49"
+ }
+ Frame {
+ msec: 288
+ hash: "07c938ac9ff9f591e84fc553291c7c49"
+ }
+ Frame {
+ msec: 304
+ hash: "07c938ac9ff9f591e84fc553291c7c49"
+ }
+ Frame {
+ msec: 320
+ hash: "7b585eb6226e6ce2de355f9730dba377"
+ }
+ Frame {
+ msec: 336
+ hash: "7b585eb6226e6ce2de355f9730dba377"
+ }
+ Frame {
+ msec: 352
+ hash: "7b585eb6226e6ce2de355f9730dba377"
+ }
+ Frame {
+ msec: 368
+ hash: "7b585eb6226e6ce2de355f9730dba377"
+ }
+ Frame {
+ msec: 384
+ hash: "7b585eb6226e6ce2de355f9730dba377"
+ }
+ Frame {
+ msec: 400
+ hash: "7b585eb6226e6ce2de355f9730dba377"
+ }
+ Frame {
+ msec: 416
+ hash: "a7817a7d902ab2fe2875183feb6513dd"
+ }
+ Frame {
+ msec: 432
+ hash: "a7817a7d902ab2fe2875183feb6513dd"
+ }
+ Frame {
+ msec: 448
+ hash: "a7817a7d902ab2fe2875183feb6513dd"
+ }
+ Frame {
+ msec: 464
+ hash: "a7817a7d902ab2fe2875183feb6513dd"
+ }
+ Frame {
+ msec: 480
+ hash: "a7817a7d902ab2fe2875183feb6513dd"
+ }
+ Frame {
+ msec: 496
+ hash: "a7817a7d902ab2fe2875183feb6513dd"
+ }
+ Frame {
+ msec: 512
+ hash: "a7817a7d902ab2fe2875183feb6513dd"
+ }
+ Frame {
+ msec: 528
+ hash: "067dfe70eca44e2157b723858897c90e"
+ }
+ Frame {
+ msec: 544
+ hash: "067dfe70eca44e2157b723858897c90e"
+ }
+ Frame {
+ msec: 560
+ hash: "067dfe70eca44e2157b723858897c90e"
+ }
+ Frame {
+ msec: 576
+ hash: "067dfe70eca44e2157b723858897c90e"
+ }
+ Frame {
+ msec: 592
+ hash: "067dfe70eca44e2157b723858897c90e"
+ }
+ Frame {
+ msec: 608
+ hash: "067dfe70eca44e2157b723858897c90e"
+ }
+ Frame {
+ msec: 624
+ hash: "b1ac0015f173bf5789daa5d45d04dadd"
+ }
+ Frame {
+ msec: 640
+ hash: "b1ac0015f173bf5789daa5d45d04dadd"
+ }
+ Frame {
+ msec: 656
+ hash: "b1ac0015f173bf5789daa5d45d04dadd"
+ }
+ Frame {
+ msec: 672
+ hash: "b1ac0015f173bf5789daa5d45d04dadd"
+ }
+ Frame {
+ msec: 688
+ hash: "b1ac0015f173bf5789daa5d45d04dadd"
+ }
+ Frame {
+ msec: 704
+ hash: "b1ac0015f173bf5789daa5d45d04dadd"
+ }
+ Frame {
+ msec: 720
+ hash: "431cb09ccdcfab7c3ff7d498aa1f0816"
+ }
+ Frame {
+ msec: 736
+ hash: "431cb09ccdcfab7c3ff7d498aa1f0816"
+ }
+ Frame {
+ msec: 752
+ hash: "431cb09ccdcfab7c3ff7d498aa1f0816"
+ }
+ Frame {
+ msec: 768
+ hash: "431cb09ccdcfab7c3ff7d498aa1f0816"
+ }
+ Frame {
+ msec: 784
+ hash: "431cb09ccdcfab7c3ff7d498aa1f0816"
+ }
+ Frame {
+ msec: 800
+ hash: "431cb09ccdcfab7c3ff7d498aa1f0816"
+ }
+ Frame {
+ msec: 816
+ hash: "533b23f29fe5f9dc85a6ca390c6dd023"
+ }
+ Frame {
+ msec: 832
+ hash: "533b23f29fe5f9dc85a6ca390c6dd023"
+ }
+ Frame {
+ msec: 848
+ hash: "533b23f29fe5f9dc85a6ca390c6dd023"
+ }
+ Frame {
+ msec: 864
+ hash: "533b23f29fe5f9dc85a6ca390c6dd023"
+ }
+ Frame {
+ msec: 880
+ hash: "533b23f29fe5f9dc85a6ca390c6dd023"
+ }
+ Frame {
+ msec: 896
+ hash: "533b23f29fe5f9dc85a6ca390c6dd023"
+ }
+ Frame {
+ msec: 912
+ hash: "533b23f29fe5f9dc85a6ca390c6dd023"
+ }
+ Frame {
+ msec: 928
+ hash: "cd397908009ddf16ec3101efb0d7468e"
+ }
+ Frame {
+ msec: 944
+ hash: "cd397908009ddf16ec3101efb0d7468e"
+ }
+ Frame {
+ msec: 960
+ hash: "cd397908009ddf16ec3101efb0d7468e"
+ }
+ Frame {
+ msec: 976
+ image: "QTBUG-14469.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "cd397908009ddf16ec3101efb0d7468e"
+ }
+ Frame {
+ msec: 1008
+ hash: "cd397908009ddf16ec3101efb0d7468e"
+ }
+ Frame {
+ msec: 1024
+ hash: "a1eebf1a97314851b5154802f05abe8d"
+ }
+ Frame {
+ msec: 1040
+ hash: "a1eebf1a97314851b5154802f05abe8d"
+ }
+ Frame {
+ msec: 1056
+ hash: "a1eebf1a97314851b5154802f05abe8d"
+ }
+ Frame {
+ msec: 1072
+ hash: "a1eebf1a97314851b5154802f05abe8d"
+ }
+ Frame {
+ msec: 1088
+ hash: "a1eebf1a97314851b5154802f05abe8d"
+ }
+ Frame {
+ msec: 1104
+ hash: "a1eebf1a97314851b5154802f05abe8d"
+ }
+ Frame {
+ msec: 1120
+ hash: "71d91d85b9c555eb9b39dac79b35dd46"
+ }
+ Frame {
+ msec: 1136
+ hash: "71d91d85b9c555eb9b39dac79b35dd46"
+ }
+ Frame {
+ msec: 1152
+ hash: "71d91d85b9c555eb9b39dac79b35dd46"
+ }
+ Frame {
+ msec: 1168
+ hash: "71d91d85b9c555eb9b39dac79b35dd46"
+ }
+ Frame {
+ msec: 1184
+ hash: "71d91d85b9c555eb9b39dac79b35dd46"
+ }
+ Frame {
+ msec: 1200
+ hash: "71d91d85b9c555eb9b39dac79b35dd46"
+ }
+ Frame {
+ msec: 1216
+ hash: "b1da2d1f4aad2a197a80788607bd867d"
+ }
+ Frame {
+ msec: 1232
+ hash: "b1da2d1f4aad2a197a80788607bd867d"
+ }
+ Frame {
+ msec: 1248
+ hash: "b1da2d1f4aad2a197a80788607bd867d"
+ }
+ Frame {
+ msec: 1264
+ hash: "b1da2d1f4aad2a197a80788607bd867d"
+ }
+ Frame {
+ msec: 1280
+ hash: "b1da2d1f4aad2a197a80788607bd867d"
+ }
+ Frame {
+ msec: 1296
+ hash: "b1da2d1f4aad2a197a80788607bd867d"
+ }
+ Frame {
+ msec: 1312
+ hash: "b1da2d1f4aad2a197a80788607bd867d"
+ }
+ Frame {
+ msec: 1328
+ hash: "df14e9cfeba3850bae7cad111fdbc8df"
+ }
+ Frame {
+ msec: 1344
+ hash: "df14e9cfeba3850bae7cad111fdbc8df"
+ }
+ Frame {
+ msec: 1360
+ hash: "df14e9cfeba3850bae7cad111fdbc8df"
+ }
+ Frame {
+ msec: 1376
+ hash: "df14e9cfeba3850bae7cad111fdbc8df"
+ }
+ Frame {
+ msec: 1392
+ hash: "df14e9cfeba3850bae7cad111fdbc8df"
+ }
+ Frame {
+ msec: 1408
+ hash: "df14e9cfeba3850bae7cad111fdbc8df"
+ }
+ Frame {
+ msec: 1424
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1440
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1456
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1472
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1488
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1504
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1520
+ hash: "cf74324c2a0c8f45c728d42390aac1e0"
+ }
+ Frame {
+ msec: 1536
+ hash: "cf74324c2a0c8f45c728d42390aac1e0"
+ }
+ Frame {
+ msec: 1552
+ hash: "cf74324c2a0c8f45c728d42390aac1e0"
+ }
+ Frame {
+ msec: 1568
+ hash: "cf74324c2a0c8f45c728d42390aac1e0"
+ }
+ Frame {
+ msec: 1584
+ hash: "cf74324c2a0c8f45c728d42390aac1e0"
+ }
+ Frame {
+ msec: 1600
+ hash: "cf74324c2a0c8f45c728d42390aac1e0"
+ }
+ Frame {
+ msec: 1616
+ hash: "07c938ac9ff9f591e84fc553291c7c49"
+ }
+ Frame {
+ msec: 1632
+ hash: "07c938ac9ff9f591e84fc553291c7c49"
+ }
+ Frame {
+ msec: 1648
+ hash: "07c938ac9ff9f591e84fc553291c7c49"
+ }
+ Frame {
+ msec: 1664
+ hash: "07c938ac9ff9f591e84fc553291c7c49"
+ }
+ Frame {
+ msec: 1680
+ hash: "07c938ac9ff9f591e84fc553291c7c49"
+ }
+ Frame {
+ msec: 1696
+ hash: "07c938ac9ff9f591e84fc553291c7c49"
+ }
+ Frame {
+ msec: 1712
+ hash: "07c938ac9ff9f591e84fc553291c7c49"
+ }
+ Frame {
+ msec: 1728
+ hash: "7b585eb6226e6ce2de355f9730dba377"
+ }
+ Frame {
+ msec: 1744
+ hash: "7b585eb6226e6ce2de355f9730dba377"
+ }
+ Frame {
+ msec: 1760
+ hash: "7b585eb6226e6ce2de355f9730dba377"
+ }
+ Frame {
+ msec: 1776
+ hash: "7b585eb6226e6ce2de355f9730dba377"
+ }
+ Frame {
+ msec: 1792
+ hash: "7b585eb6226e6ce2de355f9730dba377"
+ }
+ Frame {
+ msec: 1808
+ hash: "7b585eb6226e6ce2de355f9730dba377"
+ }
+ Frame {
+ msec: 1824
+ hash: "a7817a7d902ab2fe2875183feb6513dd"
+ }
+ Frame {
+ msec: 1840
+ hash: "a7817a7d902ab2fe2875183feb6513dd"
+ }
+ Frame {
+ msec: 1856
+ hash: "a7817a7d902ab2fe2875183feb6513dd"
+ }
+ Frame {
+ msec: 1872
+ hash: "a7817a7d902ab2fe2875183feb6513dd"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.0.png
new file mode 100644
index 0000000000..ee3c7447c0
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.qml
new file mode 100644
index 0000000000..b770836301
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-X11/QTBUG-14469.qml
@@ -0,0 +1,475 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "QTBUG-14469.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 48
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 64
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 80
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 96
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 112
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 128
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 144
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 160
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 176
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 192
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 208
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 224
+ hash: "834338b693368e154163f806f49d5ba3"
+ }
+ Frame {
+ msec: 240
+ hash: "834338b693368e154163f806f49d5ba3"
+ }
+ Frame {
+ msec: 256
+ hash: "834338b693368e154163f806f49d5ba3"
+ }
+ Frame {
+ msec: 272
+ hash: "834338b693368e154163f806f49d5ba3"
+ }
+ Frame {
+ msec: 288
+ hash: "834338b693368e154163f806f49d5ba3"
+ }
+ Frame {
+ msec: 304
+ hash: "834338b693368e154163f806f49d5ba3"
+ }
+ Frame {
+ msec: 320
+ hash: "4b79bd737312a5aa026b73c07bfd840c"
+ }
+ Frame {
+ msec: 336
+ hash: "4b79bd737312a5aa026b73c07bfd840c"
+ }
+ Frame {
+ msec: 352
+ hash: "4b79bd737312a5aa026b73c07bfd840c"
+ }
+ Frame {
+ msec: 368
+ hash: "4b79bd737312a5aa026b73c07bfd840c"
+ }
+ Frame {
+ msec: 384
+ hash: "4b79bd737312a5aa026b73c07bfd840c"
+ }
+ Frame {
+ msec: 400
+ hash: "4b79bd737312a5aa026b73c07bfd840c"
+ }
+ Frame {
+ msec: 416
+ hash: "daa67aed3e94e9e8823e8bed04aee960"
+ }
+ Frame {
+ msec: 432
+ hash: "daa67aed3e94e9e8823e8bed04aee960"
+ }
+ Frame {
+ msec: 448
+ hash: "daa67aed3e94e9e8823e8bed04aee960"
+ }
+ Frame {
+ msec: 464
+ hash: "daa67aed3e94e9e8823e8bed04aee960"
+ }
+ Frame {
+ msec: 480
+ hash: "daa67aed3e94e9e8823e8bed04aee960"
+ }
+ Frame {
+ msec: 496
+ hash: "daa67aed3e94e9e8823e8bed04aee960"
+ }
+ Frame {
+ msec: 512
+ hash: "daa67aed3e94e9e8823e8bed04aee960"
+ }
+ Frame {
+ msec: 528
+ hash: "75f26b0bbb2663bcadcedce260ef848a"
+ }
+ Frame {
+ msec: 544
+ hash: "75f26b0bbb2663bcadcedce260ef848a"
+ }
+ Frame {
+ msec: 560
+ hash: "75f26b0bbb2663bcadcedce260ef848a"
+ }
+ Frame {
+ msec: 576
+ hash: "75f26b0bbb2663bcadcedce260ef848a"
+ }
+ Frame {
+ msec: 592
+ hash: "75f26b0bbb2663bcadcedce260ef848a"
+ }
+ Frame {
+ msec: 608
+ hash: "75f26b0bbb2663bcadcedce260ef848a"
+ }
+ Frame {
+ msec: 624
+ hash: "6a8c8c0b7727e5e3063d93de59c7f0a2"
+ }
+ Frame {
+ msec: 640
+ hash: "6a8c8c0b7727e5e3063d93de59c7f0a2"
+ }
+ Frame {
+ msec: 656
+ hash: "6a8c8c0b7727e5e3063d93de59c7f0a2"
+ }
+ Frame {
+ msec: 672
+ hash: "6a8c8c0b7727e5e3063d93de59c7f0a2"
+ }
+ Frame {
+ msec: 688
+ hash: "6a8c8c0b7727e5e3063d93de59c7f0a2"
+ }
+ Frame {
+ msec: 704
+ hash: "6a8c8c0b7727e5e3063d93de59c7f0a2"
+ }
+ Frame {
+ msec: 720
+ hash: "d5bb5dd464f38af1790e0109033eb8ad"
+ }
+ Frame {
+ msec: 736
+ hash: "d5bb5dd464f38af1790e0109033eb8ad"
+ }
+ Frame {
+ msec: 752
+ hash: "d5bb5dd464f38af1790e0109033eb8ad"
+ }
+ Frame {
+ msec: 768
+ hash: "d5bb5dd464f38af1790e0109033eb8ad"
+ }
+ Frame {
+ msec: 784
+ hash: "d5bb5dd464f38af1790e0109033eb8ad"
+ }
+ Frame {
+ msec: 800
+ hash: "d5bb5dd464f38af1790e0109033eb8ad"
+ }
+ Frame {
+ msec: 816
+ hash: "8535be394c177dbdcb0435e35680e776"
+ }
+ Frame {
+ msec: 832
+ hash: "8535be394c177dbdcb0435e35680e776"
+ }
+ Frame {
+ msec: 848
+ hash: "8535be394c177dbdcb0435e35680e776"
+ }
+ Frame {
+ msec: 864
+ hash: "8535be394c177dbdcb0435e35680e776"
+ }
+ Frame {
+ msec: 880
+ hash: "8535be394c177dbdcb0435e35680e776"
+ }
+ Frame {
+ msec: 896
+ hash: "8535be394c177dbdcb0435e35680e776"
+ }
+ Frame {
+ msec: 912
+ hash: "8535be394c177dbdcb0435e35680e776"
+ }
+ Frame {
+ msec: 928
+ hash: "0ec4eba50495b474faf3feca4be64f7b"
+ }
+ Frame {
+ msec: 944
+ hash: "0ec4eba50495b474faf3feca4be64f7b"
+ }
+ Frame {
+ msec: 960
+ hash: "0ec4eba50495b474faf3feca4be64f7b"
+ }
+ Frame {
+ msec: 976
+ image: "QTBUG-14469.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "0ec4eba50495b474faf3feca4be64f7b"
+ }
+ Frame {
+ msec: 1008
+ hash: "0ec4eba50495b474faf3feca4be64f7b"
+ }
+ Frame {
+ msec: 1024
+ hash: "43993c686f4c10e91177297d8bb6eae9"
+ }
+ Frame {
+ msec: 1040
+ hash: "43993c686f4c10e91177297d8bb6eae9"
+ }
+ Frame {
+ msec: 1056
+ hash: "43993c686f4c10e91177297d8bb6eae9"
+ }
+ Frame {
+ msec: 1072
+ hash: "43993c686f4c10e91177297d8bb6eae9"
+ }
+ Frame {
+ msec: 1088
+ hash: "43993c686f4c10e91177297d8bb6eae9"
+ }
+ Frame {
+ msec: 1104
+ hash: "43993c686f4c10e91177297d8bb6eae9"
+ }
+ Frame {
+ msec: 1120
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1136
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1152
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1168
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1184
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1200
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1216
+ hash: "5f18ee7410e2d0b4d739abcec1b14bb4"
+ }
+ Frame {
+ msec: 1232
+ hash: "5f18ee7410e2d0b4d739abcec1b14bb4"
+ }
+ Frame {
+ msec: 1248
+ hash: "5f18ee7410e2d0b4d739abcec1b14bb4"
+ }
+ Frame {
+ msec: 1264
+ hash: "5f18ee7410e2d0b4d739abcec1b14bb4"
+ }
+ Frame {
+ msec: 1280
+ hash: "5f18ee7410e2d0b4d739abcec1b14bb4"
+ }
+ Frame {
+ msec: 1296
+ hash: "5f18ee7410e2d0b4d739abcec1b14bb4"
+ }
+ Frame {
+ msec: 1312
+ hash: "5f18ee7410e2d0b4d739abcec1b14bb4"
+ }
+ Frame {
+ msec: 1328
+ hash: "34ebe59f64ebc72fc2bf22af4118ec1f"
+ }
+ Frame {
+ msec: 1344
+ hash: "34ebe59f64ebc72fc2bf22af4118ec1f"
+ }
+ Frame {
+ msec: 1360
+ hash: "34ebe59f64ebc72fc2bf22af4118ec1f"
+ }
+ Frame {
+ msec: 1376
+ hash: "34ebe59f64ebc72fc2bf22af4118ec1f"
+ }
+ Frame {
+ msec: 1392
+ hash: "34ebe59f64ebc72fc2bf22af4118ec1f"
+ }
+ Frame {
+ msec: 1408
+ hash: "34ebe59f64ebc72fc2bf22af4118ec1f"
+ }
+ Frame {
+ msec: 1424
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1440
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1456
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1472
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1488
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1504
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1520
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1536
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1552
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1568
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1584
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1600
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1616
+ hash: "834338b693368e154163f806f49d5ba3"
+ }
+ Frame {
+ msec: 1632
+ hash: "834338b693368e154163f806f49d5ba3"
+ }
+ Frame {
+ msec: 1648
+ hash: "834338b693368e154163f806f49d5ba3"
+ }
+ Frame {
+ msec: 1664
+ hash: "834338b693368e154163f806f49d5ba3"
+ }
+ Frame {
+ msec: 1680
+ hash: "834338b693368e154163f806f49d5ba3"
+ }
+ Frame {
+ msec: 1696
+ hash: "834338b693368e154163f806f49d5ba3"
+ }
+ Frame {
+ msec: 1712
+ hash: "834338b693368e154163f806f49d5ba3"
+ }
+ Frame {
+ msec: 1728
+ hash: "4b79bd737312a5aa026b73c07bfd840c"
+ }
+ Frame {
+ msec: 1744
+ hash: "4b79bd737312a5aa026b73c07bfd840c"
+ }
+ Frame {
+ msec: 1760
+ hash: "4b79bd737312a5aa026b73c07bfd840c"
+ }
+ Frame {
+ msec: 1776
+ hash: "4b79bd737312a5aa026b73c07bfd840c"
+ }
+ Frame {
+ msec: 1792
+ hash: "4b79bd737312a5aa026b73c07bfd840c"
+ }
+ Frame {
+ msec: 1808
+ hash: "4b79bd737312a5aa026b73c07bfd840c"
+ }
+ Frame {
+ msec: 1824
+ hash: "daa67aed3e94e9e8823e8bed04aee960"
+ }
+ Frame {
+ msec: 1840
+ hash: "daa67aed3e94e9e8823e8bed04aee960"
+ }
+ Frame {
+ msec: 1856
+ hash: "daa67aed3e94e9e8823e8bed04aee960"
+ }
+ Frame {
+ msec: 1872
+ hash: "daa67aed3e94e9e8823e8bed04aee960"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.0.png
new file mode 100644
index 0000000000..b8cc1c70be
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.qml
new file mode 100644
index 0000000000..6201c72fc0
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data/QTBUG-14469.qml
@@ -0,0 +1,475 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 32
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 48
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 64
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 80
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 96
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 112
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 128
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 144
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 160
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 176
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 192
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 208
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 224
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 240
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 256
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 272
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 288
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 304
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 320
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 336
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 352
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 368
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 384
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 400
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 416
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 432
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 448
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 464
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 480
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 496
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 512
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 528
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 544
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 560
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 576
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 592
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 608
+ hash: "51cd7a5bc24cdb50832066cc04cae313"
+ }
+ Frame {
+ msec: 624
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 640
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 656
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 672
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 688
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 704
+ hash: "bac094de06155c73e4d2d9e2fd99b038"
+ }
+ Frame {
+ msec: 720
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 736
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 752
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 768
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 784
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 800
+ hash: "3159c438d2cb58e31b4b458ba417f794"
+ }
+ Frame {
+ msec: 816
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 832
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 848
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 864
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 880
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 896
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 912
+ hash: "a4f9c320c8aa558c66dd25d132bb5834"
+ }
+ Frame {
+ msec: 928
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 944
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 960
+ image: "QTBUG-14469.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 992
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 1008
+ hash: "b1a283365bbffbc0ddaa4aa661e52add"
+ }
+ Frame {
+ msec: 1024
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1040
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1056
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1072
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1088
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1104
+ hash: "57ba00590bed6fe1b0f8fc3e54b9637e"
+ }
+ Frame {
+ msec: 1120
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1136
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1152
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1168
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1184
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1200
+ hash: "e1b070e2bf36e5d8a34cabc0d52b2830"
+ }
+ Frame {
+ msec: 1216
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1232
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1248
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1264
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1280
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1296
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1312
+ hash: "bc81044e90cc001fc351a1518ba4b41e"
+ }
+ Frame {
+ msec: 1328
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1344
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1360
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1376
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1392
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1408
+ hash: "18386b56e44b1f3981b3aa8fe980410b"
+ }
+ Frame {
+ msec: 1424
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1440
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1456
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1472
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1488
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1504
+ hash: "fab978e1e0ee5140d8131320ff2322e9"
+ }
+ Frame {
+ msec: 1520
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1536
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1552
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1568
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1584
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1600
+ hash: "6971eb49a32b8f9e09c24ac1340728cb"
+ }
+ Frame {
+ msec: 1616
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1632
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1648
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1664
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1680
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1696
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1712
+ hash: "449c6b632a3b85462fe3947a071ffa91"
+ }
+ Frame {
+ msec: 1728
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1744
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1760
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1776
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1792
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1808
+ hash: "9c804e5eec3b31acd55a510d301cc419"
+ }
+ Frame {
+ msec: 1824
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 1840
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 1856
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+ Frame {
+ msec: 1872
+ hash: "799c7a637b061686c1456c9c535594d3"
+ }
+}
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 0000000000..7e841649a8
--- /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 0000000000..7e841649a8
--- /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 0000000000..d6d8c2aa6f
--- /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
+ image: "qtbug_14865.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 48
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 64
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 80
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 96
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 112
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 128
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 144
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 160
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 176
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 192
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 208
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 224
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 240
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 256
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 272
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 288
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 304
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 320
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 336
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 352
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 368
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 384
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 400
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 416
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 432
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 448
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 464
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 480
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 496
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 512
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 528
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 544
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 560
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 576
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 592
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 608
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 624
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 640
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 656
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 672
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 688
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 704
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 720
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 736
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 752
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 768
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 784
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 800
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 816
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 832
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 848
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 864
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 880
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 896
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 912
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 928
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 944
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 960
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 976
+ image: "qtbug_14865.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 1008
+ hash: "212d34fa7425fe24398c9de6d4f10422"
+ }
+ Frame {
+ msec: 1024
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1040
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1056
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1072
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1088
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1104
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1120
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1136
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1152
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1168
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1184
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1200
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1216
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1232
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1248
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1264
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1280
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1296
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1312
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1328
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1344
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1360
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1376
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1392
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1408
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1424
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1440
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1456
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1472
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1488
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1504
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1520
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1536
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1552
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1568
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1584
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1600
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1616
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1632
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1648
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1664
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1680
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1696
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1712
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1728
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1744
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1760
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+}
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 0000000000..026d06c34a
--- /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.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.1.png
new file mode 100644
index 0000000000..026d06c34a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.1.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 0000000000..26d06565ad
--- /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
+ image: "qtbug_14865.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 48
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 64
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 80
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 96
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 112
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 128
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 144
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 160
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 176
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 192
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 208
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 224
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 240
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 256
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 272
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 288
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 304
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 320
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 336
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 352
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 368
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 384
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 400
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 416
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 432
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 448
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 464
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 480
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 496
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 512
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 528
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 544
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 560
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 576
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 592
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 608
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 624
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 640
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 656
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 672
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 688
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 704
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 720
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 736
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 752
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 768
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 784
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 800
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 816
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 832
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 848
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 864
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 880
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 896
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 912
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 928
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 944
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 960
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 976
+ image: "qtbug_14865.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 1008
+ hash: "4235bd6abcbdf6621c4c41153fbaada5"
+ }
+ Frame {
+ msec: 1024
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1040
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1056
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1072
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1088
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1104
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1120
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1136
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1152
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1168
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1184
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1200
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1216
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1232
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1248
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1264
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1280
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1296
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1312
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1328
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1344
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1360
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1376
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1392
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1408
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1424
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1440
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1456
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1472
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1488
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1504
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1520
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1536
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1552
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1568
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1584
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1600
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1616
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1632
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1648
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1664
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1680
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1696
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1712
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1728
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1744
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+ Frame {
+ msec: 1760
+ hash: "3ccd3d26158a50d8f0567bafd7a23e06"
+ }
+}
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 0000000000..a4bae3a20a
--- /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 0000000000..a470a66dd4
--- /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 eea336298b..749a9c5eeb 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png
new file mode 100644
index 0000000000..749a9c5eeb
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml
index 9439f73210..fbb542e3ac 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml
@@ -6,247 +6,247 @@ VisualTest {
}
Frame {
msec: 16
- hash: "1678890d66761a30100c37132ccec9a2"
+ image: "elide.0.png"
}
Frame {
msec: 32
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 48
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 64
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 80
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 96
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 112
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 128
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 144
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 160
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 176
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 192
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 208
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 224
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 240
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 256
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 272
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 288
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 304
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 320
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 336
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 352
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 368
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 384
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 400
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 416
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 432
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 448
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 464
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 480
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 496
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 512
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 528
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 544
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 560
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 576
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 592
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 608
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 624
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 640
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 656
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 672
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 688
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 704
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 720
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 736
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 752
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 768
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 784
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 800
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 816
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 832
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 848
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 864
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 880
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 896
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 912
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 928
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 944
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 960
- image: "elide.0.png"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 976
- hash: "1678890d66761a30100c37132ccec9a2"
+ image: "elide.1.png"
}
Key {
type: 6
@@ -258,22 +258,22 @@ VisualTest {
}
Frame {
msec: 992
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 1008
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 1024
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 1040
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
Frame {
msec: 1056
- hash: "1678890d66761a30100c37132ccec9a2"
+ hash: "4d49ec1a14a321ea9c0d506663df55c2"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png
index 3dfade5c72..b84b8a9116 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 1ee2076add..dbae0ce295 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 ae680bebbe..bf56c80fcb 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 c2859bef87..c4f6e1804b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png
new file mode 100644
index 0000000000..ea86925f36
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml
index 3e34f04ef0..e780ea65c2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml
@@ -6,439 +6,439 @@ VisualTest {
}
Frame {
msec: 16
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ image: "elide2.0.png"
}
Frame {
msec: 32
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "1c45bbf4494aeb017d7ad53c5e29cbc0"
}
Frame {
msec: 48
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "1c45bbf4494aeb017d7ad53c5e29cbc0"
}
Frame {
msec: 64
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "1c45bbf4494aeb017d7ad53c5e29cbc0"
}
Frame {
msec: 80
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "1c45bbf4494aeb017d7ad53c5e29cbc0"
}
Frame {
msec: 96
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "1c45bbf4494aeb017d7ad53c5e29cbc0"
}
Frame {
msec: 112
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "452d8e4da326413e4961f20a0d24d0f0"
}
Frame {
msec: 128
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "452d8e4da326413e4961f20a0d24d0f0"
}
Frame {
msec: 144
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "452d8e4da326413e4961f20a0d24d0f0"
}
Frame {
msec: 160
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "452d8e4da326413e4961f20a0d24d0f0"
}
Frame {
msec: 176
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "452d8e4da326413e4961f20a0d24d0f0"
}
Frame {
msec: 192
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "8dc43f316fd36a877c773c10c23b5703"
}
Frame {
msec: 208
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "8dc43f316fd36a877c773c10c23b5703"
}
Frame {
msec: 224
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "8dc43f316fd36a877c773c10c23b5703"
}
Frame {
msec: 240
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "8dc43f316fd36a877c773c10c23b5703"
}
Frame {
msec: 256
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "b7e055ce8d510c5ec66e71fa5a78fddf"
}
Frame {
msec: 272
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "b7e055ce8d510c5ec66e71fa5a78fddf"
}
Frame {
msec: 288
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "b7e055ce8d510c5ec66e71fa5a78fddf"
}
Frame {
msec: 304
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "b7e055ce8d510c5ec66e71fa5a78fddf"
}
Frame {
msec: 320
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "e9b0abe5719027348cd267eb4823fc5f"
}
Frame {
msec: 336
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "e9b0abe5719027348cd267eb4823fc5f"
}
Frame {
msec: 352
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "e9b0abe5719027348cd267eb4823fc5f"
}
Frame {
msec: 368
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "e9b0abe5719027348cd267eb4823fc5f"
}
Frame {
msec: 384
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "e9b0abe5719027348cd267eb4823fc5f"
}
Frame {
msec: 400
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "441102f2f69e9f4e10335c1746d47bd3"
}
Frame {
msec: 416
- hash: "086a46352aa1221b5e57f5624b0c256b"
+ hash: "441102f2f69e9f4e10335c1746d47bd3"
}
Frame {
msec: 432
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
+ hash: "441102f2f69e9f4e10335c1746d47bd3"
}
Frame {
msec: 448
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
+ hash: "441102f2f69e9f4e10335c1746d47bd3"
}
Frame {
msec: 464
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
+ hash: "441102f2f69e9f4e10335c1746d47bd3"
}
Frame {
msec: 480
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "95668288170720989adde2a0b41d5ee8"
}
Frame {
msec: 496
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "95668288170720989adde2a0b41d5ee8"
}
Frame {
msec: 512
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "95668288170720989adde2a0b41d5ee8"
}
Frame {
msec: 528
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "95668288170720989adde2a0b41d5ee8"
}
Frame {
msec: 544
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "16bba6b72993e474b4c302af3f682834"
}
Frame {
msec: 560
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
+ hash: "16bba6b72993e474b4c302af3f682834"
}
Frame {
msec: 576
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "16bba6b72993e474b4c302af3f682834"
}
Frame {
msec: 592
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "16bba6b72993e474b4c302af3f682834"
}
Frame {
msec: 608
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "86c4d8bd1b19116411b6a6e450547425"
}
Frame {
msec: 624
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "86c4d8bd1b19116411b6a6e450547425"
}
Frame {
msec: 640
- hash: "4daa612cd7e7ee455ff1a93329202865"
+ hash: "86c4d8bd1b19116411b6a6e450547425"
}
Frame {
msec: 656
- hash: "3f362ad550db910f1d9f261557c65913"
+ hash: "86c4d8bd1b19116411b6a6e450547425"
}
Frame {
msec: 672
- hash: "3f362ad550db910f1d9f261557c65913"
+ hash: "86c4d8bd1b19116411b6a6e450547425"
}
Frame {
msec: 688
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "d0d3cfa922ebca20c590ab7e59985268"
}
Frame {
msec: 704
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "d0d3cfa922ebca20c590ab7e59985268"
}
Frame {
msec: 720
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "d0d3cfa922ebca20c590ab7e59985268"
}
Frame {
msec: 736
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "d0d3cfa922ebca20c590ab7e59985268"
}
Frame {
msec: 752
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "d0d3cfa922ebca20c590ab7e59985268"
}
Frame {
msec: 768
- hash: "f159011c2b85fe212a32a7b5d2a57016"
+ hash: "397d72a090171090f897283729b19bc8"
}
Frame {
msec: 784
- hash: "a892c67199c23e5d9012a6a24cb45d16"
+ hash: "397d72a090171090f897283729b19bc8"
}
Frame {
msec: 800
- hash: "a892c67199c23e5d9012a6a24cb45d16"
+ hash: "397d72a090171090f897283729b19bc8"
}
Frame {
msec: 816
- hash: "a892c67199c23e5d9012a6a24cb45d16"
+ hash: "397d72a090171090f897283729b19bc8"
}
Frame {
msec: 832
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "2b038e59289d2e3cef02245d2d128271"
}
Frame {
msec: 848
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "2b038e59289d2e3cef02245d2d128271"
}
Frame {
msec: 864
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "2b038e59289d2e3cef02245d2d128271"
}
Frame {
msec: 880
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "2b038e59289d2e3cef02245d2d128271"
}
Frame {
msec: 896
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
+ hash: "2b038e59289d2e3cef02245d2d128271"
}
Frame {
msec: 912
- hash: "a7dc1d7dde956d62834de0968261386f"
+ hash: "5f64aa763acdd8f5d6cc249be36e226a"
}
Frame {
msec: 928
- hash: "a7dc1d7dde956d62834de0968261386f"
+ hash: "5f64aa763acdd8f5d6cc249be36e226a"
}
Frame {
msec: 944
- hash: "a7dc1d7dde956d62834de0968261386f"
+ hash: "5f64aa763acdd8f5d6cc249be36e226a"
}
Frame {
msec: 960
- image: "elide2.0.png"
+ hash: "5f64aa763acdd8f5d6cc249be36e226a"
}
Frame {
msec: 976
- hash: "a7dc1d7dde956d62834de0968261386f"
+ image: "elide2.1.png"
}
Frame {
msec: 992
- hash: "a590e1358fac567dda9fdfc6bfe4ab89"
+ hash: "4f8c81adc72fce17c7e54f4d45ec08e4"
}
Frame {
msec: 1008
- hash: "a590e1358fac567dda9fdfc6bfe4ab89"
+ hash: "4f8c81adc72fce17c7e54f4d45ec08e4"
}
Frame {
msec: 1024
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "4f8c81adc72fce17c7e54f4d45ec08e4"
}
Frame {
msec: 1040
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "91a7a0c0f686975d0087ee0e066911eb"
}
Frame {
msec: 1056
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "91a7a0c0f686975d0087ee0e066911eb"
}
Frame {
msec: 1072
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "91a7a0c0f686975d0087ee0e066911eb"
}
Frame {
msec: 1088
- hash: "778d34ca89b5db88fe26619576e9d337"
+ hash: "91a7a0c0f686975d0087ee0e066911eb"
}
Frame {
msec: 1104
- hash: "9424caee019aa9bccd4156b0b9ca2723"
+ hash: "91a7a0c0f686975d0087ee0e066911eb"
}
Frame {
msec: 1120
- hash: "9424caee019aa9bccd4156b0b9ca2723"
+ hash: "b19f6b8b4dc9d2a2d9aba82983e41889"
}
Frame {
msec: 1136
- hash: "9424caee019aa9bccd4156b0b9ca2723"
+ hash: "b19f6b8b4dc9d2a2d9aba82983e41889"
}
Frame {
msec: 1152
- hash: "000061a140ab71a44c0480a92ad3bc70"
+ hash: "b19f6b8b4dc9d2a2d9aba82983e41889"
}
Frame {
msec: 1168
- hash: "000061a140ab71a44c0480a92ad3bc70"
+ hash: "b19f6b8b4dc9d2a2d9aba82983e41889"
}
Frame {
msec: 1184
- hash: "000061a140ab71a44c0480a92ad3bc70"
+ hash: "b19f6b8b4dc9d2a2d9aba82983e41889"
}
Frame {
msec: 1200
- hash: "5dec9638853165428cd15ae02e1d03ce"
+ hash: "456542b672303ddae500b96e9b66a558"
}
Frame {
msec: 1216
- hash: "5dec9638853165428cd15ae02e1d03ce"
+ hash: "456542b672303ddae500b96e9b66a558"
}
Frame {
msec: 1232
- hash: "5dec9638853165428cd15ae02e1d03ce"
+ hash: "456542b672303ddae500b96e9b66a558"
}
Frame {
msec: 1248
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "456542b672303ddae500b96e9b66a558"
}
Frame {
msec: 1264
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "8ec69f05d929c3b397dc721198ccacd4"
}
Frame {
msec: 1280
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "8ec69f05d929c3b397dc721198ccacd4"
}
Frame {
msec: 1296
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "8ec69f05d929c3b397dc721198ccacd4"
}
Frame {
msec: 1312
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
+ hash: "8ec69f05d929c3b397dc721198ccacd4"
}
Frame {
msec: 1328
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "2d63fd91f4b01f6b178c795838e78990"
}
Frame {
msec: 1344
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "2d63fd91f4b01f6b178c795838e78990"
}
Frame {
msec: 1360
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "2d63fd91f4b01f6b178c795838e78990"
}
Frame {
msec: 1376
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "2d63fd91f4b01f6b178c795838e78990"
}
Frame {
msec: 1392
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
+ hash: "2d63fd91f4b01f6b178c795838e78990"
}
Frame {
msec: 1408
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "c7c1d2c288653b414fe534ff6fab3381"
}
Frame {
msec: 1424
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "c7c1d2c288653b414fe534ff6fab3381"
}
Frame {
msec: 1440
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "c7c1d2c288653b414fe534ff6fab3381"
}
Frame {
msec: 1456
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "c7c1d2c288653b414fe534ff6fab3381"
}
Frame {
msec: 1472
- hash: "d4230a476237f9e13a132e775f1b960c"
+ hash: "c7c1d2c288653b414fe534ff6fab3381"
}
Frame {
msec: 1488
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "23188e926a855a7a06211783ee51d22a"
}
Frame {
msec: 1504
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "23188e926a855a7a06211783ee51d22a"
}
Frame {
msec: 1520
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "23188e926a855a7a06211783ee51d22a"
}
Frame {
msec: 1536
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "23188e926a855a7a06211783ee51d22a"
}
Frame {
msec: 1552
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "cfc64d8876d59e0d75f079c2e08cea5f"
}
Frame {
msec: 1568
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
+ hash: "cfc64d8876d59e0d75f079c2e08cea5f"
}
Frame {
msec: 1584
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
+ hash: "cfc64d8876d59e0d75f079c2e08cea5f"
}
Frame {
msec: 1600
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
+ hash: "cfc64d8876d59e0d75f079c2e08cea5f"
}
Frame {
msec: 1616
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
+ hash: "cfc64d8876d59e0d75f079c2e08cea5f"
}
Frame {
msec: 1632
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
+ hash: "766c679eaec4bd28dc92cb3642d5be83"
}
Frame {
msec: 1648
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
+ hash: "766c679eaec4bd28dc92cb3642d5be83"
}
Frame {
msec: 1664
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
+ hash: "766c679eaec4bd28dc92cb3642d5be83"
}
Frame {
msec: 1680
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
+ hash: "766c679eaec4bd28dc92cb3642d5be83"
}
Frame {
msec: 1696
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
+ hash: "a86ba05a854fde208e6cf7849327d5d0"
}
Frame {
msec: 1712
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
+ hash: "a86ba05a854fde208e6cf7849327d5d0"
}
Frame {
msec: 1728
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
+ hash: "a86ba05a854fde208e6cf7849327d5d0"
}
Frame {
msec: 1744
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
+ hash: "a86ba05a854fde208e6cf7849327d5d0"
}
Key {
type: 6
@@ -450,542 +450,542 @@ VisualTest {
}
Frame {
msec: 1760
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
+ hash: "a86ba05a854fde208e6cf7849327d5d0"
}
Frame {
msec: 1776
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
+ hash: "23b60817be2a741cada2af663b0d7f54"
}
Frame {
msec: 1792
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
+ hash: "23b60817be2a741cada2af663b0d7f54"
}
Frame {
msec: 1808
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "23b60817be2a741cada2af663b0d7f54"
}
Frame {
msec: 1824
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "23b60817be2a741cada2af663b0d7f54"
}
Frame {
msec: 1840
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "c098c1c0d5239c59735a5c9450e9d531"
}
Frame {
msec: 1856
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "c098c1c0d5239c59735a5c9450e9d531"
}
Frame {
msec: 1872
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
+ hash: "c098c1c0d5239c59735a5c9450e9d531"
}
Frame {
msec: 1888
- hash: "976dd5bc154522438f92790f28639512"
+ hash: "c098c1c0d5239c59735a5c9450e9d531"
}
Frame {
msec: 1904
- hash: "976dd5bc154522438f92790f28639512"
+ hash: "c098c1c0d5239c59735a5c9450e9d531"
}
Frame {
msec: 1920
- image: "elide2.1.png"
+ hash: "09f6ee218d314d3a405ae43e32588c07"
}
Frame {
msec: 1936
- hash: "976dd5bc154522438f92790f28639512"
+ image: "elide2.2.png"
}
Frame {
msec: 1952
- hash: "976dd5bc154522438f92790f28639512"
+ hash: "09f6ee218d314d3a405ae43e32588c07"
}
Frame {
msec: 1968
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "09f6ee218d314d3a405ae43e32588c07"
}
Frame {
msec: 1984
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "6ee480e7d8b0abe295ae12a660119102"
}
Frame {
msec: 2000
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "6ee480e7d8b0abe295ae12a660119102"
}
Frame {
msec: 2016
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "6ee480e7d8b0abe295ae12a660119102"
}
Frame {
msec: 2032
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
+ hash: "6ee480e7d8b0abe295ae12a660119102"
}
Frame {
msec: 2048
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
+ hash: "6ee480e7d8b0abe295ae12a660119102"
}
Frame {
msec: 2064
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
+ hash: "b43ca0ea75f4c17c09248f78170d3839"
}
Frame {
msec: 2080
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
+ hash: "b43ca0ea75f4c17c09248f78170d3839"
}
Frame {
msec: 2096
- hash: "1a978ed6951afe40912efcfb54dcce65"
+ hash: "b43ca0ea75f4c17c09248f78170d3839"
}
Frame {
msec: 2112
- hash: "1a978ed6951afe40912efcfb54dcce65"
+ hash: "b43ca0ea75f4c17c09248f78170d3839"
}
Frame {
msec: 2128
- hash: "1a978ed6951afe40912efcfb54dcce65"
+ hash: "92e0ee1174ffcb710403bb831aeec353"
}
Frame {
msec: 2144
- hash: "a57eea59fe6475164e24688489977869"
+ hash: "92e0ee1174ffcb710403bb831aeec353"
}
Frame {
msec: 2160
- hash: "a57eea59fe6475164e24688489977869"
+ hash: "92e0ee1174ffcb710403bb831aeec353"
}
Frame {
msec: 2176
- hash: "a57eea59fe6475164e24688489977869"
+ hash: "92e0ee1174ffcb710403bb831aeec353"
}
Frame {
msec: 2192
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "92e0ee1174ffcb710403bb831aeec353"
}
Frame {
msec: 2208
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "bba79ad6f3630b7aa382541cc2d3a2cd"
}
Frame {
msec: 2224
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "bba79ad6f3630b7aa382541cc2d3a2cd"
}
Frame {
msec: 2240
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "bba79ad6f3630b7aa382541cc2d3a2cd"
}
Frame {
msec: 2256
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
+ hash: "bba79ad6f3630b7aa382541cc2d3a2cd"
}
Frame {
msec: 2272
- hash: "04c62a4d01e9309eaeea87902013c8b9"
+ hash: "7efeb1565125f25252ce3f03dadc3bea"
}
Frame {
msec: 2288
- hash: "04c62a4d01e9309eaeea87902013c8b9"
+ hash: "7efeb1565125f25252ce3f03dadc3bea"
}
Frame {
msec: 2304
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "7efeb1565125f25252ce3f03dadc3bea"
}
Frame {
msec: 2320
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "7efeb1565125f25252ce3f03dadc3bea"
}
Frame {
msec: 2336
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "7efeb1565125f25252ce3f03dadc3bea"
}
Frame {
msec: 2352
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "9086d24dff90f8c9e4543c6b14c99bf6"
}
Frame {
msec: 2368
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
+ hash: "9086d24dff90f8c9e4543c6b14c99bf6"
}
Frame {
msec: 2384
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "9086d24dff90f8c9e4543c6b14c99bf6"
}
Frame {
msec: 2400
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "9086d24dff90f8c9e4543c6b14c99bf6"
}
Frame {
msec: 2416
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "9086d24dff90f8c9e4543c6b14c99bf6"
}
Frame {
msec: 2432
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "15d8e99a0676e0a1588dfddc00ab0d16"
}
Frame {
msec: 2448
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
+ hash: "15d8e99a0676e0a1588dfddc00ab0d16"
}
Frame {
msec: 2464
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "15d8e99a0676e0a1588dfddc00ab0d16"
}
Frame {
msec: 2480
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "15d8e99a0676e0a1588dfddc00ab0d16"
}
Frame {
msec: 2496
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "ecc25b88c29dc9d6c70df6e36a91f95c"
}
Frame {
msec: 2512
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "ecc25b88c29dc9d6c70df6e36a91f95c"
}
Frame {
msec: 2528
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
+ hash: "ecc25b88c29dc9d6c70df6e36a91f95c"
}
Frame {
msec: 2544
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
+ hash: "ecc25b88c29dc9d6c70df6e36a91f95c"
}
Frame {
msec: 2560
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
+ hash: "905c81686d8d2ecdde513622c35c0ea6"
}
Frame {
msec: 2576
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
+ hash: "905c81686d8d2ecdde513622c35c0ea6"
}
Frame {
msec: 2592
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
+ hash: "905c81686d8d2ecdde513622c35c0ea6"
}
Frame {
msec: 2608
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
+ hash: "905c81686d8d2ecdde513622c35c0ea6"
}
Frame {
msec: 2624
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
+ hash: "905c81686d8d2ecdde513622c35c0ea6"
}
Frame {
msec: 2640
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
+ hash: "537a2cf41a5e15220d2ca2218ac49a5a"
}
Frame {
msec: 2656
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
+ hash: "537a2cf41a5e15220d2ca2218ac49a5a"
}
Frame {
msec: 2672
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
+ hash: "537a2cf41a5e15220d2ca2218ac49a5a"
}
Frame {
msec: 2688
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
+ hash: "537a2cf41a5e15220d2ca2218ac49a5a"
}
Frame {
msec: 2704
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
+ hash: "53325ce7d011eeb72369463721f15e87"
}
Frame {
msec: 2720
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "53325ce7d011eeb72369463721f15e87"
}
Frame {
msec: 2736
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "53325ce7d011eeb72369463721f15e87"
}
Frame {
msec: 2752
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "53325ce7d011eeb72369463721f15e87"
}
Frame {
msec: 2768
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "53325ce7d011eeb72369463721f15e87"
}
Frame {
msec: 2784
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "9ad2565cc95647a83d3ce3acc106485a"
}
Frame {
msec: 2800
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "9ad2565cc95647a83d3ce3acc106485a"
}
Frame {
msec: 2816
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
+ hash: "9ad2565cc95647a83d3ce3acc106485a"
}
Frame {
msec: 2832
- hash: "f44b88b80219497370b5d2ad380d03bf"
+ hash: "9ad2565cc95647a83d3ce3acc106485a"
}
Frame {
msec: 2848
- hash: "f44b88b80219497370b5d2ad380d03bf"
+ hash: "de7b66581e0743385a984f76c993b01b"
}
Frame {
msec: 2864
- hash: "a093510751799f3466156f9775988044"
+ hash: "de7b66581e0743385a984f76c993b01b"
}
Frame {
msec: 2880
- image: "elide2.2.png"
+ hash: "de7b66581e0743385a984f76c993b01b"
}
Frame {
msec: 2896
- hash: "a093510751799f3466156f9775988044"
+ image: "elide2.3.png"
}
Frame {
msec: 2912
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "de7b66581e0743385a984f76c993b01b"
}
Frame {
msec: 2928
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "f66852df1738e4fe29ac1f6938d814c2"
}
Frame {
msec: 2944
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "f66852df1738e4fe29ac1f6938d814c2"
}
Frame {
msec: 2960
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "f66852df1738e4fe29ac1f6938d814c2"
}
Frame {
msec: 2976
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
+ hash: "f66852df1738e4fe29ac1f6938d814c2"
}
Frame {
msec: 2992
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "cf6dde6c590879a9e905a0f559f089ca"
}
Frame {
msec: 3008
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "cf6dde6c590879a9e905a0f559f089ca"
}
Frame {
msec: 3024
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "cf6dde6c590879a9e905a0f559f089ca"
}
Frame {
msec: 3040
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "cf6dde6c590879a9e905a0f559f089ca"
}
Frame {
msec: 3056
- hash: "d7da3826914ad1d2696803b659992e73"
+ hash: "cf6dde6c590879a9e905a0f559f089ca"
}
Frame {
msec: 3072
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
+ hash: "bd63e4df280010ed9f67fc7976b86cb5"
}
Frame {
msec: 3088
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
+ hash: "bd63e4df280010ed9f67fc7976b86cb5"
}
Frame {
msec: 3104
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
+ hash: "bd63e4df280010ed9f67fc7976b86cb5"
}
Frame {
msec: 3120
- hash: "df90afe882b18f3fd7b12e52ff36e66f"
+ hash: "bd63e4df280010ed9f67fc7976b86cb5"
}
Frame {
msec: 3136
- hash: "df90afe882b18f3fd7b12e52ff36e66f"
+ hash: "bd63e4df280010ed9f67fc7976b86cb5"
}
Frame {
msec: 3152
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
+ hash: "065d3d370faa58aed9899cae0f86f032"
}
Frame {
msec: 3168
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
+ hash: "065d3d370faa58aed9899cae0f86f032"
}
Frame {
msec: 3184
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
+ hash: "065d3d370faa58aed9899cae0f86f032"
}
Frame {
msec: 3200
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "065d3d370faa58aed9899cae0f86f032"
}
Frame {
msec: 3216
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "b5623d05c578a6f09bcfacd4d3163b09"
}
Frame {
msec: 3232
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "b5623d05c578a6f09bcfacd4d3163b09"
}
Frame {
msec: 3248
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "b5623d05c578a6f09bcfacd4d3163b09"
}
Frame {
msec: 3264
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
+ hash: "b5623d05c578a6f09bcfacd4d3163b09"
}
Frame {
msec: 3280
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "83c70529d05911ea26a5cbbab5aa20f2"
}
Frame {
msec: 3296
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "83c70529d05911ea26a5cbbab5aa20f2"
}
Frame {
msec: 3312
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "83c70529d05911ea26a5cbbab5aa20f2"
}
Frame {
msec: 3328
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "83c70529d05911ea26a5cbbab5aa20f2"
}
Frame {
msec: 3344
- hash: "39f1b201715413f13a60f449eef29706"
+ hash: "83c70529d05911ea26a5cbbab5aa20f2"
}
Frame {
msec: 3360
- hash: "4baf5c1227de45f9e620fe6eb0590014"
+ hash: "17927c706da1bc222ba5462af66a9d2f"
}
Frame {
msec: 3376
- hash: "4baf5c1227de45f9e620fe6eb0590014"
+ hash: "17927c706da1bc222ba5462af66a9d2f"
}
Frame {
msec: 3392
- hash: "4baf5c1227de45f9e620fe6eb0590014"
+ hash: "17927c706da1bc222ba5462af66a9d2f"
}
Frame {
msec: 3408
- hash: "e1ce9c06e59fb6348fff3ce650c7943e"
+ hash: "17927c706da1bc222ba5462af66a9d2f"
}
Frame {
msec: 3424
- hash: "e1ce9c06e59fb6348fff3ce650c7943e"
+ hash: "17927c706da1bc222ba5462af66a9d2f"
}
Frame {
msec: 3440
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "f49627ba8d3e257e0e94404da24d12dc"
}
Frame {
msec: 3456
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "f49627ba8d3e257e0e94404da24d12dc"
}
Frame {
msec: 3472
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "f49627ba8d3e257e0e94404da24d12dc"
}
Frame {
msec: 3488
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "f49627ba8d3e257e0e94404da24d12dc"
}
Frame {
msec: 3504
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "37a0c9dc20431c8398409d4522a0fdd3"
}
Frame {
msec: 3520
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
+ hash: "37a0c9dc20431c8398409d4522a0fdd3"
}
Frame {
msec: 3536
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "37a0c9dc20431c8398409d4522a0fdd3"
}
Frame {
msec: 3552
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "37a0c9dc20431c8398409d4522a0fdd3"
}
Frame {
msec: 3568
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "67bebfe9fb5ac745f40040ff8083e999"
}
Frame {
msec: 3584
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "67bebfe9fb5ac745f40040ff8083e999"
}
Frame {
msec: 3600
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
+ hash: "67bebfe9fb5ac745f40040ff8083e999"
}
Frame {
msec: 3616
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "67bebfe9fb5ac745f40040ff8083e999"
}
Frame {
msec: 3632
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "67bebfe9fb5ac745f40040ff8083e999"
}
Frame {
msec: 3648
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "84f8b27b83b566c99e65ea39b29772c1"
}
Frame {
msec: 3664
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "84f8b27b83b566c99e65ea39b29772c1"
}
Frame {
msec: 3680
- hash: "b8853dc109d063d982952780aa80419a"
+ hash: "84f8b27b83b566c99e65ea39b29772c1"
}
Frame {
msec: 3696
- hash: "6bfd7cfd6369df1eb570fda103d9e009"
+ hash: "84f8b27b83b566c99e65ea39b29772c1"
}
Frame {
msec: 3712
- hash: "6bfd7cfd6369df1eb570fda103d9e009"
+ hash: "84f8b27b83b566c99e65ea39b29772c1"
}
Frame {
msec: 3728
- hash: "b6dba4a456cd8d1b62501039cb796625"
+ hash: "c6ba663536f19b9f291ef35b7a70e490"
}
Frame {
msec: 3744
- hash: "b6dba4a456cd8d1b62501039cb796625"
+ hash: "c6ba663536f19b9f291ef35b7a70e490"
}
Frame {
msec: 3760
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "c6ba663536f19b9f291ef35b7a70e490"
}
Frame {
msec: 3776
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "c6ba663536f19b9f291ef35b7a70e490"
}
Frame {
msec: 3792
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "65f22784730aa27b2628d015a1cc4abe"
}
Frame {
msec: 3808
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "65f22784730aa27b2628d015a1cc4abe"
}
Frame {
msec: 3824
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
+ hash: "65f22784730aa27b2628d015a1cc4abe"
}
Frame {
msec: 3840
- image: "elide2.3.png"
+ hash: "65f22784730aa27b2628d015a1cc4abe"
}
Frame {
msec: 3856
- hash: "d2e873e69aed3e0b6e53123cd63e386c"
+ image: "elide2.4.png"
}
Frame {
msec: 3872
- hash: "d2e873e69aed3e0b6e53123cd63e386c"
+ hash: "b11a511d80de87329501b9c11aebbc58"
}
Frame {
msec: 3888
- hash: "baa8edfce77628c7a1ec83adce96e2c6"
+ hash: "b11a511d80de87329501b9c11aebbc58"
}
Frame {
msec: 3904
- hash: "baa8edfce77628c7a1ec83adce96e2c6"
+ hash: "b11a511d80de87329501b9c11aebbc58"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png
index 80549b4609..3861b4f288 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png
new file mode 100644
index 0000000000..ce166f1912
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml
index 76c2ee1d87..84778ac3dd 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml
@@ -6,298 +6,298 @@ VisualTest {
}
Frame {
msec: 16
- hash: "17f39c541a0b5bf958c3fdaa51b72fec"
+ image: "multilength.0.png"
}
Frame {
msec: 32
- hash: "da61bb1afef532688045116bcce1da40"
+ hash: "58d757783e6d57c5ac2596219dfd37be"
}
Frame {
msec: 48
- hash: "04ddcb158ce8ade4ea9ad16405c7d81a"
+ hash: "e76b3b98f447b706c59ba0c175e1829d"
}
Frame {
msec: 64
- hash: "7ca43ec7a6e630c9bc07478abf5c2686"
+ hash: "f0dbb0b55d1d27bf7c0260db5b5782a2"
}
Frame {
msec: 80
- hash: "ae2c4e73395cf4a5663110ba1b9996b2"
+ hash: "00845517336befd7ead0141312ea38ce"
}
Frame {
msec: 96
- hash: "5059426cced6ff6f92102100416b34d8"
+ hash: "99723ae092407e5291ed3a13f5a7be61"
}
Frame {
msec: 112
- hash: "e816cb366ba9498d0ae194b789c25f12"
+ hash: "2d531f1dd1545a4e2f8ca4c65338e0c3"
}
Frame {
msec: 128
- hash: "fd8cd9b2916b7045086df92d19e8b436"
+ hash: "9f273323f48a70be279302b194203a36"
}
Frame {
msec: 144
- hash: "965dfe4cad0a3d07c0b086d6351a43a1"
+ hash: "7de4bd5f82369953c2a4a990ddaf4339"
}
Frame {
msec: 160
- hash: "56759a670c864d5f2ae392fa8545f3a4"
+ hash: "96c5f74c01723a15a57db161604bc245"
}
Frame {
msec: 176
- hash: "8d3c2be4fcef526650cc84b5c2d29170"
+ hash: "df2eac6300919044cfe2a2f591c3bd99"
}
Frame {
msec: 192
- hash: "6d9f995bef186a69b259b8d18470f0e7"
+ hash: "a153904cdfa0be697a25bebc4ce1fbca"
}
Frame {
msec: 208
- hash: "670c68a0943c5f037f8bf4c9ca0df501"
+ hash: "de243731b92ac1cac05e194aed0acd1e"
}
Frame {
msec: 224
- hash: "6218cf02cb762aa6c33985fe1b2e47bb"
+ hash: "f6ccc0f127bfc6212885c3c6470639ed"
}
Frame {
msec: 240
- hash: "6e3424f2b72d6582ceb5a6c1bfe3dba4"
+ hash: "a2d56227aebedb9590a1124e44fe8e84"
}
Frame {
msec: 256
- hash: "fb819344ab1d2966b043be790831e680"
+ hash: "5f8c0a42a231580dcfff6a534e77bef8"
}
Frame {
msec: 272
- hash: "a729845b780cc708ddd578eab3bc0ab1"
+ hash: "e631663ac692ab097cb28095b45e8563"
}
Frame {
msec: 288
- hash: "543f6566c4dfaecb70007848cc4f8525"
+ hash: "2a03f6ba3c67a9e9732cc1f5cdc42c23"
}
Frame {
msec: 304
- hash: "5497699414bd8a428ead9703dc7273d5"
+ hash: "26b85080d624b232e5209aa082fc11b1"
}
Frame {
msec: 320
- hash: "e9230e525bb0ce33fe4bf3a2c948357d"
+ hash: "1c027f4a0114bb9050a3a8d9de2b8a56"
}
Frame {
msec: 336
- hash: "ef6a6989f013d444547c0b98a65a34bf"
+ hash: "788e6ad3cb5f6e120e40fd3dc6ac8483"
}
Frame {
msec: 352
- hash: "ee89f5163fe269884d59acac7fc23336"
+ hash: "7e1b0fb71528dfa17a87950c0ff86111"
}
Frame {
msec: 368
- hash: "0ffb11ceccdc607c1a072dde4aa40f93"
+ hash: "e1878e6e8ba14d8945e1f71ac8d42c1e"
}
Frame {
msec: 384
- hash: "97a51d7916e04815724506e289040e2a"
+ hash: "556f42297eb1e57d6a8af0946651a75e"
}
Frame {
msec: 400
- hash: "a63d6d73827e1b40a7fec76e6555d7ab"
+ hash: "73df08e7e3391b339cea9f5f082fd83a"
}
Frame {
msec: 416
- hash: "d3eaf72442852317a48dc2b638ad48be"
+ hash: "de3bd8a12c2a448738ce77036b97bda7"
}
Frame {
msec: 432
- hash: "fa867a486d51089ddfeb60b9d44b329e"
+ hash: "0ab187aa7a478dbf005f35416a93c456"
}
Frame {
msec: 448
- hash: "834ee944cfc63209bcba94153ccd2c4e"
+ hash: "e5baf64ccafa6a4d2bf74aacf52019c6"
}
Frame {
msec: 464
- hash: "6d637d4763ae457233ab669f9f124bc1"
+ hash: "0ed2ee4a773ade712ef207549006aa7b"
}
Frame {
msec: 480
- hash: "66c60bd9de1870f46b726c404ab924d5"
+ hash: "b23dd49bdfe8fb155e2055262e6a1478"
}
Frame {
msec: 496
- hash: "088499b53390e3a2c3ca7f42cac101a4"
+ hash: "871f82636a03d6fa8cbfb580038bd0b7"
}
Frame {
msec: 512
- hash: "19d41f7696c86120460c4db7a0f9be1a"
+ hash: "463cdc2cbde034d7d7a5061338b319c7"
}
Frame {
msec: 528
- hash: "cd3ae14964e174db94e3e6c8609f366a"
+ hash: "22ff8e25136877fd6f5dce1b01e65c08"
}
Frame {
msec: 544
- hash: "0c2172e091c2fb42d7c016779fa543d7"
+ hash: "97d4e49622d877e9e1e0102786e1ee55"
}
Frame {
msec: 560
- hash: "7534175e24b2cbab08518de8fc691003"
+ hash: "ebf5304185abe4bc33be44c3df09a93a"
}
Frame {
msec: 576
- hash: "a9ef64d20b4f93e60f25753e2d7dd2e0"
+ hash: "307887d9973e807c52b2143cdfe438ad"
}
Frame {
msec: 592
- hash: "d8e62a9fec27bfc892b0f3034bc73c3f"
+ hash: "d89547539741f387fdd6aa80ef239fbd"
}
Frame {
msec: 608
- hash: "f8eee41f72e17693074a2ac250bb850e"
+ hash: "b818215b4cdd6e811057f1a0f5eb1a5a"
}
Frame {
msec: 624
- hash: "3a08b62a8aa1f410415afbd7b8ee8728"
+ hash: "84f7e523c0f21236ff8aad1333470d11"
}
Frame {
msec: 640
- hash: "0c4fba2bc8b7e440736f4a23d048c23c"
+ hash: "7f974663c7add6d10ebdd401794e087a"
}
Frame {
msec: 656
- hash: "521264dbeec0fbe3a467739f0c3f7b85"
+ hash: "4c824dc01e8fead2706608ca68293d11"
}
Frame {
msec: 672
- hash: "2c455560a624acfb7f316eae8926d765"
+ hash: "86b0f617eb3bfff944c3b670b3b51c71"
}
Frame {
msec: 688
- hash: "c9fa632a0998cfae39d434b623b3060d"
+ hash: "86c5660c22003099cc4121381c11de85"
}
Frame {
msec: 704
- hash: "506ea16572fa0ee72cddcedfe5b4b9ea"
+ hash: "3c2bd08ea17aaa920949239f06b255cf"
}
Frame {
msec: 720
- hash: "83ae06a3ad24d2a6d49c71df2a287716"
+ hash: "2380278cc065a3ac5355127d9873796c"
}
Frame {
msec: 736
- hash: "d4b11b45b4f97de0c0b878b97b804f09"
+ hash: "e5d8624e841476926b3e2a5ebca8c65f"
}
Frame {
msec: 752
- hash: "868aac6c273b7cc90c31c14298ab9a3b"
+ hash: "eab70f5005a6b39e3ead6e4452df1a54"
}
Frame {
msec: 768
- hash: "03d4222586194bb6513305d1837d3467"
+ hash: "46acef023d154bad3f91e0267996421b"
}
Frame {
msec: 784
- hash: "21e6cd89f06077bd5d346c7ccb8fa1e9"
+ hash: "26ba9f30a4bfd72c9b6dae2a25660ea9"
}
Frame {
msec: 800
- hash: "326092c4c29217f5afb5730ab3984353"
+ hash: "9fabdd5cf1190fb34bdc7834eba01cd3"
}
Frame {
msec: 816
- hash: "4963d64093e65fe1973ffab5b7a15abc"
+ hash: "b1e7af47d4ee706374365fdd4b4d52be"
}
Frame {
msec: 832
- hash: "3125e6e553bbf3f2fcf8fbf797a0c1f8"
+ hash: "86fa2e142e75d9d2a074a5376992f139"
}
Frame {
msec: 848
- hash: "879b24c994d4a9854d08bda2bbf2ceda"
+ hash: "a3dea2bf8f84743d35070e82ec585c9a"
}
Frame {
msec: 864
- hash: "03c4320dc2aa030c341d54899869b561"
+ hash: "ab649fbbe0ca508812de9839d14b3f8c"
}
Frame {
msec: 880
- hash: "ae0e91975aecc6a416b4a23504fced32"
+ hash: "08f8a334e121d4edb0ca1617353bfebc"
}
Frame {
msec: 896
- hash: "e4150bdf0d4bab9bddc4605a9bde5b69"
+ hash: "bb7997c1e18b90cfaad4c3e4ec44356e"
}
Frame {
msec: 912
- hash: "dc961cb82a0e58603b3914f16f0a3f52"
+ hash: "31a7e5d71c28eebfcd29e9ea4950ad17"
}
Frame {
msec: 928
- hash: "5339507c303e42ecab853ca1688881f3"
+ hash: "2b759276e03c2884bff7ed863c032dfc"
}
Frame {
msec: 944
- hash: "a7c616c57f98eb03c1501747ea1a8b45"
+ hash: "aa0868f006097a435c46368ea9e3ba36"
}
Frame {
msec: 960
- image: "multilength.0.png"
+ hash: "6454753699c21589d2523a83da0aaa34"
}
Frame {
msec: 976
- hash: "773ad6bc56f80bd5f6ce346ae0bc79c9"
+ image: "multilength.1.png"
}
Frame {
msec: 992
- hash: "18b9ebfb9e5beac337143cc625fdfad7"
+ hash: "ac26abff68fbc1cf89dc5efc4a714a04"
}
Frame {
msec: 1008
- hash: "efb9f12a98ea137e2b50d344c21c4a89"
+ hash: "d3f9dc8cb653d996fb57652f85abcbc1"
}
Frame {
msec: 1024
- hash: "5b880958b3d20c09a10189cfc5f7b671"
+ hash: "002a94f067eef532f63b6ef916977c2c"
}
Frame {
msec: 1040
- hash: "edf2d8c174ac6e2e3a887336dc04df8c"
+ hash: "f7935d01ee9b497034cc1d8f007a0fdf"
}
Frame {
msec: 1056
- hash: "ad04b9e0e88695a13032abae8fef6f32"
+ hash: "4a1bfdcc85e5444c1bd836399e86ee05"
}
Frame {
msec: 1072
- hash: "e4ad91c9da3e954cac33ce98832fee1c"
+ hash: "1b86514f3c85a8438ef183cc4772e997"
}
Frame {
msec: 1088
- hash: "a853212cf0ddc17cb0eb9be7f2ac5475"
+ hash: "7bf4c1ca946288e9d1a7ad055d8cacaa"
}
Frame {
msec: 1104
- hash: "a03f7ac2553fe114c4591ed98dab3ceb"
+ hash: "b3a00861967157786a80c80030d5495b"
}
Frame {
msec: 1120
- hash: "5de7491803582e0d13d2ff3e2eb3df82"
+ hash: "b9c6195d3336d7519cc72b16e75d00f6"
}
Frame {
msec: 1136
- hash: "0685263ac468ce39b468d37a20f7e5f8"
+ hash: "6dba6d030a5ff6a92a57f0bdcf0fe781"
}
Frame {
msec: 1152
- hash: "14d4ab3f40dc6a0835c56c0f84256182"
+ hash: "cc97a2721f4339094819c8b7aec6d74c"
}
Frame {
msec: 1168
- hash: "6a8c61c31c3d00592863ad356c45b354"
+ hash: "190f67abce51f58fdd1591651633d67e"
}
Frame {
msec: 1184
- hash: "08b3e3388469b1a62d3fc7f7a94f85a2"
+ hash: "b255f75cfc4918663b8bd47c887cfb3c"
}
}
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 5631a46d3a..16202c49a7 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.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.1.png
new file mode 100644
index 0000000000..16202c49a7
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.1.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 d46051422c..c911b0a917 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml
@@ -6,247 +6,247 @@ VisualTest {
}
Frame {
msec: 16
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ image: "elide.0.png"
}
Frame {
msec: 32
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 48
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 64
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 80
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 96
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 112
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 128
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 144
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 160
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 176
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 192
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 208
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 224
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 240
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 256
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 272
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 288
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 304
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 320
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 336
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 352
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 368
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 384
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 400
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 416
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 432
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 448
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 464
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 480
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 496
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 512
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 528
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 544
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 560
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 576
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 592
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 608
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 624
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 640
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 656
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 672
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 688
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 704
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 720
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 736
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 752
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 768
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 784
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 800
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 816
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 832
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 848
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 864
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 880
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 896
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 912
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 928
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 944
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 960
- image: "elide.0.png"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 976
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ image: "elide.1.png"
}
Key {
type: 6
@@ -258,22 +258,22 @@ VisualTest {
}
Frame {
msec: 992
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 1008
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 1024
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 1040
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
Frame {
msec: 1056
- hash: "48e2da07fd229d9db6afc0eda494cd11"
+ hash: "bfcbea92ed5278c01642fd3cd6d3175c"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.0.png
new file mode 100644
index 0000000000..38b9668a37
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.1.png
new file mode 100644
index 0000000000..801ec2be37
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.2.png
new file mode 100644
index 0000000000..785093e022
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.3.png
new file mode 100644
index 0000000000..28f95c9edb
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.4.png
new file mode 100644
index 0000000000..963c4eade4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.qml
new file mode 100644
index 0000000000..5275c05811
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.qml
@@ -0,0 +1,991 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "elide2.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "0922fd48af050774d53e0b3815d57d8e"
+ }
+ Frame {
+ msec: 48
+ hash: "0922fd48af050774d53e0b3815d57d8e"
+ }
+ Frame {
+ msec: 64
+ hash: "0922fd48af050774d53e0b3815d57d8e"
+ }
+ Frame {
+ msec: 80
+ hash: "0922fd48af050774d53e0b3815d57d8e"
+ }
+ Frame {
+ msec: 96
+ hash: "0922fd48af050774d53e0b3815d57d8e"
+ }
+ Frame {
+ msec: 112
+ hash: "0922fd48af050774d53e0b3815d57d8e"
+ }
+ Frame {
+ msec: 128
+ hash: "6ed734d7092a34e440628dc70db97ac5"
+ }
+ Frame {
+ msec: 144
+ hash: "6ed734d7092a34e440628dc70db97ac5"
+ }
+ Frame {
+ msec: 160
+ hash: "6ed734d7092a34e440628dc70db97ac5"
+ }
+ Frame {
+ msec: 176
+ hash: "6ed734d7092a34e440628dc70db97ac5"
+ }
+ Frame {
+ msec: 192
+ hash: "a74b735016141dccf2c84fe9ee1e3ab2"
+ }
+ Frame {
+ msec: 208
+ hash: "a74b735016141dccf2c84fe9ee1e3ab2"
+ }
+ Frame {
+ msec: 224
+ hash: "a74b735016141dccf2c84fe9ee1e3ab2"
+ }
+ Frame {
+ msec: 240
+ hash: "a74b735016141dccf2c84fe9ee1e3ab2"
+ }
+ Frame {
+ msec: 256
+ hash: "047416b9368fb352b7da1e073d863e96"
+ }
+ Frame {
+ msec: 272
+ hash: "047416b9368fb352b7da1e073d863e96"
+ }
+ Frame {
+ msec: 288
+ hash: "047416b9368fb352b7da1e073d863e96"
+ }
+ Frame {
+ msec: 304
+ hash: "047416b9368fb352b7da1e073d863e96"
+ }
+ Frame {
+ msec: 320
+ hash: "f2d62e8675b8bba924b27db689c9cd7f"
+ }
+ Frame {
+ msec: 336
+ hash: "f2d62e8675b8bba924b27db689c9cd7f"
+ }
+ Frame {
+ msec: 352
+ hash: "f2d62e8675b8bba924b27db689c9cd7f"
+ }
+ Frame {
+ msec: 368
+ hash: "f2d62e8675b8bba924b27db689c9cd7f"
+ }
+ Frame {
+ msec: 384
+ hash: "f2d62e8675b8bba924b27db689c9cd7f"
+ }
+ Frame {
+ msec: 400
+ hash: "9498a80d60ab24d82ffb935979e1cf1b"
+ }
+ Frame {
+ msec: 416
+ hash: "9498a80d60ab24d82ffb935979e1cf1b"
+ }
+ Frame {
+ msec: 432
+ hash: "9498a80d60ab24d82ffb935979e1cf1b"
+ }
+ Frame {
+ msec: 448
+ hash: "9498a80d60ab24d82ffb935979e1cf1b"
+ }
+ Frame {
+ msec: 464
+ hash: "ee3cb45a15460f4235fc22ca97e0303d"
+ }
+ Frame {
+ msec: 480
+ hash: "ee3cb45a15460f4235fc22ca97e0303d"
+ }
+ Frame {
+ msec: 496
+ hash: "ee3cb45a15460f4235fc22ca97e0303d"
+ }
+ Frame {
+ msec: 512
+ hash: "ee3cb45a15460f4235fc22ca97e0303d"
+ }
+ Frame {
+ msec: 528
+ hash: "94464db418aec12b451e9dc106deec73"
+ }
+ Frame {
+ msec: 544
+ hash: "94464db418aec12b451e9dc106deec73"
+ }
+ Frame {
+ msec: 560
+ hash: "94464db418aec12b451e9dc106deec73"
+ }
+ Frame {
+ msec: 576
+ hash: "94464db418aec12b451e9dc106deec73"
+ }
+ Frame {
+ msec: 592
+ hash: "94464db418aec12b451e9dc106deec73"
+ }
+ Frame {
+ msec: 608
+ hash: "22b23a55986e912cf38239d5e68f0c4a"
+ }
+ Frame {
+ msec: 624
+ hash: "22b23a55986e912cf38239d5e68f0c4a"
+ }
+ Frame {
+ msec: 640
+ hash: "22b23a55986e912cf38239d5e68f0c4a"
+ }
+ Frame {
+ msec: 656
+ hash: "22b23a55986e912cf38239d5e68f0c4a"
+ }
+ Frame {
+ msec: 672
+ hash: "3836d0aaf354d147dc6ffe3ace184ba5"
+ }
+ Frame {
+ msec: 688
+ hash: "3836d0aaf354d147dc6ffe3ace184ba5"
+ }
+ Frame {
+ msec: 704
+ hash: "3836d0aaf354d147dc6ffe3ace184ba5"
+ }
+ Frame {
+ msec: 720
+ hash: "3836d0aaf354d147dc6ffe3ace184ba5"
+ }
+ Frame {
+ msec: 736
+ hash: "3836d0aaf354d147dc6ffe3ace184ba5"
+ }
+ Frame {
+ msec: 752
+ hash: "20ccea5bc4c15401a7c660b1801488dd"
+ }
+ Frame {
+ msec: 768
+ hash: "20ccea5bc4c15401a7c660b1801488dd"
+ }
+ Frame {
+ msec: 784
+ hash: "20ccea5bc4c15401a7c660b1801488dd"
+ }
+ Frame {
+ msec: 800
+ hash: "20ccea5bc4c15401a7c660b1801488dd"
+ }
+ Frame {
+ msec: 816
+ hash: "31ffa9cfd6f60a33ed3b052e45ee5080"
+ }
+ Frame {
+ msec: 832
+ hash: "31ffa9cfd6f60a33ed3b052e45ee5080"
+ }
+ Frame {
+ msec: 848
+ hash: "31ffa9cfd6f60a33ed3b052e45ee5080"
+ }
+ Frame {
+ msec: 864
+ hash: "31ffa9cfd6f60a33ed3b052e45ee5080"
+ }
+ Frame {
+ msec: 880
+ hash: "7138b38fcff27e85aaf3179c6e81ac69"
+ }
+ Frame {
+ msec: 896
+ hash: "7138b38fcff27e85aaf3179c6e81ac69"
+ }
+ Frame {
+ msec: 912
+ hash: "7138b38fcff27e85aaf3179c6e81ac69"
+ }
+ Frame {
+ msec: 928
+ hash: "7138b38fcff27e85aaf3179c6e81ac69"
+ }
+ Frame {
+ msec: 944
+ hash: "7138b38fcff27e85aaf3179c6e81ac69"
+ }
+ Frame {
+ msec: 960
+ hash: "78854022288d4cd50bb9141896403d35"
+ }
+ Frame {
+ msec: 976
+ image: "elide2.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "78854022288d4cd50bb9141896403d35"
+ }
+ Frame {
+ msec: 1008
+ hash: "78854022288d4cd50bb9141896403d35"
+ }
+ Frame {
+ msec: 1024
+ hash: "8730d8adb4029b157e39b90e3cb2b879"
+ }
+ Frame {
+ msec: 1040
+ hash: "8730d8adb4029b157e39b90e3cb2b879"
+ }
+ Frame {
+ msec: 1056
+ hash: "8730d8adb4029b157e39b90e3cb2b879"
+ }
+ Frame {
+ msec: 1072
+ hash: "8730d8adb4029b157e39b90e3cb2b879"
+ }
+ Frame {
+ msec: 1088
+ hash: "9edb542976d1acd86be3d516276dee1f"
+ }
+ Frame {
+ msec: 1104
+ hash: "9edb542976d1acd86be3d516276dee1f"
+ }
+ Frame {
+ msec: 1120
+ hash: "9edb542976d1acd86be3d516276dee1f"
+ }
+ Frame {
+ msec: 1136
+ hash: "9edb542976d1acd86be3d516276dee1f"
+ }
+ Frame {
+ msec: 1152
+ hash: "9edb542976d1acd86be3d516276dee1f"
+ }
+ Frame {
+ msec: 1168
+ hash: "1a394542b01712fbd67b78a69733b324"
+ }
+ Frame {
+ msec: 1184
+ hash: "1a394542b01712fbd67b78a69733b324"
+ }
+ Frame {
+ msec: 1200
+ hash: "1a394542b01712fbd67b78a69733b324"
+ }
+ Frame {
+ msec: 1216
+ hash: "1a394542b01712fbd67b78a69733b324"
+ }
+ Frame {
+ msec: 1232
+ hash: "4825f9a6679fdee8efe89507d384c07c"
+ }
+ Frame {
+ msec: 1248
+ hash: "4825f9a6679fdee8efe89507d384c07c"
+ }
+ Frame {
+ msec: 1264
+ hash: "4825f9a6679fdee8efe89507d384c07c"
+ }
+ Frame {
+ msec: 1280
+ hash: "4825f9a6679fdee8efe89507d384c07c"
+ }
+ Frame {
+ msec: 1296
+ hash: "4825f9a6679fdee8efe89507d384c07c"
+ }
+ Frame {
+ msec: 1312
+ hash: "0ed5382fd2e370bad934647d7abf293f"
+ }
+ Frame {
+ msec: 1328
+ hash: "0ed5382fd2e370bad934647d7abf293f"
+ }
+ Frame {
+ msec: 1344
+ hash: "0ed5382fd2e370bad934647d7abf293f"
+ }
+ Frame {
+ msec: 1360
+ hash: "0ed5382fd2e370bad934647d7abf293f"
+ }
+ Frame {
+ msec: 1376
+ hash: "6206435ab4d05d5d5f84b362d45c30f9"
+ }
+ Frame {
+ msec: 1392
+ hash: "6206435ab4d05d5d5f84b362d45c30f9"
+ }
+ Frame {
+ msec: 1408
+ hash: "6206435ab4d05d5d5f84b362d45c30f9"
+ }
+ Frame {
+ msec: 1424
+ hash: "6206435ab4d05d5d5f84b362d45c30f9"
+ }
+ Frame {
+ msec: 1440
+ hash: "b0eb92df767e7cb61cc69d7363041263"
+ }
+ Frame {
+ msec: 1456
+ hash: "b0eb92df767e7cb61cc69d7363041263"
+ }
+ Frame {
+ msec: 1472
+ hash: "b0eb92df767e7cb61cc69d7363041263"
+ }
+ Frame {
+ msec: 1488
+ hash: "b0eb92df767e7cb61cc69d7363041263"
+ }
+ Frame {
+ msec: 1504
+ hash: "b0eb92df767e7cb61cc69d7363041263"
+ }
+ Frame {
+ msec: 1520
+ hash: "0306262c9594536e0eecf3d67e5910cf"
+ }
+ Frame {
+ msec: 1536
+ hash: "0306262c9594536e0eecf3d67e5910cf"
+ }
+ Frame {
+ msec: 1552
+ hash: "0306262c9594536e0eecf3d67e5910cf"
+ }
+ Frame {
+ msec: 1568
+ hash: "0306262c9594536e0eecf3d67e5910cf"
+ }
+ Frame {
+ msec: 1584
+ hash: "4f21a25c75cfabbcbd7c485c7c479bfc"
+ }
+ Frame {
+ msec: 1600
+ hash: "4f21a25c75cfabbcbd7c485c7c479bfc"
+ }
+ Frame {
+ msec: 1616
+ hash: "4f21a25c75cfabbcbd7c485c7c479bfc"
+ }
+ Frame {
+ msec: 1632
+ hash: "4f21a25c75cfabbcbd7c485c7c479bfc"
+ }
+ Frame {
+ msec: 1648
+ hash: "b627f215fdb6f62e6cbf2ddbe14dc794"
+ }
+ Frame {
+ msec: 1664
+ hash: "b627f215fdb6f62e6cbf2ddbe14dc794"
+ }
+ Frame {
+ msec: 1680
+ hash: "b627f215fdb6f62e6cbf2ddbe14dc794"
+ }
+ Frame {
+ msec: 1696
+ hash: "b627f215fdb6f62e6cbf2ddbe14dc794"
+ }
+ Frame {
+ msec: 1712
+ hash: "b627f215fdb6f62e6cbf2ddbe14dc794"
+ }
+ Frame {
+ msec: 1728
+ hash: "8c490b27882c58d34cbc941a0b10e6fe"
+ }
+ Frame {
+ msec: 1744
+ hash: "8c490b27882c58d34cbc941a0b10e6fe"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1760
+ hash: "8c490b27882c58d34cbc941a0b10e6fe"
+ }
+ Frame {
+ msec: 1776
+ hash: "8c490b27882c58d34cbc941a0b10e6fe"
+ }
+ Frame {
+ msec: 1792
+ hash: "739abcde4a980e05932aa079245136cd"
+ }
+ Frame {
+ msec: 1808
+ hash: "739abcde4a980e05932aa079245136cd"
+ }
+ Frame {
+ msec: 1824
+ hash: "739abcde4a980e05932aa079245136cd"
+ }
+ Frame {
+ msec: 1840
+ hash: "739abcde4a980e05932aa079245136cd"
+ }
+ Frame {
+ msec: 1856
+ hash: "739abcde4a980e05932aa079245136cd"
+ }
+ Frame {
+ msec: 1872
+ hash: "af47b93ee81b0e4add42d9addad92219"
+ }
+ Frame {
+ msec: 1888
+ hash: "af47b93ee81b0e4add42d9addad92219"
+ }
+ Frame {
+ msec: 1904
+ hash: "af47b93ee81b0e4add42d9addad92219"
+ }
+ Frame {
+ msec: 1920
+ hash: "af47b93ee81b0e4add42d9addad92219"
+ }
+ Frame {
+ msec: 1936
+ image: "elide2.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "43d7bee700464080f7535d398d60af25"
+ }
+ Frame {
+ msec: 1968
+ hash: "43d7bee700464080f7535d398d60af25"
+ }
+ Frame {
+ msec: 1984
+ hash: "43d7bee700464080f7535d398d60af25"
+ }
+ Frame {
+ msec: 2000
+ hash: "31bf9784a1e1b84cc0ed4a342284ce1a"
+ }
+ Frame {
+ msec: 2016
+ hash: "31bf9784a1e1b84cc0ed4a342284ce1a"
+ }
+ Frame {
+ msec: 2032
+ hash: "31bf9784a1e1b84cc0ed4a342284ce1a"
+ }
+ Frame {
+ msec: 2048
+ hash: "31bf9784a1e1b84cc0ed4a342284ce1a"
+ }
+ Frame {
+ msec: 2064
+ hash: "31bf9784a1e1b84cc0ed4a342284ce1a"
+ }
+ Frame {
+ msec: 2080
+ hash: "59db6dabc6c6930b9561bc906f49cc3c"
+ }
+ Frame {
+ msec: 2096
+ hash: "59db6dabc6c6930b9561bc906f49cc3c"
+ }
+ Frame {
+ msec: 2112
+ hash: "59db6dabc6c6930b9561bc906f49cc3c"
+ }
+ Frame {
+ msec: 2128
+ hash: "59db6dabc6c6930b9561bc906f49cc3c"
+ }
+ Frame {
+ msec: 2144
+ hash: "9e9cd1f4b9ad0980d6601e52c3d21402"
+ }
+ Frame {
+ msec: 2160
+ hash: "9e9cd1f4b9ad0980d6601e52c3d21402"
+ }
+ Frame {
+ msec: 2176
+ hash: "9e9cd1f4b9ad0980d6601e52c3d21402"
+ }
+ Frame {
+ msec: 2192
+ hash: "9e9cd1f4b9ad0980d6601e52c3d21402"
+ }
+ Frame {
+ msec: 2208
+ hash: "f8e23813215634224d2fb00f3d1993c5"
+ }
+ Frame {
+ msec: 2224
+ hash: "f8e23813215634224d2fb00f3d1993c5"
+ }
+ Frame {
+ msec: 2240
+ hash: "f8e23813215634224d2fb00f3d1993c5"
+ }
+ Frame {
+ msec: 2256
+ hash: "f8e23813215634224d2fb00f3d1993c5"
+ }
+ Frame {
+ msec: 2272
+ hash: "f8e23813215634224d2fb00f3d1993c5"
+ }
+ Frame {
+ msec: 2288
+ hash: "e867db62cb8ec10228ea7b2eceda3723"
+ }
+ Frame {
+ msec: 2304
+ hash: "e867db62cb8ec10228ea7b2eceda3723"
+ }
+ Frame {
+ msec: 2320
+ hash: "e867db62cb8ec10228ea7b2eceda3723"
+ }
+ Frame {
+ msec: 2336
+ hash: "e867db62cb8ec10228ea7b2eceda3723"
+ }
+ Frame {
+ msec: 2352
+ hash: "36da8cc7019fae8b1abc877961d3af41"
+ }
+ Frame {
+ msec: 2368
+ hash: "36da8cc7019fae8b1abc877961d3af41"
+ }
+ Frame {
+ msec: 2384
+ hash: "36da8cc7019fae8b1abc877961d3af41"
+ }
+ Frame {
+ msec: 2400
+ hash: "36da8cc7019fae8b1abc877961d3af41"
+ }
+ Frame {
+ msec: 2416
+ hash: "36da8cc7019fae8b1abc877961d3af41"
+ }
+ Frame {
+ msec: 2432
+ hash: "ea907beaf860fa21684fc524e876346c"
+ }
+ Frame {
+ msec: 2448
+ hash: "ea907beaf860fa21684fc524e876346c"
+ }
+ Frame {
+ msec: 2464
+ hash: "ea907beaf860fa21684fc524e876346c"
+ }
+ Frame {
+ msec: 2480
+ hash: "ea907beaf860fa21684fc524e876346c"
+ }
+ Frame {
+ msec: 2496
+ hash: "2b3eb80e842df2fa2b6c217a2948af45"
+ }
+ Frame {
+ msec: 2512
+ hash: "2b3eb80e842df2fa2b6c217a2948af45"
+ }
+ Frame {
+ msec: 2528
+ hash: "2b3eb80e842df2fa2b6c217a2948af45"
+ }
+ Frame {
+ msec: 2544
+ hash: "2b3eb80e842df2fa2b6c217a2948af45"
+ }
+ Frame {
+ msec: 2560
+ hash: "05ffb4d0af3fea65151596ea5b9b43c5"
+ }
+ Frame {
+ msec: 2576
+ hash: "05ffb4d0af3fea65151596ea5b9b43c5"
+ }
+ Frame {
+ msec: 2592
+ hash: "05ffb4d0af3fea65151596ea5b9b43c5"
+ }
+ Frame {
+ msec: 2608
+ hash: "05ffb4d0af3fea65151596ea5b9b43c5"
+ }
+ Frame {
+ msec: 2624
+ hash: "05ffb4d0af3fea65151596ea5b9b43c5"
+ }
+ Frame {
+ msec: 2640
+ hash: "612517436b6ef76f29b213944f742624"
+ }
+ Frame {
+ msec: 2656
+ hash: "612517436b6ef76f29b213944f742624"
+ }
+ Frame {
+ msec: 2672
+ hash: "612517436b6ef76f29b213944f742624"
+ }
+ Frame {
+ msec: 2688
+ hash: "612517436b6ef76f29b213944f742624"
+ }
+ Frame {
+ msec: 2704
+ hash: "a62c646572c94d55971445c0546e06fc"
+ }
+ Frame {
+ msec: 2720
+ hash: "a62c646572c94d55971445c0546e06fc"
+ }
+ Frame {
+ msec: 2736
+ hash: "a62c646572c94d55971445c0546e06fc"
+ }
+ Frame {
+ msec: 2752
+ hash: "a62c646572c94d55971445c0546e06fc"
+ }
+ Frame {
+ msec: 2768
+ hash: "91be655836fbf7f811a44ffa1e80b72a"
+ }
+ Frame {
+ msec: 2784
+ hash: "91be655836fbf7f811a44ffa1e80b72a"
+ }
+ Frame {
+ msec: 2800
+ hash: "91be655836fbf7f811a44ffa1e80b72a"
+ }
+ Frame {
+ msec: 2816
+ hash: "91be655836fbf7f811a44ffa1e80b72a"
+ }
+ Frame {
+ msec: 2832
+ hash: "91be655836fbf7f811a44ffa1e80b72a"
+ }
+ Frame {
+ msec: 2848
+ hash: "4fdf23d15633bd9dbcc1767fca797ef6"
+ }
+ Frame {
+ msec: 2864
+ hash: "4fdf23d15633bd9dbcc1767fca797ef6"
+ }
+ Frame {
+ msec: 2880
+ hash: "4fdf23d15633bd9dbcc1767fca797ef6"
+ }
+ Frame {
+ msec: 2896
+ image: "elide2.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "a81f41ab4e100d92f643ae188c1a5b8a"
+ }
+ Frame {
+ msec: 2928
+ hash: "a81f41ab4e100d92f643ae188c1a5b8a"
+ }
+ Frame {
+ msec: 2944
+ hash: "a81f41ab4e100d92f643ae188c1a5b8a"
+ }
+ Frame {
+ msec: 2960
+ hash: "a81f41ab4e100d92f643ae188c1a5b8a"
+ }
+ Frame {
+ msec: 2976
+ hash: "a81f41ab4e100d92f643ae188c1a5b8a"
+ }
+ Frame {
+ msec: 2992
+ hash: "6785dbb1bd05081c5b5d890d4b4f28d5"
+ }
+ Frame {
+ msec: 3008
+ hash: "6785dbb1bd05081c5b5d890d4b4f28d5"
+ }
+ Frame {
+ msec: 3024
+ hash: "6785dbb1bd05081c5b5d890d4b4f28d5"
+ }
+ Frame {
+ msec: 3040
+ hash: "6785dbb1bd05081c5b5d890d4b4f28d5"
+ }
+ Frame {
+ msec: 3056
+ hash: "ca4fc26d93d4767ef7cdbac6b2e24cf5"
+ }
+ Frame {
+ msec: 3072
+ hash: "ca4fc26d93d4767ef7cdbac6b2e24cf5"
+ }
+ Frame {
+ msec: 3088
+ hash: "ca4fc26d93d4767ef7cdbac6b2e24cf5"
+ }
+ Frame {
+ msec: 3104
+ hash: "ca4fc26d93d4767ef7cdbac6b2e24cf5"
+ }
+ Frame {
+ msec: 3120
+ hash: "706fd39d5945f9f698e7fa6e26631b58"
+ }
+ Frame {
+ msec: 3136
+ hash: "706fd39d5945f9f698e7fa6e26631b58"
+ }
+ Frame {
+ msec: 3152
+ hash: "706fd39d5945f9f698e7fa6e26631b58"
+ }
+ Frame {
+ msec: 3168
+ hash: "706fd39d5945f9f698e7fa6e26631b58"
+ }
+ Frame {
+ msec: 3184
+ hash: "706fd39d5945f9f698e7fa6e26631b58"
+ }
+ Frame {
+ msec: 3200
+ hash: "c4ed351cacc86b5ca2c8198be0a754e0"
+ }
+ Frame {
+ msec: 3216
+ hash: "c4ed351cacc86b5ca2c8198be0a754e0"
+ }
+ Frame {
+ msec: 3232
+ hash: "c4ed351cacc86b5ca2c8198be0a754e0"
+ }
+ Frame {
+ msec: 3248
+ hash: "c4ed351cacc86b5ca2c8198be0a754e0"
+ }
+ Frame {
+ msec: 3264
+ hash: "addbbaca2d29fbc8c7907d51a8e9cdce"
+ }
+ Frame {
+ msec: 3280
+ hash: "addbbaca2d29fbc8c7907d51a8e9cdce"
+ }
+ Frame {
+ msec: 3296
+ hash: "addbbaca2d29fbc8c7907d51a8e9cdce"
+ }
+ Frame {
+ msec: 3312
+ hash: "addbbaca2d29fbc8c7907d51a8e9cdce"
+ }
+ Frame {
+ msec: 3328
+ hash: "fcb6b78276df1a6c839d6f30f8fe6495"
+ }
+ Frame {
+ msec: 3344
+ hash: "fcb6b78276df1a6c839d6f30f8fe6495"
+ }
+ Frame {
+ msec: 3360
+ hash: "fcb6b78276df1a6c839d6f30f8fe6495"
+ }
+ Frame {
+ msec: 3376
+ hash: "fcb6b78276df1a6c839d6f30f8fe6495"
+ }
+ Frame {
+ msec: 3392
+ hash: "fcb6b78276df1a6c839d6f30f8fe6495"
+ }
+ Frame {
+ msec: 3408
+ hash: "b066cbbb00a4bef4e730ea8131c2bbe5"
+ }
+ Frame {
+ msec: 3424
+ hash: "b066cbbb00a4bef4e730ea8131c2bbe5"
+ }
+ Frame {
+ msec: 3440
+ hash: "b066cbbb00a4bef4e730ea8131c2bbe5"
+ }
+ Frame {
+ msec: 3456
+ hash: "b066cbbb00a4bef4e730ea8131c2bbe5"
+ }
+ Frame {
+ msec: 3472
+ hash: "e6d801e738ed3265b0127b79da7e8ec5"
+ }
+ Frame {
+ msec: 3488
+ hash: "e6d801e738ed3265b0127b79da7e8ec5"
+ }
+ Frame {
+ msec: 3504
+ hash: "e6d801e738ed3265b0127b79da7e8ec5"
+ }
+ Frame {
+ msec: 3520
+ hash: "e6d801e738ed3265b0127b79da7e8ec5"
+ }
+ Frame {
+ msec: 3536
+ hash: "e6d801e738ed3265b0127b79da7e8ec5"
+ }
+ Frame {
+ msec: 3552
+ hash: "5b9a527ce399d0467b29c8813bbc7e6a"
+ }
+ Frame {
+ msec: 3568
+ hash: "5b9a527ce399d0467b29c8813bbc7e6a"
+ }
+ Frame {
+ msec: 3584
+ hash: "5b9a527ce399d0467b29c8813bbc7e6a"
+ }
+ Frame {
+ msec: 3600
+ hash: "5b9a527ce399d0467b29c8813bbc7e6a"
+ }
+ Frame {
+ msec: 3616
+ hash: "e9dd6c70c22d7b100a07ee837add697b"
+ }
+ Frame {
+ msec: 3632
+ hash: "e9dd6c70c22d7b100a07ee837add697b"
+ }
+ Frame {
+ msec: 3648
+ hash: "e9dd6c70c22d7b100a07ee837add697b"
+ }
+ Frame {
+ msec: 3664
+ hash: "e9dd6c70c22d7b100a07ee837add697b"
+ }
+ Frame {
+ msec: 3680
+ hash: "92e553a6e8385ceba6804075e5ed6add"
+ }
+ Frame {
+ msec: 3696
+ hash: "92e553a6e8385ceba6804075e5ed6add"
+ }
+ Frame {
+ msec: 3712
+ hash: "92e553a6e8385ceba6804075e5ed6add"
+ }
+ Frame {
+ msec: 3728
+ hash: "92e553a6e8385ceba6804075e5ed6add"
+ }
+ Frame {
+ msec: 3744
+ hash: "92e553a6e8385ceba6804075e5ed6add"
+ }
+ Frame {
+ msec: 3760
+ hash: "eafdc541e5bb2937cc472511758bd494"
+ }
+ Frame {
+ msec: 3776
+ hash: "eafdc541e5bb2937cc472511758bd494"
+ }
+ Frame {
+ msec: 3792
+ hash: "eafdc541e5bb2937cc472511758bd494"
+ }
+ Frame {
+ msec: 3808
+ hash: "eafdc541e5bb2937cc472511758bd494"
+ }
+ Frame {
+ msec: 3824
+ hash: "3d207efb5d563ec0a8640091710aa9fd"
+ }
+ Frame {
+ msec: 3840
+ hash: "3d207efb5d563ec0a8640091710aa9fd"
+ }
+ Frame {
+ msec: 3856
+ image: "elide2.4.png"
+ }
+ Frame {
+ msec: 3872
+ hash: "3d207efb5d563ec0a8640091710aa9fd"
+ }
+ Frame {
+ msec: 3888
+ hash: "d837a68f291b44c8ea4b92088ebccb2c"
+ }
+ Frame {
+ msec: 3904
+ hash: "d837a68f291b44c8ea4b92088ebccb2c"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png
index 6e2b625daa..730925e92f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.1.png
new file mode 100644
index 0000000000..ddd6cc5803
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.2.png
new file mode 100644
index 0000000000..4679774be1
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.3.png
new file mode 100644
index 0000000000..51018b4336
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.4.png
new file mode 100644
index 0000000000..f5ed905f9e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.5.png
new file mode 100644
index 0000000000..500572457b
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.5.png
Binary files differ
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 ee06b1a998..faf7240129 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml
@@ -6,298 +6,1318 @@ VisualTest {
}
Frame {
msec: 16
- hash: "873e914454b7a040b05649ebd1a2f8c5"
+ image: "multilength.0.png"
}
Frame {
msec: 32
- hash: "7682a4f1e361ca252da9713734a598e8"
+ hash: "12cd5401549bc43283d6c46964528b9b"
}
Frame {
msec: 48
- hash: "fa8884b550c8df872f96b61557163bcf"
+ hash: "ae042a0f3c6e32550288a9b0e6a0ce0d"
}
Frame {
msec: 64
- hash: "b84ecf9e38f126c3e32defee831d9462"
+ hash: "9124b4e5f5dd374e44f3f57fe3d6809b"
}
Frame {
msec: 80
- hash: "21cc08f22d1f1fcb38b27a3a4259debe"
+ hash: "54dabe45069a00c8759bb5560c9b269f"
}
Frame {
msec: 96
- hash: "93bdfeab813e25e85917f49c0d5f1314"
+ hash: "0d908ef6e3ea15455e35a9ebbc90c735"
}
Frame {
msec: 112
- hash: "5f03c252602e60fe19879945fa77c203"
+ hash: "de5fcf719cd096b99a531e7af9b26e35"
}
Frame {
msec: 128
- hash: "f0b2079f6c512bf80989ebfdbec4cfd8"
+ hash: "d48ccb7c22c2606ef814cd5abd3888f3"
}
Frame {
msec: 144
- hash: "9e7bb12d5b7605fc1d78ed9b2a549527"
+ hash: "2ec7418477158ee60afe123fa2b7ce4b"
}
Frame {
msec: 160
- hash: "242bbbe6da87708c92fd47607ecb789d"
+ hash: "418d6d46726c688bee6f415eb2ff2e43"
}
Frame {
msec: 176
- hash: "f1db5c3a230b4d3e2e1dfefe6bf032a1"
+ hash: "e754141341d9f81366f21820e46bd1ca"
}
Frame {
msec: 192
- hash: "a416e820efd8e173cc52372218513e33"
+ hash: "89b4b5f7563bfdb5d1e636a5462e0d8e"
}
Frame {
msec: 208
- hash: "df711ab70c6087f8138fded16167f069"
+ hash: "46c3a7d4700a9599d474b7de1ab44a18"
}
Frame {
msec: 224
- hash: "fb28eb2eeccfab28299640ef996c1115"
+ hash: "c50698470bc6c1ea04633b9e819a2d4d"
}
Frame {
msec: 240
- hash: "c72c6d79a50dd7147f6b33784880eb36"
+ hash: "dc7d5345363cad6ee007f162f9ea75e2"
}
Frame {
msec: 256
- hash: "4421027e65e95f98499ca53c57220ede"
+ hash: "3b9ccb93f6375ea401c1fc3bcdf847d5"
}
Frame {
msec: 272
- hash: "b7fbfb90d8cc167809e8e846d9021b4b"
+ hash: "6d034da407af9e27ce70e9dbfee3bb38"
}
Frame {
msec: 288
- hash: "004614b1bf18e9aa78e78509c4f289aa"
+ hash: "3bce938e5db4c2295cd25a6e2b33738c"
}
Frame {
msec: 304
- hash: "1792bbd8b69bae1d92fed2a6bcfe0187"
+ hash: "68266f4f9da256b9df499285ebb842fb"
}
Frame {
msec: 320
- hash: "957a8b95d6e85885d854b8eb1db10b04"
+ hash: "a9c912fd159baadc4afcd963f857e91b"
}
Frame {
msec: 336
- hash: "d00c3e4d6d8e8d04b949840c28d73a33"
+ hash: "85cb9086774297b2772e71229f7d84fc"
}
Frame {
msec: 352
- hash: "2b79feaa62d773d92d8a684685b2004c"
+ hash: "585e6f2d28ec70d10741a52fb68d718c"
}
Frame {
msec: 368
- hash: "ef2f11b187028de0c56b23db3168fbc8"
+ hash: "bfd552ccaccc569d2478ac4d92fe2eb0"
}
Frame {
msec: 384
- hash: "3a489a96aaeca80355313198b935691d"
+ hash: "748d57dff4cdc09a842353e51de41e5a"
}
Frame {
msec: 400
- hash: "389f1798f900795a8686c38ace755974"
+ hash: "e0012622a4ef1d5b2090c02020b676c2"
}
Frame {
msec: 416
- hash: "34fc20be52fe3843420819b9adb90b22"
+ hash: "8e4d4a808564a8ba80578600104f230d"
}
Frame {
msec: 432
- hash: "fa715c5b6640eafe204bf3b8095c74b9"
+ hash: "d92e44d8e1f7651a9d256e9e4f3e8168"
}
Frame {
msec: 448
- hash: "8e8315edcf23167ac58228b8c28b43e6"
+ hash: "d99b016a0dfdb332dbb1a2c10f53bc05"
}
Frame {
msec: 464
- hash: "c18e82038f57dd869112cb1be14e4cfe"
+ hash: "3ce4357881a34f4c9e2f0d684218e253"
}
Frame {
msec: 480
- hash: "3f07e95b09e39f2e5d93216850f4a4d9"
+ hash: "07ee4bb59f7ee591bd7a6f117d9f1aa6"
}
Frame {
msec: 496
- hash: "20f0e6eaeac04d6f93565adfab485218"
+ hash: "f66ce51f2eece9f0fa89c41340245976"
}
Frame {
msec: 512
- hash: "e3f66d1dfe88dd868a54a8493828ef5f"
+ hash: "a9d2b2d4f6ae5e071897d17469a5bad3"
}
Frame {
msec: 528
- hash: "d39d34f63e1b29c187249cb388552b38"
+ hash: "55db2dbd65cae186d59cb2edb5841880"
}
Frame {
msec: 544
- hash: "5d2e8df5003732f3b53fff4aaddea06c"
+ hash: "576297445ee3f89994538fcd8c8b102c"
}
Frame {
msec: 560
- hash: "35c3aa2dae481a8f817d849b3f3151f2"
+ hash: "6ca41b83b8ff27f97c71a23d1c7f9765"
}
Frame {
msec: 576
- hash: "966b78018879224948b4d85fe73d7985"
+ hash: "7e41ef79cae5966821106df39f6a748d"
}
Frame {
msec: 592
- hash: "0db067bf9debc3f36dd539cf83652fb8"
+ hash: "9e8b750bbb3680f90d6bbddb6e394d5e"
}
Frame {
msec: 608
- hash: "ea1c3249ffd2439533907ceaeaafbc56"
+ hash: "9a61dddcc33ff2b778097b5edb706912"
}
Frame {
msec: 624
- hash: "da85c0e14b95ca9a729984b67ebd52ad"
+ hash: "395d015e538dde494059df392379ba26"
}
Frame {
msec: 640
- hash: "5c26ae844ac52dbe131fed0638787aac"
+ hash: "d1db5dc62ca702f4241e45811aebe6f3"
}
Frame {
msec: 656
- hash: "4b09c23ad624db80afcb2a6c1d5ddb96"
+ hash: "18f1a038041bd8a51f3375ca64084251"
}
Frame {
msec: 672
- hash: "9995deb3d22b418a19093b4b988b3fcc"
+ hash: "6c0f6360156cb806a8b30cafc69013af"
}
Frame {
msec: 688
- hash: "77e53358f2d4392d0ba988187e7e272c"
+ hash: "69525e71fe8fe9847ff956e40c2c45ec"
}
Frame {
msec: 704
- hash: "3fbbb73e790cf4a0583531fe1580f761"
+ hash: "ac7ae453f35a05e760976df6d91206e2"
}
Frame {
msec: 720
- hash: "9d562e141095a258ee61463e644d9889"
+ hash: "c96358482f0900a906b2fc4742981e3a"
}
Frame {
msec: 736
- hash: "d05633ca49f96bf327bed5c9c0f6ac98"
+ hash: "2cccb8f6a63f21d01cd3b61a97730bf8"
}
Frame {
msec: 752
- hash: "34c38e40e831dbede8fa83de31ed76aa"
+ hash: "bf01c0cb968768199f3158e6cefcb09f"
}
Frame {
msec: 768
- hash: "288e52c8be54f4914f687cef4ce1f24a"
+ hash: "0ac63c33649462f06979de77c042476c"
}
Frame {
msec: 784
- hash: "0b8b744aaf67e8b17fa459bb0ffb6db5"
+ hash: "61931edba8d1abcdc07bb43e17446f4e"
}
Frame {
msec: 800
- hash: "273dbe3e8c21bfeafa516d07778928c8"
+ hash: "e8122f997a4076055d8addda88c4ad6e"
}
Frame {
msec: 816
- hash: "ef94ee1885287c72fa78038547d98b96"
+ hash: "cc7e654138605c25cb21aa8966361cf4"
}
Frame {
msec: 832
- hash: "965e6387672319ac04fdc42768e581f1"
+ hash: "177aaec34c677b21798de1e024860490"
}
Frame {
msec: 848
- hash: "95553d8aaece94c7017e57b03cd46c9a"
+ hash: "d0fe9544e55f6876908d9c118366f038"
}
Frame {
msec: 864
- hash: "bdaf35b920e5b08b8639d452afd2d51e"
+ hash: "f713b7e11bf61a0f0a06e6aedb36b7f1"
}
Frame {
msec: 880
- hash: "0ed16f00e89327dc8679bec42179c4ce"
+ hash: "b703bd46b9f355711318882194f28d52"
}
Frame {
msec: 896
- hash: "8c93e0ac399e09e98e34b90654e0e42a"
+ hash: "047dad73e6c845704f3de6b317ce9290"
}
Frame {
msec: 912
- hash: "93798fbb33adb6c813018757cfa34017"
+ hash: "8c48b0963af8d71fc245373083c14a93"
}
Frame {
msec: 928
- hash: "db4d7581e9a1f082a2c29ef7482a7893"
+ hash: "d11944e0d9035b6eff85ca9fc5adc2c0"
}
Frame {
msec: 944
- hash: "67e074c1e083334de84a3549f4ee9ca4"
+ hash: "d650943a979c7bf52fff77063406c46d"
}
Frame {
msec: 960
- image: "multilength.0.png"
+ hash: "13d533b5b3b01be7dbad7b8403ce1c24"
}
Frame {
msec: 976
- hash: "b1122c815a755c9988bcf03a3f7d7d6d"
+ image: "multilength.1.png"
}
Frame {
msec: 992
- hash: "31148bae6653bdc3f1827d06de845663"
+ hash: "ba51fa05accf637b31328ab0a11e4b61"
}
Frame {
msec: 1008
- hash: "812428a944086ca46e102891964dac69"
+ hash: "25c783c07b5eb03c351274c3b6494e24"
}
Frame {
msec: 1024
- hash: "ee7bb66bd7e8623325200ac994f8b41a"
+ hash: "5665113db0b932b07ac707875e5d77e6"
}
Frame {
msec: 1040
- hash: "6bd21a98e5c373a2c78334a0255e7750"
+ hash: "aceeb64e5935f1889828f3487767db3e"
}
Frame {
msec: 1056
- hash: "2e8e1eea14068b0e82464ed52ec1ab7a"
+ hash: "7c66c51a9fd694940a93a7acf036e6d3"
}
Frame {
msec: 1072
- hash: "6dca5756e20eeb778e31d7b602ce77d7"
+ hash: "8b699d11b0a8c7df7df448f5c27a0bc2"
}
Frame {
msec: 1088
- hash: "3cbb6700b9e30864a2b1e3d4d71d2a78"
+ hash: "c592cebdfadf68eecbddb0add92afa42"
}
Frame {
msec: 1104
- hash: "c4d0230d2c4f73191a514e5df4c0b083"
+ hash: "e175f718809eea5b38a1de46f061871f"
}
Frame {
msec: 1120
- hash: "a33df967fe43151dfc503d2ac78f8ca8"
+ hash: "3182ba22228e8cd056db81eea4678b5d"
}
Frame {
msec: 1136
- hash: "0c7ff101efe60b600cacaf8d04d79053"
+ hash: "e09776f37769f34bd2d856c6af3a1e53"
}
Frame {
msec: 1152
- hash: "d246cfb75d89b9666877860aaf45ba60"
+ hash: "085f9dd2539b950d9f62bdcdf4f3b172"
}
Frame {
msec: 1168
- hash: "1130998aa2618a29ec6bc4b9219eedfa"
+ hash: "3c290084b9c251e039aef4df8581ed31"
}
Frame {
msec: 1184
- hash: "741dd83003633bbf8d28c2d4ddd8a2d0"
+ hash: "893f5dc3cd01ace8d31ebc63e0d7e132"
+ }
+ Frame {
+ msec: 1200
+ hash: "5cadde434641daffa52965659a4a056f"
+ }
+ Frame {
+ msec: 1216
+ hash: "741d34abca5ba1a2e5678f3ca272dbd3"
+ }
+ Frame {
+ msec: 1232
+ hash: "96dd3f940c637b085026e224021239bd"
+ }
+ Frame {
+ msec: 1248
+ hash: "df8334c4ce1ca5f2317a771e787aea96"
+ }
+ Frame {
+ msec: 1264
+ hash: "aeef63be208b75c9246248025c977b75"
+ }
+ Frame {
+ msec: 1280
+ hash: "8722a8e9b1cca4cf20ec31da27f38614"
+ }
+ Frame {
+ msec: 1296
+ hash: "bdc1392f8e1a55e7c970502785024a89"
+ }
+ Frame {
+ msec: 1312
+ hash: "ed2be797ca3d623ca532fea7ca5b1f2c"
+ }
+ Frame {
+ msec: 1328
+ hash: "bb79d75488df131bf5443371c6b4464f"
+ }
+ Frame {
+ msec: 1344
+ hash: "0b7dd91d5bc8290d4be1a0af6b2756c2"
+ }
+ Frame {
+ msec: 1360
+ hash: "4f1c88a745105934fb94a6a3e3620602"
+ }
+ Frame {
+ msec: 1376
+ hash: "c5a3b476c66e9b6a33f93d5114303669"
+ }
+ Frame {
+ msec: 1392
+ hash: "3104791545798f8e43ca976c893d078f"
+ }
+ Frame {
+ msec: 1408
+ hash: "3c8c329b4c757ab37054cbcc93840a75"
+ }
+ Frame {
+ msec: 1424
+ hash: "36b1fc7d93664005449d818dd063c8e7"
+ }
+ Frame {
+ msec: 1440
+ hash: "25927d84d7394e912977d25ddf555ddf"
+ }
+ Frame {
+ msec: 1456
+ hash: "6f226e26d6a40b3688923fb833ce0fd9"
+ }
+ Frame {
+ msec: 1472
+ hash: "75aaa5301fc8d716371d9fcec6491e81"
+ }
+ Frame {
+ msec: 1488
+ hash: "fb87bcb1b620d48d6bfa6eeb94025907"
+ }
+ Frame {
+ msec: 1504
+ hash: "88231c28ef82974f8eb47060e64176d0"
+ }
+ Frame {
+ msec: 1520
+ hash: "06db390a17fc2fa4a93012a168801d05"
+ }
+ Frame {
+ msec: 1536
+ hash: "41400211939574696e04bcd615130f34"
+ }
+ Frame {
+ msec: 1552
+ hash: "ca979c24603d8cd31583c1670f15b1a9"
+ }
+ Frame {
+ msec: 1568
+ hash: "515a32b5c4567c8dec3004c41214daa1"
+ }
+ Frame {
+ msec: 1584
+ hash: "d4fbe8e354db8b1b5fc543daf7007fdb"
+ }
+ Frame {
+ msec: 1600
+ hash: "ec6351064566a120836cb115bb81e46a"
+ }
+ Frame {
+ msec: 1616
+ hash: "74dcd99e1ba3e5e8447d2695e4c4acd9"
+ }
+ Frame {
+ msec: 1632
+ hash: "7a751f44c384b87b0c2f633932587795"
+ }
+ Frame {
+ msec: 1648
+ hash: "04e45b241cf498777835f74feeea0c15"
+ }
+ Frame {
+ msec: 1664
+ hash: "66096d2ef700bb64771fa192219e034a"
+ }
+ Frame {
+ msec: 1680
+ hash: "1dd2437b0f63a8acaa8c62819d7de10e"
+ }
+ Frame {
+ msec: 1696
+ hash: "89e6b25fc16c5d1eba04cd0f7bd2f910"
+ }
+ Frame {
+ msec: 1712
+ hash: "7cd23dbc40340bc3652255d4a65ce7ec"
+ }
+ Frame {
+ msec: 1728
+ hash: "5f94c6ba73d2dbeb8ec90b17cb7fab6f"
+ }
+ Frame {
+ msec: 1744
+ hash: "e8e01bc97bbd349e2f64a59d13ca25a3"
+ }
+ Frame {
+ msec: 1760
+ hash: "a0cf054ef1005191637173a22e325891"
+ }
+ Frame {
+ msec: 1776
+ hash: "fa8b35c0141049d691735b26eb9410ac"
+ }
+ Frame {
+ msec: 1792
+ hash: "c55b4d3a3ee530480d0a0e0aa52f340f"
+ }
+ Frame {
+ msec: 1808
+ hash: "b2639e3e32e513c991525a87448e805d"
+ }
+ Frame {
+ msec: 1824
+ hash: "d66f25378bbec3eca675a90795567825"
+ }
+ Frame {
+ msec: 1840
+ hash: "13bb009108dfcdc861a16ab33a3c4f3a"
+ }
+ Frame {
+ msec: 1856
+ hash: "3a09ccaf62d8929def529260da98dc7a"
+ }
+ Frame {
+ msec: 1872
+ hash: "79564d7447732fcfdbb81ff2bcd85a4f"
+ }
+ Frame {
+ msec: 1888
+ hash: "149c65ef5ec18af4fd264fa284bfa027"
+ }
+ Frame {
+ msec: 1904
+ hash: "e5370728e870ac9f907aafbd17526631"
+ }
+ Frame {
+ msec: 1920
+ hash: "98034cff5b93c905bbc53cf9582bc4be"
+ }
+ Frame {
+ msec: 1936
+ image: "multilength.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "05c3a8016110ad576c349964af3d4d05"
+ }
+ Frame {
+ msec: 1968
+ hash: "91caa4f007dfd1ab7994a11bf4b4fa94"
+ }
+ Frame {
+ msec: 1984
+ hash: "d1fb233313ef6e7be742a504e171f6c0"
+ }
+ Frame {
+ msec: 2000
+ hash: "0e20bbd3c80189a6d8ea23205bf7b278"
+ }
+ Frame {
+ msec: 2016
+ hash: "6f2b8de20e5800bda7a533353bb5805a"
+ }
+ Frame {
+ msec: 2032
+ hash: "e25e8c3e7df20b0b7e8f25fba5d2608a"
+ }
+ Frame {
+ msec: 2048
+ hash: "8802faef3121ac361b448b42b89d2176"
+ }
+ Frame {
+ msec: 2064
+ hash: "567c710da8f36b51192a8994611a50a8"
+ }
+ Frame {
+ msec: 2080
+ hash: "d45309aabf9c510234276c28ef4e3c35"
+ }
+ Frame {
+ msec: 2096
+ hash: "ef698cc1ea8eee480c57f38a8f704e6b"
+ }
+ Frame {
+ msec: 2112
+ hash: "5301682074b5343d18748cf6e7bada1c"
+ }
+ Frame {
+ msec: 2128
+ hash: "dd5220c0d94b747cd462e35e41945ae8"
+ }
+ Frame {
+ msec: 2144
+ hash: "0d1c246956283f80eff128bbb5241e03"
+ }
+ Frame {
+ msec: 2160
+ hash: "7b57a3c6ee9b8ae316e2a2d7a1ab630d"
+ }
+ Frame {
+ msec: 2176
+ hash: "61780d8d53f21b275f9ee795c5519cbf"
+ }
+ Frame {
+ msec: 2192
+ hash: "1876746b0b6bdc40c808c3afb0ad00e8"
+ }
+ Frame {
+ msec: 2208
+ hash: "6f7e9a1d8240b037501b486245eb5c33"
+ }
+ Frame {
+ msec: 2224
+ hash: "8a5f3d8d9e0147072690740d567f8a2a"
+ }
+ Frame {
+ msec: 2240
+ hash: "2ea7f42b92e407b50ebf82c841e77f7f"
+ }
+ Frame {
+ msec: 2256
+ hash: "7ce3e829b75be2f2f72952c614748b51"
+ }
+ Frame {
+ msec: 2272
+ hash: "112cbf9bf521c2fb0f0573081feb6051"
+ }
+ Frame {
+ msec: 2288
+ hash: "c6d16bde84f714d3f14a105deb68e989"
+ }
+ Frame {
+ msec: 2304
+ hash: "f1e3f7416233bc8b3bce90672185cbd2"
+ }
+ Frame {
+ msec: 2320
+ hash: "009fd4bfc354c91f3766bcf32732b027"
+ }
+ Frame {
+ msec: 2336
+ hash: "67220a780fc2cd8e9fbd314c5f000f7c"
+ }
+ Frame {
+ msec: 2352
+ hash: "c306d1be1dc40fb115b583a83497fbb0"
+ }
+ Frame {
+ msec: 2368
+ hash: "f6bedbbffec4447da8fda2d75169644c"
+ }
+ Frame {
+ msec: 2384
+ hash: "be4f28bd814ce3688bd7a28a2dc71606"
+ }
+ Frame {
+ msec: 2400
+ hash: "130ec2ff6e06927a02df769743de19b5"
+ }
+ Frame {
+ msec: 2416
+ hash: "34ffeec40133a30903809a30d9108887"
+ }
+ Frame {
+ msec: 2432
+ hash: "133a89cf6c784106066b96f51e43f43a"
+ }
+ Frame {
+ msec: 2448
+ hash: "6336801efb0d62e5b790ff67b76754a5"
+ }
+ Frame {
+ msec: 2464
+ hash: "04d50179982fdf346a33e346eeb9eb62"
+ }
+ Frame {
+ msec: 2480
+ hash: "5432d629a9bce20e041841d79acf91ab"
+ }
+ Frame {
+ msec: 2496
+ hash: "afbdef35aae3d79f0ba992a34c46b1dc"
+ }
+ Frame {
+ msec: 2512
+ hash: "18a051efc4bf47515d2220549970fa69"
+ }
+ Frame {
+ msec: 2528
+ hash: "a0cde51080347ba164227c8a40cf37c1"
+ }
+ Frame {
+ msec: 2544
+ hash: "b2eeabc7208b7a3f9e5a7d16f984be86"
+ }
+ Frame {
+ msec: 2560
+ hash: "ee5c97a5bd22b22a4e18998b6d056517"
+ }
+ Frame {
+ msec: 2576
+ hash: "84f4575d2c4ba3a91ef72cb8caf64e63"
+ }
+ Frame {
+ msec: 2592
+ hash: "bd14115e10086864de3ab6a7bc13f9a2"
+ }
+ Frame {
+ msec: 2608
+ hash: "9b3672f731fad142ae7e3621a325cf21"
+ }
+ Frame {
+ msec: 2624
+ hash: "17d1887942d2b7297b6f3a2545ec8bf2"
+ }
+ Frame {
+ msec: 2640
+ hash: "c5c8b41e74b90fcb9d4da432fa01e361"
+ }
+ Frame {
+ msec: 2656
+ hash: "a2992b652305077906db9dcbb90c1a23"
+ }
+ Frame {
+ msec: 2672
+ hash: "bfb30aa4caa43833eca59ceaaca04084"
+ }
+ Frame {
+ msec: 2688
+ hash: "cbb06915ae6176ef52fdb518fb5a12de"
+ }
+ Frame {
+ msec: 2704
+ hash: "a894d34c39b274149a9391a5956f0666"
+ }
+ Frame {
+ msec: 2720
+ hash: "7dcc1008d2287ca15f726854e5e204f2"
+ }
+ Frame {
+ msec: 2736
+ hash: "811db22f9a25dd594f59d97adb41b9ce"
+ }
+ Frame {
+ msec: 2752
+ hash: "6535cb3f4cf2839158f172bd0c1baf88"
+ }
+ Frame {
+ msec: 2768
+ hash: "1919a3d079c06fbb00b6a23d4a47951a"
+ }
+ Frame {
+ msec: 2784
+ hash: "69f3525379f7628c4435d2681a2a0bb8"
+ }
+ Frame {
+ msec: 2800
+ hash: "4ce4253e733c24a1a988de018916d0b2"
+ }
+ Frame {
+ msec: 2816
+ hash: "7610bee04c98b9af5e6ae34f4a1a4a09"
+ }
+ Frame {
+ msec: 2832
+ hash: "5e2a2c16c0a218afc3eb9095f3432f41"
+ }
+ Frame {
+ msec: 2848
+ hash: "0124a41ff860d31b3e36973226db2916"
+ }
+ Frame {
+ msec: 2864
+ hash: "a1126e1d8cce43dfb571803a62f790de"
+ }
+ Frame {
+ msec: 2880
+ hash: "6eee371fe5cc8b052ca49bb5e3509307"
+ }
+ Frame {
+ msec: 2896
+ image: "multilength.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "331bcae7bd6aeaede3556cf926bd1a0c"
+ }
+ Frame {
+ msec: 2928
+ hash: "a7561f3a6ce4fee43e4b06dfe5ee7844"
+ }
+ Frame {
+ msec: 2944
+ hash: "712e52e72cc01ae29cd7e736a78f94b3"
+ }
+ Frame {
+ msec: 2960
+ hash: "d34a4414fca4ef7a2cce288d438bfcc1"
+ }
+ Frame {
+ msec: 2976
+ hash: "1c2c5241aee7efcc9a6adcbe01f56609"
+ }
+ Frame {
+ msec: 2992
+ hash: "90a8547113c36002f62405aac41de5b1"
+ }
+ Frame {
+ msec: 3008
+ hash: "5726801ea37dcfd2c087c9523b360b55"
+ }
+ Frame {
+ msec: 3024
+ hash: "a371d1f9ef687f50d433b0efb6bb57c9"
+ }
+ Frame {
+ msec: 3040
+ hash: "75e0e2728e2160dcc012a21c759c62d0"
+ }
+ Frame {
+ msec: 3056
+ hash: "428e6d8adbd0e85790365d7537dc37c8"
+ }
+ Frame {
+ msec: 3072
+ hash: "798babedde2192b4ac9becc5bae3ea62"
+ }
+ Frame {
+ msec: 3088
+ hash: "39745e87e8e96993fccfed6710c3c14f"
+ }
+ Frame {
+ msec: 3104
+ hash: "08624110f2bba4e676b4a339ead23f78"
+ }
+ Frame {
+ msec: 3120
+ hash: "1d45fc90eb70a3c21d503284637355de"
+ }
+ Frame {
+ msec: 3136
+ hash: "37c6eed126e265f4a60a1bc92879e18e"
+ }
+ Frame {
+ msec: 3152
+ hash: "a25f2accf6e19eb293a5540efa9447ec"
+ }
+ Frame {
+ msec: 3168
+ hash: "5212d86075595cb1a9c47cf683ac411a"
+ }
+ Frame {
+ msec: 3184
+ hash: "8f43028def9e949ca3a15fdec9932a59"
+ }
+ Frame {
+ msec: 3200
+ hash: "90b55602b8aa530d634db72c202f2d75"
+ }
+ Frame {
+ msec: 3216
+ hash: "f5a84978918f8987b49ce500959d81ef"
+ }
+ Frame {
+ msec: 3232
+ hash: "588382357311925157e12ae7a576426c"
+ }
+ Frame {
+ msec: 3248
+ hash: "ce3e9a93f60579f77f6503637cb316d0"
+ }
+ Frame {
+ msec: 3264
+ hash: "63c2ba78f5a81375fe79c5b2b2030b55"
+ }
+ Frame {
+ msec: 3280
+ hash: "7dceb950e0cae31bddeca1d279a688f3"
+ }
+ Frame {
+ msec: 3296
+ hash: "c6681bcf60562b16eb515f6b0bfdc751"
+ }
+ Frame {
+ msec: 3312
+ hash: "cd2b41f01af6b80622158bf38a13c609"
+ }
+ Frame {
+ msec: 3328
+ hash: "69401bc38be274791a26f6ea161eb296"
+ }
+ Frame {
+ msec: 3344
+ hash: "425238342219c4fc66c4a0a8b16c5345"
+ }
+ Frame {
+ msec: 3360
+ hash: "a501082add225fa59f468808d34d1c16"
+ }
+ Frame {
+ msec: 3376
+ hash: "58bba6d1eb3166e7ac9bfe36cd9a4fa9"
+ }
+ Frame {
+ msec: 3392
+ hash: "293df1a2bdd526e97d5783f46f74262c"
+ }
+ Frame {
+ msec: 3408
+ hash: "6808ee202e8eae3c72474126b59aa0dc"
+ }
+ Frame {
+ msec: 3424
+ hash: "7ef977f275851649324e333d58777156"
+ }
+ Frame {
+ msec: 3440
+ hash: "12007edff45f9cc21a2f633052e4b9d6"
+ }
+ Frame {
+ msec: 3456
+ hash: "bc1d362d3a42ab3610136727605222dc"
+ }
+ Frame {
+ msec: 3472
+ hash: "6bfead8d9644f5abdd3b896714521002"
+ }
+ Frame {
+ msec: 3488
+ hash: "341c311e4b08d69a053c1faffc208838"
+ }
+ Frame {
+ msec: 3504
+ hash: "54e4c8001d06c7c48180865598f5f5df"
+ }
+ Frame {
+ msec: 3520
+ hash: "e69c142bf2a6cf85194de5df91e54886"
+ }
+ Frame {
+ msec: 3536
+ hash: "fb9fda1e790c64aea264a6af0020ce33"
+ }
+ Frame {
+ msec: 3552
+ hash: "74c27a13090e8eb78bc157daff840e07"
+ }
+ Frame {
+ msec: 3568
+ hash: "f9a8c1764b0a1625ce336e80a91db00e"
+ }
+ Frame {
+ msec: 3584
+ hash: "11fd6f7cee3971ebce744f20da77139f"
+ }
+ Frame {
+ msec: 3600
+ hash: "6cea030cfc1c53772f14d760d046d7f8"
+ }
+ Frame {
+ msec: 3616
+ hash: "599cf14ec73f6812ffb49312d3d8f742"
+ }
+ Frame {
+ msec: 3632
+ hash: "879798ae161f1550096abdfa113e3eac"
+ }
+ Frame {
+ msec: 3648
+ hash: "4cc9b679554a2a8b809a88504c17f86a"
+ }
+ Frame {
+ msec: 3664
+ hash: "943bca80ab42c1856aa095add705a3fe"
+ }
+ Frame {
+ msec: 3680
+ hash: "0386a55ebc0cd32b4b7727eac2908a59"
+ }
+ Frame {
+ msec: 3696
+ hash: "74ed8ea60f1c1b3fb097eb7f5bca43e8"
+ }
+ Frame {
+ msec: 3712
+ hash: "225f78966947d20268f1bea32093c0c9"
+ }
+ Frame {
+ msec: 3728
+ hash: "d2ed6af6fbdfbdcd9c82a588b72c5f6b"
+ }
+ Frame {
+ msec: 3744
+ hash: "3c0e45078e5223335a4204fb8904d116"
+ }
+ Frame {
+ msec: 3760
+ hash: "58ad3d7030b079cdedf1a84d6c6a59fc"
+ }
+ Frame {
+ msec: 3776
+ hash: "2c8ce9f237a2c373584b661defe84e7f"
+ }
+ Frame {
+ msec: 3792
+ hash: "c2f2ae8c7481036ddda01776db61ef0a"
+ }
+ Frame {
+ msec: 3808
+ hash: "7236e9d1e086479acd5047070a4ae700"
+ }
+ Frame {
+ msec: 3824
+ hash: "7f95776ac1804971cc939f8f1f0fee70"
+ }
+ Frame {
+ msec: 3840
+ hash: "d6d76b50b7d2ec522a51d2512a5aeff8"
+ }
+ Frame {
+ msec: 3856
+ image: "multilength.4.png"
+ }
+ Frame {
+ msec: 3872
+ hash: "29b8b535c9321752a68b17400c7133ac"
+ }
+ Frame {
+ msec: 3888
+ hash: "846f4f5718bce8dc7a333d8603bfe729"
+ }
+ Frame {
+ msec: 3904
+ hash: "b285f6a417bfb46add698f4193b39552"
+ }
+ Frame {
+ msec: 3920
+ hash: "b79708e4aa2b05a1c285dd075127460d"
+ }
+ Frame {
+ msec: 3936
+ hash: "0cdded9c7796292cd38a3bc2fdc65597"
+ }
+ Frame {
+ msec: 3952
+ hash: "6f8855c20666a58bbf4ade762403180e"
+ }
+ Frame {
+ msec: 3968
+ hash: "1a7979b578c8b330099a5e840d5d2bd8"
+ }
+ Frame {
+ msec: 3984
+ hash: "30fb74a2bf4e1ec57332713994e405cd"
+ }
+ Frame {
+ msec: 4000
+ hash: "1c7df42f90a867350adca840106d3ba1"
+ }
+ Frame {
+ msec: 4016
+ hash: "5509a232afe047f365465ef8fd9f0af0"
+ }
+ Frame {
+ msec: 4032
+ hash: "2149d59ffd7c07bdc0bcb2d8ad9b1ca3"
+ }
+ Frame {
+ msec: 4048
+ hash: "4b8848019eaf4af67db4db09b98b183e"
+ }
+ Frame {
+ msec: 4064
+ hash: "e3f6f9db89bd81ce68f8dfd401f1baa8"
+ }
+ Frame {
+ msec: 4080
+ hash: "6e8d991c83094c89025148bc0943e554"
+ }
+ Frame {
+ msec: 4096
+ hash: "ed4d8bde61581cdcf6128c65d427846c"
+ }
+ Frame {
+ msec: 4112
+ hash: "c63d0baaa43c4f6a0f0150ecf268b06d"
+ }
+ Frame {
+ msec: 4128
+ hash: "b36c6a0092f400bb99b2c68a0ba4e6ce"
+ }
+ Frame {
+ msec: 4144
+ hash: "b4b1059c1e00ee77fda538f9e71a6206"
+ }
+ Frame {
+ msec: 4160
+ hash: "e7c36e10dee12ea2d22d7c17cde9d8ca"
+ }
+ Frame {
+ msec: 4176
+ hash: "78d070c37bbc707e38db98896f997349"
+ }
+ Frame {
+ msec: 4192
+ hash: "e56cb5fbb7713a66ef1f1577eff20db8"
+ }
+ Frame {
+ msec: 4208
+ hash: "17e466af39cdde893cf93fa38392bb90"
+ }
+ Frame {
+ msec: 4224
+ hash: "75bf32afe1071794bba58623d7165a22"
+ }
+ Frame {
+ msec: 4240
+ hash: "6de50f6748021b99731f6cb25d6d6ec3"
+ }
+ Frame {
+ msec: 4256
+ hash: "cbd224a02668f57413b6999dfb141723"
+ }
+ Frame {
+ msec: 4272
+ hash: "f770a74ce40615095798b244af3cc097"
+ }
+ Frame {
+ msec: 4288
+ hash: "faea3d28eb65656392860d888ec087b1"
+ }
+ Frame {
+ msec: 4304
+ hash: "1f1d5ee10403184ab83ec5c1f94c4290"
+ }
+ Frame {
+ msec: 4320
+ hash: "501253b40939d98beac9db85d3cd5b4b"
+ }
+ Frame {
+ msec: 4336
+ hash: "0819ece70a98a3ea4371947375b52d46"
+ }
+ Frame {
+ msec: 4352
+ hash: "2b5f64e4a03aa416a4cf172c99aec498"
+ }
+ Frame {
+ msec: 4368
+ hash: "931a6fa175b8d540fc745d425a9b93b3"
+ }
+ Frame {
+ msec: 4384
+ hash: "fa6f54fae79a428029fbd0ae6481bcc5"
+ }
+ Frame {
+ msec: 4400
+ hash: "7796756dfd30688ed74c2e6e0b05ca5a"
+ }
+ Frame {
+ msec: 4416
+ hash: "b42cfbfe1527412b977b8e2c7506cdf0"
+ }
+ Frame {
+ msec: 4432
+ hash: "c81300e8d29770c0efd2ab91d75a669a"
+ }
+ Frame {
+ msec: 4448
+ hash: "923494f5147a85432e6efbcf5b79e26a"
+ }
+ Frame {
+ msec: 4464
+ hash: "3aaffee732cb243bbda5df938f487b2d"
+ }
+ Frame {
+ msec: 4480
+ hash: "ce8e33f621c7f5cd5047da86bdef4084"
+ }
+ Frame {
+ msec: 4496
+ hash: "55e2bc371ea853ee4f3ba22e35c20e8e"
+ }
+ Frame {
+ msec: 4512
+ hash: "e8bec4813a6c8f212c70019f907ba904"
+ }
+ Frame {
+ msec: 4528
+ hash: "aae9dd25ca9935c478e5d9fa629c6f70"
+ }
+ Frame {
+ msec: 4544
+ hash: "30828a796072deb6e6505090dbc2c840"
+ }
+ Frame {
+ msec: 4560
+ hash: "c8ebeb539a6ebb2ca47544f7f1617da9"
+ }
+ Frame {
+ msec: 4576
+ hash: "3ad9a23b57b0938a430c636910dc312f"
+ }
+ Frame {
+ msec: 4592
+ hash: "1a12587ebbae18dd761c70c4ed845fa5"
+ }
+ Frame {
+ msec: 4608
+ hash: "f1d6ee0cd7aaa221d151c2d32e963358"
+ }
+ Frame {
+ msec: 4624
+ hash: "e9bbf398abc09d9740dce4e3843c53f4"
+ }
+ Frame {
+ msec: 4640
+ hash: "f839c105f1897f028611d557b11f5814"
+ }
+ Frame {
+ msec: 4656
+ hash: "b923b46ccfe53ceb7ea228b12f44842d"
+ }
+ Frame {
+ msec: 4672
+ hash: "8e3708a8f2ba63f7cb01b8d66d1b3dec"
+ }
+ Frame {
+ msec: 4688
+ hash: "68659fce94c9d019a1d5da6273186674"
+ }
+ Frame {
+ msec: 4704
+ hash: "56797caf6f2987b7d03c0401871d87e3"
+ }
+ Frame {
+ msec: 4720
+ hash: "de0d89aaa5b1ce0ed99d2906b63e7434"
+ }
+ Frame {
+ msec: 4736
+ hash: "e3802a76b64eeaeae06b23134b5198a9"
+ }
+ Frame {
+ msec: 4752
+ hash: "1a3ddf57aa429a407705ae268441c5b5"
+ }
+ Frame {
+ msec: 4768
+ hash: "319b09c0e4a8c0d1f507594b53a407c4"
+ }
+ Frame {
+ msec: 4784
+ hash: "fd54c9ee19133b0f75c56e4d6472cdad"
+ }
+ Frame {
+ msec: 4800
+ hash: "e6b983b491133a41b753411c587c69ec"
+ }
+ Frame {
+ msec: 4816
+ image: "multilength.5.png"
+ }
+ Frame {
+ msec: 4832
+ hash: "2760407d7defa4738d7b9ecb243f41a9"
+ }
+ Frame {
+ msec: 4848
+ hash: "1ff562f05454980d4f677e783ba4bf75"
+ }
+ Frame {
+ msec: 4864
+ hash: "43ad6e0926f812af5553e3a8492404e9"
+ }
+ Frame {
+ msec: 4880
+ hash: "b9c34d52c0c44dcdf8a2ca8a0e20ae65"
+ }
+ Frame {
+ msec: 4896
+ hash: "4fd7f6d183626686569462a9828837d2"
+ }
+ Frame {
+ msec: 4912
+ hash: "3b904440f68aa0009707b5f3a0c2af74"
+ }
+ Frame {
+ msec: 4928
+ hash: "cc58910f0881ec5b3cb2eec404c19e16"
+ }
+ Frame {
+ msec: 4944
+ hash: "8b638f369c3629530d91e6acac8c5fdf"
+ }
+ Frame {
+ msec: 4960
+ hash: "b403e21b14646ac0cdaee2027125c0ad"
+ }
+ Frame {
+ msec: 4976
+ hash: "d037545cc68b7582c400c8c9da49ff2a"
+ }
+ Frame {
+ msec: 4992
+ hash: "551435ecb008ff217eb65a5a77a28090"
+ }
+ Frame {
+ msec: 5008
+ hash: "a1684c1c0938386bbfb309969114beee"
+ }
+ Frame {
+ msec: 5024
+ hash: "f803bd7bdc97bb8bbb5103a54901d756"
+ }
+ Frame {
+ msec: 5040
+ hash: "de956b3223e24a615713c35faa403128"
+ }
+ Frame {
+ msec: 5056
+ hash: "9124b4e5f5dd374e44f3f57fe3d6809b"
+ }
+ Frame {
+ msec: 5072
+ hash: "5b8313c622796aa87248b38ab336bcf8"
+ }
+ Frame {
+ msec: 5088
+ hash: "de6477fc7e6b8f14a7a51f9cf762ee79"
+ }
+ Frame {
+ msec: 5104
+ hash: "0d908ef6e3ea15455e35a9ebbc90c735"
+ }
+ Frame {
+ msec: 5120
+ hash: "bd1d7ad510cd5e04283f6167a5a8e2df"
+ }
+ Frame {
+ msec: 5136
+ hash: "2ec7418477158ee60afe123fa2b7ce4b"
+ }
+ Frame {
+ msec: 5152
+ hash: "04c671070b1eba13380aa2fbb672d3a1"
+ }
+ Frame {
+ msec: 5168
+ hash: "ce031ba5b388dfaff34674eb71f790f2"
+ }
+ Frame {
+ msec: 5184
+ hash: "e754141341d9f81366f21820e46bd1ca"
+ }
+ Frame {
+ msec: 5200
+ hash: "acf56542617bc742ad729709645ac919"
+ }
+ Frame {
+ msec: 5216
+ hash: "c50698470bc6c1ea04633b9e819a2d4d"
+ }
+ Frame {
+ msec: 5232
+ hash: "c156d3540c3cf6d406b72696fd6e9148"
+ }
+ Frame {
+ msec: 5248
+ hash: "82a04f09cd35db0dbf012797625368e4"
+ }
+ Frame {
+ msec: 5264
+ hash: "3b9ccb93f6375ea401c1fc3bcdf847d5"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.0.png
deleted file mode 100644
index 1a8c89b870..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.qml
deleted file mode 100644
index 3b8ae0c0f7..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide.qml
+++ /dev/null
@@ -1,279 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 32
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 48
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 64
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 80
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 96
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 112
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 128
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 144
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 160
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 176
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 192
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 208
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 224
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 240
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 256
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 272
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 288
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 304
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 320
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 336
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 352
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 368
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 384
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 400
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 416
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 432
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 448
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 464
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 480
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 496
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 512
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 528
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 544
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 560
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 576
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 592
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 608
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 624
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 640
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 656
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 672
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 688
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 704
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 720
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 736
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 752
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 768
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 784
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 800
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 816
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 832
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 848
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 864
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 880
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 896
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 912
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 928
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 944
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 960
- image: "elide.0.png"
- }
- Frame {
- msec: 976
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 992
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 1008
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 1024
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 1040
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
- Frame {
- msec: 1056
- hash: "c80d2bcd4be99c73e6c628870206ce8c"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.0.png
deleted file mode 100644
index 3dfade5c72..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.1.png
deleted file mode 100644
index 1ee2076add..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.2.png
deleted file mode 100644
index ae680bebbe..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.3.png
deleted file mode 100644
index c2859bef87..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.qml
deleted file mode 100644
index 27fbaf4c1f..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data/elide2.qml
+++ /dev/null
@@ -1,991 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 32
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 48
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 64
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 80
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 96
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 112
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 128
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 144
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 160
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 176
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 192
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 208
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 224
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 240
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 256
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 272
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 288
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 304
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 320
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 336
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 352
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 368
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 384
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 400
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 416
- hash: "086a46352aa1221b5e57f5624b0c256b"
- }
- Frame {
- msec: 432
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
- }
- Frame {
- msec: 448
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
- }
- Frame {
- msec: 464
- hash: "fc3a7e898d6bfa2af4d774b20609f967"
- }
- Frame {
- msec: 480
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
- }
- Frame {
- msec: 496
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
- }
- Frame {
- msec: 512
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
- }
- Frame {
- msec: 528
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
- }
- Frame {
- msec: 544
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
- }
- Frame {
- msec: 560
- hash: "3bcaa6426796bc9097e0aeba90dd5e39"
- }
- Frame {
- msec: 576
- hash: "4daa612cd7e7ee455ff1a93329202865"
- }
- Frame {
- msec: 592
- hash: "4daa612cd7e7ee455ff1a93329202865"
- }
- Frame {
- msec: 608
- hash: "4daa612cd7e7ee455ff1a93329202865"
- }
- Frame {
- msec: 624
- hash: "4daa612cd7e7ee455ff1a93329202865"
- }
- Frame {
- msec: 640
- hash: "4daa612cd7e7ee455ff1a93329202865"
- }
- Frame {
- msec: 656
- hash: "3f362ad550db910f1d9f261557c65913"
- }
- Frame {
- msec: 672
- hash: "3f362ad550db910f1d9f261557c65913"
- }
- Frame {
- msec: 688
- hash: "f159011c2b85fe212a32a7b5d2a57016"
- }
- Frame {
- msec: 704
- hash: "f159011c2b85fe212a32a7b5d2a57016"
- }
- Frame {
- msec: 720
- hash: "f159011c2b85fe212a32a7b5d2a57016"
- }
- Frame {
- msec: 736
- hash: "f159011c2b85fe212a32a7b5d2a57016"
- }
- Frame {
- msec: 752
- hash: "f159011c2b85fe212a32a7b5d2a57016"
- }
- Frame {
- msec: 768
- hash: "f159011c2b85fe212a32a7b5d2a57016"
- }
- Frame {
- msec: 784
- hash: "a892c67199c23e5d9012a6a24cb45d16"
- }
- Frame {
- msec: 800
- hash: "a892c67199c23e5d9012a6a24cb45d16"
- }
- Frame {
- msec: 816
- hash: "a892c67199c23e5d9012a6a24cb45d16"
- }
- Frame {
- msec: 832
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
- }
- Frame {
- msec: 848
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
- }
- Frame {
- msec: 864
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
- }
- Frame {
- msec: 880
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
- }
- Frame {
- msec: 896
- hash: "532e01ed6ede95eca68e641e2edb7f1c"
- }
- Frame {
- msec: 912
- hash: "a7dc1d7dde956d62834de0968261386f"
- }
- Frame {
- msec: 928
- hash: "a7dc1d7dde956d62834de0968261386f"
- }
- Frame {
- msec: 944
- hash: "a7dc1d7dde956d62834de0968261386f"
- }
- Frame {
- msec: 960
- image: "elide2.0.png"
- }
- Frame {
- msec: 976
- hash: "a7dc1d7dde956d62834de0968261386f"
- }
- Frame {
- msec: 992
- hash: "a590e1358fac567dda9fdfc6bfe4ab89"
- }
- Frame {
- msec: 1008
- hash: "a590e1358fac567dda9fdfc6bfe4ab89"
- }
- Frame {
- msec: 1024
- hash: "778d34ca89b5db88fe26619576e9d337"
- }
- Frame {
- msec: 1040
- hash: "778d34ca89b5db88fe26619576e9d337"
- }
- Frame {
- msec: 1056
- hash: "778d34ca89b5db88fe26619576e9d337"
- }
- Frame {
- msec: 1072
- hash: "778d34ca89b5db88fe26619576e9d337"
- }
- Frame {
- msec: 1088
- hash: "778d34ca89b5db88fe26619576e9d337"
- }
- Frame {
- msec: 1104
- hash: "9424caee019aa9bccd4156b0b9ca2723"
- }
- Frame {
- msec: 1120
- hash: "9424caee019aa9bccd4156b0b9ca2723"
- }
- Frame {
- msec: 1136
- hash: "9424caee019aa9bccd4156b0b9ca2723"
- }
- Frame {
- msec: 1152
- hash: "000061a140ab71a44c0480a92ad3bc70"
- }
- Frame {
- msec: 1168
- hash: "000061a140ab71a44c0480a92ad3bc70"
- }
- Frame {
- msec: 1184
- hash: "000061a140ab71a44c0480a92ad3bc70"
- }
- Frame {
- msec: 1200
- hash: "5dec9638853165428cd15ae02e1d03ce"
- }
- Frame {
- msec: 1216
- hash: "5dec9638853165428cd15ae02e1d03ce"
- }
- Frame {
- msec: 1232
- hash: "5dec9638853165428cd15ae02e1d03ce"
- }
- Frame {
- msec: 1248
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
- }
- Frame {
- msec: 1264
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
- }
- Frame {
- msec: 1280
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
- }
- Frame {
- msec: 1296
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
- }
- Frame {
- msec: 1312
- hash: "ecb69bdbd13114715f738b1ace3ecf51"
- }
- Frame {
- msec: 1328
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
- }
- Frame {
- msec: 1344
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
- }
- Frame {
- msec: 1360
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
- }
- Frame {
- msec: 1376
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
- }
- Frame {
- msec: 1392
- hash: "923b4f4f4a3dbaefbf003859067b2ea9"
- }
- Frame {
- msec: 1408
- hash: "d4230a476237f9e13a132e775f1b960c"
- }
- Frame {
- msec: 1424
- hash: "d4230a476237f9e13a132e775f1b960c"
- }
- Frame {
- msec: 1440
- hash: "d4230a476237f9e13a132e775f1b960c"
- }
- Frame {
- msec: 1456
- hash: "d4230a476237f9e13a132e775f1b960c"
- }
- Frame {
- msec: 1472
- hash: "d4230a476237f9e13a132e775f1b960c"
- }
- Frame {
- msec: 1488
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
- }
- Frame {
- msec: 1504
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
- }
- Frame {
- msec: 1520
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
- }
- Frame {
- msec: 1536
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
- }
- Frame {
- msec: 1552
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
- }
- Frame {
- msec: 1568
- hash: "504ad2ba8543f7ad6490bd45d86fbef9"
- }
- Frame {
- msec: 1584
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
- }
- Frame {
- msec: 1600
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
- }
- Frame {
- msec: 1616
- hash: "dd412c6a2e5cb8890cb43142c84a5673"
- }
- Frame {
- msec: 1632
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
- }
- Frame {
- msec: 1648
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
- }
- Frame {
- msec: 1664
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
- }
- Frame {
- msec: 1680
- hash: "38b1fa7bd4e2f13b05caa62903c56ab6"
- }
- Frame {
- msec: 1696
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
- }
- Frame {
- msec: 1712
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
- }
- Frame {
- msec: 1728
- hash: "ffb2cb01c868c1dfa6b5154c4e8a7fd8"
- }
- Frame {
- msec: 1744
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1760
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
- }
- Frame {
- msec: 1776
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
- }
- Frame {
- msec: 1792
- hash: "9effd5fc19246cfe3d2f5968c5caaa4e"
- }
- Frame {
- msec: 1808
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
- }
- Frame {
- msec: 1824
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
- }
- Frame {
- msec: 1840
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
- }
- Frame {
- msec: 1856
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
- }
- Frame {
- msec: 1872
- hash: "4fa14ae57d170b16fd90d59d5ec83561"
- }
- Frame {
- msec: 1888
- hash: "976dd5bc154522438f92790f28639512"
- }
- Frame {
- msec: 1904
- hash: "976dd5bc154522438f92790f28639512"
- }
- Frame {
- msec: 1920
- image: "elide2.1.png"
- }
- Frame {
- msec: 1936
- hash: "976dd5bc154522438f92790f28639512"
- }
- Frame {
- msec: 1952
- hash: "976dd5bc154522438f92790f28639512"
- }
- Frame {
- msec: 1968
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
- }
- Frame {
- msec: 1984
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
- }
- Frame {
- msec: 2000
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
- }
- Frame {
- msec: 2016
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
- }
- Frame {
- msec: 2032
- hash: "4ae1d6ddb9a78cc2f4e81b58fcca6a20"
- }
- Frame {
- msec: 2048
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
- }
- Frame {
- msec: 2064
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
- }
- Frame {
- msec: 2080
- hash: "84bdf634cfd4de588f2b0984aa3e97bd"
- }
- Frame {
- msec: 2096
- hash: "1a978ed6951afe40912efcfb54dcce65"
- }
- Frame {
- msec: 2112
- hash: "1a978ed6951afe40912efcfb54dcce65"
- }
- Frame {
- msec: 2128
- hash: "1a978ed6951afe40912efcfb54dcce65"
- }
- Frame {
- msec: 2144
- hash: "a57eea59fe6475164e24688489977869"
- }
- Frame {
- msec: 2160
- hash: "a57eea59fe6475164e24688489977869"
- }
- Frame {
- msec: 2176
- hash: "a57eea59fe6475164e24688489977869"
- }
- Frame {
- msec: 2192
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
- }
- Frame {
- msec: 2208
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
- }
- Frame {
- msec: 2224
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
- }
- Frame {
- msec: 2240
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
- }
- Frame {
- msec: 2256
- hash: "69ac1d93bd51f495783dbc6a0f7b27be"
- }
- Frame {
- msec: 2272
- hash: "04c62a4d01e9309eaeea87902013c8b9"
- }
- Frame {
- msec: 2288
- hash: "04c62a4d01e9309eaeea87902013c8b9"
- }
- Frame {
- msec: 2304
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
- }
- Frame {
- msec: 2320
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
- }
- Frame {
- msec: 2336
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
- }
- Frame {
- msec: 2352
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
- }
- Frame {
- msec: 2368
- hash: "fac2f5730a600d6b69280d5e6962c1d2"
- }
- Frame {
- msec: 2384
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
- }
- Frame {
- msec: 2400
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
- }
- Frame {
- msec: 2416
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
- }
- Frame {
- msec: 2432
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
- }
- Frame {
- msec: 2448
- hash: "13f7ce73c0a2f1c7958294e4fbf3d30d"
- }
- Frame {
- msec: 2464
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
- }
- Frame {
- msec: 2480
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
- }
- Frame {
- msec: 2496
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
- }
- Frame {
- msec: 2512
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
- }
- Frame {
- msec: 2528
- hash: "96a5678ee5bcbf28df6a2bf66b2b6189"
- }
- Frame {
- msec: 2544
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
- }
- Frame {
- msec: 2560
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
- }
- Frame {
- msec: 2576
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
- }
- Frame {
- msec: 2592
- hash: "abb220abcd579abd988b6f9f7e0bc2b7"
- }
- Frame {
- msec: 2608
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
- }
- Frame {
- msec: 2624
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
- }
- Frame {
- msec: 2640
- hash: "8a8585eb9a5cd1d6c38dc7076923e7f7"
- }
- Frame {
- msec: 2656
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
- }
- Frame {
- msec: 2672
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
- }
- Frame {
- msec: 2688
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
- }
- Frame {
- msec: 2704
- hash: "c13ec1d294921e6a56f6ac4198e084eb"
- }
- Frame {
- msec: 2720
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
- }
- Frame {
- msec: 2736
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
- }
- Frame {
- msec: 2752
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
- }
- Frame {
- msec: 2768
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
- }
- Frame {
- msec: 2784
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
- }
- Frame {
- msec: 2800
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
- }
- Frame {
- msec: 2816
- hash: "53295720dbabe6fbfff56bea0e0ba7f1"
- }
- Frame {
- msec: 2832
- hash: "f44b88b80219497370b5d2ad380d03bf"
- }
- Frame {
- msec: 2848
- hash: "f44b88b80219497370b5d2ad380d03bf"
- }
- Frame {
- msec: 2864
- hash: "a093510751799f3466156f9775988044"
- }
- Frame {
- msec: 2880
- image: "elide2.2.png"
- }
- Frame {
- msec: 2896
- hash: "a093510751799f3466156f9775988044"
- }
- Frame {
- msec: 2912
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
- }
- Frame {
- msec: 2928
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
- }
- Frame {
- msec: 2944
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
- }
- Frame {
- msec: 2960
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
- }
- Frame {
- msec: 2976
- hash: "6327bcbb2d78d3c33eb964643b0d09a5"
- }
- Frame {
- msec: 2992
- hash: "d7da3826914ad1d2696803b659992e73"
- }
- Frame {
- msec: 3008
- hash: "d7da3826914ad1d2696803b659992e73"
- }
- Frame {
- msec: 3024
- hash: "d7da3826914ad1d2696803b659992e73"
- }
- Frame {
- msec: 3040
- hash: "d7da3826914ad1d2696803b659992e73"
- }
- Frame {
- msec: 3056
- hash: "d7da3826914ad1d2696803b659992e73"
- }
- Frame {
- msec: 3072
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
- }
- Frame {
- msec: 3088
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
- }
- Frame {
- msec: 3104
- hash: "ad40dc153a57c35ea62d9d044f08c9ac"
- }
- Frame {
- msec: 3120
- hash: "df90afe882b18f3fd7b12e52ff36e66f"
- }
- Frame {
- msec: 3136
- hash: "df90afe882b18f3fd7b12e52ff36e66f"
- }
- Frame {
- msec: 3152
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
- }
- Frame {
- msec: 3168
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
- }
- Frame {
- msec: 3184
- hash: "5b84785ffe15c15c3b94c845db7a4a44"
- }
- Frame {
- msec: 3200
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
- }
- Frame {
- msec: 3216
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
- }
- Frame {
- msec: 3232
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
- }
- Frame {
- msec: 3248
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
- }
- Frame {
- msec: 3264
- hash: "f5ca71af8d9fa1809ab88b60f9170bb5"
- }
- Frame {
- msec: 3280
- hash: "39f1b201715413f13a60f449eef29706"
- }
- Frame {
- msec: 3296
- hash: "39f1b201715413f13a60f449eef29706"
- }
- Frame {
- msec: 3312
- hash: "39f1b201715413f13a60f449eef29706"
- }
- Frame {
- msec: 3328
- hash: "39f1b201715413f13a60f449eef29706"
- }
- Frame {
- msec: 3344
- hash: "39f1b201715413f13a60f449eef29706"
- }
- Frame {
- msec: 3360
- hash: "4baf5c1227de45f9e620fe6eb0590014"
- }
- Frame {
- msec: 3376
- hash: "4baf5c1227de45f9e620fe6eb0590014"
- }
- Frame {
- msec: 3392
- hash: "4baf5c1227de45f9e620fe6eb0590014"
- }
- Frame {
- msec: 3408
- hash: "e1ce9c06e59fb6348fff3ce650c7943e"
- }
- Frame {
- msec: 3424
- hash: "e1ce9c06e59fb6348fff3ce650c7943e"
- }
- Frame {
- msec: 3440
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
- }
- Frame {
- msec: 3456
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
- }
- Frame {
- msec: 3472
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
- }
- Frame {
- msec: 3488
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
- }
- Frame {
- msec: 3504
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
- }
- Frame {
- msec: 3520
- hash: "ad812bdef31b4f1f42c35f7d56b3af83"
- }
- Frame {
- msec: 3536
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
- }
- Frame {
- msec: 3552
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
- }
- Frame {
- msec: 3568
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
- }
- Frame {
- msec: 3584
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
- }
- Frame {
- msec: 3600
- hash: "c08c8bcfc8c23f5e0e89d7f632fde2ca"
- }
- Frame {
- msec: 3616
- hash: "b8853dc109d063d982952780aa80419a"
- }
- Frame {
- msec: 3632
- hash: "b8853dc109d063d982952780aa80419a"
- }
- Frame {
- msec: 3648
- hash: "b8853dc109d063d982952780aa80419a"
- }
- Frame {
- msec: 3664
- hash: "b8853dc109d063d982952780aa80419a"
- }
- Frame {
- msec: 3680
- hash: "b8853dc109d063d982952780aa80419a"
- }
- Frame {
- msec: 3696
- hash: "6bfd7cfd6369df1eb570fda103d9e009"
- }
- Frame {
- msec: 3712
- hash: "6bfd7cfd6369df1eb570fda103d9e009"
- }
- Frame {
- msec: 3728
- hash: "b6dba4a456cd8d1b62501039cb796625"
- }
- Frame {
- msec: 3744
- hash: "b6dba4a456cd8d1b62501039cb796625"
- }
- Frame {
- msec: 3760
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
- }
- Frame {
- msec: 3776
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
- }
- Frame {
- msec: 3792
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
- }
- Frame {
- msec: 3808
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
- }
- Frame {
- msec: 3824
- hash: "f43892fffe4a8ce005b60ec43ce0aa4a"
- }
- Frame {
- msec: 3840
- image: "elide2.3.png"
- }
- Frame {
- msec: 3856
- hash: "d2e873e69aed3e0b6e53123cd63e386c"
- }
- Frame {
- msec: 3872
- hash: "d2e873e69aed3e0b6e53123cd63e386c"
- }
- Frame {
- msec: 3888
- hash: "baa8edfce77628c7a1ec83adce96e2c6"
- }
- Frame {
- msec: 3904
- hash: "baa8edfce77628c7a1ec83adce96e2c6"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide.qml
index b96ecb3b58..e52c609343 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 edf0cb5319..0370a73b57 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/elide2.qml
@@ -1,11 +1,12 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
width: 500
height: 100
- Text {
- width: NumberAnimation { from: 500; to: 0; loops: Animation.Infinite; duration: 5000 }
+ 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 6698421044..db991a2d0e 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,9 +10,9 @@ Rectangle {
height: myText.height
color: "white"
anchors.centerIn: parent
- Text {
+ TestText {
id: myText
- width: NumberAnimation { from: 500; to: 0; loops: Animation.Infinite; duration: 1000 }
+ NumberAnimation on width { from: 500; to: 0; loops: Animation.Infinite; duration: 5000 }
elide: "ElideRight"
text: "Brevity is the soul of wit, and tediousness the limbs and outward flourishes.\x9CBrevity is a great charm of eloquence.\x9CBe concise!\x9CSHHHHHHHHHHHHHHHHHHHHHHHHHHHH"
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/BorderedText.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/BorderedText.qml
new file mode 100644
index 0000000000..fe4e2e7025
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/BorderedText.qml
@@ -0,0 +1,9 @@
+import QtQuick 1.0
+import "../../shared" 1.0
+
+TestText {
+ property color bcolor: "blue"
+ font.pixelSize: 10
+ text: "The quick brown fox\njumps over\nthe lazy dog."
+ Rectangle { id: border; 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 67b497f651..cfa61a9a99 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/plaintext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.qml
index a39c340e8c..fdf23106c4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.qml
@@ -6,346 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 32
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 48
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 64
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 80
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 96
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 112
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 128
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 144
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 160
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 176
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 192
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 208
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 224
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 240
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 256
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 272
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 288
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 304
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 320
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 336
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 352
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 368
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 384
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 400
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 416
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 432
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 448
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 464
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 480
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 496
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 512
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 528
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 544
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 560
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 576
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 592
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 608
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 624
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 640
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 656
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 672
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 688
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 704
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 720
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 736
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 752
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 768
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 784
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 800
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 816
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 832
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 848
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 864
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 880
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 896
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 912
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 928
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 944
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 960
image: "plaintext.0.png"
}
- Frame {
- msec: 976
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 992
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1008
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1024
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1040
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1056
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1072
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1088
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1104
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1120
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1136
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1152
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1168
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1184
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1200
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1216
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1232
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1248
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1264
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1280
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1296
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1312
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1328
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
- Frame {
- msec: 1344
- hash: "cbf65bcb64a4781b79132b87f98d5fc7"
- }
}
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 0000000000..be676c0fc7
--- /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 0000000000..f6cddc43a4
--- /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 0000000000..df2fe2feeb
--- /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 0000000000..13f413a1ca
--- /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 63799421c3..76e5b9f80f 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.qml
index 8529b926b6..3da391dc50 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.qml
@@ -6,354 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 32
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 48
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 64
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 80
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 96
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 112
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 128
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 144
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 160
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 176
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 192
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 208
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 224
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 240
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 256
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 272
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 288
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 304
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 320
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 336
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 352
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 368
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 384
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 400
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 416
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 432
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 448
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 464
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 480
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 496
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 512
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 528
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 544
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 560
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 576
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 592
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 608
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 624
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 640
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 656
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 672
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 688
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 704
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 720
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 736
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 752
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 768
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 784
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 800
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 816
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 832
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 848
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 864
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 880
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 896
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 912
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 928
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 944
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 960
image: "richtext.0.png"
}
- Frame {
- msec: 976
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 992
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1008
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1024
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1040
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1056
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1072
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1088
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1104
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1120
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1136
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1152
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1168
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1184
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1200
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1216
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1232
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1248
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1264
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1280
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1296
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1312
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1328
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1344
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1360
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
- Frame {
- msec: 1376
- hash: "b902ff73e7c943bb09b5d2ae6c7a760e"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png
new file mode 100644
index 0000000000..bb65aded70
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.qml
new file mode 100644
index 0000000000..afae3f89bc
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "richtext2.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.png
new file mode 100644
index 0000000000..56d98ff0a5
--- /dev/null
+++ 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/plaintext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.qml
new file mode 100644
index 0000000000..fdf23106c4
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "plaintext.0.png"
+ }
+}
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 0000000000..1ab1eb5bb0
--- /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 0000000000..f6cddc43a4
--- /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/plaintext3.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext3.0.png
new file mode 100644
index 0000000000..04e0f5e842
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext3.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext3.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext3.qml
new file mode 100644
index 0000000000..13f413a1ca
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/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-X11/richtext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.png
new file mode 100644
index 0000000000..68921f6588
--- /dev/null
+++ 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-X11/richtext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.qml
new file mode 100644
index 0000000000..3da391dc50
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "richtext.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext2.0.png
new file mode 100644
index 0000000000..c9450c7c80
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext2.qml
new file mode 100644
index 0000000000..afae3f89bc
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext2.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "richtext2.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.0.png
index 50d56dc814..89195ae7dc 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.qml
index bf3aea6133..fdf23106c4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/plaintext.qml
@@ -6,346 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 32
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 48
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 64
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 80
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 96
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 112
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 128
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 144
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 160
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 176
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 192
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 208
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 224
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 240
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 256
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 272
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 288
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 304
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 320
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 336
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 352
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 368
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 384
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 400
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 416
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 432
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 448
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 464
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 480
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 496
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 512
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 528
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 544
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 560
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 576
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 592
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 608
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 624
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 640
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 656
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 672
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 688
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 704
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 720
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 736
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 752
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 768
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 784
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 800
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 816
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 832
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 848
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 864
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 880
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 896
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 912
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 928
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 944
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 960
image: "plaintext.0.png"
}
- Frame {
- msec: 976
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 992
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1008
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1024
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1040
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1056
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1072
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1088
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1104
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1120
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1136
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1152
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1168
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1184
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1200
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1216
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1232
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1248
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1264
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1280
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1296
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1312
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1328
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
- Frame {
- msec: 1344
- hash: "d553014bc56a46787e30459b0f44f57a"
- }
}
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 0000000000..0574f63fe9
--- /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 0000000000..f6cddc43a4
--- /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 0000000000..0d3c672804
--- /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 0000000000..13f413a1ca
--- /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/data/richtext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.0.png
index 2910670adb..6a4872839e 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.qml
index 4a87240d55..3da391dc50 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext.qml
@@ -6,354 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 32
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 48
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 64
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 80
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 96
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 112
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 128
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 144
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 160
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 176
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 192
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 208
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 224
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 240
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 256
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 272
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 288
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 304
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 320
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 336
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 352
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 368
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 384
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 400
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 416
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 432
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 448
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 464
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 480
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 496
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 512
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 528
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 544
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 560
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 576
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 592
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 608
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 624
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 640
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 656
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 672
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 688
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 704
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 720
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 736
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 752
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 768
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 784
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 800
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 816
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 832
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 848
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 864
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 880
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 896
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 912
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 928
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 944
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 960
image: "richtext.0.png"
}
- Frame {
- msec: 976
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 992
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1008
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1024
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1040
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1056
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1072
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1088
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1104
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1120
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1136
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1152
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1168
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1184
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1200
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1216
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1232
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1248
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1264
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1280
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1296
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1312
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1328
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1344
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1360
- hash: "dfea78484b840b8cab690e277b960723"
- }
- Frame {
- msec: 1376
- hash: "dfea78484b840b8cab690e277b960723"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext2.0.png
new file mode 100644
index 0000000000..34f8e387b9
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext2.qml
new file mode 100644
index 0000000000..afae3f89bc
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data/richtext2.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "richtext2.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml
index 25db17933c..64ab65b8ae 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext.qml
@@ -1,91 +1,101 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
- id: s; width: 800; height: 1000; color: "lightsteelblue"
- property string text: "The quick brown fox jumps over the lazy dog."
+ id: s; width: 620; height: 360; color: "lightsteelblue"
+ property string text: "Jackdaws love my big sphinx of quartz."
Column {
- spacing: 10
- Text {
- text: s.text
- }
- Text {
- text: s.text; font.pixelSize: 18
- }
- Text {
- text: s.text; font.pointSize: 25
- }
- Text {
- text: s.text; color: "red"; smooth: true
- }
- Text {
- text: s.text; font.capitalization: "AllUppercase"
- }
- Text {
- text: s.text; font.underline: true
- }
- Text {
- text: s.text; font.overline: true; smooth: true
- }
- Text {
- text: s.text; font.strikeout: true
- }
- Text {
- text: s.text; font.underline: true; font.overline: true; font.strikeout: true
- }
- Text {
- text: s.text; font.letterSpacing: 2
- }
- Text {
+ spacing: 8
+ TestText {
+ text: s.text; horizontalAlignment: Text.AlignLeft; width: s.width
+ }
+ TestText {
+ font.pixelSize: 18
+ text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: s.width;
+ }
+ TestText {
+ font.pixelSize: 24
+ text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: s.width;
+ }
+ Grid{
+ columns: 2
+ spacing: 4
+ TestText {
+ text: s.text; color: "red"; smooth: true
+ }
+ TestText {
+ text: s.text; font.capitalization: "AllUppercase"
+ }
+ TestText {
+ text: s.text; font.underline: true
+ }
+ TestText {
+ text: s.text; font.overline: true; smooth: true
+ }
+ TestText {
+ text: s.text; font.strikeout: true
+ }
+ TestText {
+ text: s.text; font.underline: true; font.overline: true; font.strikeout: true
+ }
+ TestText {
+ text: s.text; style: Text.Outline; styleColor: "white"
+ }
+ TestText {
+ text: s.text; style: Text.Sunken; styleColor: "gray"
+ }
+ TestText {
+ text: s.text; style: Text.Raised; styleColor: "yellow"
+ }
+ TestText {
+ text: s.text; font.letterSpacing: 2
+ }
+ }
+ 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 {
- text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"
- }
- Text {
- text: s.text; font.pixelSize: 18; style: Text.Sunken; styleColor: "gray"
- }
- Text {
- text: s.text; font.pixelSize: 18; style: Text.Raised; styleColor: "yellow"
- }
- Text {
- text: s.text; horizontalAlignment: Text.AlignLeft; width: 800
- }
- Text {
- text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: 800; height: 20
- }
- Text {
- text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: 800; height: 20
- }
- Text {
- text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrapMode: Text.WordWrap; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideLeft; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideMiddle; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideRight; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideLeft; width: 200; wrapMode: Text.WordWrap
- }
- Text {
- text: s.text; elide: Text.ElideMiddle; width: 200; wrapMode: Text.WordWrap
- }
- Text {
- text: s.text; elide: Text.ElideRight; width: 200; wrapMode: Text.WordWrap
- }
- Text {
- text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.WrapAnywhere
- }
- Text {
- text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.Wrap
+ Row{
+ height: childrenRect.height
+ spacing: 4
+ TestText {
+ text: s.text; elide: Text.ElideLeft; width: 200
+ }
+ TestText {
+ text: s.text; elide: Text.ElideMiddle; width: 200
+ }
+ TestText {
+ text: s.text; elide: Text.ElideRight; width: 200
+ }
+ }
+ Row{
+ height: childrenRect.height
+ spacing: 4
+ TestText{
+ text: s.text; elide: Text.ElideLeft; width: 200; wrapMode: Text.WordWrap
+ }
+ TestText {
+ text: s.text; elide: Text.ElideMiddle; width: 200; wrapMode: Text.WordWrap
+ }
+ TestText {
+ text: s.text; elide: Text.ElideRight; width: 200; wrapMode: Text.WordWrap
+ }
+ }
+ Row{
+ height: childrenRect.height
+ spacing: 4
+ TestText {
+ text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.WrapAnywhere
+ }
+ TestText {
+ text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.Wrap
+ }
+ 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 0000000000..01de1f0046
--- /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 0000000000..10a2d9ab19
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/plaintext3.qml
@@ -0,0 +1,62 @@
+import QtQuick 1.0
+
+Rectangle {
+ id: main
+ width: 620; height: 280
+
+
+ Grid {
+ x: 4; y: 4
+ spacing: 8
+ columns: 4
+
+ Column {
+ spacing: 4
+ BorderedText { }
+ BorderedText { horizontalAlignment: Text.AlignHCenter }
+ BorderedText { horizontalAlignment: Text.AlignRight }
+ }
+
+ Column {
+ spacing: 4
+ BorderedText { wrapMode: Text.Wrap }
+ BorderedText { horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap }
+ BorderedText { horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap }
+ }
+
+ Column {
+ spacing: 4
+ BorderedText { wrapMode: Text.Wrap; elide: Text.ElideRight }
+ BorderedText { horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ BorderedText { horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ }
+
+ Column {
+ spacing: 4
+ BorderedText { width: 230; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ BorderedText { width: 230; horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ BorderedText { width: 230; horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ }
+
+ Column {
+ spacing: 4
+ BorderedText { width: 120; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ BorderedText { width: 120; horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ BorderedText { width: 120; horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap; elide: Text.ElideRight }
+ }
+
+ Column {
+ spacing: 4
+ BorderedText { width: 120; wrapMode: Text.Wrap }
+ BorderedText { width: 120; horizontalAlignment: Text.AlignHCenter; wrapMode: Text.Wrap }
+ BorderedText { width: 120; horizontalAlignment: Text.AlignRight; wrapMode: Text.Wrap }
+ }
+
+ Column {
+ spacing: 4
+ BorderedText { width: 120 }
+ BorderedText { width: 120; horizontalAlignment: Text.AlignHCenter }
+ BorderedText { 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 31b0e69741..a748b686c4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext.qml
@@ -1,91 +1,47 @@
import QtQuick 1.0
+import "../../shared" 1.0
Rectangle {
- id: s; width: 800; height: 1000; color: "lightsteelblue"
+ id: s; width: 620; height: 300; color: "lightsteelblue"
property string text: "<b>The</b> <i>quick</i> <u>brown</u> <o>fox</o> <big>jumps</big> <small>over</small> <tt>the</tt> <s>lazy</s> <em>dog</em>."
Column {
- spacing: 10
- Text {
+ spacing: 6
+ TestText {
text: s.text
}
- Text {
+ TestText {
text: s.text; font.pixelSize: 18
}
- Text {
- text: s.text; font.pointSize: 25
+ TestText {
+ text: s.text; font.pixelSize: 24
}
- 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 {
- text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"
- }
- Text {
- text: s.text; font.pixelSize: 18; style: Text.Sunken; styleColor: "gray"
- }
- Text {
- text: s.text; font.pixelSize: 18; style: Text.Raised; styleColor: "yellow"
- }
- Text {
- text: s.text; horizontalAlignment: Text.AlignLeft; width: 800
- }
- Text {
- text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: 800; height: 20
- }
- Text {
- text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: 800; height: 20
- }
- Text {
- text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"; wrapMode: Text.WordWrap; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideLeft; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideMiddle; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideRight; width: 200
- }
- Text {
- text: s.text; elide: Text.ElideLeft; width: 200; wrapMode: Text.WordWrap
- }
- Text {
- text: s.text; elide: Text.ElideMiddle; width: 200; wrapMode: Text.WordWrap
- }
- Text {
- text: s.text; elide: Text.ElideRight; width: 200; wrapMode: Text.WordWrap
- }
- Text {
- text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.WrapAnywhere
- }
- Text {
- text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.Wrap
- }
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext2.qml
new file mode 100644
index 0000000000..f5e85fa00a
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/richtext2.qml
@@ -0,0 +1,43 @@
+import QtQuick 1.0
+import "../../shared" 1.0
+
+//This is a continuation of richtext.qml, it was bisected so that it could fit on smaller screens
+Rectangle {
+ id: s; width: 620; height: 300; color: "lightsteelblue"
+ property string text: "<b>The</b> <i>quick</i> <u>brown</u> <o>fox</o> <big>jumps</big> <small>over</small> <tt>the</tt> <s>lazy</s> <em>dog</em>."
+
+ Column {
+ spacing: 6
+ TestText {
+ text: s.text; font.pixelSize: 18; style: Text.Outline; styleColor: "white"
+ }
+ TestText {
+ text: s.text; font.pixelSize: 18; style: Text.Sunken; styleColor: "gray"
+ }
+ TestText {
+ text: s.text; font.pixelSize: 18; style: Text.Raised; styleColor: "yellow"
+ }
+ TestText {
+ text: s.text; horizontalAlignment: Text.AlignLeft; width: s.width
+ }
+ TestText {
+ text: s.text; horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter; width: s.width; height: 20
+ }
+ TestText {
+ text: s.text; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignBottom; width: s.width; height: 20
+ }
+ Row{
+ height: childrenRect.height;
+ spacing: 4
+ TestText {
+ text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.WrapAnywhere
+ }
+ TestText {
+ text: s.text + " thisisaverylongstringwithnospaces"; width: 150; wrapMode: Text.Wrap
+ }
+ 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 0000000000..6699076c01
--- /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: 100; height: 20
+
+ 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 c98756894e..17709ba913 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
@@ -36,16 +37,18 @@ Item {
if(cursorRectangle.y < topMargin - textEdit.y){//Cursor went off the front
textEdit.y = topMargin - Math.max(0, cursorRectangle.y);
}else if(cursorRectangle.y > parent.height - topMargin - bottomMargin - textEdit.y){//Cursor went off the end
- textEdit.y = topMargin - Math.max(0, cursorRectangle.y - (parent.height - topMargin - bottomMargin)) - cursorRectangle.height;
+ textEdit.y = topMargin - Math.max(0, cursorRectangle.y - (parent.height - topMargin - bottomMargin) + cursorRectangle.height);
}
}
+ onHeightChanged: y=topMargin//reset scroll
text:""
horizontalAlignment: TextInput.AlignLeft
wrapMode: TextEdit.WordWrap
font.pixelSize:15
+ selectionColor: 'steelblue'
}
- 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 c0eeb82d29..1e0f71a550 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/cursorDelegate.qml
@@ -1,19 +1,20 @@
import QtQuick 1.0
- Rectangle {
+import "../shared" 1.0
+
+Rectangle {
resources: [
Component { id: cursorA
Item { id: cPage;
- x: Behavior { NumberAnimation { } }
- y: Behavior { NumberAnimation { } }
- height: Behavior { NumberAnimation { duration: 200 } }
+ Behavior on x { NumberAnimation { } }
+ Behavior on y { NumberAnimation { } }
+ Behavior on height { NumberAnimation { duration: 200 } }
Rectangle { id: cRectangle; color: "black"; y: 1; width: 1; height: parent.height-2;
Rectangle { id:top; color: "black"; width: 3; height: 1; x: -1; y:0}
Rectangle { id:bottom; color: "black"; width: 3; height: 1; x: -1; anchors.bottom: parent.bottom;}
- opacity: 1
- opacity: SequentialAnimation { running: cPage.parent.focus == true; loops: Animation.Infinite;
- NumberAnimation { properties: "opacity"; to: 1; duration: 500; easing.type: "InQuad"}
- NumberAnimation { properties: "opacity"; to: 0; duration: 500; easing.type: "OutQuad"}
- }
+ }
+ SequentialAnimation on opacity { running: true; loops: Animation.Infinite;
+ NumberAnimation { to: 0; duration: 500; easing.type: "OutQuad"}
+ NumberAnimation { to: 1; duration: 500; easing.type: "InQuad"}
}
width: 1;
}
@@ -22,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 464a578bb4..adbdfa74eb 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 9beb1ca4a7..d3fbdc6edd 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 001be30b98..9a96d462c5 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 fc3e4b3dec..2026aca78c 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 24f43e66e4..c43502941b 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.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png
index 001223b5b0..70f273dff6 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png
index 7126e073dd..80b960c197 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png
index f0bea88417..72472771c3 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png
index 4381b8dfb8..af5a996b7b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.9.png
new file mode 100644
index 0000000000..b254164fbe
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.9.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 1241d14342..0f3bd2cf50 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml
@@ -6,3550 +6,1494 @@ VisualTest {
}
Frame {
msec: 16
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ image: "cursorDelegate.0.png"
}
Frame {
msec: 32
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "b742ebe441dde1f30dab6d19954a9e8c"
}
Frame {
msec: 48
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "d3be942cfb93c4a5d5aa906410125d02"
}
Frame {
msec: 64
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "062574e74354b104db2ee6d3c3af5802"
}
Frame {
msec: 80
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "575dd420067e4ebe5733eb4e35a447ab"
}
Frame {
msec: 96
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "4213f35c4cd233a08d98ba0380b7ab0a"
}
Frame {
msec: 112
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "505e740aacf4ca7e6ad24367ddad8678"
}
Frame {
msec: 128
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "007e76fb247e11a442802c7cfb4e6a24"
}
Frame {
msec: 144
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "5cf6cb0afffb791da1c4d0fe00cf6326"
}
Frame {
msec: 160
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "aff4097bd39c87c5d1459d99f314dade"
}
Frame {
msec: 176
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "009dc0c6ff28333ac2fdfa3d79ad2fd6"
}
Frame {
msec: 192
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "4bf8e82220ea0d0c4298d5374e149de2"
}
Frame {
msec: 208
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "938a6eea45c4412e847a8700172d80ac"
}
Frame {
msec: 224
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "6502416042993d05dd514119512ed61f"
}
Frame {
msec: 240
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "5d6702b9475e69bda2ed38f6e2d583d9"
}
Frame {
msec: 256
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "8e5fdc8e6cc38089d1e8ff5e91a5c894"
}
Frame {
msec: 272
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "c0249d07bcf25af69bf929b4d5ac00a3"
}
Frame {
msec: 288
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "efe333c2b8cccea0bd7135484049db06"
}
Frame {
msec: 304
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "57e49e9094691a204f7507b0231352b3"
}
Frame {
msec: 320
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "d0a45bd3cfc5e4e6f9a48534c768daba"
}
Frame {
msec: 336
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "6960ab817c67a61af31cc187efe65016"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 352
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "3b0d483ff765f36a196411967b6dfd70"
}
Frame {
msec: 368
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "559713749d65246b185c0c91eb7ad39e"
}
Frame {
msec: 384
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "9aea32722fd4f8b0cde3c06c61cecde6"
}
Frame {
msec: 400
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "25dfa32ce92b6044f5ea68411ab5de5b"
}
Frame {
msec: 416
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "dab689ed2bbe663df309548e615e8621"
}
Frame {
msec: 432
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "26ad44cef380ff9f64c12180fb54c695"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 448
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "5e8bbcd46b5692e66963387b80971e90"
}
Frame {
msec: 464
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "747df5357daa951fbedeadf909f9dbf3"
}
Frame {
msec: 480
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 496
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 512
- hash: "e0366dbd264ca453f5dad3a7966f17a2"
+ hash: "cb6ca047657a99dbbb037c1c45b40866"
}
Frame {
msec: 528
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "cb6ca047657a99dbbb037c1c45b40866"
}
Frame {
msec: 544
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "cb6ca047657a99dbbb037c1c45b40866"
}
Frame {
msec: 560
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "cb6ca047657a99dbbb037c1c45b40866"
}
Frame {
msec: 576
- hash: "a6bdf56b4f8783969935488e1955e59c"
+ hash: "1684711d2c492de2093357168b8726c6"
}
Frame {
msec: 592
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "6d960ca89faec6e3d81f78911b9b5ecf"
}
Frame {
msec: 608
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "1fdd91b57f5832d5c4d797d150892156"
}
Frame {
msec: 624
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "4e0f1ec936cacf3ab6fbc7899a6bc92d"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 640
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "9e67145b58051fd7dc4a18ee0e6a72ad"
}
Frame {
msec: 656
- hash: "3caa36cc3857803248d12ec09ea357df"
+ hash: "14dfb4b356ec851275ddd8e93f04e2d2"
}
Frame {
msec: 672
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "e9b8f691ad62d10877aacb94f98ea308"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 688
- hash: "aadc71923926885ccce87e6be1c742d7"
+ hash: "a44b5f63ec1f98b6bc34e95214c9d79e"
}
Frame {
msec: 704
- hash: "9b7503189ecf2999934716f227469463"
+ hash: "6bc0e035c90b74de024d379388fd7014"
}
Frame {
msec: 720
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "61d8f417f7ca5cba2e98a7a7427ea635"
}
Frame {
msec: 736
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "f50adb10f55bcd4c2eb0955f6e1ff78e"
}
Frame {
msec: 752
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "9e160aefac79a9804f6cb8622e45ba71"
}
Frame {
msec: 768
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "6555a0bd60dbbad66283fe37b2f0c362"
}
Frame {
msec: 784
- hash: "24cebf60ade86469a154abaa64f3b40d"
+ hash: "0cacc38d86ebf497d31b01556b8a5924"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 800
- hash: "1100ef4e2db234ea77ff4c70df6bfbe7"
+ hash: "b2fe1d5cb5e0a5f07d84ff7a494ae07a"
}
Frame {
msec: 816
- hash: "c40d8d42a55dde7dbbcae2dda9aaccb8"
+ hash: "2c6dbd777bba27b481a8a6ef34d213f9"
}
Frame {
msec: 832
- hash: "5c1000fdc279742cbe46987045c0a92b"
+ hash: "989e53620edc6b9b0990545459e7f787"
}
Frame {
msec: 848
- hash: "bcef4a0ff72330f05f2bf5042e414fde"
+ hash: "a89686a7802da3fd07a265a5814255f4"
}
Frame {
msec: 864
- hash: "228551c38b567f1550b44f9dac08786b"
+ hash: "9f707497eb0c224c8b0a3bba1533217a"
}
Frame {
msec: 880
- hash: "531c5ca6992c4a12927c61e22c02dd6b"
+ hash: "29df155c0b75de8e1bd6361372a51797"
}
Frame {
msec: 896
- hash: "127cc30967f95cb88f4238e0b33c741d"
+ hash: "fb7cbeb1e3689cc38acf7a02d671a955"
}
Frame {
msec: 912
- hash: "3c3fb1d8dbe7443f80550a30ada7f120"
+ hash: "9045ada282ec37b1681cef89dfcc8f67"
}
Frame {
msec: 928
- hash: "edca065d42bf9b63a79d1e97d1a1eed0"
+ hash: "b3816b225eaf5ab49bb31f86ecdd52cb"
}
Frame {
msec: 944
- hash: "1e4424f1f40bfce3205e1d1401ab0dcf"
+ hash: "0956fccb8e1bf2c218a9e39947846aaa"
}
Frame {
msec: 960
- image: "cursorDelegate.0.png"
+ hash: "01f4ba2e0b4eb018c620efa5e92ec9fe"
}
Frame {
msec: 976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ image: "cursorDelegate.1.png"
}
Frame {
msec: 992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c19ec2d067d30a6d42056c9799b0c0c3"
}
Frame {
msec: 1008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "43a9d066887a89372136619ae8eec100"
}
Frame {
msec: 1024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "43a9d066887a89372136619ae8eec100"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c19ec2d067d30a6d42056c9799b0c0c3"
}
Frame {
msec: 1056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "8303d8b19e6e5b249aaf2ffbb6d29f91"
}
Frame {
msec: 1072
- hash: "90ac5ad7ce23786fe838426605e737e1"
+ hash: "01f4ba2e0b4eb018c620efa5e92ec9fe"
}
Frame {
msec: 1088
- hash: "1e4424f1f40bfce3205e1d1401ab0dcf"
+ hash: "0956fccb8e1bf2c218a9e39947846aaa"
}
Frame {
msec: 1104
- hash: "edca065d42bf9b63a79d1e97d1a1eed0"
+ hash: "b3816b225eaf5ab49bb31f86ecdd52cb"
}
Frame {
msec: 1120
- hash: "3c3fb1d8dbe7443f80550a30ada7f120"
+ hash: "9045ada282ec37b1681cef89dfcc8f67"
}
Frame {
msec: 1136
- hash: "127cc30967f95cb88f4238e0b33c741d"
+ hash: "fb7cbeb1e3689cc38acf7a02d671a955"
}
Frame {
msec: 1152
- hash: "531c5ca6992c4a12927c61e22c02dd6b"
+ hash: "29df155c0b75de8e1bd6361372a51797"
}
Frame {
msec: 1168
- hash: "228551c38b567f1550b44f9dac08786b"
+ hash: "9f707497eb0c224c8b0a3bba1533217a"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1184
- hash: "bcef4a0ff72330f05f2bf5042e414fde"
+ hash: "9f712a688504fff9719b38c067b32c50"
}
Frame {
msec: 1200
- hash: "5c1000fdc279742cbe46987045c0a92b"
+ hash: "24f1467e3be5f4d0509800bef97f4401"
}
Frame {
msec: 1216
- hash: "c40d8d42a55dde7dbbcae2dda9aaccb8"
+ hash: "d56e5fd86addad3bc53417b82ff68829"
}
Frame {
msec: 1232
- hash: "1100ef4e2db234ea77ff4c70df6bfbe7"
+ hash: "f1c60934ef284840e61fd46c758dd14b"
}
Frame {
msec: 1248
- hash: "24cebf60ade86469a154abaa64f3b40d"
+ hash: "7be9fc54278572116f9bd9be8f6994a4"
}
Frame {
msec: 1264
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "0e0ea7ca1b8479d62ae81fb53a1ec264"
}
Frame {
msec: 1280
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "f8b19dbaeec469896a081687d80a2ac4"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1296
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "a28665925ec121a2bf01733e0a20e18b"
}
Frame {
msec: 1312
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "baa0c601f3d84e344847dcb7f3bd18cf"
}
Frame {
msec: 1328
- hash: "9b7503189ecf2999934716f227469463"
+ hash: "a80d59a1e5af45bc799c19200a3c44ec"
}
Frame {
msec: 1344
- hash: "aadc71923926885ccce87e6be1c742d7"
+ hash: "2a6f833e2fd2930c8ec49016809d8cf6"
}
Frame {
msec: 1360
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "efdc2daad00aaec2c39541261d6d1a98"
}
Frame {
msec: 1376
- hash: "3caa36cc3857803248d12ec09ea357df"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "65b75f2a074d4ac5d84fb762d1762231"
}
Frame {
msec: 1392
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "2a170e51a83e902d2699501877225ee3"
}
Frame {
msec: 1408
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "1e4c78e279ff4ab7a875e4d67f68f8ca"
}
Frame {
msec: 1424
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "fd515cf3ec7b987e0e36c02f1da5b8a7"
}
Frame {
msec: 1440
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "54126910ea7a303ea3e7726309d8bf39"
}
Frame {
msec: 1456
- hash: "a6bdf56b4f8783969935488e1955e59c"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "89263867df0cfa623f80e1578532d98d"
}
Frame {
msec: 1472
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "1bf04aafab1177182eec9a0ff459cd7b"
}
Frame {
msec: 1488
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "1bf04aafab1177182eec9a0ff459cd7b"
}
Frame {
msec: 1504
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "1bf04aafab1177182eec9a0ff459cd7b"
}
Frame {
msec: 1520
- hash: "907c6363d1e524f391d001944febe1ac"
+ hash: "1bf04aafab1177182eec9a0ff459cd7b"
}
Frame {
msec: 1536
- hash: "313a06d40274e46453342e66236f09f8"
+ hash: "1bf04aafab1177182eec9a0ff459cd7b"
}
Frame {
msec: 1552
- hash: "0d410f7bfa3e4c58948a8f1e7c7695c4"
+ hash: "1bf04aafab1177182eec9a0ff459cd7b"
}
Frame {
msec: 1568
- hash: "a9911e076af337fe30e322f03d84a528"
+ hash: "c824a8bbf60514c20713b1fa583451b2"
}
Frame {
msec: 1584
- hash: "4a8efcc341bba9ba621ce0f785a75432"
+ hash: "f6282cd20d7f3f64415a0a24df578964"
}
Frame {
msec: 1600
- hash: "479f192c8cf7b8e4407655382402700f"
+ hash: "a4633c7dc825f20a7ada2079712f7b5e"
}
Frame {
msec: 1616
- hash: "63dc16e66def35abba5159d5650f165d"
+ hash: "240c839fc986573523b30567afe05623"
}
Frame {
msec: 1632
- hash: "26e88aae512304c28d425c311febce1b"
+ hash: "9e3098ea355a80e7e439f3cdecd15b77"
+ }
+ Frame {
+ msec: 1648
+ hash: "d8ec7fd807f345509703f4ecf94b583d"
}
Key {
type: 6
- key: 16777233
- modifiers: 0
+ key: 16777249
+ modifiers: 33554432
text: ""
autorep: false
count: 1
}
Frame {
- msec: 1648
- hash: "8dca7a7912ddaa853dff9c09882082b1"
- }
- Frame {
msec: 1664
- hash: "5c3ebee155e29a0ba4a45706dd87396a"
+ hash: "5b6e0bedeca1784610081762850813a1"
}
Frame {
msec: 1680
- hash: "29a517a66867f6f527c6db5bb5651f92"
+ hash: "13a596d7aefa3c8ce61660dd5ce27627"
}
Frame {
msec: 1696
- hash: "a4fde31f55f866224eca2b51586b601f"
+ hash: "295bbee587f2fdbadab7aa4e3900b6e0"
}
Frame {
msec: 1712
- hash: "9c9c7fb9fb8aab8c24f2eb03df791a00"
+ hash: "645da4001b1489b12e0bb5dd1b5c114b"
}
Frame {
msec: 1728
- hash: "dd972e37166d1186a717a956343a7758"
- }
- Key {
- type: 7
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "8e7e4f5b8eb437ab92e466b1d79aee01"
}
Frame {
msec: 1744
- hash: "1af5e24651ef422ff93dab7bd2a8f832"
+ hash: "1a7ec33aa8a19a36a7fc99c3040e427a"
}
Frame {
msec: 1760
- hash: "885473be4e44bb1f4b014f9b3d4d2e74"
+ hash: "85f6c7d9f86910e7cceeaf9efc375355"
}
Frame {
msec: 1776
- hash: "1f6e0407392322c34567caaecae5b449"
+ hash: "8e54b0699d681cfbfc3b605b010c6b76"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1792
- hash: "dcae85a4b05c450b6b1619f9fd7e17b0"
+ hash: "5d6702b9475e69bda2ed38f6e2d583d9"
}
Frame {
msec: 1808
- hash: "3b872e5030e34edf678ac2547df48699"
+ hash: "6502416042993d05dd514119512ed61f"
}
Frame {
msec: 1824
- hash: "5d76b324496297d08cff57b4c21ce592"
+ hash: "938a6eea45c4412e847a8700172d80ac"
}
Frame {
msec: 1840
- hash: "4acfe3c4cf2f4e477f1a72817af556d2"
+ hash: "4bf8e82220ea0d0c4298d5374e149de2"
}
Frame {
msec: 1856
- hash: "a04671fe8d28cfb629f2090e342747fb"
+ hash: "009dc0c6ff28333ac2fdfa3d79ad2fd6"
}
Frame {
msec: 1872
- hash: "2474db802c7d8e0ec8fa7f958c04bf30"
+ hash: "aff4097bd39c87c5d1459d99f314dade"
}
Frame {
msec: 1888
- hash: "11a1e1f38c407de4bc069aa192319fe4"
+ hash: "5cf6cb0afffb791da1c4d0fe00cf6326"
}
Frame {
msec: 1904
- hash: "ec8aacc8d2280068dd7f020e8648afea"
+ hash: "007e76fb247e11a442802c7cfb4e6a24"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1920
- image: "cursorDelegate.1.png"
+ hash: "505e740aacf4ca7e6ad24367ddad8678"
}
Frame {
msec: 1936
- hash: "fbbe4d0fed6274968a89e02bb1ca5685"
+ image: "cursorDelegate.2.png"
}
Frame {
msec: 1952
- hash: "13d478424a8f0cab8bab6a157efce318"
+ hash: "575dd420067e4ebe5733eb4e35a447ab"
}
Frame {
msec: 1968
- hash: "ea6bc9ec217fb80b86276a2675c08a0f"
+ hash: "062574e74354b104db2ee6d3c3af5802"
}
Frame {
msec: 1984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d3be942cfb93c4a5d5aa906410125d02"
}
Frame {
msec: 2000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b742ebe441dde1f30dab6d19954a9e8c"
}
Frame {
msec: 2016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "bbe3a292c59e2f7ae6b8877f6736c96e"
}
Frame {
msec: 2032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b742ebe441dde1f30dab6d19954a9e8c"
}
Frame {
msec: 2048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d3be942cfb93c4a5d5aa906410125d02"
}
Frame {
msec: 2064
- hash: "ea6bc9ec217fb80b86276a2675c08a0f"
+ hash: "062574e74354b104db2ee6d3c3af5802"
}
Frame {
msec: 2080
- hash: "13d478424a8f0cab8bab6a157efce318"
+ hash: "575dd420067e4ebe5733eb4e35a447ab"
}
Frame {
msec: 2096
- hash: "fbbe4d0fed6274968a89e02bb1ca5685"
+ hash: "4213f35c4cd233a08d98ba0380b7ab0a"
}
Frame {
msec: 2112
- hash: "00dedd48bd6861cb4bf4953162a67cc0"
- }
- Key {
- type: 6
- key: 16777248
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "505e740aacf4ca7e6ad24367ddad8678"
}
Frame {
msec: 2128
- hash: "ec8aacc8d2280068dd7f020e8648afea"
+ hash: "007e76fb247e11a442802c7cfb4e6a24"
}
Frame {
msec: 2144
- hash: "11a1e1f38c407de4bc069aa192319fe4"
+ hash: "5cf6cb0afffb791da1c4d0fe00cf6326"
}
Frame {
msec: 2160
- hash: "2474db802c7d8e0ec8fa7f958c04bf30"
+ hash: "aff4097bd39c87c5d1459d99f314dade"
}
Frame {
msec: 2176
- hash: "a04671fe8d28cfb629f2090e342747fb"
+ hash: "009dc0c6ff28333ac2fdfa3d79ad2fd6"
}
Frame {
msec: 2192
- hash: "4acfe3c4cf2f4e477f1a72817af556d2"
+ hash: "4bf8e82220ea0d0c4298d5374e149de2"
}
Frame {
msec: 2208
- hash: "5d76b324496297d08cff57b4c21ce592"
+ hash: "938a6eea45c4412e847a8700172d80ac"
}
Frame {
msec: 2224
- hash: "3b872e5030e34edf678ac2547df48699"
+ hash: "6502416042993d05dd514119512ed61f"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2240
- hash: "dcae85a4b05c450b6b1619f9fd7e17b0"
+ hash: "5d6702b9475e69bda2ed38f6e2d583d9"
}
Frame {
msec: 2256
- hash: "1f6e0407392322c34567caaecae5b449"
+ hash: "8e5fdc8e6cc38089d1e8ff5e91a5c894"
}
Frame {
msec: 2272
- hash: "885473be4e44bb1f4b014f9b3d4d2e74"
+ hash: "c0249d07bcf25af69bf929b4d5ac00a3"
}
Frame {
msec: 2288
- hash: "1af5e24651ef422ff93dab7bd2a8f832"
+ hash: "efe333c2b8cccea0bd7135484049db06"
}
Frame {
msec: 2304
- hash: "dd972e37166d1186a717a956343a7758"
+ hash: "57e49e9094691a204f7507b0231352b3"
}
Frame {
msec: 2320
- hash: "9c9c7fb9fb8aab8c24f2eb03df791a00"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "d0a45bd3cfc5e4e6f9a48534c768daba"
}
Frame {
msec: 2336
- hash: "aec9683f3a677dab781bdf3bbf7cce5e"
+ hash: "6960ab817c67a61af31cc187efe65016"
}
Frame {
msec: 2352
- hash: "63c6a7810dec832f1b8288807f1d932a"
+ hash: "3b0d483ff765f36a196411967b6dfd70"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2368
- hash: "70409eeee50fbb54097a3c430e1e1f21"
+ hash: "559713749d65246b185c0c91eb7ad39e"
}
Frame {
msec: 2384
- hash: "efc77b82c0ffd7f3fbe5fed06ea418bd"
+ hash: "9aea32722fd4f8b0cde3c06c61cecde6"
}
Frame {
msec: 2400
- hash: "26e88aae512304c28d425c311febce1b"
+ hash: "25dfa32ce92b6044f5ea68411ab5de5b"
}
Frame {
msec: 2416
- hash: "63dc16e66def35abba5159d5650f165d"
+ hash: "dab689ed2bbe663df309548e615e8621"
}
Frame {
msec: 2432
- hash: "479f192c8cf7b8e4407655382402700f"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "26ad44cef380ff9f64c12180fb54c695"
}
Frame {
msec: 2448
- hash: "4a8efcc341bba9ba621ce0f785a75432"
+ hash: "5e8bbcd46b5692e66963387b80971e90"
}
Frame {
msec: 2464
- hash: "a9911e076af337fe30e322f03d84a528"
+ hash: "747df5357daa951fbedeadf909f9dbf3"
}
Frame {
msec: 2480
- hash: "0d410f7bfa3e4c58948a8f1e7c7695c4"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2496
- hash: "313a06d40274e46453342e66236f09f8"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 2512
- hash: "907c6363d1e524f391d001944febe1ac"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 2528
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 2544
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 2560
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 2576
- hash: "a6bdf56b4f8783969935488e1955e59c"
+ hash: "1568d4b93d2a284c46f23a0cb17acc24"
}
Frame {
msec: 2592
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "0665a6cfc09981cd8a7ffd0d02e6fbdc"
}
Frame {
msec: 2608
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "49892aa44c8e3584239d245a7ca98af3"
}
Frame {
msec: 2624
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "c9def393bb5d6c447c45b127d32b5e50"
}
Frame {
msec: 2640
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "679d94007b33197ce7decb4df6e8343c"
}
Frame {
msec: 2656
- hash: "3caa36cc3857803248d12ec09ea357df"
+ hash: "817987bcd9f1147ba047333b42ed289d"
}
Frame {
msec: 2672
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "fdd9331015c289b8e33b094999b11dce"
}
Frame {
msec: 2688
- hash: "aadc71923926885ccce87e6be1c742d7"
+ hash: "e4fa13ba2770c0d390945ee4505fea9b"
}
Frame {
msec: 2704
- hash: "9b7503189ecf2999934716f227469463"
+ hash: "69965c88d2273acf680af243610efcf3"
}
Frame {
msec: 2720
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "6cbeb6787a0a7fb7f654f877e41eed57"
}
Frame {
msec: 2736
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "e7528c074b3c65afe3873a3cdf96f041"
}
Frame {
msec: 2752
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "c06c72abe46087f0db87a84fdcbcf601"
}
Frame {
msec: 2768
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "b6840f1d7cf2caed17d763b782553071"
}
Frame {
msec: 2784
- hash: "24cebf60ade86469a154abaa64f3b40d"
- }
- Key {
- type: 7
- key: 16777248
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "71fdb77c4133f37180d581e4b1fe9c83"
}
Frame {
msec: 2800
- hash: "1100ef4e2db234ea77ff4c70df6bfbe7"
+ hash: "f5e2075ed86f146e0162ae4f0a9c6b90"
}
Frame {
msec: 2816
- hash: "c40d8d42a55dde7dbbcae2dda9aaccb8"
+ hash: "5e76b741f49bd279b9f62ae3f474e5b5"
}
Frame {
msec: 2832
- hash: "5c1000fdc279742cbe46987045c0a92b"
+ hash: "28c8003699352c3c9563556939d49cd8"
}
Frame {
msec: 2848
- hash: "bcef4a0ff72330f05f2bf5042e414fde"
+ hash: "15ab751c8463326c870dc9ee1af3c1d7"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2864
- hash: "228551c38b567f1550b44f9dac08786b"
+ hash: "6035ef1252d4f28b965b0bf4771540e4"
}
Frame {
msec: 2880
- image: "cursorDelegate.2.png"
+ hash: "7c79170b07db90ca94f5642f3c0d3998"
}
Frame {
msec: 2896
- hash: "127cc30967f95cb88f4238e0b33c741d"
+ image: "cursorDelegate.3.png"
}
Frame {
msec: 2912
- hash: "3c3fb1d8dbe7443f80550a30ada7f120"
+ hash: "3b4d1f5e1506c851887c86883eb1a6ac"
}
Frame {
msec: 2928
- hash: "edca065d42bf9b63a79d1e97d1a1eed0"
+ hash: "5aff09b0e9078ca6d4ed93694d1fa6f9"
}
Frame {
msec: 2944
- hash: "1e4424f1f40bfce3205e1d1401ab0dcf"
+ hash: "16813ebf88f881a4cebf75a2325dc064"
}
Frame {
msec: 2960
- hash: "90ac5ad7ce23786fe838426605e737e1"
+ hash: "5b901505bb1ab80cd4d5bc85b73ae8ad"
}
Frame {
msec: 2976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "04c7f2e959c31bf6d3e7bea25d27eb87"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "408bb423b93cb48afb97a7744848fc5e"
}
Frame {
msec: 3008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1a58d66b4d42736eea49a602923a0941"
}
Frame {
msec: 3024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1a58d66b4d42736eea49a602923a0941"
}
Frame {
msec: 3040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "408bb423b93cb48afb97a7744848fc5e"
}
Frame {
msec: 3056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "04c7f2e959c31bf6d3e7bea25d27eb87"
}
Frame {
msec: 3072
- hash: "90ac5ad7ce23786fe838426605e737e1"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "5b901505bb1ab80cd4d5bc85b73ae8ad"
}
Frame {
msec: 3088
- hash: "cf467854dfde9b2111bc6e7e4442aab5"
+ hash: "16813ebf88f881a4cebf75a2325dc064"
}
Frame {
msec: 3104
- hash: "df6f025130dc82f4764def81cec5fa7b"
+ hash: "5aff09b0e9078ca6d4ed93694d1fa6f9"
}
Frame {
msec: 3120
- hash: "bdcafed4ae9c890eec2e3e0cb2ff5a14"
+ hash: "3b4d1f5e1506c851887c86883eb1a6ac"
}
Frame {
msec: 3136
- hash: "14b328c8ec6276e022643102af80fa44"
+ hash: "6a0a21ed890b475ce506714cc0501381"
}
Frame {
msec: 3152
- hash: "078d75d72bff036574b85ac0aeaaf2b6"
+ hash: "7c79170b07db90ca94f5642f3c0d3998"
}
Frame {
msec: 3168
- hash: "fbefb1e0801f4578ab93dd7ff4062e68"
+ hash: "6035ef1252d4f28b965b0bf4771540e4"
}
Frame {
msec: 3184
- hash: "eac8375d9b9cf0afbf232e27c6ceb037"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "9529b5b70b76541ec82be173deedadfb"
}
Frame {
msec: 3200
- hash: "3462a3e166120515e67430600e4653f8"
+ hash: "174bbd347422c46923d6a5831cb5cd94"
}
Frame {
msec: 3216
- hash: "7f2d9959323f0707e36ecb2252c89727"
- }
- Frame {
- msec: 3232
- hash: "0a1c2eb8a7451a5e37fefb96a58a88a1"
- }
- Frame {
- msec: 3248
- hash: "4a02aaca12e3fd86ee3b516b3a307f86"
+ hash: "1eb95daf505b817161f1a251cdde1b3c"
}
Key {
type: 6
- key: 16777234
- modifiers: 0
+ key: 16777236
+ modifiers: 67108864
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 3232
+ hash: "10f59fadaa27f78b7a1fb25d3a30adf7"
+ }
+ Frame {
+ msec: 3248
+ hash: "b87417c77b43bdbfdc3d8293c9a23216"
+ }
+ Frame {
msec: 3264
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "64345c713d61638bcc32f277208f2665"
}
Frame {
msec: 3280
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "753dbe02fa95ee2b1387b98d7d456dcf"
}
Frame {
msec: 3296
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "fce9a58aaf8d5cadbb029194317dcae3"
}
Frame {
msec: 3312
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "367083bd88443558002601acbc355b1a"
}
Frame {
msec: 3328
- hash: "9b7503189ecf2999934716f227469463"
- }
- Frame {
- msec: 3344
- hash: "aadc71923926885ccce87e6be1c742d7"
- }
- Frame {
- msec: 3360
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "8e6ffccf321fa30faec432a4b4138967"
}
Key {
type: 7
- key: 16777234
- modifiers: 0
+ key: 16777236
+ modifiers: 67108864
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 3344
+ hash: "4dd4e0dafeed0fc11790145d39f7c85f"
+ }
+ Frame {
+ msec: 3360
+ hash: "d612765c6b43035ea4e4683f968a18d3"
+ }
+ Frame {
msec: 3376
- hash: "3caa36cc3857803248d12ec09ea357df"
+ hash: "fa77d4d8d339b78e5a28dcf69336c116"
}
Frame {
msec: 3392
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "34cf572a432bdd6dcfcc4fdfa032a800"
}
Frame {
msec: 3408
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "150b5a2f2e916b7023764c481c768492"
}
Frame {
msec: 3424
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "fbc93f511d6f3093c2ecf624a2c63749"
}
Frame {
msec: 3440
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "f9e0bd08b722c16493a8886a19920dda"
}
Frame {
msec: 3456
- hash: "a6bdf56b4f8783969935488e1955e59c"
+ hash: "f499f4b3017c88c63f0a2035ad527a0e"
}
Frame {
msec: 3472
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 3488
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 3504
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 3520
- hash: "907c6363d1e524f391d001944febe1ac"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 3536
- hash: "313a06d40274e46453342e66236f09f8"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 3552
- hash: "0d410f7bfa3e4c58948a8f1e7c7695c4"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 3568
- hash: "a9911e076af337fe30e322f03d84a528"
+ hash: "68d331f508b43e756d6e30ba9b60f9aa"
}
Frame {
msec: 3584
- hash: "4a8efcc341bba9ba621ce0f785a75432"
+ hash: "c9147c159aebb7aa51d4bac28f96cb57"
}
Frame {
msec: 3600
- hash: "479f192c8cf7b8e4407655382402700f"
+ hash: "0636b7c5cc215882c60b50f62133c715"
}
Frame {
msec: 3616
- hash: "63dc16e66def35abba5159d5650f165d"
+ hash: "10b52296e40380a915f7538d21d321a4"
}
Frame {
msec: 3632
- hash: "26e88aae512304c28d425c311febce1b"
+ hash: "9c56e2c5e04e8767b70d357558e179de"
}
Frame {
msec: 3648
- hash: "efc77b82c0ffd7f3fbe5fed06ea418bd"
+ hash: "0b1538af23c78cc779174df9fd01f60b"
}
Frame {
msec: 3664
- hash: "70409eeee50fbb54097a3c430e1e1f21"
+ hash: "1632c7df93f1a735236eaa2464e75ba6"
}
Frame {
msec: 3680
- hash: "63c6a7810dec832f1b8288807f1d932a"
+ hash: "a08e8b921e61c79d57c0bc4fa5e79914"
}
Frame {
msec: 3696
- hash: "aec9683f3a677dab781bdf3bbf7cce5e"
+ hash: "8220951034b6f1a5755bedd53b947b4a"
}
Frame {
msec: 3712
- hash: "2e6dd79fc23acbf710e757f3d0999ab8"
+ hash: "f4c18c333796ff10218fa9145781ea7f"
}
Frame {
msec: 3728
- hash: "4d9dd9e515a21478cb3364032acf8c15"
+ hash: "7547d3bb0f9c4a53396cfe0252436395"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3744
- hash: "5dc2129cac6e667d39da3304a37a76f2"
+ hash: "efe333c2b8cccea0bd7135484049db06"
}
Frame {
msec: 3760
- hash: "ab5eb4750139875586a346b1c3a84f42"
+ hash: "c0249d07bcf25af69bf929b4d5ac00a3"
}
Frame {
msec: 3776
- hash: "96d3bd62d4a0bf39a672b97fcc050bd5"
+ hash: "8e5fdc8e6cc38089d1e8ff5e91a5c894"
}
Frame {
msec: 3792
- hash: "546cec655631b5802eb4d7008093eb69"
+ hash: "5d6702b9475e69bda2ed38f6e2d583d9"
}
Frame {
msec: 3808
- hash: "85f33f1bf1b1e11be450ab85bf6dab3d"
+ hash: "6502416042993d05dd514119512ed61f"
}
Frame {
msec: 3824
- hash: "44b195297acd1bf59e43751df8dc1c1d"
+ hash: "938a6eea45c4412e847a8700172d80ac"
}
Frame {
msec: 3840
- image: "cursorDelegate.3.png"
+ hash: "4bf8e82220ea0d0c4298d5374e149de2"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3856
- hash: "47942253c07fd39894445ff5e5b9608c"
+ image: "cursorDelegate.4.png"
}
Frame {
msec: 3872
- hash: "d26d71b1c03fb21550820dd1586a7a8e"
+ hash: "aff4097bd39c87c5d1459d99f314dade"
}
Frame {
msec: 3888
- hash: "37ec2ed29006575e8bd41a1989b75e27"
+ hash: "5cf6cb0afffb791da1c4d0fe00cf6326"
}
Frame {
msec: 3904
- hash: "5ad1ab34572f9ef339774134bc0ab407"
+ hash: "007e76fb247e11a442802c7cfb4e6a24"
}
Frame {
msec: 3920
- hash: "a4f68f6ee46642e7cc5a542b9f8a2464"
+ hash: "505e740aacf4ca7e6ad24367ddad8678"
}
Frame {
msec: 3936
- hash: "fce95d18a0efee74554209ca39637062"
+ hash: "4213f35c4cd233a08d98ba0380b7ab0a"
}
Frame {
msec: 3952
- hash: "1587fc2668f1f44e76f252bfd75f2708"
+ hash: "575dd420067e4ebe5733eb4e35a447ab"
}
Frame {
msec: 3968
- hash: "e0a6eb42de552281e297ca5c50c1df23"
+ hash: "062574e74354b104db2ee6d3c3af5802"
}
Frame {
msec: 3984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d3be942cfb93c4a5d5aa906410125d02"
}
Frame {
msec: 4000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b742ebe441dde1f30dab6d19954a9e8c"
}
Frame {
msec: 4016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "bbe3a292c59e2f7ae6b8877f6736c96e"
}
Frame {
msec: 4032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b742ebe441dde1f30dab6d19954a9e8c"
}
Frame {
msec: 4048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d3be942cfb93c4a5d5aa906410125d02"
}
Frame {
msec: 4064
- hash: "e0a6eb42de552281e297ca5c50c1df23"
+ hash: "062574e74354b104db2ee6d3c3af5802"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 4080
- hash: "1587fc2668f1f44e76f252bfd75f2708"
+ hash: "575dd420067e4ebe5733eb4e35a447ab"
}
Frame {
msec: 4096
- hash: "fce95d18a0efee74554209ca39637062"
+ hash: "4213f35c4cd233a08d98ba0380b7ab0a"
}
Frame {
msec: 4112
- hash: "a4f68f6ee46642e7cc5a542b9f8a2464"
+ hash: "505e740aacf4ca7e6ad24367ddad8678"
}
Frame {
msec: 4128
- hash: "5ad1ab34572f9ef339774134bc0ab407"
+ hash: "007e76fb247e11a442802c7cfb4e6a24"
}
Frame {
msec: 4144
- hash: "37ec2ed29006575e8bd41a1989b75e27"
+ hash: "5cf6cb0afffb791da1c4d0fe00cf6326"
}
Frame {
msec: 4160
- hash: "d26d71b1c03fb21550820dd1586a7a8e"
+ hash: "aff4097bd39c87c5d1459d99f314dade"
}
Frame {
msec: 4176
- hash: "47942253c07fd39894445ff5e5b9608c"
+ hash: "009dc0c6ff28333ac2fdfa3d79ad2fd6"
}
Frame {
msec: 4192
- hash: "a62f1cbf43da0381c7c9099d47ded882"
+ hash: "4bf8e82220ea0d0c4298d5374e149de2"
}
Frame {
msec: 4208
- hash: "44b195297acd1bf59e43751df8dc1c1d"
+ hash: "938a6eea45c4412e847a8700172d80ac"
}
Frame {
msec: 4224
- hash: "85f33f1bf1b1e11be450ab85bf6dab3d"
+ hash: "6502416042993d05dd514119512ed61f"
}
Frame {
msec: 4240
- hash: "546cec655631b5802eb4d7008093eb69"
+ hash: "5d6702b9475e69bda2ed38f6e2d583d9"
}
Frame {
msec: 4256
- hash: "96d3bd62d4a0bf39a672b97fcc050bd5"
+ hash: "8e5fdc8e6cc38089d1e8ff5e91a5c894"
}
Frame {
msec: 4272
- hash: "ab5eb4750139875586a346b1c3a84f42"
+ hash: "c0249d07bcf25af69bf929b4d5ac00a3"
}
Frame {
msec: 4288
- hash: "5dc2129cac6e667d39da3304a37a76f2"
+ hash: "efe333c2b8cccea0bd7135484049db06"
}
Frame {
msec: 4304
- hash: "4d9dd9e515a21478cb3364032acf8c15"
+ hash: "57e49e9094691a204f7507b0231352b3"
}
Frame {
msec: 4320
- hash: "2e6dd79fc23acbf710e757f3d0999ab8"
+ hash: "d0a45bd3cfc5e4e6f9a48534c768daba"
}
Frame {
msec: 4336
- hash: "aec9683f3a677dab781bdf3bbf7cce5e"
+ hash: "6960ab817c67a61af31cc187efe65016"
}
Frame {
msec: 4352
- hash: "63c6a7810dec832f1b8288807f1d932a"
+ hash: "3b0d483ff765f36a196411967b6dfd70"
}
Frame {
msec: 4368
- hash: "70409eeee50fbb54097a3c430e1e1f21"
+ hash: "559713749d65246b185c0c91eb7ad39e"
}
Frame {
msec: 4384
- hash: "efc77b82c0ffd7f3fbe5fed06ea418bd"
+ hash: "9aea32722fd4f8b0cde3c06c61cecde6"
}
Frame {
msec: 4400
- hash: "26e88aae512304c28d425c311febce1b"
+ hash: "25dfa32ce92b6044f5ea68411ab5de5b"
}
Frame {
msec: 4416
- hash: "63dc16e66def35abba5159d5650f165d"
+ hash: "dab689ed2bbe663df309548e615e8621"
}
Frame {
msec: 4432
- hash: "479f192c8cf7b8e4407655382402700f"
+ hash: "26ad44cef380ff9f64c12180fb54c695"
}
Frame {
msec: 4448
- hash: "4a8efcc341bba9ba621ce0f785a75432"
+ hash: "5e8bbcd46b5692e66963387b80971e90"
}
Frame {
msec: 4464
- hash: "a9911e076af337fe30e322f03d84a528"
+ hash: "747df5357daa951fbedeadf909f9dbf3"
}
Frame {
msec: 4480
- hash: "0d410f7bfa3e4c58948a8f1e7c7695c4"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 4496
- hash: "313a06d40274e46453342e66236f09f8"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 4512
- hash: "907c6363d1e524f391d001944febe1ac"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 4528
- hash: "84cad44c4cccf8a0942865719d05c2eb"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 4544
- hash: "60d24c160adb8e074c04d4f40bf140a8"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 4560
- hash: "ff5fac70804eb01da28c2988aba520a4"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 4576
- hash: "a6bdf56b4f8783969935488e1955e59c"
+ hash: "1568d4b93d2a284c46f23a0cb17acc24"
}
Frame {
msec: 4592
- hash: "d0ad97647c5092a64426187406ec5316"
+ hash: "0665a6cfc09981cd8a7ffd0d02e6fbdc"
}
Frame {
msec: 4608
- hash: "77e7a4a4a9c38cd7b5ef734d39089e3f"
+ hash: "49892aa44c8e3584239d245a7ca98af3"
}
Frame {
msec: 4624
- hash: "0285340a2e03568810a76d840369f5c8"
+ hash: "c9def393bb5d6c447c45b127d32b5e50"
}
Frame {
msec: 4640
- hash: "6ba6a1a05c5a9ec0d2897b3454affd09"
+ hash: "679d94007b33197ce7decb4df6e8343c"
}
Frame {
msec: 4656
- hash: "3caa36cc3857803248d12ec09ea357df"
+ hash: "817987bcd9f1147ba047333b42ed289d"
}
Frame {
msec: 4672
- hash: "500f7b72acc877fc1662e4f4ceb090e1"
+ hash: "fdd9331015c289b8e33b094999b11dce"
}
Frame {
msec: 4688
- hash: "aadc71923926885ccce87e6be1c742d7"
+ hash: "e4fa13ba2770c0d390945ee4505fea9b"
}
Frame {
msec: 4704
- hash: "9b7503189ecf2999934716f227469463"
+ hash: "69965c88d2273acf680af243610efcf3"
}
Frame {
msec: 4720
- hash: "874296e182abe96e58f9c0463a0f32c9"
+ hash: "6cbeb6787a0a7fb7f654f877e41eed57"
}
Frame {
msec: 4736
- hash: "4262c79b6844d4d62aa9fb02c335fb95"
+ hash: "e7528c074b3c65afe3873a3cdf96f041"
}
Frame {
msec: 4752
- hash: "a5862eaf12cc342054fd3f8d1f4c91c3"
+ hash: "c06c72abe46087f0db87a84fdcbcf601"
}
Frame {
msec: 4768
- hash: "0034ef8851c9810ed5d50496aea367da"
+ hash: "b6840f1d7cf2caed17d763b782553071"
}
Frame {
msec: 4784
- hash: "24cebf60ade86469a154abaa64f3b40d"
+ hash: "71fdb77c4133f37180d581e4b1fe9c83"
}
Frame {
msec: 4800
- image: "cursorDelegate.4.png"
+ hash: "f5e2075ed86f146e0162ae4f0a9c6b90"
}
Frame {
msec: 4816
- hash: "c40d8d42a55dde7dbbcae2dda9aaccb8"
+ image: "cursorDelegate.5.png"
}
Frame {
msec: 4832
- hash: "5c1000fdc279742cbe46987045c0a92b"
+ hash: "28c8003699352c3c9563556939d49cd8"
}
Frame {
msec: 4848
- hash: "bcef4a0ff72330f05f2bf5042e414fde"
+ hash: "15ab751c8463326c870dc9ee1af3c1d7"
}
Frame {
msec: 4864
- hash: "228551c38b567f1550b44f9dac08786b"
+ hash: "b745b2aee5ec623163ea22614b8ab54b"
}
Frame {
msec: 4880
- hash: "531c5ca6992c4a12927c61e22c02dd6b"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 130; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "b3f3b8e325dcd56b696eab7228c3db09"
}
Frame {
msec: 4896
- hash: "14b328c8ec6276e022643102af80fa44"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 130; y: 102
- modifiers: 0
- sendToViewport: true
+ hash: "12ba65e0f70a670b2832235391d3ed05"
}
Frame {
msec: 4912
- hash: "bdcafed4ae9c890eec2e3e0cb2ff5a14"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 131; y: 102
- modifiers: 0
- sendToViewport: true
+ hash: "9dfac03113b662a63bddcac9c7ae8f64"
}
Frame {
msec: 4928
- hash: "df6f025130dc82f4764def81cec5fa7b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 132; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "085bbc44102ae0d1d62531f6b6dbda98"
}
Frame {
msec: 4944
- hash: "cf467854dfde9b2111bc6e7e4442aab5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 133; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 134; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "007887862e2234f4c308778ecac5e16b"
}
Frame {
msec: 4960
- hash: "cfcdf63ca06c2b9ab197821bc1e48c7c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 135; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "61e8e34755db1fb99b44830676ad95ad"
}
Frame {
msec: 4976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 136; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "48c8b1b0d549f7b6d85a81803b9fe31d"
}
Frame {
msec: 4992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 137; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 138; y: 102
- modifiers: 0
- sendToViewport: true
+ hash: "834cf51445f88394e33a3f3f0a5569f4"
}
Frame {
msec: 5008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 139; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "a43224f77583bb7235895506f49daee6"
}
Frame {
msec: 5024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 140; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "a43224f77583bb7235895506f49daee6"
}
Frame {
msec: 5040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 141; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 143; y: 100
- modifiers: 0
- sendToViewport: true
+ hash: "834cf51445f88394e33a3f3f0a5569f4"
}
Frame {
msec: 5056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 100
- modifiers: 0
- sendToViewport: true
+ hash: "48c8b1b0d549f7b6d85a81803b9fe31d"
}
Frame {
msec: 5072
- hash: "cfcdf63ca06c2b9ab197821bc1e48c7c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 146; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "61e8e34755db1fb99b44830676ad95ad"
}
Frame {
msec: 5088
- hash: "cf467854dfde9b2111bc6e7e4442aab5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 148; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 149; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "007887862e2234f4c308778ecac5e16b"
}
Frame {
msec: 5104
- hash: "7643fcfb740d33b87915300684e85a44"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 150; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "085bbc44102ae0d1d62531f6b6dbda98"
}
Frame {
msec: 5120
- hash: "1bd041a5e8d2237b51720fed82250303"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 151; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "9dfac03113b662a63bddcac9c7ae8f64"
}
Frame {
msec: 5136
- hash: "1a00c9d3ce747e3bc7ee5878d21260b4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "12ba65e0f70a670b2832235391d3ed05"
}
Frame {
msec: 5152
- hash: "803896c1be68588ba2cddd7effbb8d62"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 153; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "b3f3b8e325dcd56b696eab7228c3db09"
}
Frame {
msec: 5168
- hash: "282ab572698088fba3aba8e6a091aa38"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "b745b2aee5ec623163ea22614b8ab54b"
}
Frame {
msec: 5184
- hash: "24402d9e4fabd78bc8f3921db82e554e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 155; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "15ab751c8463326c870dc9ee1af3c1d7"
}
Frame {
msec: 5200
- hash: "39a89e9ca7c4edd9c8503927d639df0f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "28c8003699352c3c9563556939d49cd8"
}
Frame {
msec: 5216
- hash: "b984b7d032544acd4dab8901e0af1ef5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "5e76b741f49bd279b9f62ae3f474e5b5"
}
Frame {
msec: 5232
- hash: "e014414626407b0446939ad2ce38b7dd"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 161; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "f5e2075ed86f146e0162ae4f0a9c6b90"
}
Frame {
msec: 5248
- hash: "beccb93613279e2f48507ddc9a4418e8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 97
- modifiers: 0
- sendToViewport: true
+ hash: "71fdb77c4133f37180d581e4b1fe9c83"
}
Frame {
msec: 5264
- hash: "dd861f8dc89587301e860217fdf2a701"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 164; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5280
- hash: "1ae0b7a18a7d3ebe4871a0045005e2b7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 168; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5296
- hash: "071e1f8bcc0e541b23d134f32c19d20b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 170; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5312
- hash: "e8ce2716f4595bc5bf68c24c8a63bbfe"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 174; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5328
- hash: "d36a35503af76b12fe5cec65e3f22eda"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 176; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 178; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5344
- hash: "cea0f90a56fd5789b3e166f09f2bfcec"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 179; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5360
- hash: "151f5357d9c1a3f1fe09380a287abab0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 180; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5376
- hash: "bdab9d7077734087cb7f9516e9c517bc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 182; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 183; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5392
- hash: "6d6d929a7c7be1d2e7d1b2f98a6866be"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 185; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5408
- hash: "3fbe3f45afc5aa40fff7f795ced8a05d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 187; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5424
- hash: "b35b4dc480aeb76912d927b0ff8676c6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 189; y: 93
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 191; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5440
- hash: "94e82e888280f20cce3ac38b353b79f4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 192; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5456
- hash: "4674fbd35e467bed780a5ea2fe2e258b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 194; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5472
- hash: "698827bfa7ff2eae6b0e0efa99bb15bb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 196; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 198; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5488
- hash: "67c7adef5e41481d631f54d34423b93d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 199; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5504
- hash: "097512c005127fa3ebfcbc52808264a8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 91
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5520
- hash: "ad64b5913350e6c6fda199ecb34278f4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 91
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 201; y: 90
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5536
- hash: "3237e88e0f40595d2fde62723c00b7fa"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 202; y: 89
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5552
- hash: "18db89296849f22a7af0a1ffc9762a32"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 203; y: 88
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5568
- hash: "7f6ac84baaa2c5fcd22ba45172611840"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 204; y: 88
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5584
- hash: "7b887d3aa44229d9f25fdde8f5ccf471"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 207; y: 86
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 208; y: 85
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5600
- hash: "b0c08726d0f2a460d5862cd2d7ee6230"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 210; y: 85
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5616
- hash: "d99389a3287d453b942f070d8c1e86e8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5632
- hash: "a0751fa826b03cb25e615c6a1435d92a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 213; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 214; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5648
- hash: "f33da88ae881c846bd86ab3dc4f12efc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5664
- hash: "7049bee9a984a2c2d3101eb6d3cce31e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5680
- hash: "72757a5099748b70241a0d4279e42313"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 217; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5696
- hash: "705feb098ebb2d689526d9271098d6b5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5712
- hash: "49de92770edb0aae82cf66ae42b31caa"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5728
- hash: "70fe89f9dce556ec1859f325aa27b7db"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 85
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 86
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 220; y: 86
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5744
- hash: "1ededcc625a0e9e317c5aefc238a175a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 221; y: 87
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5760
- image: "cursorDelegate.5.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 87
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5776
- hash: "f1ae53071836512830f7284c4ac884b3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 88
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5792
- hash: "f73c2b66b61bdcb080f8be6607079729"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 224; y: 90
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5808
- hash: "11da14806fbca5c7cd559286fb5d70ff"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 226; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5824
- hash: "b3ad82e900925227fb020009ae619d28"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 228; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5840
- hash: "d8cea4160f0044b09e595610ead01879"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 229; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 231; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5856
- hash: "bdd0d1bea8590b40cdce2fb45e17901b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 232; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5872
- hash: "007a5d123eea589264e22f862f1bcac6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 233; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5888
- hash: "3a83635e8371f3e26baf83c285b7801d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 233; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5904
- hash: "6615931007ab0f9da070b6316068ad12"
- }
- Frame {
- msec: 5920
- hash: "be695ab0dced25c1c498d977fc822cef"
- }
- Frame {
- msec: 5936
- hash: "46dea7348473bc6ce4ea696292e5aae0"
- }
- Frame {
- msec: 5952
- hash: "23ce0ba723ffe4253610fdc635df9ae2"
- }
- Frame {
- msec: 5968
- hash: "9d6243396fd98b7efd14ae8a67297e79"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 233; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 232; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 232; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 231; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 230; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 229; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 228; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 227; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6064
- hash: "be488252ce6c39317c33706f7febe7b5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 225; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6080
- hash: "16c38b5dcd8ffbadc533d4fea8a85b0d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 224; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6096
- hash: "a3ca6fa1bbc5ca3ff4cf281ae112102d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 220; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6112
- hash: "58e53a9cb886d6d90c0b5987d0693904"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6128
- hash: "a7f3e07ad0335e2852a156b5a3e1bd3d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 217; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6144
- hash: "bea9d0338212c01474b25ee637aa8fd0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6160
- hash: "b509c0cdea6b1352ff1e146a8f243820"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 213; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6176
- hash: "9c968354773878009af2f176b1e38d42"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6192
- hash: "d8cea4160f0044b09e595610ead01879"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 210; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6208
- hash: "b3ad82e900925227fb020009ae619d28"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 210; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6224
- hash: "11da14806fbca5c7cd559286fb5d70ff"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 208; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 207; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6240
- hash: "707f51caadf24d3ed88b69c290d56971"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 206; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6256
- hash: "c23b2afed7fa0e3dbce1183cf8e8d724"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 205; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6272
- hash: "653b2e2d711c1abc1893d0068f4c531c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 204; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 203; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6288
- hash: "246a73b19421f0ea8ec444429bd6704e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 202; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6304
- hash: "3878df64c0cecb2051e04dafe16ad407"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 201; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6320
- hash: "1cf92a793a4d145acce08c61cca3ba4f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 199; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6336
- hash: "6c5f70c941a04172aae855eed1516971"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 197; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6352
- hash: "5f4b8d6ad49de0ea1a2ee057e783b363"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 196; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 194; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6368
- hash: "dc185cf4a14801d7bcc24ceadffe312b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 191; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 188; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6384
- hash: "6934c069d1b7daf1c2dd76739941c7c2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 187; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6400
- hash: "415510947b49a08459523fa2221d3609"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 185; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6416
- hash: "9586619df75f07cc1f01201abd0f1f43"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 182; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6432
- hash: "d016b14c9d5e5cd2545f1c85aa1edc4f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 176; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6448
- hash: "4100837adeaf1557534f5c243eeacc37"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 171; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6464
- hash: "a9351f624dc7de55ca8e799cf4371e75"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6480
- hash: "8f2f9ba7de4e01767dda2c6d8f09e218"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6496
- hash: "fb9b7d7e1aa140efc7e39cbca7299d34"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 159; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6512
- hash: "eb1c2399d5779cc3382f02e69e5a31f1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6528
- hash: "3bd98dc8a8cfb7af8a5f2ab11f387065"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6544
- hash: "1eea9af6e5f359b96df86d56d74f8375"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 155; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6560
- hash: "74c68b948d8e1d3c716eba5f1a186464"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 153; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6576
- hash: "7103ecc0c21208d210938b0cd86fa4e2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 151; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6592
- hash: "187b7801be7cd9643c707016166fcb38"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 149; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6608
- hash: "571fe7704d5d95e91d4bd411ab00edf0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 148; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6624
- hash: "2b6fd25a47274ffa56c3d0020babfdfc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 146; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6640
- hash: "febcd6b5fc1806ff57d1669c79aa4cb2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 145; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6656
- hash: "5c731fc4a2aeccf55a0af2b7171f25ce"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 145; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6672
- hash: "7d9df9dd9a99eabaa4b426438e44d612"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6688
- hash: "48278540489142f8a63ed120f4b956c2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6704
- hash: "d08abdfb587a7ec07872cb662526b6d8"
- }
- Frame {
- msec: 6720
- image: "cursorDelegate.6.png"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 144; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6736
- hash: "4622738082ac75e00b6c63e846b7e98b"
- }
- Frame {
- msec: 6752
- hash: "87a9f2facbaba462c562f09947bb7ded"
- }
- Frame {
- msec: 6768
- hash: "77e730ece9f195c3627508d1c2a126fc"
- }
- Frame {
- msec: 6784
- hash: "4a02aaca12e3fd86ee3b516b3a307f86"
- }
- Frame {
- msec: 6800
- hash: "0a1c2eb8a7451a5e37fefb96a58a88a1"
- }
- Frame {
- msec: 6816
- hash: "7f2d9959323f0707e36ecb2252c89727"
- }
- Frame {
- msec: 6832
- hash: "3462a3e166120515e67430600e4653f8"
- }
- Frame {
- msec: 6848
- hash: "eac8375d9b9cf0afbf232e27c6ceb037"
- }
- Frame {
- msec: 6864
- hash: "fbefb1e0801f4578ab93dd7ff4062e68"
- }
- Frame {
- msec: 6880
- hash: "078d75d72bff036574b85ac0aeaaf2b6"
- }
- Frame {
- msec: 6896
- hash: "14b328c8ec6276e022643102af80fa44"
- }
- Frame {
- msec: 6912
- hash: "bdcafed4ae9c890eec2e3e0cb2ff5a14"
- }
- Frame {
- msec: 6928
- hash: "df6f025130dc82f4764def81cec5fa7b"
- }
- Frame {
- msec: 6944
- hash: "cf467854dfde9b2111bc6e7e4442aab5"
- }
- Frame {
- msec: 6960
- hash: "cfcdf63ca06c2b9ab197821bc1e48c7c"
- }
- Frame {
- msec: 6976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 6992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 7008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 7024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 7040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 7056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 7072
- hash: "cfcdf63ca06c2b9ab197821bc1e48c7c"
- }
- Frame {
- msec: 7088
- hash: "cf467854dfde9b2111bc6e7e4442aab5"
- }
- Frame {
- msec: 7104
- hash: "df6f025130dc82f4764def81cec5fa7b"
- }
- Frame {
- msec: 7120
- hash: "bdcafed4ae9c890eec2e3e0cb2ff5a14"
- }
- Frame {
- msec: 7136
- hash: "14b328c8ec6276e022643102af80fa44"
- }
- Frame {
- msec: 7152
- hash: "078d75d72bff036574b85ac0aeaaf2b6"
- }
- Frame {
- msec: 7168
- hash: "fbefb1e0801f4578ab93dd7ff4062e68"
- }
- Frame {
- msec: 7184
- hash: "eac8375d9b9cf0afbf232e27c6ceb037"
- }
- Frame {
- msec: 7200
- hash: "3462a3e166120515e67430600e4653f8"
- }
- Frame {
- msec: 7216
- hash: "7f2d9959323f0707e36ecb2252c89727"
- }
- Frame {
- msec: 7232
- hash: "0a1c2eb8a7451a5e37fefb96a58a88a1"
- }
- Frame {
- msec: 7248
- hash: "4a02aaca12e3fd86ee3b516b3a307f86"
- }
- Frame {
- msec: 7264
- hash: "77e730ece9f195c3627508d1c2a126fc"
- }
- Frame {
- msec: 7280
- hash: "87a9f2facbaba462c562f09947bb7ded"
- }
- Frame {
- msec: 7296
- hash: "4622738082ac75e00b6c63e846b7e98b"
- }
- Frame {
- msec: 7312
- hash: "9fcec7616e28cb8317709656fd94f480"
- }
- Frame {
- msec: 7328
- hash: "d08abdfb587a7ec07872cb662526b6d8"
- }
- Frame {
- msec: 7344
- hash: "48278540489142f8a63ed120f4b956c2"
- }
- Frame {
- msec: 7360
- hash: "7d9df9dd9a99eabaa4b426438e44d612"
- }
- Frame {
- msec: 7376
- hash: "5c731fc4a2aeccf55a0af2b7171f25ce"
- }
- Frame {
- msec: 7392
- hash: "febcd6b5fc1806ff57d1669c79aa4cb2"
- }
- Frame {
- msec: 7408
- hash: "4ad2c0877360b0e1bf2212f9455f741e"
- }
- Frame {
- msec: 7424
- hash: "4df1951aac4ed1957925c95e112b0766"
- }
- Frame {
- msec: 7440
- hash: "bfbb624abe63639f2a7cb826b6b47393"
- }
- Frame {
- msec: 7456
- hash: "538cf4ee98145b3801e198b036e24a46"
- }
- Frame {
- msec: 7472
- hash: "5602c039a304ac0b1fd99957970a825b"
- }
- Frame {
- msec: 7488
- hash: "9ddd7709269b9a008e15d942e156e13a"
- }
- Frame {
- msec: 7504
- hash: "91d7c43f5f985d624e77da43ba5fb90f"
- }
- Frame {
- msec: 7520
- hash: "9153b0419d28e3c8137b58f95451cd58"
- }
- Frame {
- msec: 7536
- hash: "c5aad5ea4db81cf72f1ff390ed1dc868"
- }
- Frame {
- msec: 7552
- hash: "47b52ce9e5c705017e94b419b53d20d9"
- }
- Frame {
- msec: 7568
- hash: "f968e3289a2a6343cdb64e37b83f142a"
- }
- Frame {
- msec: 7584
- hash: "6fe898a37b17b6b6fa9a2971b518d185"
- }
- Frame {
- msec: 7600
- hash: "90ced2e487b6e760f2ad2c7d6375a36f"
- }
- Frame {
- msec: 7616
- hash: "b2d87713d12a54d4d7b6fd6ba2671704"
- }
- Frame {
- msec: 7632
- hash: "edce9857bd0e93ab841ae62ffba0149f"
- }
- Frame {
- msec: 7648
- hash: "13ce69facee6bf01c9712db1781c5ef9"
- }
- Frame {
- msec: 7664
- hash: "64924e43e004f0d9e90c23f61813c732"
- }
- Frame {
- msec: 7680
- image: "cursorDelegate.7.png"
- }
- Frame {
- msec: 7696
- hash: "9c384359c664a71b5b6b9f9d62dd38bf"
- }
- Frame {
- msec: 7712
- hash: "5998579d228bcf0efdbcee805796ec23"
- }
- Frame {
- msec: 7728
- hash: "fe69cab70ad5b25f757bc413b895ff94"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 227; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7744
- hash: "1ededcc625a0e9e317c5aefc238a175a"
- }
- Frame {
- msec: 7760
- hash: "460a4cbee55ccdeda1941c8dccf08cbd"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 227; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7776
- hash: "f1ae53071836512830f7284c4ac884b3"
- }
- Frame {
- msec: 7792
- hash: "f73c2b66b61bdcb080f8be6607079729"
- }
- Frame {
- msec: 7808
- hash: "11da14806fbca5c7cd559286fb5d70ff"
- }
- Frame {
- msec: 7824
- hash: "b3ad82e900925227fb020009ae619d28"
- }
- Frame {
- msec: 7840
- hash: "d8cea4160f0044b09e595610ead01879"
- }
- Frame {
- msec: 7856
- hash: "9c968354773878009af2f176b1e38d42"
- }
- Frame {
- msec: 7872
- hash: "b509c0cdea6b1352ff1e146a8f243820"
- }
- Frame {
- msec: 7888
- hash: "bea9d0338212c01474b25ee637aa8fd0"
- }
- Frame {
- msec: 7904
- hash: "a7f3e07ad0335e2852a156b5a3e1bd3d"
- }
- Frame {
- msec: 7920
- hash: "58e53a9cb886d6d90c0b5987d0693904"
- }
- Frame {
- msec: 7936
- hash: "a3ca6fa1bbc5ca3ff4cf281ae112102d"
- }
- Frame {
- msec: 7952
- hash: "16c38b5dcd8ffbadc533d4fea8a85b0d"
- }
- Frame {
- msec: 7968
- hash: "be488252ce6c39317c33706f7febe7b5"
- }
- Frame {
- msec: 7984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8064
- hash: "be488252ce6c39317c33706f7febe7b5"
- }
- Frame {
- msec: 8080
- hash: "16c38b5dcd8ffbadc533d4fea8a85b0d"
- }
- Frame {
- msec: 8096
- hash: "a3ca6fa1bbc5ca3ff4cf281ae112102d"
- }
- Frame {
- msec: 8112
- hash: "58e53a9cb886d6d90c0b5987d0693904"
- }
- Frame {
- msec: 8128
- hash: "a7f3e07ad0335e2852a156b5a3e1bd3d"
- }
- Frame {
- msec: 8144
- hash: "bea9d0338212c01474b25ee637aa8fd0"
- }
- Frame {
- msec: 8160
- hash: "b509c0cdea6b1352ff1e146a8f243820"
- }
- Frame {
- msec: 8176
- hash: "9c968354773878009af2f176b1e38d42"
- }
- Frame {
- msec: 8192
- hash: "d8cea4160f0044b09e595610ead01879"
- }
- Frame {
- msec: 8208
- hash: "b3ad82e900925227fb020009ae619d28"
- }
- Frame {
- msec: 8224
- hash: "11da14806fbca5c7cd559286fb5d70ff"
- }
- Frame {
- msec: 8240
- hash: "f73c2b66b61bdcb080f8be6607079729"
- }
- Frame {
- msec: 8256
- hash: "f1ae53071836512830f7284c4ac884b3"
- }
- Frame {
- msec: 8272
- hash: "460a4cbee55ccdeda1941c8dccf08cbd"
- }
- Frame {
- msec: 8288
- hash: "1ededcc625a0e9e317c5aefc238a175a"
- }
- Frame {
- msec: 8304
- hash: "70fe89f9dce556ec1859f325aa27b7db"
- }
- Frame {
- msec: 8320
- hash: "49de92770edb0aae82cf66ae42b31caa"
- }
- Frame {
- msec: 8336
- hash: "705feb098ebb2d689526d9271098d6b5"
- }
- Frame {
- msec: 8352
- hash: "72757a5099748b70241a0d4279e42313"
- }
- Frame {
- msec: 8368
- hash: "7049bee9a984a2c2d3101eb6d3cce31e"
- }
- Frame {
- msec: 8384
- hash: "f33da88ae881c846bd86ab3dc4f12efc"
- }
- Frame {
- msec: 8400
- hash: "a0751fa826b03cb25e615c6a1435d92a"
- }
- Frame {
- msec: 8416
- hash: "d99389a3287d453b942f070d8c1e86e8"
- }
- Frame {
- msec: 8432
- hash: "e3219357e73a2dfd5b80dfbd6feb79e2"
- }
- Frame {
- msec: 8448
- hash: "c0953accd856883c813d4ecf99fb632b"
- }
- Frame {
- msec: 8464
- hash: "185743339cba9dfc1a2c2ff1efd23855"
- }
- Frame {
- msec: 8480
- hash: "30a4419de779037fd84bd70a99c4d6de"
- }
- Frame {
- msec: 8496
- hash: "1d9cbd0814831c518e9e8041fe8285c9"
- }
- Frame {
- msec: 8512
- hash: "81d660df1b0eab7c382991b600f88ba3"
- }
- Frame {
- msec: 8528
- hash: "7ee1467525b9fe3b6a32fba8c2454df1"
- }
- Frame {
- msec: 8544
- hash: "28dd72957652cf130d28d30203b36c59"
- }
- Frame {
- msec: 8560
- hash: "e9697d06a22958cea4f766dd3ec31ca9"
- }
- Frame {
- msec: 8576
- hash: "81970c31a0a1e42929c83ef5140401c2"
- }
- Frame {
- msec: 8592
- hash: "ebb5be43955725bef66bf99bd7288c04"
- }
- Frame {
- msec: 8608
- hash: "afbf0645ea651b2c459eeb43bdc65992"
- }
- Frame {
- msec: 8624
- hash: "42bf6ab3963652617f2feb96ee170af5"
- }
- Frame {
- msec: 8640
- image: "cursorDelegate.8.png"
- }
- Frame {
- msec: 8656
- hash: "4a5966f600f9b27bf7a65fcc6c1c5d17"
- }
- Frame {
- msec: 8672
- hash: "ecdc1d89af1e76648c8298e2b9940549"
- }
- Frame {
- msec: 8688
- hash: "0ba1e105a7ae41926e2106b60eafdec9"
- }
- Frame {
- msec: 8704
- hash: "96e4f277d4ff76afe0c2d58b4aed3acb"
- }
- Frame {
- msec: 8720
- hash: "f41c6fd9e22354b8f5c940c04930a591"
- }
- Frame {
- msec: 8736
- hash: "00b522554cf6c0c09e5425f4d3c3fcf9"
- }
- Frame {
- msec: 8752
- hash: "e8549c0c361f20d167cab128dc996274"
- }
- Frame {
- msec: 8768
- hash: "976c61615250f9bfa3b4c02ee88bee03"
- }
- Frame {
- msec: 8784
- hash: "06c95d2fa5e2b4751e5693b179e76eb4"
- }
- Frame {
- msec: 8800
- hash: "a3d79197235c4717b1f9af3582118ca6"
- }
- Frame {
- msec: 8816
- hash: "68b23db8f519aa161278074aa318eaa1"
- }
- Frame {
- msec: 8832
- hash: "af967462be12d0b6ddd3571b00804c12"
- }
- Frame {
- msec: 8848
- hash: "46f5c0baa2b95fd418984eebe308157e"
- }
- Frame {
- msec: 8864
- hash: "0a7407c6c751b3f1380a99883e95f1dd"
- }
- Frame {
- msec: 8880
- hash: "9969c206488671c45c43f3a3dd3f5994"
- }
- Frame {
- msec: 8896
- hash: "89efa872ce2e71935b47cac101bf15c9"
- }
- Frame {
- msec: 8912
- hash: "a4545a0c50fb071d267b06bf2d114802"
- }
- Frame {
- msec: 8928
- hash: "f4df98459c18399e1c6b2d8a43bdd678"
- }
- Frame {
- msec: 8944
- hash: "027eb091eea8bf51d7ad3ff44120e075"
- }
- Frame {
- msec: 8960
- hash: "138ec35b850d20664f905a4eea6f7456"
- }
- Frame {
- msec: 8976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9072
- hash: "138ec35b850d20664f905a4eea6f7456"
- }
- Frame {
- msec: 9088
- hash: "027eb091eea8bf51d7ad3ff44120e075"
- }
- Frame {
- msec: 9104
- hash: "f4df98459c18399e1c6b2d8a43bdd678"
- }
- Frame {
- msec: 9120
- hash: "a4545a0c50fb071d267b06bf2d114802"
- }
- Frame {
- msec: 9136
- hash: "89efa872ce2e71935b47cac101bf15c9"
+ hash: "b6840f1d7cf2caed17d763b782553071"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png
index cc1774fdd6..852fc66a11 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 60eba1686a..4b283d01a9 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 d4663f731c..342fe05644 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 dc1bb52f08..fb4a774c93 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.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.4.png
new file mode 100644
index 0000000000..852fc66a11
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.4.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 f1099c8721..d7b26cb34b 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: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ image: "qt-669.0.png"
}
Frame {
msec: 32
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 48
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 64
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 80
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 96
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 112
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 128
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 144
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 160
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 176
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 192
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 208
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 224
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 240
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 256
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 272
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 288
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 304
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 320
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 336
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 352
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 368
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 384
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Key {
type: 6
@@ -110,15 +110,15 @@ VisualTest {
}
Frame {
msec: 400
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 416
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 432
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Key {
type: 7
@@ -130,27 +130,27 @@ VisualTest {
}
Frame {
msec: 448
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 464
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 480
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 496
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 512
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 528
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Key {
type: 6
@@ -162,15 +162,15 @@ VisualTest {
}
Frame {
msec: 544
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Frame {
msec: 560
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Frame {
msec: 576
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Key {
type: 7
@@ -182,27 +182,27 @@ VisualTest {
}
Frame {
msec: 592
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Frame {
msec: 608
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Frame {
msec: 624
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Frame {
msec: 640
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Frame {
msec: 656
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Frame {
msec: 672
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Key {
type: 6
@@ -214,19 +214,19 @@ VisualTest {
}
Frame {
msec: 688
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Frame {
msec: 704
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Frame {
msec: 720
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Frame {
msec: 736
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Key {
type: 7
@@ -238,23 +238,23 @@ VisualTest {
}
Frame {
msec: 752
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Frame {
msec: 768
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Frame {
msec: 784
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Frame {
msec: 800
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Frame {
msec: 816
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Key {
type: 6
@@ -266,19 +266,19 @@ VisualTest {
}
Frame {
msec: 832
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Frame {
msec: 848
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Frame {
msec: 864
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Frame {
msec: 880
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Key {
type: 7
@@ -290,19 +290,19 @@ VisualTest {
}
Frame {
msec: 896
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Frame {
msec: 912
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Frame {
msec: 928
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Frame {
msec: 944
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Key {
type: 6
@@ -314,19 +314,19 @@ VisualTest {
}
Frame {
msec: 960
- image: "qt-669.0.png"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 976
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ image: "qt-669.1.png"
}
Frame {
msec: 992
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 1008
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Key {
type: 7
@@ -338,23 +338,23 @@ VisualTest {
}
Frame {
msec: 1024
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 1040
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 1056
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 1072
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 1088
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Key {
type: 6
@@ -366,15 +366,15 @@ VisualTest {
}
Frame {
msec: 1104
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Frame {
msec: 1120
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Frame {
msec: 1136
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Key {
type: 7
@@ -386,23 +386,23 @@ VisualTest {
}
Frame {
msec: 1152
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Frame {
msec: 1168
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Frame {
msec: 1184
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Frame {
msec: 1200
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Frame {
msec: 1216
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Key {
type: 6
@@ -414,19 +414,19 @@ VisualTest {
}
Frame {
msec: 1232
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Frame {
msec: 1248
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Frame {
msec: 1264
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Frame {
msec: 1280
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Key {
type: 7
@@ -438,19 +438,19 @@ VisualTest {
}
Frame {
msec: 1296
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Frame {
msec: 1312
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Frame {
msec: 1328
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Frame {
msec: 1344
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Key {
type: 6
@@ -462,19 +462,19 @@ VisualTest {
}
Frame {
msec: 1360
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 1376
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 1392
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 1408
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Key {
type: 7
@@ -486,23 +486,23 @@ VisualTest {
}
Frame {
msec: 1424
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 1440
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 1456
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 1472
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 1488
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Key {
type: 6
@@ -514,15 +514,15 @@ VisualTest {
}
Frame {
msec: 1504
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1520
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1536
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Key {
type: 7
@@ -534,79 +534,79 @@ VisualTest {
}
Frame {
msec: 1552
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1568
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1584
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1600
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1616
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1632
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1648
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1664
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1680
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1696
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1712
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1728
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1744
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1760
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1776
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1792
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1808
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1824
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Frame {
msec: 1840
- hash: "781a5a09fb6c6ca1fd38f63938f9c8d0"
+ hash: "389d0ac399e709482600181b4869be43"
}
Key {
type: 6
@@ -618,39 +618,39 @@ VisualTest {
}
Frame {
msec: 1856
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 1872
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 1888
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 1904
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 1920
- image: "qt-669.1.png"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 1936
- hash: "2718ab36551a20d36664f26e408f8f24"
+ image: "qt-669.2.png"
}
Frame {
msec: 1952
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 1968
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 1984
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Key {
type: 7
@@ -662,23 +662,23 @@ VisualTest {
}
Frame {
msec: 2000
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 2016
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 2032
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 2048
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Frame {
msec: 2064
- hash: "2718ab36551a20d36664f26e408f8f24"
+ hash: "9ec7c9965d3ce810553b1182b746d148"
}
Key {
type: 6
@@ -690,23 +690,23 @@ VisualTest {
}
Frame {
msec: 2080
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Frame {
msec: 2096
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Frame {
msec: 2112
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Frame {
msec: 2128
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Frame {
msec: 2144
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Key {
type: 7
@@ -718,23 +718,23 @@ VisualTest {
}
Frame {
msec: 2160
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Frame {
msec: 2176
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Frame {
msec: 2192
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Frame {
msec: 2208
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Frame {
msec: 2224
- hash: "823ccdc677997c96e4ae16891ffffa77"
+ hash: "fca9d1748195f0d4388694baf901c498"
}
Key {
type: 6
@@ -746,11 +746,11 @@ VisualTest {
}
Frame {
msec: 2240
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Frame {
msec: 2256
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Key {
type: 7
@@ -762,23 +762,23 @@ VisualTest {
}
Frame {
msec: 2272
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Frame {
msec: 2288
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Frame {
msec: 2304
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Frame {
msec: 2320
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Frame {
msec: 2336
- hash: "f90403e0b62f9579b5c5f591e75e9eb5"
+ hash: "f531e8dd89482e3d7c501d0b3a8b3392"
}
Key {
type: 6
@@ -790,15 +790,15 @@ VisualTest {
}
Frame {
msec: 2352
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 2368
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 2384
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Key {
type: 7
@@ -810,55 +810,55 @@ VisualTest {
}
Frame {
msec: 2400
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 2416
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 2432
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 2448
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 2464
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 2480
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 2496
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 2512
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 2528
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 2544
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 2560
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 2576
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Frame {
msec: 2592
- hash: "1295bd1d94fe518d5a871e90cab88e0c"
+ hash: "a719560bf7912aa6cf4e8e5bfc13cb06"
}
Key {
type: 6
@@ -870,23 +870,23 @@ VisualTest {
}
Frame {
msec: 2608
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Frame {
msec: 2624
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Frame {
msec: 2640
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Frame {
msec: 2656
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Frame {
msec: 2672
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Key {
type: 7
@@ -898,23 +898,23 @@ VisualTest {
}
Frame {
msec: 2688
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Frame {
msec: 2704
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Frame {
msec: 2720
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Frame {
msec: 2736
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Frame {
msec: 2752
- hash: "c186352ed5d1539a45b3c9e1dfa408d6"
+ hash: "86e1ba72951c0c193bfd2cd2162c500e"
}
Key {
type: 6
@@ -926,15 +926,15 @@ VisualTest {
}
Frame {
msec: 2768
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Frame {
msec: 2784
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Frame {
msec: 2800
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Key {
type: 7
@@ -946,19 +946,19 @@ VisualTest {
}
Frame {
msec: 2816
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Frame {
msec: 2832
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Frame {
msec: 2848
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Frame {
msec: 2864
- hash: "c602a6535ef86125615307d9d187eb3f"
+ hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f"
}
Key {
type: 6
@@ -970,19 +970,19 @@ VisualTest {
}
Frame {
msec: 2880
- image: "qt-669.2.png"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Frame {
msec: 2896
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ image: "qt-669.3.png"
}
Frame {
msec: 2912
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Frame {
msec: 2928
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Key {
type: 7
@@ -994,23 +994,23 @@ VisualTest {
}
Frame {
msec: 2944
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Frame {
msec: 2960
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Frame {
msec: 2976
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Frame {
msec: 2992
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Frame {
msec: 3008
- hash: "fbc07fa31ab2022f3155bd1fb591fe6c"
+ hash: "e2a49d72741ba08c258bb70d3a13c7f6"
}
Key {
type: 6
@@ -1022,23 +1022,23 @@ VisualTest {
}
Frame {
msec: 3024
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3040
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3056
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3072
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3088
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Key {
type: 7
@@ -1050,155 +1050,155 @@ VisualTest {
}
Frame {
msec: 3104
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3120
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3136
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3152
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3168
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3184
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3200
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3216
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3232
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3248
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3264
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3280
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3296
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3312
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3328
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3344
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3360
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3376
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3392
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3408
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3424
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3440
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3456
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3472
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3488
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3504
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3520
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3536
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3552
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3568
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3584
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3600
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3616
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3632
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3648
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3664
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3680
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Frame {
msec: 3696
- hash: "e64c3246a0f81e2df29ac276ac6d411f"
+ hash: "1d69ccdf88fa78b44a77147190bf1dfc"
}
Key {
type: 6
@@ -1210,27 +1210,27 @@ VisualTest {
}
Frame {
msec: 3712
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3728
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3744
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3760
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3776
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3792
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Key {
type: 7
@@ -1242,130 +1242,130 @@ VisualTest {
}
Frame {
msec: 3808
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3824
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3840
- image: "qt-669.3.png"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3856
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ image: "qt-669.4.png"
}
Frame {
msec: 3872
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3888
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3904
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3920
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3936
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3952
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3968
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 3984
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4000
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4016
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4032
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4048
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4064
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4080
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4096
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4112
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4128
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4144
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4160
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4176
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4192
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4208
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4224
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4240
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4256
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4272
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4288
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
Frame {
msec: 4304
- hash: "c043ae4adb31cb53bfc089e7f2ed07b2"
+ hash: "32c2b08a6123015ca72f283f89ee1663"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png
new file mode 100644
index 0000000000..0b4ca4ef01
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..251beb672e
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..5cd2d7d469
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..5cd2d7d469
--- /dev/null
+++ 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.12.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.12.png
new file mode 100644
index 0000000000..5cd2d7d469
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.12.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
new file mode 100644
index 0000000000..bf6a44e7f2
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..1089578575
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..c9113def81
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..47b47443ff
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..c518204a6e
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..9f1c26a15a
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..cd8d0a51e9
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..8f5f872b22
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..a064bf3747
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml
@@ -0,0 +1,4687 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "usingMultilineEdit.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 48
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 64
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 80
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 96
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 112
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 128
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 144
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 160
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 176
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 192
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 208
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 224
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 240
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 256
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 272
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 288
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 304
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 320
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 118; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 336
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 352
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 368
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 384
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 400
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 118; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 416
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 432
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 448
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 464
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 480
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 496
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 512
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 528
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 544
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 560
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 576
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 592
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 608
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 624
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Frame {
+ msec: 640
+ hash: "9d5bfe023a03fde612678d000e7d4135"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 117; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 656
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 672
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 117; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 688
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 704
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 720
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 736
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 752
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 768
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 784
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 800
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 816
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 832
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 848
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 864
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 880
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 896
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 912
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 928
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 944
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 960
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 976
+ image: "usingMultilineEdit.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1008
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1024
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1040
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1056
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1072
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1088
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1104
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1120
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1136
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1152
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1168
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1184
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1200
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1216
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1232
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1248
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1264
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1280
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Frame {
+ msec: 1296
+ hash: "73232e1c199b5dda158a7e765386a716"
+ }
+ Key {
+ type: 6
+ key: 44
+ modifiers: 0
+ text: "2c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1312
+ hash: "75aa32bf4bfdda0dfcf04768bf931da6"
+ }
+ Frame {
+ msec: 1328
+ hash: "75aa32bf4bfdda0dfcf04768bf931da6"
+ }
+ Frame {
+ msec: 1344
+ hash: "75aa32bf4bfdda0dfcf04768bf931da6"
+ }
+ Frame {
+ msec: 1360
+ hash: "75aa32bf4bfdda0dfcf04768bf931da6"
+ }
+ Frame {
+ msec: 1376
+ hash: "75aa32bf4bfdda0dfcf04768bf931da6"
+ }
+ Key {
+ type: 7
+ key: 44
+ modifiers: 0
+ text: "2c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1392
+ hash: "75aa32bf4bfdda0dfcf04768bf931da6"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1408
+ hash: "7243b903b5b7d8c323a233ae13a2ddf3"
+ }
+ Frame {
+ msec: 1424
+ hash: "7243b903b5b7d8c323a233ae13a2ddf3"
+ }
+ Frame {
+ msec: 1440
+ hash: "7243b903b5b7d8c323a233ae13a2ddf3"
+ }
+ Frame {
+ msec: 1456
+ hash: "7243b903b5b7d8c323a233ae13a2ddf3"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1472
+ hash: "7243b903b5b7d8c323a233ae13a2ddf3"
+ }
+ Frame {
+ msec: 1488
+ hash: "7243b903b5b7d8c323a233ae13a2ddf3"
+ }
+ Frame {
+ msec: 1504
+ hash: "7243b903b5b7d8c323a233ae13a2ddf3"
+ }
+ Frame {
+ msec: 1520
+ hash: "7243b903b5b7d8c323a233ae13a2ddf3"
+ }
+ Frame {
+ msec: 1536
+ hash: "7243b903b5b7d8c323a233ae13a2ddf3"
+ }
+ Frame {
+ msec: 1552
+ hash: "7243b903b5b7d8c323a233ae13a2ddf3"
+ }
+ Key {
+ type: 6
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1568
+ hash: "676834a4ee84cb251c6ed102be89ea2e"
+ }
+ Frame {
+ msec: 1584
+ hash: "676834a4ee84cb251c6ed102be89ea2e"
+ }
+ Frame {
+ msec: 1600
+ hash: "676834a4ee84cb251c6ed102be89ea2e"
+ }
+ Key {
+ type: 7
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1616
+ hash: "676834a4ee84cb251c6ed102be89ea2e"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1632
+ hash: "74a81081cd0547624cc4168e824b48b8"
+ }
+ Frame {
+ msec: 1648
+ hash: "74a81081cd0547624cc4168e824b48b8"
+ }
+ Frame {
+ msec: 1664
+ hash: "74a81081cd0547624cc4168e824b48b8"
+ }
+ Frame {
+ msec: 1680
+ hash: "74a81081cd0547624cc4168e824b48b8"
+ }
+ Frame {
+ msec: 1696
+ hash: "74a81081cd0547624cc4168e824b48b8"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1712
+ hash: "74a81081cd0547624cc4168e824b48b8"
+ }
+ Frame {
+ msec: 1728
+ hash: "74a81081cd0547624cc4168e824b48b8"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1744
+ hash: "4c736b2bffb38df898478e3d0ce37fb0"
+ }
+ Frame {
+ msec: 1760
+ hash: "4c736b2bffb38df898478e3d0ce37fb0"
+ }
+ Frame {
+ msec: 1776
+ hash: "4c736b2bffb38df898478e3d0ce37fb0"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1792
+ hash: "4c736b2bffb38df898478e3d0ce37fb0"
+ }
+ Frame {
+ msec: 1808
+ hash: "4c736b2bffb38df898478e3d0ce37fb0"
+ }
+ Frame {
+ msec: 1824
+ hash: "4c736b2bffb38df898478e3d0ce37fb0"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1840
+ hash: "fd070c77e33e1498bacf0076903d33d7"
+ }
+ Frame {
+ msec: 1856
+ hash: "fd070c77e33e1498bacf0076903d33d7"
+ }
+ Frame {
+ msec: 1872
+ hash: "fd070c77e33e1498bacf0076903d33d7"
+ }
+ Frame {
+ msec: 1888
+ hash: "fd070c77e33e1498bacf0076903d33d7"
+ }
+ Frame {
+ msec: 1904
+ hash: "fd070c77e33e1498bacf0076903d33d7"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1920
+ hash: "2ce31e62bfe5c1a62621fe4ea6bb07ab"
+ }
+ Frame {
+ msec: 1936
+ image: "usingMultilineEdit.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "2ce31e62bfe5c1a62621fe4ea6bb07ab"
+ }
+ Frame {
+ msec: 1968
+ hash: "2ce31e62bfe5c1a62621fe4ea6bb07ab"
+ }
+ Key {
+ type: 6
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1984
+ hash: "77f7b91dba63e20e92b47575ae2f1a85"
+ }
+ Frame {
+ msec: 2000
+ hash: "77f7b91dba63e20e92b47575ae2f1a85"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2016
+ hash: "77f7b91dba63e20e92b47575ae2f1a85"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2032
+ hash: "6c881ac1c94b6648ce1a2c39e477906c"
+ }
+ Frame {
+ msec: 2048
+ hash: "6c881ac1c94b6648ce1a2c39e477906c"
+ }
+ Key {
+ type: 7
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "6c881ac1c94b6648ce1a2c39e477906c"
+ }
+ Frame {
+ msec: 2080
+ hash: "6c881ac1c94b6648ce1a2c39e477906c"
+ }
+ Frame {
+ msec: 2096
+ hash: "6c881ac1c94b6648ce1a2c39e477906c"
+ }
+ Frame {
+ msec: 2112
+ hash: "6c881ac1c94b6648ce1a2c39e477906c"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2128
+ hash: "6c881ac1c94b6648ce1a2c39e477906c"
+ }
+ Frame {
+ msec: 2144
+ hash: "6c881ac1c94b6648ce1a2c39e477906c"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2160
+ hash: "8799a9ee6ae4334c0e595c75160cbb35"
+ }
+ Frame {
+ msec: 2176
+ hash: "8799a9ee6ae4334c0e595c75160cbb35"
+ }
+ Frame {
+ msec: 2192
+ hash: "8799a9ee6ae4334c0e595c75160cbb35"
+ }
+ Frame {
+ msec: 2208
+ hash: "8799a9ee6ae4334c0e595c75160cbb35"
+ }
+ Frame {
+ msec: 2224
+ hash: "8799a9ee6ae4334c0e595c75160cbb35"
+ }
+ Frame {
+ msec: 2240
+ hash: "8799a9ee6ae4334c0e595c75160cbb35"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2256
+ hash: "1947b07da95b6fb20dfa0189d2e099f4"
+ }
+ Frame {
+ msec: 2272
+ hash: "1947b07da95b6fb20dfa0189d2e099f4"
+ }
+ Frame {
+ msec: 2288
+ hash: "1947b07da95b6fb20dfa0189d2e099f4"
+ }
+ Frame {
+ msec: 2304
+ hash: "1947b07da95b6fb20dfa0189d2e099f4"
+ }
+ Frame {
+ msec: 2320
+ hash: "1947b07da95b6fb20dfa0189d2e099f4"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2336
+ hash: "1947b07da95b6fb20dfa0189d2e099f4"
+ }
+ Frame {
+ msec: 2352
+ hash: "1947b07da95b6fb20dfa0189d2e099f4"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2368
+ hash: "f4831fddbb6dccd2add6c381abe18ff5"
+ }
+ Frame {
+ msec: 2384
+ hash: "f4831fddbb6dccd2add6c381abe18ff5"
+ }
+ Frame {
+ msec: 2400
+ hash: "f4831fddbb6dccd2add6c381abe18ff5"
+ }
+ Frame {
+ msec: 2416
+ hash: "f4831fddbb6dccd2add6c381abe18ff5"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2432
+ hash: "f4831fddbb6dccd2add6c381abe18ff5"
+ }
+ Key {
+ type: 6
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "c8e601e39d6399c3bcbe99080e10e77b"
+ }
+ Frame {
+ msec: 2464
+ hash: "c8e601e39d6399c3bcbe99080e10e77b"
+ }
+ Frame {
+ msec: 2480
+ hash: "c8e601e39d6399c3bcbe99080e10e77b"
+ }
+ Frame {
+ msec: 2496
+ hash: "c8e601e39d6399c3bcbe99080e10e77b"
+ }
+ Frame {
+ msec: 2512
+ hash: "c8e601e39d6399c3bcbe99080e10e77b"
+ }
+ Frame {
+ msec: 2528
+ hash: "c8e601e39d6399c3bcbe99080e10e77b"
+ }
+ Key {
+ type: 7
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2544
+ hash: "c8e601e39d6399c3bcbe99080e10e77b"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2560
+ hash: "895b6084f9cd58d0746270468d037fc3"
+ }
+ Frame {
+ msec: 2576
+ hash: "895b6084f9cd58d0746270468d037fc3"
+ }
+ Frame {
+ msec: 2592
+ hash: "895b6084f9cd58d0746270468d037fc3"
+ }
+ Frame {
+ msec: 2608
+ hash: "895b6084f9cd58d0746270468d037fc3"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2624
+ hash: "895b6084f9cd58d0746270468d037fc3"
+ }
+ Frame {
+ msec: 2640
+ hash: "895b6084f9cd58d0746270468d037fc3"
+ }
+ Frame {
+ msec: 2656
+ hash: "895b6084f9cd58d0746270468d037fc3"
+ }
+ Frame {
+ msec: 2672
+ hash: "895b6084f9cd58d0746270468d037fc3"
+ }
+ Frame {
+ msec: 2688
+ hash: "895b6084f9cd58d0746270468d037fc3"
+ }
+ Key {
+ type: 6
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2704
+ hash: "ded3a272885f24140fb8d21835ae6b3a"
+ }
+ Frame {
+ msec: 2720
+ hash: "ded3a272885f24140fb8d21835ae6b3a"
+ }
+ Frame {
+ msec: 2736
+ hash: "ded3a272885f24140fb8d21835ae6b3a"
+ }
+ Frame {
+ msec: 2752
+ hash: "ded3a272885f24140fb8d21835ae6b3a"
+ }
+ Frame {
+ msec: 2768
+ hash: "ded3a272885f24140fb8d21835ae6b3a"
+ }
+ Frame {
+ msec: 2784
+ hash: "ded3a272885f24140fb8d21835ae6b3a"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2800
+ hash: "9339ea22fd115b8ae025c0b3a588ca1c"
+ }
+ Key {
+ type: 7
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2816
+ hash: "9339ea22fd115b8ae025c0b3a588ca1c"
+ }
+ Frame {
+ msec: 2832
+ hash: "9339ea22fd115b8ae025c0b3a588ca1c"
+ }
+ Frame {
+ msec: 2848
+ hash: "9339ea22fd115b8ae025c0b3a588ca1c"
+ }
+ Frame {
+ msec: 2864
+ hash: "9339ea22fd115b8ae025c0b3a588ca1c"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2880
+ hash: "9339ea22fd115b8ae025c0b3a588ca1c"
+ }
+ Frame {
+ msec: 2896
+ image: "usingMultilineEdit.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "9339ea22fd115b8ae025c0b3a588ca1c"
+ }
+ Frame {
+ msec: 2928
+ hash: "9339ea22fd115b8ae025c0b3a588ca1c"
+ }
+ Key {
+ type: 6
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2944
+ hash: "1f219781fb7a7682d27cb875900d077a"
+ }
+ Frame {
+ msec: 2960
+ hash: "1f219781fb7a7682d27cb875900d077a"
+ }
+ Frame {
+ msec: 2976
+ hash: "1f219781fb7a7682d27cb875900d077a"
+ }
+ Key {
+ type: 7
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2992
+ hash: "20bd65f158440301e6cf14463e498368"
+ }
+ Frame {
+ msec: 3008
+ hash: "20bd65f158440301e6cf14463e498368"
+ }
+ Frame {
+ msec: 3024
+ hash: "20bd65f158440301e6cf14463e498368"
+ }
+ Frame {
+ msec: 3040
+ hash: "20bd65f158440301e6cf14463e498368"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3056
+ hash: "20bd65f158440301e6cf14463e498368"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3072
+ hash: "3e73d53051a3175393f4ecb486645bf9"
+ }
+ Frame {
+ msec: 3088
+ hash: "3e73d53051a3175393f4ecb486645bf9"
+ }
+ Frame {
+ msec: 3104
+ hash: "3e73d53051a3175393f4ecb486645bf9"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3120
+ hash: "3e73d53051a3175393f4ecb486645bf9"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 33554432
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3136
+ hash: "3e73d53051a3175393f4ecb486645bf9"
+ }
+ Frame {
+ msec: 3152
+ hash: "3e73d53051a3175393f4ecb486645bf9"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 33554432
+ text: "49"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3168
+ hash: "6f566097d23557bef60969852cd3515e"
+ }
+ Frame {
+ msec: 3184
+ hash: "6f566097d23557bef60969852cd3515e"
+ }
+ Frame {
+ msec: 3200
+ hash: "6f566097d23557bef60969852cd3515e"
+ }
+ Frame {
+ msec: 3216
+ hash: "6f566097d23557bef60969852cd3515e"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 33554432
+ text: "49"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3232
+ hash: "6f566097d23557bef60969852cd3515e"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3248
+ hash: "4767592fe68e8d32d286cf5eaf4510ff"
+ }
+ Frame {
+ msec: 3264
+ hash: "4767592fe68e8d32d286cf5eaf4510ff"
+ }
+ Frame {
+ msec: 3280
+ hash: "4767592fe68e8d32d286cf5eaf4510ff"
+ }
+ Frame {
+ msec: 3296
+ hash: "4767592fe68e8d32d286cf5eaf4510ff"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3312
+ hash: "4767592fe68e8d32d286cf5eaf4510ff"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3328
+ hash: "d7fd1a19be4f061fc39c4accf18ba0dc"
+ }
+ Frame {
+ msec: 3344
+ hash: "d7fd1a19be4f061fc39c4accf18ba0dc"
+ }
+ Frame {
+ msec: 3360
+ hash: "d7fd1a19be4f061fc39c4accf18ba0dc"
+ }
+ Frame {
+ msec: 3376
+ hash: "d7fd1a19be4f061fc39c4accf18ba0dc"
+ }
+ Frame {
+ msec: 3392
+ hash: "d7fd1a19be4f061fc39c4accf18ba0dc"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3408
+ hash: "d7fd1a19be4f061fc39c4accf18ba0dc"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3424
+ hash: "03e74ddf4c94d322c1b1b35419157948"
+ }
+ Frame {
+ msec: 3440
+ hash: "03e74ddf4c94d322c1b1b35419157948"
+ }
+ Frame {
+ msec: 3456
+ hash: "03e74ddf4c94d322c1b1b35419157948"
+ }
+ Frame {
+ msec: 3472
+ hash: "03e74ddf4c94d322c1b1b35419157948"
+ }
+ Frame {
+ msec: 3488
+ hash: "03e74ddf4c94d322c1b1b35419157948"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 78
+ modifiers: 0
+ text: "6e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3504
+ hash: "32712a89ba577f55319fe90873668138"
+ }
+ Frame {
+ msec: 3520
+ hash: "32712a89ba577f55319fe90873668138"
+ }
+ Frame {
+ msec: 3536
+ hash: "32712a89ba577f55319fe90873668138"
+ }
+ Frame {
+ msec: 3552
+ hash: "32712a89ba577f55319fe90873668138"
+ }
+ Frame {
+ msec: 3568
+ hash: "32712a89ba577f55319fe90873668138"
+ }
+ Frame {
+ msec: 3584
+ hash: "32712a89ba577f55319fe90873668138"
+ }
+ Key {
+ type: 7
+ key: 78
+ modifiers: 0
+ text: "6e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3600
+ hash: "32712a89ba577f55319fe90873668138"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3616
+ hash: "9f1cf9784c0659f4902d632542fe9d52"
+ }
+ Frame {
+ msec: 3632
+ hash: "9f1cf9784c0659f4902d632542fe9d52"
+ }
+ Frame {
+ msec: 3648
+ hash: "9f1cf9784c0659f4902d632542fe9d52"
+ }
+ Frame {
+ msec: 3664
+ hash: "9f1cf9784c0659f4902d632542fe9d52"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3680
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3696
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3712
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3728
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3744
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3760
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3776
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3792
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3808
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3824
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3840
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3856
+ image: "usingMultilineEdit.4.png"
+ }
+ Frame {
+ msec: 3872
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3888
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3904
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3920
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3936
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3952
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Frame {
+ msec: 3968
+ hash: "b350f3b710a0d36ba56bdce6c86f902e"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3984
+ hash: "2b44bf2548bd887f22e5689946e24de5"
+ }
+ Frame {
+ msec: 4000
+ hash: "2b44bf2548bd887f22e5689946e24de5"
+ }
+ Frame {
+ msec: 4016
+ hash: "2b44bf2548bd887f22e5689946e24de5"
+ }
+ Frame {
+ msec: 4032
+ hash: "2b44bf2548bd887f22e5689946e24de5"
+ }
+ Frame {
+ msec: 4048
+ hash: "2b44bf2548bd887f22e5689946e24de5"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4064
+ hash: "925c7c96166cc75dc92bd280fd354e43"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4080
+ hash: "925c7c96166cc75dc92bd280fd354e43"
+ }
+ Frame {
+ msec: 4096
+ hash: "925c7c96166cc75dc92bd280fd354e43"
+ }
+ Frame {
+ msec: 4112
+ hash: "925c7c96166cc75dc92bd280fd354e43"
+ }
+ Frame {
+ msec: 4128
+ hash: "925c7c96166cc75dc92bd280fd354e43"
+ }
+ Key {
+ type: 6
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4144
+ hash: "61d6f7583f143917b86adcad6a5ba909"
+ }
+ Frame {
+ msec: 4160
+ hash: "61d6f7583f143917b86adcad6a5ba909"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4176
+ hash: "61d6f7583f143917b86adcad6a5ba909"
+ }
+ Frame {
+ msec: 4192
+ hash: "61d6f7583f143917b86adcad6a5ba909"
+ }
+ Frame {
+ msec: 4208
+ hash: "61d6f7583f143917b86adcad6a5ba909"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4224
+ hash: "679e0940be9c40435aebb05a6e0da685"
+ }
+ Frame {
+ msec: 4240
+ hash: "679e0940be9c40435aebb05a6e0da685"
+ }
+ Key {
+ type: 7
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4256
+ hash: "679e0940be9c40435aebb05a6e0da685"
+ }
+ Frame {
+ msec: 4272
+ hash: "679e0940be9c40435aebb05a6e0da685"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4288
+ hash: "679e0940be9c40435aebb05a6e0da685"
+ }
+ Frame {
+ msec: 4304
+ hash: "679e0940be9c40435aebb05a6e0da685"
+ }
+ Frame {
+ msec: 4320
+ hash: "679e0940be9c40435aebb05a6e0da685"
+ }
+ Frame {
+ msec: 4336
+ hash: "679e0940be9c40435aebb05a6e0da685"
+ }
+ Frame {
+ msec: 4352
+ hash: "679e0940be9c40435aebb05a6e0da685"
+ }
+ Frame {
+ msec: 4368
+ hash: "679e0940be9c40435aebb05a6e0da685"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4384
+ hash: "e819d25f605ec1347e89de65682edb7d"
+ }
+ Frame {
+ msec: 4400
+ hash: "e819d25f605ec1347e89de65682edb7d"
+ }
+ Frame {
+ msec: 4416
+ hash: "e819d25f605ec1347e89de65682edb7d"
+ }
+ Frame {
+ msec: 4432
+ hash: "e819d25f605ec1347e89de65682edb7d"
+ }
+ Frame {
+ msec: 4448
+ hash: "e819d25f605ec1347e89de65682edb7d"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4464
+ hash: "e819d25f605ec1347e89de65682edb7d"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4480
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4496
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4512
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4528
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4544
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4560
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4576
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4592
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4608
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4624
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4640
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4656
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4672
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4688
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4704
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4720
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4736
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4752
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4768
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4784
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4800
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Frame {
+ msec: 4816
+ image: "usingMultilineEdit.5.png"
+ }
+ Frame {
+ msec: 4832
+ hash: "ef65860a90a96d521a860c4e73e833ee"
+ }
+ Key {
+ type: 6
+ key: 63
+ modifiers: 33554432
+ text: "3f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4848
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 4864
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 4880
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 4896
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 4912
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 4928
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 4944
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Key {
+ type: 7
+ key: 63
+ modifiers: 33554432
+ text: "3f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4960
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 4976
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 4992
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5008
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5024
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5040
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5056
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5072
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5088
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5104
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5120
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5136
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5152
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5168
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5184
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5200
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5216
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5232
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5248
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5264
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5280
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5296
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5312
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5328
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5344
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5360
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5376
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5392
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5408
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5424
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5440
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5456
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5472
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5488
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5504
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5520
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5536
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5552
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5568
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5584
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5600
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5616
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5632
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5648
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5664
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5680
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5696
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5712
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5728
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5744
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Frame {
+ msec: 5760
+ hash: "84497b5307b95f59693b71dc13c838ef"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 48; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5776
+ image: "usingMultilineEdit.6.png"
+ }
+ Frame {
+ msec: 5792
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Frame {
+ msec: 5808
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Frame {
+ msec: 5824
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5840
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5856
+ hash: "ee9722d220435828b919fa4d8e314b78"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5872
+ hash: "ee9722d220435828b919fa4d8e314b78"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 41
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5888
+ hash: "8a06a84965166774ff160984ed05b5ad"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5904
+ hash: "0a9ec173aa0436b9b9edf3f20946ae5a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 58; y: 52
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5920
+ hash: "0a9ec173aa0436b9b9edf3f20946ae5a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 69
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5936
+ hash: "5511590b6b6826d8e863956220eee2e4"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 62; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5952
+ hash: "4d413c13e43c57809af8ee83a165dcb1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 86
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 90
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5968
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 97
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5984
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 101
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 105
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6000
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 111
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6016
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 114
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 116
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6032
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 122
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6048
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 124
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 128
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6064
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 130
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 132
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6080
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 134
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 137
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6096
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 138
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 140
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6112
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 141
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 144
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6128
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 148
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6144
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 149
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 151
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6160
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 153
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6176
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 155
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6192
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Frame {
+ msec: 6208
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Frame {
+ msec: 6224
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Frame {
+ msec: 6240
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Frame {
+ msec: 6256
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6272
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 152
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 149
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6288
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 139
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6304
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 126
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6320
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 63; y: 98
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6336
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6352
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 72
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6368
+ hash: "cc0c5811bc845540c2c550cefe45ab1c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6384
+ hash: "b35bc1db0fd5b95bb830a9be9ded1659"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6400
+ hash: "b35bc1db0fd5b95bb830a9be9ded1659"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6416
+ hash: "576bbe32d2b6f582cbb0102d2b0e079b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 6
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6432
+ hash: "15a7ee7f58f286ae22385c2817b9b697"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -2
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -9
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6448
+ hash: "5cd516c20c91c407ca9932ea89afd100"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: -23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6464
+ hash: "40ce8b3c3588727a37e03dd83cb3d536"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6480
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6496
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6512
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6528
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6544
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6560
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6576
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6592
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Frame {
+ msec: 6608
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Frame {
+ msec: 6624
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Frame {
+ msec: 6640
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Frame {
+ msec: 6656
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Frame {
+ msec: 6672
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6688
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: -42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6704
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: -39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6720
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: -28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6736
+ image: "usingMultilineEdit.7.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -25
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6752
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: -18
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: -14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6768
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: -10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -8
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6784
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -6
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: -3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6800
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: -1
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 0
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6816
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 2
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6832
+ hash: "384cc9f557dd56079a54c1f0460bf96f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 5
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 7
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6848
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 8
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6864
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6880
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 55; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6896
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Frame {
+ msec: 6912
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Frame {
+ msec: 6928
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Frame {
+ msec: 6944
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Frame {
+ msec: 6960
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Frame {
+ msec: 6976
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Frame {
+ msec: 6992
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Frame {
+ msec: 7008
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Frame {
+ msec: 7024
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Frame {
+ msec: 7040
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Frame {
+ msec: 7056
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Frame {
+ msec: 7072
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Frame {
+ msec: 7088
+ hash: "a3d9bdf8086303458ae5d35294551894"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 59; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7104
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7120
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7136
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7152
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7168
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 59; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7184
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7200
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7216
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7232
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7248
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7264
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7280
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7296
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7312
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7328
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7344
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7360
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7376
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7392
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7408
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7424
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7440
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7456
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7472
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7488
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7504
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7520
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7536
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7552
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Frame {
+ msec: 7568
+ hash: "a5755969d822cae00af992085c419a17"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7584
+ hash: "2395700fc4c3080e99b8871518113778"
+ }
+ Frame {
+ msec: 7600
+ hash: "2395700fc4c3080e99b8871518113778"
+ }
+ Frame {
+ msec: 7616
+ hash: "2395700fc4c3080e99b8871518113778"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7632
+ hash: "2395700fc4c3080e99b8871518113778"
+ }
+ Frame {
+ msec: 7648
+ hash: "2395700fc4c3080e99b8871518113778"
+ }
+ Frame {
+ msec: 7664
+ hash: "2395700fc4c3080e99b8871518113778"
+ }
+ Frame {
+ msec: 7680
+ hash: "2395700fc4c3080e99b8871518113778"
+ }
+ Frame {
+ msec: 7696
+ image: "usingMultilineEdit.8.png"
+ }
+ Frame {
+ msec: 7712
+ hash: "2395700fc4c3080e99b8871518113778"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7728
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Frame {
+ msec: 7744
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Frame {
+ msec: 7760
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Frame {
+ msec: 7776
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Frame {
+ msec: 7792
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Frame {
+ msec: 7808
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Frame {
+ msec: 7824
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Frame {
+ msec: 7840
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Frame {
+ msec: 7856
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Frame {
+ msec: 7872
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Frame {
+ msec: 7888
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Frame {
+ msec: 7904
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Frame {
+ msec: 7920
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Frame {
+ msec: 7936
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Frame {
+ msec: 7952
+ hash: "71e055a9dbd940b3445d5ad9e277b483"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 7968
+ hash: "2ed8cb467e60f2fb253abb37bdc18a9a"
+ }
+ Frame {
+ msec: 7984
+ hash: "2ed8cb467e60f2fb253abb37bdc18a9a"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8000
+ hash: "5783992a07652cfc53bfa0e1f36c1415"
+ }
+ Frame {
+ msec: 8016
+ hash: "5783992a07652cfc53bfa0e1f36c1415"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8032
+ hash: "0fa5790dcbcb740d530b6333063629d6"
+ }
+ Frame {
+ msec: 8048
+ hash: "0fa5790dcbcb740d530b6333063629d6"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8064
+ hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed"
+ }
+ Frame {
+ msec: 8080
+ hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8096
+ hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed"
+ }
+ Frame {
+ msec: 8112
+ hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed"
+ }
+ Frame {
+ msec: 8128
+ hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed"
+ }
+ Frame {
+ msec: 8144
+ hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed"
+ }
+ Frame {
+ msec: 8160
+ hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed"
+ }
+ Frame {
+ msec: 8176
+ hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed"
+ }
+ Frame {
+ msec: 8192
+ hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8208
+ hash: "8f59f9f91dbcf608143925ff1f974151"
+ }
+ Frame {
+ msec: 8224
+ hash: "8f59f9f91dbcf608143925ff1f974151"
+ }
+ Frame {
+ msec: 8240
+ hash: "8f59f9f91dbcf608143925ff1f974151"
+ }
+ Frame {
+ msec: 8256
+ hash: "8f59f9f91dbcf608143925ff1f974151"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8272
+ hash: "8f59f9f91dbcf608143925ff1f974151"
+ }
+ Frame {
+ msec: 8288
+ hash: "8f59f9f91dbcf608143925ff1f974151"
+ }
+ Frame {
+ msec: 8304
+ hash: "8f59f9f91dbcf608143925ff1f974151"
+ }
+ Frame {
+ msec: 8320
+ hash: "8f59f9f91dbcf608143925ff1f974151"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8336
+ hash: "fc48aa2746eaaf31312de3c37d821ff0"
+ }
+ Frame {
+ msec: 8352
+ hash: "fc48aa2746eaaf31312de3c37d821ff0"
+ }
+ Frame {
+ msec: 8368
+ hash: "fc48aa2746eaaf31312de3c37d821ff0"
+ }
+ Frame {
+ msec: 8384
+ hash: "fc48aa2746eaaf31312de3c37d821ff0"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8400
+ hash: "fc48aa2746eaaf31312de3c37d821ff0"
+ }
+ Frame {
+ msec: 8416
+ hash: "fc48aa2746eaaf31312de3c37d821ff0"
+ }
+ Frame {
+ msec: 8432
+ hash: "fc48aa2746eaaf31312de3c37d821ff0"
+ }
+ Frame {
+ msec: 8448
+ hash: "fc48aa2746eaaf31312de3c37d821ff0"
+ }
+ Frame {
+ msec: 8464
+ hash: "fc48aa2746eaaf31312de3c37d821ff0"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8480
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8496
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8512
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8528
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8544
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8560
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8576
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8592
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8608
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8624
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8640
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8656
+ image: "usingMultilineEdit.9.png"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8672
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8688
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8704
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8720
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8736
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8752
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8768
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8784
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8800
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8816
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8832
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8848
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8864
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8880
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8896
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8912
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8928
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8944
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8960
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8976
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 8992
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9008
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9024
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9040
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9056
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9072
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9088
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9104
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9120
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9136
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9152
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9168
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9184
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9200
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 70; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9216
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9232
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 74
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9248
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 76
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9264
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 77
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9280
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 70; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9296
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9312
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9328
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9344
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9360
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9376
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9392
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9408
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9424
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Frame {
+ msec: 9440
+ hash: "61856cf1f8f2ef6d0b365ab3d7eece51"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 71; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9456
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9472
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9488
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9504
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9520
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9536
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 71; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9552
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9568
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9584
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9600
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9616
+ image: "usingMultilineEdit.10.png"
+ }
+ Frame {
+ msec: 9632
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9648
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9664
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 9680
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9696
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9712
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9728
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9744
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9760
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9776
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9792
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9808
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9824
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9840
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9856
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9872
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9888
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9904
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9920
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9936
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9952
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9968
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 9984
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10000
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10016
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10032
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10048
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10064
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10080
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10096
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10112
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Frame {
+ msec: 10128
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Frame {
+ msec: 10144
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Frame {
+ msec: 10160
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Frame {
+ msec: 10176
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Frame {
+ msec: 10192
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Frame {
+ msec: 10208
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Frame {
+ msec: 10224
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10240
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Frame {
+ msec: 10256
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Frame {
+ msec: 10272
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Frame {
+ msec: 10288
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Frame {
+ msec: 10304
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Frame {
+ msec: 10320
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Frame {
+ msec: 10336
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Frame {
+ msec: 10352
+ hash: "2ccfdac58b836aa89d2a75d0bdca6624"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10368
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10384
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10400
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10416
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10432
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10448
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10464
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10480
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10496
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10512
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10528
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10544
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10560
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10576
+ image: "usingMultilineEdit.11.png"
+ }
+ Frame {
+ msec: 10592
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10608
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10624
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10640
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10656
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10672
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10688
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10704
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10720
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10736
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10752
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10768
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10784
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10800
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10816
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10832
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10848
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10864
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10880
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10896
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10912
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10928
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10944
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10960
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10976
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 10992
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11008
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11024
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11040
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11056
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11072
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11088
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11104
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11120
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11136
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11152
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11168
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11184
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11200
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11216
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11232
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11248
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11264
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11280
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11296
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11312
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11328
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11344
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11360
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11376
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11392
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11408
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11424
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11440
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11456
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11472
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11488
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11504
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11520
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11536
+ image: "usingMultilineEdit.12.png"
+ }
+ Frame {
+ msec: 11552
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11568
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11584
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11600
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+ Frame {
+ msec: 11616
+ hash: "37a675ab007d0e0a8f3735d4d84505de"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png
new file mode 100644
index 0000000000..a61ba5a3fe
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..2a28c968aa
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..d1ddaa6f89
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..493c5cde57
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..2b2ce59597
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..044eea485f
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..f0748b2138
--- /dev/null
+++ 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.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.7.png
new file mode 100644
index 0000000000..f0748b2138
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.7.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
new file mode 100644
index 0000000000..f5af59f7a5
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml
@@ -0,0 +1,2467 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "wrap.0.png"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 33554432
+ text: "54"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 32
+ hash: "2b7fa5ced204393f05bf68d33e0ca2ad"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 48
+ hash: "2b7fa5ced204393f05bf68d33e0ca2ad"
+ }
+ Frame {
+ msec: 64
+ hash: "2b7fa5ced204393f05bf68d33e0ca2ad"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 80
+ hash: "2b7fa5ced204393f05bf68d33e0ca2ad"
+ }
+ Frame {
+ msec: 96
+ hash: "2b7fa5ced204393f05bf68d33e0ca2ad"
+ }
+ Key {
+ type: 6
+ key: 72
+ modifiers: 0
+ text: "68"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 112
+ hash: "5fe2c4c01922f0b0d3f65152bd80f689"
+ }
+ Frame {
+ msec: 128
+ hash: "5fe2c4c01922f0b0d3f65152bd80f689"
+ }
+ Frame {
+ msec: 144
+ hash: "5fe2c4c01922f0b0d3f65152bd80f689"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 160
+ hash: "9645f4ad60570c8a95e9ae6dda3f5060"
+ }
+ Frame {
+ msec: 176
+ hash: "9645f4ad60570c8a95e9ae6dda3f5060"
+ }
+ Frame {
+ msec: 192
+ hash: "9645f4ad60570c8a95e9ae6dda3f5060"
+ }
+ Key {
+ type: 7
+ key: 72
+ modifiers: 0
+ text: "68"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 208
+ hash: "9645f4ad60570c8a95e9ae6dda3f5060"
+ }
+ Frame {
+ msec: 224
+ hash: "9645f4ad60570c8a95e9ae6dda3f5060"
+ }
+ Key {
+ type: 6
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 240
+ hash: "f28f446cb8de8af0a49ae6e728c996fc"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 256
+ hash: "f28f446cb8de8af0a49ae6e728c996fc"
+ }
+ Frame {
+ msec: 272
+ hash: "f28f446cb8de8af0a49ae6e728c996fc"
+ }
+ Frame {
+ msec: 288
+ hash: "f28f446cb8de8af0a49ae6e728c996fc"
+ }
+ Frame {
+ msec: 304
+ hash: "f28f446cb8de8af0a49ae6e728c996fc"
+ }
+ Key {
+ type: 7
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 320
+ hash: "f28f446cb8de8af0a49ae6e728c996fc"
+ }
+ Frame {
+ msec: 336
+ hash: "f28f446cb8de8af0a49ae6e728c996fc"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 352
+ hash: "98c390c519cd0476de17be8bb49b0f65"
+ }
+ Frame {
+ msec: 368
+ hash: "98c390c519cd0476de17be8bb49b0f65"
+ }
+ Frame {
+ msec: 384
+ hash: "98c390c519cd0476de17be8bb49b0f65"
+ }
+ Frame {
+ msec: 400
+ hash: "98c390c519cd0476de17be8bb49b0f65"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 416
+ hash: "98c390c519cd0476de17be8bb49b0f65"
+ }
+ Frame {
+ msec: 432
+ hash: "98c390c519cd0476de17be8bb49b0f65"
+ }
+ Frame {
+ msec: 448
+ hash: "98c390c519cd0476de17be8bb49b0f65"
+ }
+ Frame {
+ msec: 464
+ hash: "98c390c519cd0476de17be8bb49b0f65"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 480
+ hash: "d842a866459f3ecb4fa4fc1426a05411"
+ }
+ Frame {
+ msec: 496
+ hash: "d842a866459f3ecb4fa4fc1426a05411"
+ }
+ Frame {
+ msec: 512
+ hash: "d842a866459f3ecb4fa4fc1426a05411"
+ }
+ Frame {
+ msec: 528
+ hash: "d842a866459f3ecb4fa4fc1426a05411"
+ }
+ Key {
+ type: 6
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 544
+ hash: "4c858bfd2e8ba7a959bbf2d1e17865e7"
+ }
+ Frame {
+ msec: 560
+ hash: "4c858bfd2e8ba7a959bbf2d1e17865e7"
+ }
+ Frame {
+ msec: 576
+ hash: "4c858bfd2e8ba7a959bbf2d1e17865e7"
+ }
+ Frame {
+ msec: 592
+ hash: "4c858bfd2e8ba7a959bbf2d1e17865e7"
+ }
+ Frame {
+ msec: 608
+ hash: "4c858bfd2e8ba7a959bbf2d1e17865e7"
+ }
+ Key {
+ type: 7
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 624
+ hash: "9eed9c764b2c5b73a60df84fc0d68756"
+ }
+ Frame {
+ msec: 640
+ hash: "9eed9c764b2c5b73a60df84fc0d68756"
+ }
+ Frame {
+ msec: 656
+ hash: "9eed9c764b2c5b73a60df84fc0d68756"
+ }
+ Frame {
+ msec: 672
+ hash: "9eed9c764b2c5b73a60df84fc0d68756"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 688
+ hash: "9eed9c764b2c5b73a60df84fc0d68756"
+ }
+ Frame {
+ msec: 704
+ hash: "9eed9c764b2c5b73a60df84fc0d68756"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 720
+ hash: "7a1d64574a0a6b90695629fd443274e6"
+ }
+ Frame {
+ msec: 736
+ hash: "7a1d64574a0a6b90695629fd443274e6"
+ }
+ Frame {
+ msec: 752
+ hash: "7a1d64574a0a6b90695629fd443274e6"
+ }
+ Frame {
+ msec: 768
+ hash: "7a1d64574a0a6b90695629fd443274e6"
+ }
+ Frame {
+ msec: 784
+ hash: "7a1d64574a0a6b90695629fd443274e6"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 800
+ hash: "7a1d64574a0a6b90695629fd443274e6"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 816
+ hash: "31e9c4500448142ee2be3171a2bd5385"
+ }
+ Frame {
+ msec: 832
+ hash: "31e9c4500448142ee2be3171a2bd5385"
+ }
+ Frame {
+ msec: 848
+ hash: "31e9c4500448142ee2be3171a2bd5385"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 864
+ hash: "31e9c4500448142ee2be3171a2bd5385"
+ }
+ Frame {
+ msec: 880
+ hash: "31e9c4500448142ee2be3171a2bd5385"
+ }
+ Frame {
+ msec: 896
+ hash: "31e9c4500448142ee2be3171a2bd5385"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 912
+ hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d"
+ }
+ Frame {
+ msec: 928
+ hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d"
+ }
+ Frame {
+ msec: 944
+ hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d"
+ }
+ Frame {
+ msec: 960
+ hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d"
+ }
+ Frame {
+ msec: 976
+ image: "wrap.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d"
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1008
+ hash: "c05191599361c4171c086630f9608cd0"
+ }
+ Frame {
+ msec: 1024
+ hash: "c05191599361c4171c086630f9608cd0"
+ }
+ Frame {
+ msec: 1040
+ hash: "c05191599361c4171c086630f9608cd0"
+ }
+ Frame {
+ msec: 1056
+ hash: "c05191599361c4171c086630f9608cd0"
+ }
+ Frame {
+ msec: 1072
+ hash: "c05191599361c4171c086630f9608cd0"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1088
+ hash: "c05191599361c4171c086630f9608cd0"
+ }
+ Frame {
+ msec: 1104
+ hash: "c05191599361c4171c086630f9608cd0"
+ }
+ Frame {
+ msec: 1120
+ hash: "c05191599361c4171c086630f9608cd0"
+ }
+ Frame {
+ msec: 1136
+ hash: "c05191599361c4171c086630f9608cd0"
+ }
+ Frame {
+ msec: 1152
+ hash: "c05191599361c4171c086630f9608cd0"
+ }
+ Frame {
+ msec: 1168
+ hash: "c05191599361c4171c086630f9608cd0"
+ }
+ Frame {
+ msec: 1184
+ hash: "c05191599361c4171c086630f9608cd0"
+ }
+ Key {
+ type: 6
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1200
+ hash: "088e0567dd568019ccb2114d3108a1dd"
+ }
+ Frame {
+ msec: 1216
+ hash: "088e0567dd568019ccb2114d3108a1dd"
+ }
+ Frame {
+ msec: 1232
+ hash: "088e0567dd568019ccb2114d3108a1dd"
+ }
+ Frame {
+ msec: 1248
+ hash: "088e0567dd568019ccb2114d3108a1dd"
+ }
+ Frame {
+ msec: 1264
+ hash: "088e0567dd568019ccb2114d3108a1dd"
+ }
+ Key {
+ type: 7
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1280
+ hash: "35fde81ed66c4804b2b31c0d93fb010a"
+ }
+ Frame {
+ msec: 1296
+ hash: "35fde81ed66c4804b2b31c0d93fb010a"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1312
+ hash: "0b212b2b1354e99db328c30d4c8e8b4e"
+ }
+ Frame {
+ msec: 1328
+ hash: "0b212b2b1354e99db328c30d4c8e8b4e"
+ }
+ Frame {
+ msec: 1344
+ hash: "0b212b2b1354e99db328c30d4c8e8b4e"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1360
+ hash: "0b212b2b1354e99db328c30d4c8e8b4e"
+ }
+ Frame {
+ msec: 1376
+ hash: "0b212b2b1354e99db328c30d4c8e8b4e"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1392
+ hash: "0b212b2b1354e99db328c30d4c8e8b4e"
+ }
+ Frame {
+ msec: 1408
+ hash: "0b212b2b1354e99db328c30d4c8e8b4e"
+ }
+ Frame {
+ msec: 1424
+ hash: "0b212b2b1354e99db328c30d4c8e8b4e"
+ }
+ Frame {
+ msec: 1440
+ hash: "0b212b2b1354e99db328c30d4c8e8b4e"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1456
+ hash: "1d19bc237d8de1598a629f2aea7e8e97"
+ }
+ Frame {
+ msec: 1472
+ hash: "1d19bc237d8de1598a629f2aea7e8e97"
+ }
+ Frame {
+ msec: 1488
+ hash: "1d19bc237d8de1598a629f2aea7e8e97"
+ }
+ Frame {
+ msec: 1504
+ hash: "1d19bc237d8de1598a629f2aea7e8e97"
+ }
+ Frame {
+ msec: 1520
+ hash: "1d19bc237d8de1598a629f2aea7e8e97"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1536
+ hash: "1d19bc237d8de1598a629f2aea7e8e97"
+ }
+ Frame {
+ msec: 1552
+ hash: "1d19bc237d8de1598a629f2aea7e8e97"
+ }
+ Key {
+ type: 6
+ key: 72
+ modifiers: 0
+ text: "68"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1568
+ hash: "df3025b2de2cf6cee2b918c6d13834c6"
+ }
+ Frame {
+ msec: 1584
+ hash: "df3025b2de2cf6cee2b918c6d13834c6"
+ }
+ Frame {
+ msec: 1600
+ hash: "df3025b2de2cf6cee2b918c6d13834c6"
+ }
+ Frame {
+ msec: 1616
+ hash: "df3025b2de2cf6cee2b918c6d13834c6"
+ }
+ Frame {
+ msec: 1632
+ hash: "df3025b2de2cf6cee2b918c6d13834c6"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 72
+ modifiers: 0
+ text: "68"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1648
+ hash: "b19baef8a5d8efd96d5ec9e729a9d42a"
+ }
+ Frame {
+ msec: 1664
+ hash: "b19baef8a5d8efd96d5ec9e729a9d42a"
+ }
+ Frame {
+ msec: 1680
+ hash: "b19baef8a5d8efd96d5ec9e729a9d42a"
+ }
+ Frame {
+ msec: 1696
+ hash: "b19baef8a5d8efd96d5ec9e729a9d42a"
+ }
+ Frame {
+ msec: 1712
+ hash: "b19baef8a5d8efd96d5ec9e729a9d42a"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1728
+ hash: "914e61f38d7f2b5a465037d6ef1ddaba"
+ }
+ Frame {
+ msec: 1744
+ hash: "914e61f38d7f2b5a465037d6ef1ddaba"
+ }
+ Frame {
+ msec: 1760
+ hash: "914e61f38d7f2b5a465037d6ef1ddaba"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1776
+ hash: "914e61f38d7f2b5a465037d6ef1ddaba"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1792
+ hash: "e816134a8fef0bbee8e94c0f9561750b"
+ }
+ Frame {
+ msec: 1808
+ hash: "e816134a8fef0bbee8e94c0f9561750b"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1824
+ hash: "e816134a8fef0bbee8e94c0f9561750b"
+ }
+ Frame {
+ msec: 1840
+ hash: "e816134a8fef0bbee8e94c0f9561750b"
+ }
+ Frame {
+ msec: 1856
+ hash: "e816134a8fef0bbee8e94c0f9561750b"
+ }
+ Frame {
+ msec: 1872
+ hash: "e816134a8fef0bbee8e94c0f9561750b"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1888
+ hash: "e816134a8fef0bbee8e94c0f9561750b"
+ }
+ Frame {
+ msec: 1904
+ hash: "e816134a8fef0bbee8e94c0f9561750b"
+ }
+ Frame {
+ msec: 1920
+ hash: "e816134a8fef0bbee8e94c0f9561750b"
+ }
+ Frame {
+ msec: 1936
+ image: "wrap.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "e816134a8fef0bbee8e94c0f9561750b"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1968
+ hash: "9552729028c8e129e19c06ff35bb085b"
+ }
+ Frame {
+ msec: 1984
+ hash: "9552729028c8e129e19c06ff35bb085b"
+ }
+ Frame {
+ msec: 2000
+ hash: "9552729028c8e129e19c06ff35bb085b"
+ }
+ Frame {
+ msec: 2016
+ hash: "9552729028c8e129e19c06ff35bb085b"
+ }
+ Frame {
+ msec: 2032
+ hash: "9552729028c8e129e19c06ff35bb085b"
+ }
+ Frame {
+ msec: 2048
+ hash: "9552729028c8e129e19c06ff35bb085b"
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "2dbdfe3bd309b98af7ed8980725f3ee7"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2080
+ hash: "2dbdfe3bd309b98af7ed8980725f3ee7"
+ }
+ Frame {
+ msec: 2096
+ hash: "2dbdfe3bd309b98af7ed8980725f3ee7"
+ }
+ Frame {
+ msec: 2112
+ hash: "2dbdfe3bd309b98af7ed8980725f3ee7"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2128
+ hash: "2dbdfe3bd309b98af7ed8980725f3ee7"
+ }
+ Frame {
+ msec: 2144
+ hash: "2dbdfe3bd309b98af7ed8980725f3ee7"
+ }
+ Frame {
+ msec: 2160
+ hash: "2dbdfe3bd309b98af7ed8980725f3ee7"
+ }
+ Frame {
+ msec: 2176
+ hash: "2dbdfe3bd309b98af7ed8980725f3ee7"
+ }
+ Frame {
+ msec: 2192
+ hash: "2dbdfe3bd309b98af7ed8980725f3ee7"
+ }
+ Frame {
+ msec: 2208
+ hash: "2dbdfe3bd309b98af7ed8980725f3ee7"
+ }
+ Key {
+ type: 6
+ key: 88
+ modifiers: 0
+ text: "78"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2224
+ hash: "28748f90f61954b94377768788f1634d"
+ }
+ Frame {
+ msec: 2240
+ hash: "28748f90f61954b94377768788f1634d"
+ }
+ Frame {
+ msec: 2256
+ hash: "28748f90f61954b94377768788f1634d"
+ }
+ Frame {
+ msec: 2272
+ hash: "28748f90f61954b94377768788f1634d"
+ }
+ Frame {
+ msec: 2288
+ hash: "28748f90f61954b94377768788f1634d"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2304
+ hash: "2cf8ad2ba8ddcde4dd8549f034a77005"
+ }
+ Key {
+ type: 7
+ key: 88
+ modifiers: 0
+ text: "78"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2320
+ hash: "2cf8ad2ba8ddcde4dd8549f034a77005"
+ }
+ Frame {
+ msec: 2336
+ hash: "2cf8ad2ba8ddcde4dd8549f034a77005"
+ }
+ Frame {
+ msec: 2352
+ hash: "2cf8ad2ba8ddcde4dd8549f034a77005"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2368
+ hash: "95b6ce7c01461847a3f7aff88aa8ad9d"
+ }
+ Frame {
+ msec: 2384
+ hash: "95b6ce7c01461847a3f7aff88aa8ad9d"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2400
+ hash: "95b6ce7c01461847a3f7aff88aa8ad9d"
+ }
+ Frame {
+ msec: 2416
+ hash: "95b6ce7c01461847a3f7aff88aa8ad9d"
+ }
+ Frame {
+ msec: 2432
+ hash: "95b6ce7c01461847a3f7aff88aa8ad9d"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "95b6ce7c01461847a3f7aff88aa8ad9d"
+ }
+ Frame {
+ msec: 2464
+ hash: "95b6ce7c01461847a3f7aff88aa8ad9d"
+ }
+ Frame {
+ msec: 2480
+ hash: "95b6ce7c01461847a3f7aff88aa8ad9d"
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2496
+ hash: "81872138f3cafb1cf06009df77af1461"
+ }
+ Frame {
+ msec: 2512
+ hash: "81872138f3cafb1cf06009df77af1461"
+ }
+ Frame {
+ msec: 2528
+ hash: "81872138f3cafb1cf06009df77af1461"
+ }
+ Frame {
+ msec: 2544
+ hash: "81872138f3cafb1cf06009df77af1461"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2560
+ hash: "81872138f3cafb1cf06009df77af1461"
+ }
+ Frame {
+ msec: 2576
+ hash: "81872138f3cafb1cf06009df77af1461"
+ }
+ Frame {
+ msec: 2592
+ hash: "81872138f3cafb1cf06009df77af1461"
+ }
+ Frame {
+ msec: 2608
+ hash: "81872138f3cafb1cf06009df77af1461"
+ }
+ Frame {
+ msec: 2624
+ hash: "81872138f3cafb1cf06009df77af1461"
+ }
+ Frame {
+ msec: 2640
+ hash: "81872138f3cafb1cf06009df77af1461"
+ }
+ Key {
+ type: 6
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2656
+ hash: "dfa35c08894d7ed748b8846fa3ce8fac"
+ }
+ Frame {
+ msec: 2672
+ hash: "dfa35c08894d7ed748b8846fa3ce8fac"
+ }
+ Frame {
+ msec: 2688
+ hash: "dfa35c08894d7ed748b8846fa3ce8fac"
+ }
+ Frame {
+ msec: 2704
+ hash: "dfa35c08894d7ed748b8846fa3ce8fac"
+ }
+ Key {
+ type: 7
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2720
+ hash: "dfa35c08894d7ed748b8846fa3ce8fac"
+ }
+ Frame {
+ msec: 2736
+ hash: "dfa35c08894d7ed748b8846fa3ce8fac"
+ }
+ Frame {
+ msec: 2752
+ hash: "dfa35c08894d7ed748b8846fa3ce8fac"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2768
+ hash: "9decac3d9243bebdc7699fcb77a31f21"
+ }
+ Frame {
+ msec: 2784
+ hash: "9decac3d9243bebdc7699fcb77a31f21"
+ }
+ Frame {
+ msec: 2800
+ hash: "9decac3d9243bebdc7699fcb77a31f21"
+ }
+ Frame {
+ msec: 2816
+ hash: "9decac3d9243bebdc7699fcb77a31f21"
+ }
+ Frame {
+ msec: 2832
+ hash: "9decac3d9243bebdc7699fcb77a31f21"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2848
+ hash: "6a1bb7dd22f3e090008ba265c30f9c2d"
+ }
+ Frame {
+ msec: 2864
+ hash: "6a1bb7dd22f3e090008ba265c30f9c2d"
+ }
+ Frame {
+ msec: 2880
+ hash: "6a1bb7dd22f3e090008ba265c30f9c2d"
+ }
+ Frame {
+ msec: 2896
+ image: "wrap.3.png"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2912
+ hash: "ee39b3014e140aff2f974f3b919f85f4"
+ }
+ Frame {
+ msec: 2928
+ hash: "ee39b3014e140aff2f974f3b919f85f4"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2944
+ hash: "ee39b3014e140aff2f974f3b919f85f4"
+ }
+ Frame {
+ msec: 2960
+ hash: "ee39b3014e140aff2f974f3b919f85f4"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2976
+ hash: "ee39b3014e140aff2f974f3b919f85f4"
+ }
+ Frame {
+ msec: 2992
+ hash: "ee39b3014e140aff2f974f3b919f85f4"
+ }
+ Frame {
+ msec: 3008
+ hash: "ee39b3014e140aff2f974f3b919f85f4"
+ }
+ Frame {
+ msec: 3024
+ hash: "ee39b3014e140aff2f974f3b919f85f4"
+ }
+ Frame {
+ msec: 3040
+ hash: "ee39b3014e140aff2f974f3b919f85f4"
+ }
+ Frame {
+ msec: 3056
+ hash: "ee39b3014e140aff2f974f3b919f85f4"
+ }
+ Frame {
+ msec: 3072
+ hash: "ee39b3014e140aff2f974f3b919f85f4"
+ }
+ Frame {
+ msec: 3088
+ hash: "ee39b3014e140aff2f974f3b919f85f4"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3104
+ hash: "d448179ec6bba91f3f70be821710a8c7"
+ }
+ Frame {
+ msec: 3120
+ hash: "d448179ec6bba91f3f70be821710a8c7"
+ }
+ Frame {
+ msec: 3136
+ hash: "d448179ec6bba91f3f70be821710a8c7"
+ }
+ Frame {
+ msec: 3152
+ hash: "d448179ec6bba91f3f70be821710a8c7"
+ }
+ Frame {
+ msec: 3168
+ hash: "d448179ec6bba91f3f70be821710a8c7"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3184
+ hash: "d448179ec6bba91f3f70be821710a8c7"
+ }
+ Frame {
+ msec: 3200
+ hash: "d448179ec6bba91f3f70be821710a8c7"
+ }
+ Frame {
+ msec: 3216
+ hash: "d448179ec6bba91f3f70be821710a8c7"
+ }
+ Frame {
+ msec: 3232
+ hash: "d448179ec6bba91f3f70be821710a8c7"
+ }
+ Frame {
+ msec: 3248
+ hash: "d448179ec6bba91f3f70be821710a8c7"
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3264
+ hash: "e30b5aa9b5d08fba758fe781812f096d"
+ }
+ Frame {
+ msec: 3280
+ hash: "e30b5aa9b5d08fba758fe781812f096d"
+ }
+ Frame {
+ msec: 3296
+ hash: "e30b5aa9b5d08fba758fe781812f096d"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3312
+ hash: "e30b5aa9b5d08fba758fe781812f096d"
+ }
+ Frame {
+ msec: 3328
+ hash: "e30b5aa9b5d08fba758fe781812f096d"
+ }
+ Frame {
+ msec: 3344
+ hash: "e30b5aa9b5d08fba758fe781812f096d"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3360
+ hash: "ba932735c5079ad6562050b6e332d2e7"
+ }
+ Frame {
+ msec: 3376
+ hash: "ba932735c5079ad6562050b6e332d2e7"
+ }
+ Frame {
+ msec: 3392
+ hash: "ba932735c5079ad6562050b6e332d2e7"
+ }
+ Frame {
+ msec: 3408
+ hash: "ba932735c5079ad6562050b6e332d2e7"
+ }
+ Frame {
+ msec: 3424
+ hash: "ba932735c5079ad6562050b6e332d2e7"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3440
+ hash: "ba932735c5079ad6562050b6e332d2e7"
+ }
+ Frame {
+ msec: 3456
+ hash: "ba932735c5079ad6562050b6e332d2e7"
+ }
+ Frame {
+ msec: 3472
+ hash: "ba932735c5079ad6562050b6e332d2e7"
+ }
+ Key {
+ type: 6
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3488
+ hash: "01dacbcc21c541e0cbf272ee01292b7c"
+ }
+ Frame {
+ msec: 3504
+ hash: "01dacbcc21c541e0cbf272ee01292b7c"
+ }
+ Frame {
+ msec: 3520
+ hash: "01dacbcc21c541e0cbf272ee01292b7c"
+ }
+ Frame {
+ msec: 3536
+ hash: "01dacbcc21c541e0cbf272ee01292b7c"
+ }
+ Key {
+ type: 7
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3552
+ hash: "01dacbcc21c541e0cbf272ee01292b7c"
+ }
+ Frame {
+ msec: 3568
+ hash: "01dacbcc21c541e0cbf272ee01292b7c"
+ }
+ Key {
+ type: 6
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3584
+ hash: "7b493045fb2b7373525ce570d86542d7"
+ }
+ Frame {
+ msec: 3600
+ hash: "7b493045fb2b7373525ce570d86542d7"
+ }
+ Frame {
+ msec: 3616
+ hash: "7b493045fb2b7373525ce570d86542d7"
+ }
+ Frame {
+ msec: 3632
+ hash: "7b493045fb2b7373525ce570d86542d7"
+ }
+ Frame {
+ msec: 3648
+ hash: "7b493045fb2b7373525ce570d86542d7"
+ }
+ Frame {
+ msec: 3664
+ hash: "7b493045fb2b7373525ce570d86542d7"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3680
+ hash: "7c11ac5b8dfee4708b7b49c2a1a7db57"
+ }
+ Key {
+ type: 7
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3696
+ hash: "7c11ac5b8dfee4708b7b49c2a1a7db57"
+ }
+ Frame {
+ msec: 3712
+ hash: "7c11ac5b8dfee4708b7b49c2a1a7db57"
+ }
+ Frame {
+ msec: 3728
+ hash: "7c11ac5b8dfee4708b7b49c2a1a7db57"
+ }
+ Frame {
+ msec: 3744
+ hash: "7c11ac5b8dfee4708b7b49c2a1a7db57"
+ }
+ Frame {
+ msec: 3760
+ hash: "7c11ac5b8dfee4708b7b49c2a1a7db57"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3776
+ hash: "7c11ac5b8dfee4708b7b49c2a1a7db57"
+ }
+ Frame {
+ msec: 3792
+ hash: "7c11ac5b8dfee4708b7b49c2a1a7db57"
+ }
+ Frame {
+ msec: 3808
+ hash: "7c11ac5b8dfee4708b7b49c2a1a7db57"
+ }
+ Frame {
+ msec: 3824
+ hash: "7c11ac5b8dfee4708b7b49c2a1a7db57"
+ }
+ Frame {
+ msec: 3840
+ hash: "7c11ac5b8dfee4708b7b49c2a1a7db57"
+ }
+ Frame {
+ msec: 3856
+ image: "wrap.4.png"
+ }
+ Frame {
+ msec: 3872
+ hash: "7c11ac5b8dfee4708b7b49c2a1a7db57"
+ }
+ Frame {
+ msec: 3888
+ hash: "7c11ac5b8dfee4708b7b49c2a1a7db57"
+ }
+ Frame {
+ msec: 3904
+ hash: "7c11ac5b8dfee4708b7b49c2a1a7db57"
+ }
+ Key {
+ type: 6
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3920
+ hash: "46a6db4f63965f019fc1966e2a6caf98"
+ }
+ Frame {
+ msec: 3936
+ hash: "46a6db4f63965f019fc1966e2a6caf98"
+ }
+ Frame {
+ msec: 3952
+ hash: "46a6db4f63965f019fc1966e2a6caf98"
+ }
+ Frame {
+ msec: 3968
+ hash: "46a6db4f63965f019fc1966e2a6caf98"
+ }
+ Frame {
+ msec: 3984
+ hash: "46a6db4f63965f019fc1966e2a6caf98"
+ }
+ Key {
+ type: 7
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4000
+ hash: "46a6db4f63965f019fc1966e2a6caf98"
+ }
+ Frame {
+ msec: 4016
+ hash: "46a6db4f63965f019fc1966e2a6caf98"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4032
+ hash: "abc8cf4650aa07a9a26ad04a082bc269"
+ }
+ Frame {
+ msec: 4048
+ hash: "abc8cf4650aa07a9a26ad04a082bc269"
+ }
+ Frame {
+ msec: 4064
+ hash: "abc8cf4650aa07a9a26ad04a082bc269"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4080
+ hash: "abc8cf4650aa07a9a26ad04a082bc269"
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4096
+ hash: "23ee54c88cd70b6c66137ce32702cf01"
+ }
+ Frame {
+ msec: 4112
+ hash: "23ee54c88cd70b6c66137ce32702cf01"
+ }
+ Frame {
+ msec: 4128
+ hash: "23ee54c88cd70b6c66137ce32702cf01"
+ }
+ Frame {
+ msec: 4144
+ hash: "23ee54c88cd70b6c66137ce32702cf01"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4160
+ hash: "23ee54c88cd70b6c66137ce32702cf01"
+ }
+ Frame {
+ msec: 4176
+ hash: "23ee54c88cd70b6c66137ce32702cf01"
+ }
+ Frame {
+ msec: 4192
+ hash: "23ee54c88cd70b6c66137ce32702cf01"
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4208
+ hash: "dc0899573a995421b57a6689d300a421"
+ }
+ Frame {
+ msec: 4224
+ hash: "dc0899573a995421b57a6689d300a421"
+ }
+ Frame {
+ msec: 4240
+ hash: "dc0899573a995421b57a6689d300a421"
+ }
+ Frame {
+ msec: 4256
+ hash: "dc0899573a995421b57a6689d300a421"
+ }
+ Frame {
+ msec: 4272
+ hash: "dc0899573a995421b57a6689d300a421"
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4288
+ hash: "4d42c63a0324c1573818ebb081d8927f"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4304
+ hash: "4d42c63a0324c1573818ebb081d8927f"
+ }
+ Frame {
+ msec: 4320
+ hash: "4d42c63a0324c1573818ebb081d8927f"
+ }
+ Frame {
+ msec: 4336
+ hash: "4d42c63a0324c1573818ebb081d8927f"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4352
+ hash: "4d42c63a0324c1573818ebb081d8927f"
+ }
+ Frame {
+ msec: 4368
+ hash: "4d42c63a0324c1573818ebb081d8927f"
+ }
+ Frame {
+ msec: 4384
+ hash: "4d42c63a0324c1573818ebb081d8927f"
+ }
+ Frame {
+ msec: 4400
+ hash: "4d42c63a0324c1573818ebb081d8927f"
+ }
+ Frame {
+ msec: 4416
+ hash: "4d42c63a0324c1573818ebb081d8927f"
+ }
+ Key {
+ type: 6
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4432
+ hash: "9d2239e4b71da17a6f8f2ef979f4bf85"
+ }
+ Frame {
+ msec: 4448
+ hash: "9d2239e4b71da17a6f8f2ef979f4bf85"
+ }
+ Frame {
+ msec: 4464
+ hash: "9d2239e4b71da17a6f8f2ef979f4bf85"
+ }
+ Key {
+ type: 7
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4480
+ hash: "9d2239e4b71da17a6f8f2ef979f4bf85"
+ }
+ Frame {
+ msec: 4496
+ hash: "9d2239e4b71da17a6f8f2ef979f4bf85"
+ }
+ Frame {
+ msec: 4512
+ hash: "9d2239e4b71da17a6f8f2ef979f4bf85"
+ }
+ Frame {
+ msec: 4528
+ hash: "9d2239e4b71da17a6f8f2ef979f4bf85"
+ }
+ Frame {
+ msec: 4544
+ hash: "9d2239e4b71da17a6f8f2ef979f4bf85"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4560
+ hash: "289059d77547c9ec548b33d8bbe9fca9"
+ }
+ Frame {
+ msec: 4576
+ hash: "289059d77547c9ec548b33d8bbe9fca9"
+ }
+ Frame {
+ msec: 4592
+ hash: "289059d77547c9ec548b33d8bbe9fca9"
+ }
+ Frame {
+ msec: 4608
+ hash: "289059d77547c9ec548b33d8bbe9fca9"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4624
+ hash: "289059d77547c9ec548b33d8bbe9fca9"
+ }
+ Frame {
+ msec: 4640
+ hash: "289059d77547c9ec548b33d8bbe9fca9"
+ }
+ Frame {
+ msec: 4656
+ hash: "289059d77547c9ec548b33d8bbe9fca9"
+ }
+ Frame {
+ msec: 4672
+ hash: "289059d77547c9ec548b33d8bbe9fca9"
+ }
+ Key {
+ type: 6
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4688
+ hash: "4b60bfb67c5007b4054241e581ce92ac"
+ }
+ Frame {
+ msec: 4704
+ hash: "4b60bfb67c5007b4054241e581ce92ac"
+ }
+ Frame {
+ msec: 4720
+ hash: "4b60bfb67c5007b4054241e581ce92ac"
+ }
+ Frame {
+ msec: 4736
+ hash: "4b60bfb67c5007b4054241e581ce92ac"
+ }
+ Key {
+ type: 7
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4752
+ hash: "4b60bfb67c5007b4054241e581ce92ac"
+ }
+ Frame {
+ msec: 4768
+ hash: "4b60bfb67c5007b4054241e581ce92ac"
+ }
+ Frame {
+ msec: 4784
+ hash: "4b60bfb67c5007b4054241e581ce92ac"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4800
+ hash: "dbabce81e44f912d6a30ff4cc3289da8"
+ }
+ Frame {
+ msec: 4816
+ image: "wrap.5.png"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4832
+ hash: "dbabce81e44f912d6a30ff4cc3289da8"
+ }
+ Frame {
+ msec: 4848
+ hash: "dbabce81e44f912d6a30ff4cc3289da8"
+ }
+ Frame {
+ msec: 4864
+ hash: "dbabce81e44f912d6a30ff4cc3289da8"
+ }
+ Frame {
+ msec: 4880
+ hash: "dbabce81e44f912d6a30ff4cc3289da8"
+ }
+ Key {
+ type: 6
+ key: 46
+ modifiers: 0
+ text: "2e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4896
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 4912
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 4928
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 4944
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Key {
+ type: 7
+ key: 46
+ modifiers: 0
+ text: "2e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4960
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 4976
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 4992
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5008
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5024
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5040
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5056
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5072
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5088
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5104
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5120
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5136
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5152
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5168
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5184
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5200
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5216
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5232
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5248
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5264
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5280
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5296
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5312
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5328
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5344
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5360
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5376
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5392
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5408
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5424
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5440
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5456
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5472
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5488
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5504
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5520
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5536
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5552
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5568
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5584
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5600
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5616
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5632
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5648
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5664
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5680
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5696
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5712
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5728
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5744
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5760
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5776
+ image: "wrap.6.png"
+ }
+ Frame {
+ msec: 5792
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5808
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5824
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5840
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5856
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5872
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5888
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5904
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5920
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5936
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5952
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5968
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 5984
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6000
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6016
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6032
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6048
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6064
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6080
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6096
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6112
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6128
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6144
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6160
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6176
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6192
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6208
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6224
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6240
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6256
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6272
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6288
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6304
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6320
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6336
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6352
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6368
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6384
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6400
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6416
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6432
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6448
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6464
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6480
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6496
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6512
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6528
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6544
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6560
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6576
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6592
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6608
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6624
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6640
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6656
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6672
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6688
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6704
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6720
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6736
+ image: "wrap.7.png"
+ }
+ Frame {
+ msec: 6752
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6768
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6784
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6800
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6816
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6832
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6848
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+ Frame {
+ msec: 6864
+ hash: "e9633d239e0a9ca008ed033565322c24"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.0.png
new file mode 100644
index 0000000000..be025e5582
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.1.png
new file mode 100644
index 0000000000..1b2cd047f3
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.2.png
new file mode 100644
index 0000000000..2e56d47ea2
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.3.png
new file mode 100644
index 0000000000..8abdfc2588
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.4.png
new file mode 100644
index 0000000000..58428ceefa
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.5.png
new file mode 100644
index 0000000000..3c23bd6b50
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.6.png
new file mode 100644
index 0000000000..80b960c197
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.7.png
new file mode 100644
index 0000000000..72472771c3
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.8.png
new file mode 100644
index 0000000000..af5a996b7b
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.9.png
new file mode 100644
index 0000000000..b254164fbe
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.qml
new file mode 100644
index 0000000000..9630745588
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/cursorDelegate.qml
@@ -0,0 +1,1499 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "cursorDelegate.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "2fd338490edda276f7ee16232bf244d1"
+ }
+ Frame {
+ msec: 48
+ hash: "527a1c18503f580bcf926a70d9f30006"
+ }
+ Frame {
+ msec: 64
+ hash: "8b911c3e4a0fccf1dbeca50931780a2d"
+ }
+ Frame {
+ msec: 80
+ hash: "f631ad72bf36ccb0c5f3ff708f029b1b"
+ }
+ Frame {
+ msec: 96
+ hash: "d4099e6a2c1ff77a71231351f5bc32ff"
+ }
+ Frame {
+ msec: 112
+ hash: "0e531d158b1c14d6fc633e528846c336"
+ }
+ Frame {
+ msec: 128
+ hash: "5721d3397b9e66da4ee47a7f19107566"
+ }
+ Frame {
+ msec: 144
+ hash: "6647f5d3680f3523ec73b434d0c2f8da"
+ }
+ Frame {
+ msec: 160
+ hash: "73fb40e680c30b1a5fe95de9913a0591"
+ }
+ Frame {
+ msec: 176
+ hash: "c392c2599b29086a437afa292b06d63c"
+ }
+ Frame {
+ msec: 192
+ hash: "bcedd42d52bab532831b47c6ee2a99ac"
+ }
+ Frame {
+ msec: 208
+ hash: "089b150d5cc9315c6626edfc1bb66774"
+ }
+ Frame {
+ msec: 224
+ hash: "f6e83fdb13e4f00ba5004b081e2379ee"
+ }
+ Frame {
+ msec: 240
+ hash: "ca8336d47c002df3702a46be2b974ba7"
+ }
+ Frame {
+ msec: 256
+ hash: "f0d82431f1e35f76fd718af1d742cd13"
+ }
+ Frame {
+ msec: 272
+ hash: "78dc119673be7902ab25d508db771f04"
+ }
+ Frame {
+ msec: 288
+ hash: "2839bc67b7ac43353b976c2c7bc3b6c3"
+ }
+ Frame {
+ msec: 304
+ hash: "c1f9743c0505b6ca197c4bd0bbbd7bd3"
+ }
+ Frame {
+ msec: 320
+ hash: "2d714b10ce1e3e7dd1efb58ed4b62f90"
+ }
+ Frame {
+ msec: 336
+ hash: "c4f94bab5475eacfc757338ffd6d4a59"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 352
+ hash: "c5caa8a08f09203c005e1cd6d80e8ccc"
+ }
+ Frame {
+ msec: 368
+ hash: "c96896be1a311c0cedc1c7ec1bd9e13e"
+ }
+ Frame {
+ msec: 384
+ hash: "d3d6dc1d8ff93e373583e3cbdca88b81"
+ }
+ Frame {
+ msec: 400
+ hash: "2a456146359c54c52f9e7a6cebcfa454"
+ }
+ Frame {
+ msec: 416
+ hash: "d127788c702c2ed037c709ffc331840e"
+ }
+ Frame {
+ msec: 432
+ hash: "8a5987a736b092e12198d969544d632c"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 448
+ hash: "e8471c605f6a8cc187d879510ed7ebe7"
+ }
+ Frame {
+ msec: 464
+ hash: "6959b4f72422636ae59989c9def06d03"
+ }
+ Frame {
+ msec: 480
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 496
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 512
+ hash: "45a1fa0c871592f872574fdcd3fb586c"
+ }
+ Frame {
+ msec: 528
+ hash: "45a1fa0c871592f872574fdcd3fb586c"
+ }
+ Frame {
+ msec: 544
+ hash: "45a1fa0c871592f872574fdcd3fb586c"
+ }
+ Frame {
+ msec: 560
+ hash: "45a1fa0c871592f872574fdcd3fb586c"
+ }
+ Frame {
+ msec: 576
+ hash: "8567bf3fb7adb990501070fac62fda31"
+ }
+ Frame {
+ msec: 592
+ hash: "824b9fef000cfad45c86d180eb13c584"
+ }
+ Frame {
+ msec: 608
+ hash: "cb8989a5839bf284f0e8b3eb1bf68667"
+ }
+ Frame {
+ msec: 624
+ hash: "f23e6394ed3c2fc32c690095ccfc1a7f"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 640
+ hash: "d32d30ebd0c292e66314f6b6005701b9"
+ }
+ Frame {
+ msec: 656
+ hash: "4ebda51f84f73eb6891f9c71ffba4b92"
+ }
+ Frame {
+ msec: 672
+ hash: "9a97e8cdb84e96f08f2af468d146fb45"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 688
+ hash: "9cd5a0e60b7f679faba3dad78eac1ac3"
+ }
+ Frame {
+ msec: 704
+ hash: "2e18ff4ebead28620901d4a9ad050ffe"
+ }
+ Frame {
+ msec: 720
+ hash: "57a6a1bbfe4c4577e4334b63b977ca13"
+ }
+ Frame {
+ msec: 736
+ hash: "5f5806c2b30465845ed2bc36f1c60e14"
+ }
+ Frame {
+ msec: 752
+ hash: "10125c338dffa13dfd0bbff5fc33d757"
+ }
+ Frame {
+ msec: 768
+ hash: "b6c83fdee9081a1773a441cffb843c11"
+ }
+ Frame {
+ msec: 784
+ hash: "c26f3ac7cd2065b98434e3fb4bc7c4a7"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 800
+ hash: "6cb47a37677280ef63b060767c669878"
+ }
+ Frame {
+ msec: 816
+ hash: "7f27c84cd7ae3f255b0df6029e13c48d"
+ }
+ Frame {
+ msec: 832
+ hash: "fec675b07b3f569014e9f35563761d49"
+ }
+ Frame {
+ msec: 848
+ hash: "cfd2439d79ad66232107022317fd5a4c"
+ }
+ Frame {
+ msec: 864
+ hash: "cec5331c1f6023335942e572992aa172"
+ }
+ Frame {
+ msec: 880
+ hash: "549d4736558332a64c5fc3462be71500"
+ }
+ Frame {
+ msec: 896
+ hash: "1d01fe566f850fe2297fd8ed6b1efa8d"
+ }
+ Frame {
+ msec: 912
+ hash: "cd1b61c7acd7067f9722c1a673b9a3ea"
+ }
+ Frame {
+ msec: 928
+ hash: "cb4fed177ff3df7212413450d4b73549"
+ }
+ Frame {
+ msec: 944
+ hash: "720d0e5c3e377e2c53d251e02577d6f6"
+ }
+ Frame {
+ msec: 960
+ hash: "1ab118400896a46a8d179b762343522f"
+ }
+ Frame {
+ msec: 976
+ image: "cursorDelegate.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "6cf8502f84b57001bf14fc4bab24911b"
+ }
+ Frame {
+ msec: 1008
+ hash: "5aa693852436f664da87d4360da0f477"
+ }
+ Frame {
+ msec: 1024
+ hash: "5aa693852436f664da87d4360da0f477"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1040
+ hash: "6cf8502f84b57001bf14fc4bab24911b"
+ }
+ Frame {
+ msec: 1056
+ hash: "17499b49e462181383fde57dce81aef9"
+ }
+ Frame {
+ msec: 1072
+ hash: "1ab118400896a46a8d179b762343522f"
+ }
+ Frame {
+ msec: 1088
+ hash: "720d0e5c3e377e2c53d251e02577d6f6"
+ }
+ Frame {
+ msec: 1104
+ hash: "cb4fed177ff3df7212413450d4b73549"
+ }
+ Frame {
+ msec: 1120
+ hash: "cd1b61c7acd7067f9722c1a673b9a3ea"
+ }
+ Frame {
+ msec: 1136
+ hash: "1d01fe566f850fe2297fd8ed6b1efa8d"
+ }
+ Frame {
+ msec: 1152
+ hash: "549d4736558332a64c5fc3462be71500"
+ }
+ Frame {
+ msec: 1168
+ hash: "cec5331c1f6023335942e572992aa172"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1184
+ hash: "a8af14ffccbd892f17c0235d62d10cd8"
+ }
+ Frame {
+ msec: 1200
+ hash: "81fbaaf1af513b2dc978ef0e358bbc6f"
+ }
+ Frame {
+ msec: 1216
+ hash: "204cfba6a668ba25ed37f12bfcdd97eb"
+ }
+ Frame {
+ msec: 1232
+ hash: "fa6c8f7f8a8730d412168002511b82e6"
+ }
+ Frame {
+ msec: 1248
+ hash: "0d491b55d03f5d5bb6cfce63bc98deae"
+ }
+ Frame {
+ msec: 1264
+ hash: "0e4d3edabdf6e0faa366abcc3b0ef521"
+ }
+ Frame {
+ msec: 1280
+ hash: "13f397452e74ef834662363b09b000b9"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1296
+ hash: "bb064cac4cb117b4d28e26d04dd59d7c"
+ }
+ Frame {
+ msec: 1312
+ hash: "dfab74915a3f1e82c558ba8fb26d81fc"
+ }
+ Frame {
+ msec: 1328
+ hash: "7593cfb3073aa9d638c093e0f4c9857d"
+ }
+ Frame {
+ msec: 1344
+ hash: "fe4a725dcc97b7f320225e02dc88d34a"
+ }
+ Frame {
+ msec: 1360
+ hash: "67794fa0162684b2097164d6cd666f16"
+ }
+ Frame {
+ msec: 1376
+ hash: "747cfcd428eb59ca99749de261e561d4"
+ }
+ Frame {
+ msec: 1392
+ hash: "293fd7523f25e42d2acab401482a9af9"
+ }
+ Frame {
+ msec: 1408
+ hash: "2644c937db0488c14f833a9e9f7d9cf6"
+ }
+ Frame {
+ msec: 1424
+ hash: "d80500f7cce8d887d0c523060e4217af"
+ }
+ Frame {
+ msec: 1440
+ hash: "96265a45f0f25d9c0cd1168789b50952"
+ }
+ Frame {
+ msec: 1456
+ hash: "e862d11944ea38939faa5b24fa9183bf"
+ }
+ Frame {
+ msec: 1472
+ hash: "946c778fcc8ee4942a30d4654e103fec"
+ }
+ Frame {
+ msec: 1488
+ hash: "946c778fcc8ee4942a30d4654e103fec"
+ }
+ Frame {
+ msec: 1504
+ hash: "946c778fcc8ee4942a30d4654e103fec"
+ }
+ Frame {
+ msec: 1520
+ hash: "946c778fcc8ee4942a30d4654e103fec"
+ }
+ Frame {
+ msec: 1536
+ hash: "946c778fcc8ee4942a30d4654e103fec"
+ }
+ Frame {
+ msec: 1552
+ hash: "946c778fcc8ee4942a30d4654e103fec"
+ }
+ Frame {
+ msec: 1568
+ hash: "99e0e3d965bea36001298815d12b4d4c"
+ }
+ Frame {
+ msec: 1584
+ hash: "c552ace3096eca31d0fc256d2bd153e0"
+ }
+ Frame {
+ msec: 1600
+ hash: "203858ff0fc145ac60942c2b8e67ca20"
+ }
+ Frame {
+ msec: 1616
+ hash: "11ea7696ec3aa9a394cabd723bcada9e"
+ }
+ Frame {
+ msec: 1632
+ hash: "e0e24c0527e015d0bb05206771024d04"
+ }
+ Frame {
+ msec: 1648
+ hash: "995ccae48c4f0fc2ab40e793d074e78b"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1664
+ hash: "cff7bee4ba1e8eb4c46e13f12f6059e1"
+ }
+ Frame {
+ msec: 1680
+ hash: "e43bd84ba7bdc4ea0370c79bfa7667bd"
+ }
+ Frame {
+ msec: 1696
+ hash: "b7dd97abf895eaea20836833f959f0c6"
+ }
+ Frame {
+ msec: 1712
+ hash: "b724e9874f0df5ed4ad9bdedbc4c45c9"
+ }
+ Frame {
+ msec: 1728
+ hash: "69d9d28793e65aa9a1829d07cc035e4d"
+ }
+ Frame {
+ msec: 1744
+ hash: "689fc2cf5feb1084fceda93eab9b7aac"
+ }
+ Frame {
+ msec: 1760
+ hash: "2bcc0f2fb8cccf7904c982cd60d3fefb"
+ }
+ Frame {
+ msec: 1776
+ hash: "d55a868304da7e9af57cd775f2c283c1"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1792
+ hash: "b2591af5120258c99e84f31311396675"
+ }
+ Frame {
+ msec: 1808
+ hash: "4f9908bdbad583a6a956a21d6ab05505"
+ }
+ Frame {
+ msec: 1824
+ hash: "dd1c43a94dcabae975f0dba67c2742da"
+ }
+ Frame {
+ msec: 1840
+ hash: "f9b8c8987bad613fe23fcf9d5fe995b8"
+ }
+ Frame {
+ msec: 1856
+ hash: "9bd4431207a85e0effefb9cf36a2651b"
+ }
+ Frame {
+ msec: 1872
+ hash: "cd7c4c097231797649f2d24a729e3587"
+ }
+ Frame {
+ msec: 1888
+ hash: "f2ac503f2aab55df922f90a6b9baeb0f"
+ }
+ Frame {
+ msec: 1904
+ hash: "f356c05f9445c2fb260a29a58431269c"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1920
+ hash: "5580f8c543d67378b0f54117070f69bd"
+ }
+ Frame {
+ msec: 1936
+ image: "cursorDelegate.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "634c5597e64c34b039c70f614f0100e1"
+ }
+ Frame {
+ msec: 1968
+ hash: "7f0bde32846ae8172cfd02f38d34dc48"
+ }
+ Frame {
+ msec: 1984
+ hash: "bc9092f889ffd6a6682ed9754c6697a2"
+ }
+ Frame {
+ msec: 2000
+ hash: "3ef935e3a4a0d409af7dd38f2433cdfe"
+ }
+ Frame {
+ msec: 2016
+ hash: "2a044024b38499e801810a19d313e01f"
+ }
+ Frame {
+ msec: 2032
+ hash: "3ef935e3a4a0d409af7dd38f2433cdfe"
+ }
+ Frame {
+ msec: 2048
+ hash: "bc9092f889ffd6a6682ed9754c6697a2"
+ }
+ Frame {
+ msec: 2064
+ hash: "7f0bde32846ae8172cfd02f38d34dc48"
+ }
+ Frame {
+ msec: 2080
+ hash: "634c5597e64c34b039c70f614f0100e1"
+ }
+ Frame {
+ msec: 2096
+ hash: "80f3bf6ea745da047da936578b87ee00"
+ }
+ Frame {
+ msec: 2112
+ hash: "5580f8c543d67378b0f54117070f69bd"
+ }
+ Frame {
+ msec: 2128
+ hash: "f356c05f9445c2fb260a29a58431269c"
+ }
+ Frame {
+ msec: 2144
+ hash: "f2ac503f2aab55df922f90a6b9baeb0f"
+ }
+ Frame {
+ msec: 2160
+ hash: "cd7c4c097231797649f2d24a729e3587"
+ }
+ Frame {
+ msec: 2176
+ hash: "9bd4431207a85e0effefb9cf36a2651b"
+ }
+ Frame {
+ msec: 2192
+ hash: "f9b8c8987bad613fe23fcf9d5fe995b8"
+ }
+ Frame {
+ msec: 2208
+ hash: "dd1c43a94dcabae975f0dba67c2742da"
+ }
+ Frame {
+ msec: 2224
+ hash: "4f9908bdbad583a6a956a21d6ab05505"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2240
+ hash: "b2591af5120258c99e84f31311396675"
+ }
+ Frame {
+ msec: 2256
+ hash: "5c40e466b5af2e4b67dbb4ea96b24146"
+ }
+ Frame {
+ msec: 2272
+ hash: "899a30ca4014231c8e9f15be4e0c3ee6"
+ }
+ Frame {
+ msec: 2288
+ hash: "a44bbb13a336fdd4aedaf4c5c6ee399a"
+ }
+ Frame {
+ msec: 2304
+ hash: "3b1b3e228ccbd61f9dfb896391da0b5b"
+ }
+ Frame {
+ msec: 2320
+ hash: "22f5ec3d2eda574d1976604b82307924"
+ }
+ Frame {
+ msec: 2336
+ hash: "9e63d1a15c954d2960eecf54e5eeb172"
+ }
+ Frame {
+ msec: 2352
+ hash: "64ce03b10500b5a98b5c826362d8140e"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2368
+ hash: "c96896be1a311c0cedc1c7ec1bd9e13e"
+ }
+ Frame {
+ msec: 2384
+ hash: "d3d6dc1d8ff93e373583e3cbdca88b81"
+ }
+ Frame {
+ msec: 2400
+ hash: "2a456146359c54c52f9e7a6cebcfa454"
+ }
+ Frame {
+ msec: 2416
+ hash: "d127788c702c2ed037c709ffc331840e"
+ }
+ Frame {
+ msec: 2432
+ hash: "8a5987a736b092e12198d969544d632c"
+ }
+ Frame {
+ msec: 2448
+ hash: "e8471c605f6a8cc187d879510ed7ebe7"
+ }
+ Frame {
+ msec: 2464
+ hash: "6959b4f72422636ae59989c9def06d03"
+ }
+ Frame {
+ msec: 2480
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2496
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 2512
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 2528
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 2544
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 2560
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 2576
+ hash: "aa52467f87fbd766baa5137ddf18e0f6"
+ }
+ Frame {
+ msec: 2592
+ hash: "bc9549a04b9bc898feda61b7fce45b3f"
+ }
+ Frame {
+ msec: 2608
+ hash: "606e69ad9b6e3a82e08ae4bbabb34680"
+ }
+ Frame {
+ msec: 2624
+ hash: "257ed9eae13221c5d47103043ef4ad5c"
+ }
+ Frame {
+ msec: 2640
+ hash: "f5b44d257447499e0268e9a8730d88e7"
+ }
+ Frame {
+ msec: 2656
+ hash: "8f03a92b2b0b04ee0ac45e7631df78ce"
+ }
+ Frame {
+ msec: 2672
+ hash: "054e88b3d80940006b24fdf233a70682"
+ }
+ Frame {
+ msec: 2688
+ hash: "20896fbba7e1970957ff20d33541730c"
+ }
+ Frame {
+ msec: 2704
+ hash: "238fca62069b7c6e1b6919afca518dbe"
+ }
+ Frame {
+ msec: 2720
+ hash: "764e14ba052d8340d6d674d6f417643d"
+ }
+ Frame {
+ msec: 2736
+ hash: "278fb36637ff60d1949da9e9b887726f"
+ }
+ Frame {
+ msec: 2752
+ hash: "f51251c5ec7b0071248d3fa5db1c12fd"
+ }
+ Frame {
+ msec: 2768
+ hash: "785d38e036e7dd809037de3885067455"
+ }
+ Frame {
+ msec: 2784
+ hash: "4291bb6217f363aab48812359626de36"
+ }
+ Frame {
+ msec: 2800
+ hash: "e139ad6787f1c4a1b89d4030703076e5"
+ }
+ Frame {
+ msec: 2816
+ hash: "4c23976fb1b3b583153cbd72f2db10f4"
+ }
+ Frame {
+ msec: 2832
+ hash: "5e0a3d848a749ecd4f9a572f10664f4b"
+ }
+ Frame {
+ msec: 2848
+ hash: "1acc382cfe2f5872982440e8a85eb57b"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2864
+ hash: "eba94c6ae3dc4eb26c8d074137c7aa0f"
+ }
+ Frame {
+ msec: 2880
+ hash: "7c75307fbb765bd69b888d500247b595"
+ }
+ Frame {
+ msec: 2896
+ image: "cursorDelegate.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "da73d23a925d93194aeb64d1522adc02"
+ }
+ Frame {
+ msec: 2928
+ hash: "d661872854338121d867b35d9e44ae6d"
+ }
+ Frame {
+ msec: 2944
+ hash: "969b5cf20c7c4e18723a8b8a70ea68ec"
+ }
+ Frame {
+ msec: 2960
+ hash: "c7318ea4b4a4ac49308bef41d3bc264d"
+ }
+ Frame {
+ msec: 2976
+ hash: "dd6bd11cc0bc877dbd70c55d4f5bab29"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2992
+ hash: "21905ed4264a52c9b404149abedabe33"
+ }
+ Frame {
+ msec: 3008
+ hash: "e952374e5967619679af711157b561cd"
+ }
+ Frame {
+ msec: 3024
+ hash: "e952374e5967619679af711157b561cd"
+ }
+ Frame {
+ msec: 3040
+ hash: "21905ed4264a52c9b404149abedabe33"
+ }
+ Frame {
+ msec: 3056
+ hash: "dd6bd11cc0bc877dbd70c55d4f5bab29"
+ }
+ Frame {
+ msec: 3072
+ hash: "c7318ea4b4a4ac49308bef41d3bc264d"
+ }
+ Frame {
+ msec: 3088
+ hash: "969b5cf20c7c4e18723a8b8a70ea68ec"
+ }
+ Frame {
+ msec: 3104
+ hash: "d661872854338121d867b35d9e44ae6d"
+ }
+ Frame {
+ msec: 3120
+ hash: "da73d23a925d93194aeb64d1522adc02"
+ }
+ Frame {
+ msec: 3136
+ hash: "2c0261e2223d7212e047dd4af6246a8f"
+ }
+ Frame {
+ msec: 3152
+ hash: "7c75307fbb765bd69b888d500247b595"
+ }
+ Frame {
+ msec: 3168
+ hash: "eba94c6ae3dc4eb26c8d074137c7aa0f"
+ }
+ Frame {
+ msec: 3184
+ hash: "e6eaa9959334f24ef3cf68d44d7340f1"
+ }
+ Frame {
+ msec: 3200
+ hash: "3adb8604d872bc8ff5498841c6da71b5"
+ }
+ Frame {
+ msec: 3216
+ hash: "e602eeaac3ce53033154297e73802c02"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3232
+ hash: "85afa80a1c333674cfbfcc38cedc798d"
+ }
+ Frame {
+ msec: 3248
+ hash: "72679887fb26b7eb2553d6e554e26679"
+ }
+ Frame {
+ msec: 3264
+ hash: "d25f21361d9cea41b17277f1ffecac62"
+ }
+ Frame {
+ msec: 3280
+ hash: "24db38727e1a58d515119181ea41e209"
+ }
+ Frame {
+ msec: 3296
+ hash: "e7ddd84f438fd2d463a3b9552dad345a"
+ }
+ Frame {
+ msec: 3312
+ hash: "621e406f5b9204eb5d82c4f66fdf6a61"
+ }
+ Frame {
+ msec: 3328
+ hash: "2a8befe073dda8589197cf05eeeaaf59"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3344
+ hash: "104f0e21a041236f48dab6fe2c1c5aa1"
+ }
+ Frame {
+ msec: 3360
+ hash: "0f8f74614b0b7295bb9df8fa0b1f6877"
+ }
+ Frame {
+ msec: 3376
+ hash: "3a3cc6cfd3200e06a2816f2746edf699"
+ }
+ Frame {
+ msec: 3392
+ hash: "83032d1da6907ebe1ab9fddf314d0bc1"
+ }
+ Frame {
+ msec: 3408
+ hash: "b93878281f21c85c211908086f2899e7"
+ }
+ Frame {
+ msec: 3424
+ hash: "a554a6ecd96f37f114f1fd616e0aeab2"
+ }
+ Frame {
+ msec: 3440
+ hash: "8943d47912a4206e61836d99cca835da"
+ }
+ Frame {
+ msec: 3456
+ hash: "4d06d264f71d75421c9a6d5a87d6a9ba"
+ }
+ Frame {
+ msec: 3472
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 3488
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 3504
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 3520
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 3536
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 3552
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 3568
+ hash: "ca17401d638025fde8aad18b9a358029"
+ }
+ Frame {
+ msec: 3584
+ hash: "3542537f0b0e1375d81c7f0365bbdf1d"
+ }
+ Frame {
+ msec: 3600
+ hash: "235b68812a3cb48fc09bd8319aef40f1"
+ }
+ Frame {
+ msec: 3616
+ hash: "3aa88f646534068d13e9c4f23af52019"
+ }
+ Frame {
+ msec: 3632
+ hash: "8f037bdef4940fdb1936900ad5aee36e"
+ }
+ Frame {
+ msec: 3648
+ hash: "18e8239c50ca62a5bd96d983ab5ff46d"
+ }
+ Frame {
+ msec: 3664
+ hash: "d62f6887bdad9decb48ebaf63a6330a3"
+ }
+ Frame {
+ msec: 3680
+ hash: "0af7997ec1a755a761fc1ab47ef30137"
+ }
+ Frame {
+ msec: 3696
+ hash: "b3a384f93ef5f36466f0a638182b66cb"
+ }
+ Frame {
+ msec: 3712
+ hash: "fceb3ee105028e29dca001197c63e524"
+ }
+ Frame {
+ msec: 3728
+ hash: "5c16dc7aee02eefa95d0c6211f81ba48"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3744
+ hash: "e4c3193ad0885084becbeaaaa899fff4"
+ }
+ Frame {
+ msec: 3760
+ hash: "84afa9118845126960309537e529ea74"
+ }
+ Frame {
+ msec: 3776
+ hash: "6e18f95c4252aff3ee5447a08153ee53"
+ }
+ Frame {
+ msec: 3792
+ hash: "59facabe2430703113665d0153402472"
+ }
+ Frame {
+ msec: 3808
+ hash: "316bce2e605a4df04d41a4f7620086bd"
+ }
+ Frame {
+ msec: 3824
+ hash: "7dcba8f0dd9fd67518f0502d904624fd"
+ }
+ Frame {
+ msec: 3840
+ hash: "cb9166d113c5c7495916f6b7f850407c"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3856
+ image: "cursorDelegate.4.png"
+ }
+ Frame {
+ msec: 3872
+ hash: "7cc78c7ab5820a698b62c452dfc0d1db"
+ }
+ Frame {
+ msec: 3888
+ hash: "5f068715dc1244895e6e09afd6e846a9"
+ }
+ Frame {
+ msec: 3904
+ hash: "c279e7293539593bfc8250d37f78791c"
+ }
+ Frame {
+ msec: 3920
+ hash: "d01ff855befa456a213d4f78f22fe46c"
+ }
+ Frame {
+ msec: 3936
+ hash: "16e20d2e663e64daa1920b165604f342"
+ }
+ Frame {
+ msec: 3952
+ hash: "2feebd6865e71afd30c73e342fb2cab1"
+ }
+ Frame {
+ msec: 3968
+ hash: "8c417cb9ef300c895323060ceb860bd9"
+ }
+ Frame {
+ msec: 3984
+ hash: "05903a78cad8d331349f93a1cea75d7d"
+ }
+ Frame {
+ msec: 4000
+ hash: "e142bb264ab7877a9b40596d497ea2c1"
+ }
+ Frame {
+ msec: 4016
+ hash: "717e5e965b9ff188fd9200927968d359"
+ }
+ Frame {
+ msec: 4032
+ hash: "e142bb264ab7877a9b40596d497ea2c1"
+ }
+ Frame {
+ msec: 4048
+ hash: "05903a78cad8d331349f93a1cea75d7d"
+ }
+ Frame {
+ msec: 4064
+ hash: "8c417cb9ef300c895323060ceb860bd9"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4080
+ hash: "2feebd6865e71afd30c73e342fb2cab1"
+ }
+ Frame {
+ msec: 4096
+ hash: "16e20d2e663e64daa1920b165604f342"
+ }
+ Frame {
+ msec: 4112
+ hash: "d01ff855befa456a213d4f78f22fe46c"
+ }
+ Frame {
+ msec: 4128
+ hash: "c279e7293539593bfc8250d37f78791c"
+ }
+ Frame {
+ msec: 4144
+ hash: "5f068715dc1244895e6e09afd6e846a9"
+ }
+ Frame {
+ msec: 4160
+ hash: "7cc78c7ab5820a698b62c452dfc0d1db"
+ }
+ Frame {
+ msec: 4176
+ hash: "194b8b8843cf8a7d90ec910ee4021d9c"
+ }
+ Frame {
+ msec: 4192
+ hash: "cb9166d113c5c7495916f6b7f850407c"
+ }
+ Frame {
+ msec: 4208
+ hash: "7dcba8f0dd9fd67518f0502d904624fd"
+ }
+ Frame {
+ msec: 4224
+ hash: "316bce2e605a4df04d41a4f7620086bd"
+ }
+ Frame {
+ msec: 4240
+ hash: "59facabe2430703113665d0153402472"
+ }
+ Frame {
+ msec: 4256
+ hash: "6e18f95c4252aff3ee5447a08153ee53"
+ }
+ Frame {
+ msec: 4272
+ hash: "84afa9118845126960309537e529ea74"
+ }
+ Frame {
+ msec: 4288
+ hash: "e4c3193ad0885084becbeaaaa899fff4"
+ }
+ Frame {
+ msec: 4304
+ hash: "6a7b8f8ae1959681afc7e76c242ddf63"
+ }
+ Frame {
+ msec: 4320
+ hash: "94457c4fd09b63fe9df738af422a3716"
+ }
+ Frame {
+ msec: 4336
+ hash: "29189dea05961b2ed7d525b17bc99513"
+ }
+ Frame {
+ msec: 4352
+ hash: "11fc3e52587bbedf0016c829d2d849d1"
+ }
+ Frame {
+ msec: 4368
+ hash: "57178e2a3d404d4301ee89a6202ad7cc"
+ }
+ Frame {
+ msec: 4384
+ hash: "151778e9dd76fbf6d9e98b86469ec01e"
+ }
+ Frame {
+ msec: 4400
+ hash: "bfab5d3f368c06f2ef5e22b7e16090ad"
+ }
+ Frame {
+ msec: 4416
+ hash: "ef29b8ff8fcf221368056aa249f706a1"
+ }
+ Frame {
+ msec: 4432
+ hash: "cd14458426f94efbbc729112e6a481c5"
+ }
+ Frame {
+ msec: 4448
+ hash: "cbafbb1c359a0c0e7182c4449d04b052"
+ }
+ Frame {
+ msec: 4464
+ hash: "b56e3f531bb6b3f2c62a6972910038b3"
+ }
+ Frame {
+ msec: 4480
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 4496
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 4512
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 4528
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 4544
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 4560
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 4576
+ hash: "3d6db6e3ee77ee75341ce16dc4a56c59"
+ }
+ Frame {
+ msec: 4592
+ hash: "ff43ccdb14ae4d12ffead2eb261a5056"
+ }
+ Frame {
+ msec: 4608
+ hash: "fb73ac1e61834f2f0263e53a3c00a857"
+ }
+ Frame {
+ msec: 4624
+ hash: "6bd66d118ff27b0cea7944ea22c727c9"
+ }
+ Frame {
+ msec: 4640
+ hash: "0b474aa5492386c319bf72280dae7896"
+ }
+ Frame {
+ msec: 4656
+ hash: "81952cf37f0965a603bf06a05ef610fa"
+ }
+ Frame {
+ msec: 4672
+ hash: "ad7606f147498c755284d111a1af7710"
+ }
+ Frame {
+ msec: 4688
+ hash: "144abb4208f9cc4f823e0d4abb3207d8"
+ }
+ Frame {
+ msec: 4704
+ hash: "0b4f3fafaf262f16e887938eda9624a3"
+ }
+ Frame {
+ msec: 4720
+ hash: "e729d3fde3db0f72b1080c7dc2eded1a"
+ }
+ Frame {
+ msec: 4736
+ hash: "36ffc8e16ebcb9c4499c4ff037b8b293"
+ }
+ Frame {
+ msec: 4752
+ hash: "c49853a23d2e8b966836888acce19ecc"
+ }
+ Frame {
+ msec: 4768
+ hash: "3873af5aa871bdb1d4f538333b11cf33"
+ }
+ Frame {
+ msec: 4784
+ hash: "6d02efe848b27b3e221a8332099fb83f"
+ }
+ Frame {
+ msec: 4800
+ hash: "2f08f365916d892f0789e93b674cb41b"
+ }
+ Frame {
+ msec: 4816
+ image: "cursorDelegate.5.png"
+ }
+ Frame {
+ msec: 4832
+ hash: "3adb8604d872bc8ff5498841c6da71b5"
+ }
+ Frame {
+ msec: 4848
+ hash: "e6eaa9959334f24ef3cf68d44d7340f1"
+ }
+ Frame {
+ msec: 4864
+ hash: "eba94c6ae3dc4eb26c8d074137c7aa0f"
+ }
+ Frame {
+ msec: 4880
+ hash: "7c75307fbb765bd69b888d500247b595"
+ }
+ Frame {
+ msec: 4896
+ hash: "2c0261e2223d7212e047dd4af6246a8f"
+ }
+ Frame {
+ msec: 4912
+ hash: "da73d23a925d93194aeb64d1522adc02"
+ }
+ Frame {
+ msec: 4928
+ hash: "d661872854338121d867b35d9e44ae6d"
+ }
+ Frame {
+ msec: 4944
+ hash: "969b5cf20c7c4e18723a8b8a70ea68ec"
+ }
+ Frame {
+ msec: 4960
+ hash: "c7318ea4b4a4ac49308bef41d3bc264d"
+ }
+ Frame {
+ msec: 4976
+ hash: "dd6bd11cc0bc877dbd70c55d4f5bab29"
+ }
+ Frame {
+ msec: 4992
+ hash: "21905ed4264a52c9b404149abedabe33"
+ }
+ Frame {
+ msec: 5008
+ hash: "e952374e5967619679af711157b561cd"
+ }
+ Frame {
+ msec: 5024
+ hash: "e952374e5967619679af711157b561cd"
+ }
+ Frame {
+ msec: 5040
+ hash: "21905ed4264a52c9b404149abedabe33"
+ }
+ Frame {
+ msec: 5056
+ hash: "dd6bd11cc0bc877dbd70c55d4f5bab29"
+ }
+ Frame {
+ msec: 5072
+ hash: "c7318ea4b4a4ac49308bef41d3bc264d"
+ }
+ Frame {
+ msec: 5088
+ hash: "969b5cf20c7c4e18723a8b8a70ea68ec"
+ }
+ Frame {
+ msec: 5104
+ hash: "d661872854338121d867b35d9e44ae6d"
+ }
+ Frame {
+ msec: 5120
+ hash: "da73d23a925d93194aeb64d1522adc02"
+ }
+ Frame {
+ msec: 5136
+ hash: "2c0261e2223d7212e047dd4af6246a8f"
+ }
+ Frame {
+ msec: 5152
+ hash: "7c75307fbb765bd69b888d500247b595"
+ }
+ Frame {
+ msec: 5168
+ hash: "eba94c6ae3dc4eb26c8d074137c7aa0f"
+ }
+ Frame {
+ msec: 5184
+ hash: "e6eaa9959334f24ef3cf68d44d7340f1"
+ }
+ Frame {
+ msec: 5200
+ hash: "3adb8604d872bc8ff5498841c6da71b5"
+ }
+ Frame {
+ msec: 5216
+ hash: "e602eeaac3ce53033154297e73802c02"
+ }
+ Frame {
+ msec: 5232
+ hash: "2f08f365916d892f0789e93b674cb41b"
+ }
+ Frame {
+ msec: 5248
+ hash: "6d02efe848b27b3e221a8332099fb83f"
+ }
+ Frame {
+ msec: 5264
+ hash: "3873af5aa871bdb1d4f538333b11cf33"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.0.png
new file mode 100644
index 0000000000..59fc0fc492
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.1.png
new file mode 100644
index 0000000000..2747b50831
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.2.png
new file mode 100644
index 0000000000..74efe73bb1
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.3.png
new file mode 100644
index 0000000000..02f6e17b09
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.4.png
new file mode 100644
index 0000000000..59fc0fc492
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.qml
new file mode 100644
index 0000000000..760a831ece
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.qml
@@ -0,0 +1,1371 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "qt-669.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 48
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 64
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 80
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 96
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 112
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 128
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 144
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 160
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 176
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 192
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 208
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 224
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 240
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 256
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 272
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 288
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 304
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 320
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 336
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 352
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 368
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 384
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 400
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 416
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 432
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 448
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 464
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 480
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 496
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 512
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 528
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 544
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Frame {
+ msec: 560
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Frame {
+ msec: 576
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 592
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Frame {
+ msec: 608
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Frame {
+ msec: 624
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Frame {
+ msec: 640
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Frame {
+ msec: 656
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Frame {
+ msec: 672
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 688
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Frame {
+ msec: 704
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Frame {
+ msec: 720
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Frame {
+ msec: 736
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 752
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Frame {
+ msec: 768
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Frame {
+ msec: 784
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Frame {
+ msec: 800
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Frame {
+ msec: 816
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 832
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Frame {
+ msec: 848
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Frame {
+ msec: 864
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Frame {
+ msec: 880
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 896
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Frame {
+ msec: 912
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Frame {
+ msec: 928
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Frame {
+ msec: 944
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 960
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 976
+ image: "qt-669.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 1008
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1024
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 1040
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 1056
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 1072
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 1088
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1104
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Frame {
+ msec: 1120
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Frame {
+ msec: 1136
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1152
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Frame {
+ msec: 1168
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Frame {
+ msec: 1184
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Frame {
+ msec: 1200
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Frame {
+ msec: 1216
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1232
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Frame {
+ msec: 1248
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Frame {
+ msec: 1264
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Frame {
+ msec: 1280
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1296
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Frame {
+ msec: 1312
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Frame {
+ msec: 1328
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Frame {
+ msec: 1344
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1360
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 1376
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 1392
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 1408
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1424
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 1440
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 1456
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 1472
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 1488
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1504
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1520
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1536
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1552
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1568
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1584
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1600
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1616
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1632
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1648
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1664
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1680
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1696
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1712
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1728
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1744
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1760
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1776
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1792
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1808
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1824
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Frame {
+ msec: 1840
+ hash: "64f5712c1f96345f2a2ad103e6fbd734"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1856
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 1872
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 1888
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 1904
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 1920
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 1936
+ image: "qt-669.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 1968
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 1984
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2000
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 2016
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 2032
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 2048
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Frame {
+ msec: 2064
+ hash: "7f895d1255301397298cd6b92282e4f7"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2080
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Frame {
+ msec: 2096
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Frame {
+ msec: 2112
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Frame {
+ msec: 2128
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Frame {
+ msec: 2144
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2160
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Frame {
+ msec: 2176
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Frame {
+ msec: 2192
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Frame {
+ msec: 2208
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Frame {
+ msec: 2224
+ hash: "6ec9e863238467c249f62bdd38b68490"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2240
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Frame {
+ msec: 2256
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2272
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Frame {
+ msec: 2288
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Frame {
+ msec: 2304
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Frame {
+ msec: 2320
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Frame {
+ msec: 2336
+ hash: "fe998f3c7c780fddfa6a595936d2e78e"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2352
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 2368
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 2384
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2400
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 2416
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 2432
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 2448
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 2464
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 2480
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 2496
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 2512
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 2528
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 2544
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 2560
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 2576
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Frame {
+ msec: 2592
+ hash: "a7415d0abcc670ba02c2a00b3b5fc647"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2608
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Frame {
+ msec: 2624
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Frame {
+ msec: 2640
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Frame {
+ msec: 2656
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Frame {
+ msec: 2672
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2688
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Frame {
+ msec: 2704
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Frame {
+ msec: 2720
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Frame {
+ msec: 2736
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Frame {
+ msec: 2752
+ hash: "9eda76efdd179847e89b9e96ead51e4a"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2768
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Frame {
+ msec: 2784
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Frame {
+ msec: 2800
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2816
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Frame {
+ msec: 2832
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Frame {
+ msec: 2848
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Frame {
+ msec: 2864
+ hash: "1bcb9bc9d6606329ad5376ea6f608bf8"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2880
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Frame {
+ msec: 2896
+ image: "qt-669.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Frame {
+ msec: 2928
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2944
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Frame {
+ msec: 2960
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Frame {
+ msec: 2976
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Frame {
+ msec: 2992
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Frame {
+ msec: 3008
+ hash: "1465f1f32ba4a6180ab3460298febe26"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3024
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3040
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3056
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3072
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3088
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3104
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3120
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3136
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3152
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3168
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3184
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3200
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3216
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3232
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3248
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3264
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3280
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3296
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3312
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3328
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3344
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3360
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3376
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3392
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3408
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3424
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3440
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3456
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3472
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3488
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3504
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3520
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3536
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3552
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3568
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3584
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3600
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3616
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3632
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3648
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3664
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3680
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Frame {
+ msec: 3696
+ hash: "89f3a1c5080d5d742e4455a8818a715c"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3712
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3728
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3744
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3760
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3776
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3792
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3808
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3824
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3840
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3856
+ image: "qt-669.4.png"
+ }
+ Frame {
+ msec: 3872
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3888
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3904
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3920
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3936
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3952
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3968
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 3984
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4000
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4016
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4032
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4048
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4064
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4080
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4096
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4112
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4128
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4144
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4160
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4176
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4192
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4208
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4224
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4240
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4256
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4272
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4288
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+ Frame {
+ msec: 4304
+ hash: "0051b27d72a917e2af72c4b953877d42"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.0.png
new file mode 100644
index 0000000000..a1c3c39043
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.1.png
new file mode 100644
index 0000000000..bfc91f5152
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.10.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.10.png
new file mode 100644
index 0000000000..8effaefd8e
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..8effaefd8e
--- /dev/null
+++ 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.12.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.12.png
new file mode 100644
index 0000000000..8effaefd8e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.12.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.2.png
new file mode 100644
index 0000000000..f1829fa1b6
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.3.png
new file mode 100644
index 0000000000..b7f41db045
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.4.png
new file mode 100644
index 0000000000..9e58c3a523
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.5.png
new file mode 100644
index 0000000000..8dbcc4174f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.6.png
new file mode 100644
index 0000000000..302974b0cf
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.7.png
new file mode 100644
index 0000000000..b79af19f96
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.7.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
new file mode 100644
index 0000000000..b435da67bc
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..ef15fdfe6c
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..a03948cdb2
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/usingMultilineEdit.qml
@@ -0,0 +1,4687 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "usingMultilineEdit.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 48
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 64
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 80
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 96
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 112
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 128
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 144
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 160
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 176
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 192
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 208
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 224
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 240
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 256
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 272
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 288
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 304
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 320
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 118; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 336
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 352
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 368
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 384
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 400
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 118; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 416
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 432
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 448
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 464
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 480
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 496
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 512
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 528
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 544
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 560
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 576
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 592
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 608
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 624
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Frame {
+ msec: 640
+ hash: "b59ca5ccc1bd1d1192cc109d66a31d0b"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 117; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 656
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 672
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 117; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 688
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 704
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 720
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 736
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 752
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 768
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 784
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 800
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 816
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 832
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 848
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 864
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 880
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 896
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 912
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 928
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 944
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 960
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 976
+ image: "usingMultilineEdit.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1008
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1024
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1040
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1056
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1072
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1088
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1104
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1120
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1136
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1152
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1168
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1184
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1200
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1216
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1232
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1248
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1264
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1280
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Frame {
+ msec: 1296
+ hash: "2414ab7436ed58a29eaf3ef15b5ced79"
+ }
+ Key {
+ type: 6
+ key: 44
+ modifiers: 0
+ text: "2c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1312
+ hash: "91757521cdb0617645a2a6cb831f51f3"
+ }
+ Frame {
+ msec: 1328
+ hash: "91757521cdb0617645a2a6cb831f51f3"
+ }
+ Frame {
+ msec: 1344
+ hash: "91757521cdb0617645a2a6cb831f51f3"
+ }
+ Frame {
+ msec: 1360
+ hash: "91757521cdb0617645a2a6cb831f51f3"
+ }
+ Frame {
+ msec: 1376
+ hash: "91757521cdb0617645a2a6cb831f51f3"
+ }
+ Key {
+ type: 7
+ key: 44
+ modifiers: 0
+ text: "2c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1392
+ hash: "91757521cdb0617645a2a6cb831f51f3"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1408
+ hash: "a7e2d2f2668dcb902d3ab0e413d9b639"
+ }
+ Frame {
+ msec: 1424
+ hash: "a7e2d2f2668dcb902d3ab0e413d9b639"
+ }
+ Frame {
+ msec: 1440
+ hash: "a7e2d2f2668dcb902d3ab0e413d9b639"
+ }
+ Frame {
+ msec: 1456
+ hash: "a7e2d2f2668dcb902d3ab0e413d9b639"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1472
+ hash: "a7e2d2f2668dcb902d3ab0e413d9b639"
+ }
+ Frame {
+ msec: 1488
+ hash: "a7e2d2f2668dcb902d3ab0e413d9b639"
+ }
+ Frame {
+ msec: 1504
+ hash: "a7e2d2f2668dcb902d3ab0e413d9b639"
+ }
+ Frame {
+ msec: 1520
+ hash: "a7e2d2f2668dcb902d3ab0e413d9b639"
+ }
+ Frame {
+ msec: 1536
+ hash: "a7e2d2f2668dcb902d3ab0e413d9b639"
+ }
+ Frame {
+ msec: 1552
+ hash: "a7e2d2f2668dcb902d3ab0e413d9b639"
+ }
+ Key {
+ type: 6
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1568
+ hash: "1602f7c814daec9612795d1e109b8f14"
+ }
+ Frame {
+ msec: 1584
+ hash: "1602f7c814daec9612795d1e109b8f14"
+ }
+ Frame {
+ msec: 1600
+ hash: "1602f7c814daec9612795d1e109b8f14"
+ }
+ Key {
+ type: 7
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1616
+ hash: "1602f7c814daec9612795d1e109b8f14"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1632
+ hash: "84e1e7c90b2134d037146d8a7cd4c413"
+ }
+ Frame {
+ msec: 1648
+ hash: "84e1e7c90b2134d037146d8a7cd4c413"
+ }
+ Frame {
+ msec: 1664
+ hash: "84e1e7c90b2134d037146d8a7cd4c413"
+ }
+ Frame {
+ msec: 1680
+ hash: "84e1e7c90b2134d037146d8a7cd4c413"
+ }
+ Frame {
+ msec: 1696
+ hash: "84e1e7c90b2134d037146d8a7cd4c413"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1712
+ hash: "84e1e7c90b2134d037146d8a7cd4c413"
+ }
+ Frame {
+ msec: 1728
+ hash: "84e1e7c90b2134d037146d8a7cd4c413"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1744
+ hash: "87109c5f296e5b56aaecc09a2decae4d"
+ }
+ Frame {
+ msec: 1760
+ hash: "87109c5f296e5b56aaecc09a2decae4d"
+ }
+ Frame {
+ msec: 1776
+ hash: "87109c5f296e5b56aaecc09a2decae4d"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1792
+ hash: "87109c5f296e5b56aaecc09a2decae4d"
+ }
+ Frame {
+ msec: 1808
+ hash: "87109c5f296e5b56aaecc09a2decae4d"
+ }
+ Frame {
+ msec: 1824
+ hash: "87109c5f296e5b56aaecc09a2decae4d"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1840
+ hash: "29f766ca17ac45522ca2079cce9a1015"
+ }
+ Frame {
+ msec: 1856
+ hash: "29f766ca17ac45522ca2079cce9a1015"
+ }
+ Frame {
+ msec: 1872
+ hash: "29f766ca17ac45522ca2079cce9a1015"
+ }
+ Frame {
+ msec: 1888
+ hash: "29f766ca17ac45522ca2079cce9a1015"
+ }
+ Frame {
+ msec: 1904
+ hash: "29f766ca17ac45522ca2079cce9a1015"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1920
+ hash: "be6de699f29278ee3a39c3d8ed90f808"
+ }
+ Frame {
+ msec: 1936
+ image: "usingMultilineEdit.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "be6de699f29278ee3a39c3d8ed90f808"
+ }
+ Frame {
+ msec: 1968
+ hash: "be6de699f29278ee3a39c3d8ed90f808"
+ }
+ Key {
+ type: 6
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1984
+ hash: "ef413406c3e7aa03ced4e06661dfafcc"
+ }
+ Frame {
+ msec: 2000
+ hash: "ef413406c3e7aa03ced4e06661dfafcc"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2016
+ hash: "ef413406c3e7aa03ced4e06661dfafcc"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2032
+ hash: "d29b729a45533ef77af530ab2f125bd1"
+ }
+ Frame {
+ msec: 2048
+ hash: "d29b729a45533ef77af530ab2f125bd1"
+ }
+ Key {
+ type: 7
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "d29b729a45533ef77af530ab2f125bd1"
+ }
+ Frame {
+ msec: 2080
+ hash: "d29b729a45533ef77af530ab2f125bd1"
+ }
+ Frame {
+ msec: 2096
+ hash: "d29b729a45533ef77af530ab2f125bd1"
+ }
+ Frame {
+ msec: 2112
+ hash: "d29b729a45533ef77af530ab2f125bd1"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2128
+ hash: "d29b729a45533ef77af530ab2f125bd1"
+ }
+ Frame {
+ msec: 2144
+ hash: "d29b729a45533ef77af530ab2f125bd1"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2160
+ hash: "3b2069cbaa6640664dbe1b80f3cf0670"
+ }
+ Frame {
+ msec: 2176
+ hash: "3b2069cbaa6640664dbe1b80f3cf0670"
+ }
+ Frame {
+ msec: 2192
+ hash: "3b2069cbaa6640664dbe1b80f3cf0670"
+ }
+ Frame {
+ msec: 2208
+ hash: "3b2069cbaa6640664dbe1b80f3cf0670"
+ }
+ Frame {
+ msec: 2224
+ hash: "3b2069cbaa6640664dbe1b80f3cf0670"
+ }
+ Frame {
+ msec: 2240
+ hash: "3b2069cbaa6640664dbe1b80f3cf0670"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2256
+ hash: "6ef4fd1a5d53c16670163384ef4c8f06"
+ }
+ Frame {
+ msec: 2272
+ hash: "6ef4fd1a5d53c16670163384ef4c8f06"
+ }
+ Frame {
+ msec: 2288
+ hash: "6ef4fd1a5d53c16670163384ef4c8f06"
+ }
+ Frame {
+ msec: 2304
+ hash: "6ef4fd1a5d53c16670163384ef4c8f06"
+ }
+ Frame {
+ msec: 2320
+ hash: "6ef4fd1a5d53c16670163384ef4c8f06"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2336
+ hash: "6ef4fd1a5d53c16670163384ef4c8f06"
+ }
+ Frame {
+ msec: 2352
+ hash: "6ef4fd1a5d53c16670163384ef4c8f06"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2368
+ hash: "c656f82ce3471c70d5f8050c5bd904e6"
+ }
+ Frame {
+ msec: 2384
+ hash: "c656f82ce3471c70d5f8050c5bd904e6"
+ }
+ Frame {
+ msec: 2400
+ hash: "c656f82ce3471c70d5f8050c5bd904e6"
+ }
+ Frame {
+ msec: 2416
+ hash: "c656f82ce3471c70d5f8050c5bd904e6"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2432
+ hash: "c656f82ce3471c70d5f8050c5bd904e6"
+ }
+ Key {
+ type: 6
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "991d345c4a62087543afa032e8d4bd2f"
+ }
+ Frame {
+ msec: 2464
+ hash: "991d345c4a62087543afa032e8d4bd2f"
+ }
+ Frame {
+ msec: 2480
+ hash: "991d345c4a62087543afa032e8d4bd2f"
+ }
+ Frame {
+ msec: 2496
+ hash: "991d345c4a62087543afa032e8d4bd2f"
+ }
+ Frame {
+ msec: 2512
+ hash: "991d345c4a62087543afa032e8d4bd2f"
+ }
+ Frame {
+ msec: 2528
+ hash: "991d345c4a62087543afa032e8d4bd2f"
+ }
+ Key {
+ type: 7
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2544
+ hash: "991d345c4a62087543afa032e8d4bd2f"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2560
+ hash: "9b55130d7cb0922aaeed3a5aad103f98"
+ }
+ Frame {
+ msec: 2576
+ hash: "9b55130d7cb0922aaeed3a5aad103f98"
+ }
+ Frame {
+ msec: 2592
+ hash: "9b55130d7cb0922aaeed3a5aad103f98"
+ }
+ Frame {
+ msec: 2608
+ hash: "9b55130d7cb0922aaeed3a5aad103f98"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2624
+ hash: "9b55130d7cb0922aaeed3a5aad103f98"
+ }
+ Frame {
+ msec: 2640
+ hash: "9b55130d7cb0922aaeed3a5aad103f98"
+ }
+ Frame {
+ msec: 2656
+ hash: "9b55130d7cb0922aaeed3a5aad103f98"
+ }
+ Frame {
+ msec: 2672
+ hash: "9b55130d7cb0922aaeed3a5aad103f98"
+ }
+ Frame {
+ msec: 2688
+ hash: "9b55130d7cb0922aaeed3a5aad103f98"
+ }
+ Key {
+ type: 6
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2704
+ hash: "9b323c8f49dc890af8849a0de8a7db4d"
+ }
+ Frame {
+ msec: 2720
+ hash: "9b323c8f49dc890af8849a0de8a7db4d"
+ }
+ Frame {
+ msec: 2736
+ hash: "9b323c8f49dc890af8849a0de8a7db4d"
+ }
+ Frame {
+ msec: 2752
+ hash: "9b323c8f49dc890af8849a0de8a7db4d"
+ }
+ Frame {
+ msec: 2768
+ hash: "9b323c8f49dc890af8849a0de8a7db4d"
+ }
+ Frame {
+ msec: 2784
+ hash: "9b323c8f49dc890af8849a0de8a7db4d"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2800
+ hash: "c3c761352c46bd89c400c6638180fa9a"
+ }
+ Key {
+ type: 7
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2816
+ hash: "c3c761352c46bd89c400c6638180fa9a"
+ }
+ Frame {
+ msec: 2832
+ hash: "c3c761352c46bd89c400c6638180fa9a"
+ }
+ Frame {
+ msec: 2848
+ hash: "c3c761352c46bd89c400c6638180fa9a"
+ }
+ Frame {
+ msec: 2864
+ hash: "c3c761352c46bd89c400c6638180fa9a"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2880
+ hash: "c3c761352c46bd89c400c6638180fa9a"
+ }
+ Frame {
+ msec: 2896
+ image: "usingMultilineEdit.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "c3c761352c46bd89c400c6638180fa9a"
+ }
+ Frame {
+ msec: 2928
+ hash: "c3c761352c46bd89c400c6638180fa9a"
+ }
+ Key {
+ type: 6
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2944
+ hash: "93af025fc4cf949167efac7ed3bc5258"
+ }
+ Frame {
+ msec: 2960
+ hash: "93af025fc4cf949167efac7ed3bc5258"
+ }
+ Frame {
+ msec: 2976
+ hash: "93af025fc4cf949167efac7ed3bc5258"
+ }
+ Key {
+ type: 7
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2992
+ hash: "41fe34c5246a438886e85fdc30513a08"
+ }
+ Frame {
+ msec: 3008
+ hash: "41fe34c5246a438886e85fdc30513a08"
+ }
+ Frame {
+ msec: 3024
+ hash: "41fe34c5246a438886e85fdc30513a08"
+ }
+ Frame {
+ msec: 3040
+ hash: "41fe34c5246a438886e85fdc30513a08"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3056
+ hash: "41fe34c5246a438886e85fdc30513a08"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3072
+ hash: "db7bd05984a1ca713382f109780b8e5d"
+ }
+ Frame {
+ msec: 3088
+ hash: "db7bd05984a1ca713382f109780b8e5d"
+ }
+ Frame {
+ msec: 3104
+ hash: "db7bd05984a1ca713382f109780b8e5d"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3120
+ hash: "db7bd05984a1ca713382f109780b8e5d"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 33554432
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3136
+ hash: "db7bd05984a1ca713382f109780b8e5d"
+ }
+ Frame {
+ msec: 3152
+ hash: "db7bd05984a1ca713382f109780b8e5d"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 33554432
+ text: "49"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3168
+ hash: "85bed6c44d017fb45591ee821a6e8c82"
+ }
+ Frame {
+ msec: 3184
+ hash: "85bed6c44d017fb45591ee821a6e8c82"
+ }
+ Frame {
+ msec: 3200
+ hash: "85bed6c44d017fb45591ee821a6e8c82"
+ }
+ Frame {
+ msec: 3216
+ hash: "85bed6c44d017fb45591ee821a6e8c82"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 33554432
+ text: "49"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3232
+ hash: "85bed6c44d017fb45591ee821a6e8c82"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3248
+ hash: "70e09c15e0db15327b278c20508cd77e"
+ }
+ Frame {
+ msec: 3264
+ hash: "70e09c15e0db15327b278c20508cd77e"
+ }
+ Frame {
+ msec: 3280
+ hash: "70e09c15e0db15327b278c20508cd77e"
+ }
+ Frame {
+ msec: 3296
+ hash: "70e09c15e0db15327b278c20508cd77e"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3312
+ hash: "70e09c15e0db15327b278c20508cd77e"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3328
+ hash: "7bdf47aad57a3e53683819927a9ba6f7"
+ }
+ Frame {
+ msec: 3344
+ hash: "7bdf47aad57a3e53683819927a9ba6f7"
+ }
+ Frame {
+ msec: 3360
+ hash: "7bdf47aad57a3e53683819927a9ba6f7"
+ }
+ Frame {
+ msec: 3376
+ hash: "7bdf47aad57a3e53683819927a9ba6f7"
+ }
+ Frame {
+ msec: 3392
+ hash: "7bdf47aad57a3e53683819927a9ba6f7"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3408
+ hash: "7bdf47aad57a3e53683819927a9ba6f7"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3424
+ hash: "cd302294ea4a6015f4093e3ce0640a15"
+ }
+ Frame {
+ msec: 3440
+ hash: "cd302294ea4a6015f4093e3ce0640a15"
+ }
+ Frame {
+ msec: 3456
+ hash: "cd302294ea4a6015f4093e3ce0640a15"
+ }
+ Frame {
+ msec: 3472
+ hash: "cd302294ea4a6015f4093e3ce0640a15"
+ }
+ Frame {
+ msec: 3488
+ hash: "cd302294ea4a6015f4093e3ce0640a15"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 78
+ modifiers: 0
+ text: "6e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3504
+ hash: "6679b8bffbcf389e1a56e9e494c9041c"
+ }
+ Frame {
+ msec: 3520
+ hash: "6679b8bffbcf389e1a56e9e494c9041c"
+ }
+ Frame {
+ msec: 3536
+ hash: "6679b8bffbcf389e1a56e9e494c9041c"
+ }
+ Frame {
+ msec: 3552
+ hash: "6679b8bffbcf389e1a56e9e494c9041c"
+ }
+ Frame {
+ msec: 3568
+ hash: "6679b8bffbcf389e1a56e9e494c9041c"
+ }
+ Frame {
+ msec: 3584
+ hash: "6679b8bffbcf389e1a56e9e494c9041c"
+ }
+ Key {
+ type: 7
+ key: 78
+ modifiers: 0
+ text: "6e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3600
+ hash: "6679b8bffbcf389e1a56e9e494c9041c"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3616
+ hash: "6cf8306437867645e5459cd4c9733ef7"
+ }
+ Frame {
+ msec: 3632
+ hash: "6cf8306437867645e5459cd4c9733ef7"
+ }
+ Frame {
+ msec: 3648
+ hash: "6cf8306437867645e5459cd4c9733ef7"
+ }
+ Frame {
+ msec: 3664
+ hash: "6cf8306437867645e5459cd4c9733ef7"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3680
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3696
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3712
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3728
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3744
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3760
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3776
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3792
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3808
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3824
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3840
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3856
+ image: "usingMultilineEdit.4.png"
+ }
+ Frame {
+ msec: 3872
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3888
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3904
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3920
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3936
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3952
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Frame {
+ msec: 3968
+ hash: "31c0880fb6b8995881f0983685c51c81"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3984
+ hash: "34c2a53d8852e17ab2b7990eb6156343"
+ }
+ Frame {
+ msec: 4000
+ hash: "34c2a53d8852e17ab2b7990eb6156343"
+ }
+ Frame {
+ msec: 4016
+ hash: "34c2a53d8852e17ab2b7990eb6156343"
+ }
+ Frame {
+ msec: 4032
+ hash: "34c2a53d8852e17ab2b7990eb6156343"
+ }
+ Frame {
+ msec: 4048
+ hash: "34c2a53d8852e17ab2b7990eb6156343"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4064
+ hash: "75a0e73d34f90ca26b4c7e94a7a6ecd2"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4080
+ hash: "75a0e73d34f90ca26b4c7e94a7a6ecd2"
+ }
+ Frame {
+ msec: 4096
+ hash: "75a0e73d34f90ca26b4c7e94a7a6ecd2"
+ }
+ Frame {
+ msec: 4112
+ hash: "75a0e73d34f90ca26b4c7e94a7a6ecd2"
+ }
+ Frame {
+ msec: 4128
+ hash: "75a0e73d34f90ca26b4c7e94a7a6ecd2"
+ }
+ Key {
+ type: 6
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4144
+ hash: "296a65279cec34eb93083f3938bf9b16"
+ }
+ Frame {
+ msec: 4160
+ hash: "296a65279cec34eb93083f3938bf9b16"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4176
+ hash: "296a65279cec34eb93083f3938bf9b16"
+ }
+ Frame {
+ msec: 4192
+ hash: "296a65279cec34eb93083f3938bf9b16"
+ }
+ Frame {
+ msec: 4208
+ hash: "296a65279cec34eb93083f3938bf9b16"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4224
+ hash: "902a4133742f9a99195a059f7f6b91df"
+ }
+ Frame {
+ msec: 4240
+ hash: "902a4133742f9a99195a059f7f6b91df"
+ }
+ Key {
+ type: 7
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4256
+ hash: "902a4133742f9a99195a059f7f6b91df"
+ }
+ Frame {
+ msec: 4272
+ hash: "902a4133742f9a99195a059f7f6b91df"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4288
+ hash: "902a4133742f9a99195a059f7f6b91df"
+ }
+ Frame {
+ msec: 4304
+ hash: "902a4133742f9a99195a059f7f6b91df"
+ }
+ Frame {
+ msec: 4320
+ hash: "902a4133742f9a99195a059f7f6b91df"
+ }
+ Frame {
+ msec: 4336
+ hash: "902a4133742f9a99195a059f7f6b91df"
+ }
+ Frame {
+ msec: 4352
+ hash: "902a4133742f9a99195a059f7f6b91df"
+ }
+ Frame {
+ msec: 4368
+ hash: "902a4133742f9a99195a059f7f6b91df"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4384
+ hash: "7e92966a300a81511c5fcb9e447b9029"
+ }
+ Frame {
+ msec: 4400
+ hash: "7e92966a300a81511c5fcb9e447b9029"
+ }
+ Frame {
+ msec: 4416
+ hash: "7e92966a300a81511c5fcb9e447b9029"
+ }
+ Frame {
+ msec: 4432
+ hash: "7e92966a300a81511c5fcb9e447b9029"
+ }
+ Frame {
+ msec: 4448
+ hash: "7e92966a300a81511c5fcb9e447b9029"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4464
+ hash: "7e92966a300a81511c5fcb9e447b9029"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4480
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4496
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4512
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4528
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4544
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4560
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4576
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4592
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4608
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4624
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4640
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4656
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4672
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4688
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4704
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4720
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4736
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4752
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4768
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4784
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4800
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Frame {
+ msec: 4816
+ image: "usingMultilineEdit.5.png"
+ }
+ Frame {
+ msec: 4832
+ hash: "d22869235a5e4689db64d97f0b5af6c0"
+ }
+ Key {
+ type: 6
+ key: 63
+ modifiers: 33554432
+ text: "3f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4848
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 4864
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 4880
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 4896
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 4912
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 4928
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 4944
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Key {
+ type: 7
+ key: 63
+ modifiers: 33554432
+ text: "3f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4960
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 4976
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 4992
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5008
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5024
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5040
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5056
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5072
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5088
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5104
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5120
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5136
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5152
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5168
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5184
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5200
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5216
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5232
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5248
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5264
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5280
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5296
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5312
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5328
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5344
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5360
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5376
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5392
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5408
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5424
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5440
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5456
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5472
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5488
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5504
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5520
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5536
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5552
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5568
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5584
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5600
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5616
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5632
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5648
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5664
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5680
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5696
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5712
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5728
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5744
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Frame {
+ msec: 5760
+ hash: "8153431eabfb3a6916aa37319d9fd379"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 48; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5776
+ image: "usingMultilineEdit.6.png"
+ }
+ Frame {
+ msec: 5792
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Frame {
+ msec: 5808
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Frame {
+ msec: 5824
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5840
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5856
+ hash: "4b0c9ae119bd6c9f6331cbefc53afa3d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5872
+ hash: "4b0c9ae119bd6c9f6331cbefc53afa3d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 41
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5888
+ hash: "e6b3b80f052fec9f67b02a7f36676b5d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5904
+ hash: "37d1ee8e1c914d499dd7920576dadcae"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 58; y: 52
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5920
+ hash: "37d1ee8e1c914d499dd7920576dadcae"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 69
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5936
+ hash: "34f7bd61afb22009181d79841bc59fa1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 62; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5952
+ hash: "23ea9471d132daab6193b0809c8bd98e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 86
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 90
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5968
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 97
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5984
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 101
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 105
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6000
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 111
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6016
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 114
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 116
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6032
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 122
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6048
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 124
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 128
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6064
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 130
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 132
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6080
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 134
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 137
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6096
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 138
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 140
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6112
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 141
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 144
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6128
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 148
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6144
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 149
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 151
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6160
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 153
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6176
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 155
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6192
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Frame {
+ msec: 6208
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Frame {
+ msec: 6224
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Frame {
+ msec: 6240
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Frame {
+ msec: 6256
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6272
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 152
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 149
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6288
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 139
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6304
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 126
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6320
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 63; y: 98
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6336
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6352
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 72
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6368
+ hash: "e35d1c5a15474388727942b41fdcec0f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6384
+ hash: "1b24d0c17446cfadc351127f842ac5fd"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6400
+ hash: "1b24d0c17446cfadc351127f842ac5fd"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6416
+ hash: "f0b06fefc9e18b836ffe081215efe584"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 6
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6432
+ hash: "9ed30cb00df82cce04e8c8b76d056013"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -2
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -9
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6448
+ hash: "4d37a34962e019f47201da6baddebca8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: -23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6464
+ hash: "cd83055403901b1a7a99dfda3798ca7e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6480
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6496
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6512
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6528
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6544
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6560
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6576
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6592
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Frame {
+ msec: 6608
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Frame {
+ msec: 6624
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Frame {
+ msec: 6640
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Frame {
+ msec: 6656
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Frame {
+ msec: 6672
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6688
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: -42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6704
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: -39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6720
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: -28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6736
+ image: "usingMultilineEdit.7.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -25
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6752
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: -18
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: -14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6768
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: -10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -8
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6784
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -6
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: -3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6800
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: -1
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 0
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6816
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 2
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6832
+ hash: "71cdc5a9144234556630430361779ff7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 5
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 7
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6848
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 8
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6864
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6880
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 55; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6896
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Frame {
+ msec: 6912
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Frame {
+ msec: 6928
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Frame {
+ msec: 6944
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Frame {
+ msec: 6960
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Frame {
+ msec: 6976
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Frame {
+ msec: 6992
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Frame {
+ msec: 7008
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Frame {
+ msec: 7024
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Frame {
+ msec: 7040
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Frame {
+ msec: 7056
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Frame {
+ msec: 7072
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Frame {
+ msec: 7088
+ hash: "0fba30df8b6cac2f911fbd2b7c48fca6"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 59; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7104
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7120
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7136
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7152
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7168
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 59; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7184
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7200
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7216
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7232
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7248
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7264
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7280
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7296
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7312
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7328
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7344
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7360
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7376
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7392
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7408
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7424
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7440
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7456
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7472
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7488
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7504
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7520
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7536
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7552
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Frame {
+ msec: 7568
+ hash: "df53c57d83cf38d96893f379d8a0c1a7"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7584
+ hash: "bdc721eb51436b121826d4163cbf596f"
+ }
+ Frame {
+ msec: 7600
+ hash: "bdc721eb51436b121826d4163cbf596f"
+ }
+ Frame {
+ msec: 7616
+ hash: "bdc721eb51436b121826d4163cbf596f"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7632
+ hash: "bdc721eb51436b121826d4163cbf596f"
+ }
+ Frame {
+ msec: 7648
+ hash: "bdc721eb51436b121826d4163cbf596f"
+ }
+ Frame {
+ msec: 7664
+ hash: "bdc721eb51436b121826d4163cbf596f"
+ }
+ Frame {
+ msec: 7680
+ hash: "bdc721eb51436b121826d4163cbf596f"
+ }
+ Frame {
+ msec: 7696
+ image: "usingMultilineEdit.8.png"
+ }
+ Frame {
+ msec: 7712
+ hash: "bdc721eb51436b121826d4163cbf596f"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7728
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Frame {
+ msec: 7744
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Frame {
+ msec: 7760
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Frame {
+ msec: 7776
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Frame {
+ msec: 7792
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Frame {
+ msec: 7808
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Frame {
+ msec: 7824
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Frame {
+ msec: 7840
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Frame {
+ msec: 7856
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Frame {
+ msec: 7872
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Frame {
+ msec: 7888
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Frame {
+ msec: 7904
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Frame {
+ msec: 7920
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Frame {
+ msec: 7936
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Frame {
+ msec: 7952
+ hash: "7d378c1c1e54d2d13b602f1cf1a56a2f"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 7968
+ hash: "bc028efd0fc3d999269d047fe4d64e27"
+ }
+ Frame {
+ msec: 7984
+ hash: "bc028efd0fc3d999269d047fe4d64e27"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8000
+ hash: "b18fe0d9cfed62d53e152e3f294dc8b3"
+ }
+ Frame {
+ msec: 8016
+ hash: "b18fe0d9cfed62d53e152e3f294dc8b3"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8032
+ hash: "eca1a9d5eed543b913d1d2b19cef3286"
+ }
+ Frame {
+ msec: 8048
+ hash: "eca1a9d5eed543b913d1d2b19cef3286"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8064
+ hash: "01f1ac2c199086a701a784a3a47fdb71"
+ }
+ Frame {
+ msec: 8080
+ hash: "01f1ac2c199086a701a784a3a47fdb71"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8096
+ hash: "01f1ac2c199086a701a784a3a47fdb71"
+ }
+ Frame {
+ msec: 8112
+ hash: "01f1ac2c199086a701a784a3a47fdb71"
+ }
+ Frame {
+ msec: 8128
+ hash: "01f1ac2c199086a701a784a3a47fdb71"
+ }
+ Frame {
+ msec: 8144
+ hash: "01f1ac2c199086a701a784a3a47fdb71"
+ }
+ Frame {
+ msec: 8160
+ hash: "01f1ac2c199086a701a784a3a47fdb71"
+ }
+ Frame {
+ msec: 8176
+ hash: "01f1ac2c199086a701a784a3a47fdb71"
+ }
+ Frame {
+ msec: 8192
+ hash: "01f1ac2c199086a701a784a3a47fdb71"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8208
+ hash: "c8254066bc7b4bae0934425226d59a2b"
+ }
+ Frame {
+ msec: 8224
+ hash: "c8254066bc7b4bae0934425226d59a2b"
+ }
+ Frame {
+ msec: 8240
+ hash: "c8254066bc7b4bae0934425226d59a2b"
+ }
+ Frame {
+ msec: 8256
+ hash: "c8254066bc7b4bae0934425226d59a2b"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8272
+ hash: "c8254066bc7b4bae0934425226d59a2b"
+ }
+ Frame {
+ msec: 8288
+ hash: "c8254066bc7b4bae0934425226d59a2b"
+ }
+ Frame {
+ msec: 8304
+ hash: "c8254066bc7b4bae0934425226d59a2b"
+ }
+ Frame {
+ msec: 8320
+ hash: "c8254066bc7b4bae0934425226d59a2b"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8336
+ hash: "7bd48f4441ba1971bf49cb5b9e174935"
+ }
+ Frame {
+ msec: 8352
+ hash: "7bd48f4441ba1971bf49cb5b9e174935"
+ }
+ Frame {
+ msec: 8368
+ hash: "7bd48f4441ba1971bf49cb5b9e174935"
+ }
+ Frame {
+ msec: 8384
+ hash: "7bd48f4441ba1971bf49cb5b9e174935"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8400
+ hash: "7bd48f4441ba1971bf49cb5b9e174935"
+ }
+ Frame {
+ msec: 8416
+ hash: "7bd48f4441ba1971bf49cb5b9e174935"
+ }
+ Frame {
+ msec: 8432
+ hash: "7bd48f4441ba1971bf49cb5b9e174935"
+ }
+ Frame {
+ msec: 8448
+ hash: "7bd48f4441ba1971bf49cb5b9e174935"
+ }
+ Frame {
+ msec: 8464
+ hash: "7bd48f4441ba1971bf49cb5b9e174935"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8480
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8496
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8512
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8528
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8544
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8560
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8576
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8592
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8608
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8624
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8640
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8656
+ image: "usingMultilineEdit.9.png"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8672
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8688
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8704
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8720
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8736
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8752
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8768
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8784
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8800
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8816
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8832
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8848
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8864
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8880
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8896
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8912
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8928
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8944
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8960
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8976
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 8992
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9008
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9024
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9040
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9056
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9072
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9088
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9104
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9120
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9136
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9152
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9168
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9184
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9200
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 70; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9216
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9232
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 74
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9248
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 76
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9264
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 77
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9280
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 70; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9296
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9312
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9328
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9344
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9360
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9376
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9392
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9408
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9424
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Frame {
+ msec: 9440
+ hash: "edf44121a60ee9d975954863c2ed848c"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 71; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9456
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9472
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9488
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9504
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9520
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9536
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 71; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9552
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9568
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9584
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9600
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9616
+ image: "usingMultilineEdit.10.png"
+ }
+ Frame {
+ msec: 9632
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9648
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9664
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 9680
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9696
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9712
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9728
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9744
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9760
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9776
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9792
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9808
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9824
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9840
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9856
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9872
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9888
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9904
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9920
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9936
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9952
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9968
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 9984
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10000
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10016
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10032
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10048
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10064
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10080
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10096
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10112
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Frame {
+ msec: 10128
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Frame {
+ msec: 10144
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Frame {
+ msec: 10160
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Frame {
+ msec: 10176
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Frame {
+ msec: 10192
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Frame {
+ msec: 10208
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Frame {
+ msec: 10224
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10240
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Frame {
+ msec: 10256
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Frame {
+ msec: 10272
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Frame {
+ msec: 10288
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Frame {
+ msec: 10304
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Frame {
+ msec: 10320
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Frame {
+ msec: 10336
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Frame {
+ msec: 10352
+ hash: "956f4f8cfca76cfee9babea29b0715ea"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10368
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10384
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10400
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10416
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10432
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10448
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10464
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10480
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10496
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10512
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10528
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10544
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10560
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10576
+ image: "usingMultilineEdit.11.png"
+ }
+ Frame {
+ msec: 10592
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10608
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10624
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10640
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10656
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10672
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10688
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10704
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10720
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10736
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10752
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10768
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10784
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10800
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10816
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10832
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10848
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10864
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10880
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10896
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10912
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10928
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10944
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10960
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10976
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 10992
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11008
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11024
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11040
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11056
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11072
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11088
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11104
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11120
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11136
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11152
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11168
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11184
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11200
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11216
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11232
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11248
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11264
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11280
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11296
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11312
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11328
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11344
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11360
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11376
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11392
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11408
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11424
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11440
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11456
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11472
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11488
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11504
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11520
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11536
+ image: "usingMultilineEdit.12.png"
+ }
+ Frame {
+ msec: 11552
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11568
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11584
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11600
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+ Frame {
+ msec: 11616
+ hash: "b58ab2c31823e7b0be144fba3e77368a"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png
index ec65f494b6..d63f753a4c 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png
index ec65f494b6..bb7daa3c42 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png
index ec65f494b6..bcad242279 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png
index ec65f494b6..7be45e77aa 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png
index ec65f494b6..42f7f51a05 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png
index ec65f494b6..147632a236 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png
index ec65f494b6..d624a719d1 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.7.png
new file mode 100644
index 0000000000..d624a719d1
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml
index 1f5b365470..72f68e7a56 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml
@@ -6,7 +6,7 @@ VisualTest {
}
Frame {
msec: 16
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ image: "wrap.0.png"
}
Key {
type: 6
@@ -18,7 +18,7 @@ VisualTest {
}
Frame {
msec: 32
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3e34b9a8c5df08caa18f37289c25138f"
}
Key {
type: 7
@@ -30,11 +30,11 @@ VisualTest {
}
Frame {
msec: 48
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3e34b9a8c5df08caa18f37289c25138f"
}
Frame {
msec: 64
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3e34b9a8c5df08caa18f37289c25138f"
}
Key {
type: 7
@@ -46,11 +46,11 @@ VisualTest {
}
Frame {
msec: 80
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3e34b9a8c5df08caa18f37289c25138f"
}
Frame {
msec: 96
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3e34b9a8c5df08caa18f37289c25138f"
}
Key {
type: 6
@@ -62,15 +62,15 @@ VisualTest {
}
Frame {
msec: 112
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4242081446f2a3122bbd4f8c03a67e5c"
}
Frame {
msec: 128
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4242081446f2a3122bbd4f8c03a67e5c"
}
Frame {
msec: 144
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4242081446f2a3122bbd4f8c03a67e5c"
}
Key {
type: 6
@@ -82,15 +82,15 @@ VisualTest {
}
Frame {
msec: 160
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "79c4a9defe89f99b3f6b3c25bd81fc7e"
}
Frame {
msec: 176
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "79c4a9defe89f99b3f6b3c25bd81fc7e"
}
Frame {
msec: 192
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "79c4a9defe89f99b3f6b3c25bd81fc7e"
}
Key {
type: 7
@@ -102,11 +102,11 @@ VisualTest {
}
Frame {
msec: 208
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "79c4a9defe89f99b3f6b3c25bd81fc7e"
}
Frame {
msec: 224
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "79c4a9defe89f99b3f6b3c25bd81fc7e"
}
Key {
type: 6
@@ -118,7 +118,7 @@ VisualTest {
}
Frame {
msec: 240
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0bee22de7793974cadec12dfb5df16aa"
}
Key {
type: 7
@@ -130,19 +130,19 @@ VisualTest {
}
Frame {
msec: 256
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0bee22de7793974cadec12dfb5df16aa"
}
Frame {
msec: 272
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0bee22de7793974cadec12dfb5df16aa"
}
Frame {
msec: 288
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0bee22de7793974cadec12dfb5df16aa"
}
Frame {
msec: 304
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0bee22de7793974cadec12dfb5df16aa"
}
Key {
type: 7
@@ -154,11 +154,11 @@ VisualTest {
}
Frame {
msec: 320
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0bee22de7793974cadec12dfb5df16aa"
}
Frame {
msec: 336
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0bee22de7793974cadec12dfb5df16aa"
}
Key {
type: 6
@@ -170,19 +170,19 @@ VisualTest {
}
Frame {
msec: 352
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "07393d1c1bb6da436700881ebcd38195"
}
Frame {
msec: 368
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "07393d1c1bb6da436700881ebcd38195"
}
Frame {
msec: 384
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "07393d1c1bb6da436700881ebcd38195"
}
Frame {
msec: 400
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "07393d1c1bb6da436700881ebcd38195"
}
Key {
type: 7
@@ -194,19 +194,19 @@ VisualTest {
}
Frame {
msec: 416
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "07393d1c1bb6da436700881ebcd38195"
}
Frame {
msec: 432
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "07393d1c1bb6da436700881ebcd38195"
}
Frame {
msec: 448
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "07393d1c1bb6da436700881ebcd38195"
}
Frame {
msec: 464
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "07393d1c1bb6da436700881ebcd38195"
}
Key {
type: 6
@@ -218,19 +218,19 @@ VisualTest {
}
Frame {
msec: 480
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b12a4550ae068d157d340c008047d6f1"
}
Frame {
msec: 496
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b12a4550ae068d157d340c008047d6f1"
}
Frame {
msec: 512
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b12a4550ae068d157d340c008047d6f1"
}
Frame {
msec: 528
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b12a4550ae068d157d340c008047d6f1"
}
Key {
type: 6
@@ -250,23 +250,23 @@ VisualTest {
}
Frame {
msec: 544
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f291de0963549b92d607f38d2d08c551"
}
Frame {
msec: 560
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f291de0963549b92d607f38d2d08c551"
}
Frame {
msec: 576
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f291de0963549b92d607f38d2d08c551"
}
Frame {
msec: 592
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f291de0963549b92d607f38d2d08c551"
}
Frame {
msec: 608
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "f291de0963549b92d607f38d2d08c551"
}
Key {
type: 7
@@ -286,19 +286,19 @@ VisualTest {
}
Frame {
msec: 624
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b7eedae59cc521aa8222596cd97bf129"
}
Frame {
msec: 640
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b7eedae59cc521aa8222596cd97bf129"
}
Frame {
msec: 656
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b7eedae59cc521aa8222596cd97bf129"
}
Frame {
msec: 672
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b7eedae59cc521aa8222596cd97bf129"
}
Key {
type: 7
@@ -310,11 +310,11 @@ VisualTest {
}
Frame {
msec: 688
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b7eedae59cc521aa8222596cd97bf129"
}
Frame {
msec: 704
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b7eedae59cc521aa8222596cd97bf129"
}
Key {
type: 6
@@ -326,23 +326,23 @@ VisualTest {
}
Frame {
msec: 720
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "98ef281d984841075f2fc82cebcba3a9"
}
Frame {
msec: 736
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "98ef281d984841075f2fc82cebcba3a9"
}
Frame {
msec: 752
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "98ef281d984841075f2fc82cebcba3a9"
}
Frame {
msec: 768
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "98ef281d984841075f2fc82cebcba3a9"
}
Frame {
msec: 784
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "98ef281d984841075f2fc82cebcba3a9"
}
Key {
type: 7
@@ -354,7 +354,7 @@ VisualTest {
}
Frame {
msec: 800
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "98ef281d984841075f2fc82cebcba3a9"
}
Key {
type: 6
@@ -366,15 +366,15 @@ VisualTest {
}
Frame {
msec: 816
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e7b8f24ba55765e2fc1f386d510b402f"
}
Frame {
msec: 832
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e7b8f24ba55765e2fc1f386d510b402f"
}
Frame {
msec: 848
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e7b8f24ba55765e2fc1f386d510b402f"
}
Key {
type: 7
@@ -386,15 +386,15 @@ VisualTest {
}
Frame {
msec: 864
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e7b8f24ba55765e2fc1f386d510b402f"
}
Frame {
msec: 880
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e7b8f24ba55765e2fc1f386d510b402f"
}
Frame {
msec: 896
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "e7b8f24ba55765e2fc1f386d510b402f"
}
Key {
type: 6
@@ -406,27 +406,27 @@ VisualTest {
}
Frame {
msec: 912
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "38a3062cb4f23993416f83ff6acbe189"
}
Frame {
msec: 928
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "38a3062cb4f23993416f83ff6acbe189"
}
Frame {
msec: 944
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "38a3062cb4f23993416f83ff6acbe189"
}
Frame {
msec: 960
- image: "wrap.0.png"
+ hash: "38a3062cb4f23993416f83ff6acbe189"
}
Frame {
msec: 976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ image: "wrap.1.png"
}
Frame {
msec: 992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "38a3062cb4f23993416f83ff6acbe189"
}
Key {
type: 6
@@ -446,23 +446,23 @@ VisualTest {
}
Frame {
msec: 1008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "daef9995a008f0ca672adc98315a6b9f"
}
Frame {
msec: 1024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "daef9995a008f0ca672adc98315a6b9f"
}
Frame {
msec: 1040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "daef9995a008f0ca672adc98315a6b9f"
}
Frame {
msec: 1056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "daef9995a008f0ca672adc98315a6b9f"
}
Frame {
msec: 1072
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "daef9995a008f0ca672adc98315a6b9f"
}
Key {
type: 7
@@ -474,31 +474,31 @@ VisualTest {
}
Frame {
msec: 1088
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "daef9995a008f0ca672adc98315a6b9f"
}
Frame {
msec: 1104
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "daef9995a008f0ca672adc98315a6b9f"
}
Frame {
msec: 1120
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "daef9995a008f0ca672adc98315a6b9f"
}
Frame {
msec: 1136
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "daef9995a008f0ca672adc98315a6b9f"
}
Frame {
msec: 1152
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "daef9995a008f0ca672adc98315a6b9f"
}
Frame {
msec: 1168
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "daef9995a008f0ca672adc98315a6b9f"
}
Frame {
msec: 1184
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "daef9995a008f0ca672adc98315a6b9f"
}
Key {
type: 6
@@ -510,23 +510,23 @@ VisualTest {
}
Frame {
msec: 1200
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "da27d35f241ccc7c1ee2832e491fa726"
}
Frame {
msec: 1216
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "da27d35f241ccc7c1ee2832e491fa726"
}
Frame {
msec: 1232
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "da27d35f241ccc7c1ee2832e491fa726"
}
Frame {
msec: 1248
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "da27d35f241ccc7c1ee2832e491fa726"
}
Frame {
msec: 1264
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "da27d35f241ccc7c1ee2832e491fa726"
}
Key {
type: 7
@@ -546,11 +546,11 @@ VisualTest {
}
Frame {
msec: 1280
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7136f5cfcca4a86b8764667895efa813"
}
Frame {
msec: 1296
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "7136f5cfcca4a86b8764667895efa813"
}
Key {
type: 6
@@ -562,15 +562,15 @@ VisualTest {
}
Frame {
msec: 1312
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b99aec3d97f4442378a18ac88d50b97d"
}
Frame {
msec: 1328
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b99aec3d97f4442378a18ac88d50b97d"
}
Frame {
msec: 1344
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b99aec3d97f4442378a18ac88d50b97d"
}
Key {
type: 7
@@ -582,11 +582,11 @@ VisualTest {
}
Frame {
msec: 1360
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b99aec3d97f4442378a18ac88d50b97d"
}
Frame {
msec: 1376
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b99aec3d97f4442378a18ac88d50b97d"
}
Key {
type: 7
@@ -598,19 +598,19 @@ VisualTest {
}
Frame {
msec: 1392
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b99aec3d97f4442378a18ac88d50b97d"
}
Frame {
msec: 1408
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b99aec3d97f4442378a18ac88d50b97d"
}
Frame {
msec: 1424
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b99aec3d97f4442378a18ac88d50b97d"
}
Frame {
msec: 1440
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b99aec3d97f4442378a18ac88d50b97d"
}
Key {
type: 6
@@ -622,23 +622,23 @@ VisualTest {
}
Frame {
msec: 1456
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c32293903502fd1964cfbc10515b2ef7"
}
Frame {
msec: 1472
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c32293903502fd1964cfbc10515b2ef7"
}
Frame {
msec: 1488
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c32293903502fd1964cfbc10515b2ef7"
}
Frame {
msec: 1504
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c32293903502fd1964cfbc10515b2ef7"
}
Frame {
msec: 1520
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c32293903502fd1964cfbc10515b2ef7"
}
Key {
type: 7
@@ -650,11 +650,11 @@ VisualTest {
}
Frame {
msec: 1536
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c32293903502fd1964cfbc10515b2ef7"
}
Frame {
msec: 1552
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "c32293903502fd1964cfbc10515b2ef7"
}
Key {
type: 6
@@ -666,23 +666,23 @@ VisualTest {
}
Frame {
msec: 1568
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "47371eb93a2a8fac7afb53990fac9130"
}
Frame {
msec: 1584
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "47371eb93a2a8fac7afb53990fac9130"
}
Frame {
msec: 1600
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "47371eb93a2a8fac7afb53990fac9130"
}
Frame {
msec: 1616
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "47371eb93a2a8fac7afb53990fac9130"
}
Frame {
msec: 1632
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "47371eb93a2a8fac7afb53990fac9130"
}
Key {
type: 6
@@ -702,23 +702,23 @@ VisualTest {
}
Frame {
msec: 1648
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "5c22c2566b437497dd6fd908135ec39e"
}
Frame {
msec: 1664
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "5c22c2566b437497dd6fd908135ec39e"
}
Frame {
msec: 1680
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "5c22c2566b437497dd6fd908135ec39e"
}
Frame {
msec: 1696
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "5c22c2566b437497dd6fd908135ec39e"
}
Frame {
msec: 1712
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "5c22c2566b437497dd6fd908135ec39e"
}
Key {
type: 6
@@ -730,15 +730,15 @@ VisualTest {
}
Frame {
msec: 1728
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "29b4e69de4c83ccdee6ef116ab3785ee"
}
Frame {
msec: 1744
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "29b4e69de4c83ccdee6ef116ab3785ee"
}
Frame {
msec: 1760
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "29b4e69de4c83ccdee6ef116ab3785ee"
}
Key {
type: 7
@@ -750,7 +750,7 @@ VisualTest {
}
Frame {
msec: 1776
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "29b4e69de4c83ccdee6ef116ab3785ee"
}
Key {
type: 6
@@ -762,11 +762,11 @@ VisualTest {
}
Frame {
msec: 1792
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d"
}
Frame {
msec: 1808
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d"
}
Key {
type: 7
@@ -778,19 +778,19 @@ VisualTest {
}
Frame {
msec: 1824
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d"
}
Frame {
msec: 1840
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d"
}
Frame {
msec: 1856
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d"
}
Frame {
msec: 1872
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d"
}
Key {
type: 7
@@ -802,23 +802,23 @@ VisualTest {
}
Frame {
msec: 1888
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d"
}
Frame {
msec: 1904
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d"
}
Frame {
msec: 1920
- image: "wrap.1.png"
+ hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d"
}
Frame {
msec: 1936
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ image: "wrap.2.png"
}
Frame {
msec: 1952
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d"
}
Key {
type: 6
@@ -830,27 +830,27 @@ VisualTest {
}
Frame {
msec: 1968
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2a43f5ac0c7bdf38e367b0cdb0bccea9"
}
Frame {
msec: 1984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2a43f5ac0c7bdf38e367b0cdb0bccea9"
}
Frame {
msec: 2000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2a43f5ac0c7bdf38e367b0cdb0bccea9"
}
Frame {
msec: 2016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2a43f5ac0c7bdf38e367b0cdb0bccea9"
}
Frame {
msec: 2032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2a43f5ac0c7bdf38e367b0cdb0bccea9"
}
Frame {
msec: 2048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2a43f5ac0c7bdf38e367b0cdb0bccea9"
}
Key {
type: 6
@@ -862,7 +862,7 @@ VisualTest {
}
Frame {
msec: 2064
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0f28c7855c7fde3390d16a2638e23bd0"
}
Key {
type: 7
@@ -874,15 +874,15 @@ VisualTest {
}
Frame {
msec: 2080
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0f28c7855c7fde3390d16a2638e23bd0"
}
Frame {
msec: 2096
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0f28c7855c7fde3390d16a2638e23bd0"
}
Frame {
msec: 2112
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0f28c7855c7fde3390d16a2638e23bd0"
}
Key {
type: 7
@@ -894,27 +894,27 @@ VisualTest {
}
Frame {
msec: 2128
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0f28c7855c7fde3390d16a2638e23bd0"
}
Frame {
msec: 2144
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0f28c7855c7fde3390d16a2638e23bd0"
}
Frame {
msec: 2160
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0f28c7855c7fde3390d16a2638e23bd0"
}
Frame {
msec: 2176
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0f28c7855c7fde3390d16a2638e23bd0"
}
Frame {
msec: 2192
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0f28c7855c7fde3390d16a2638e23bd0"
}
Frame {
msec: 2208
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0f28c7855c7fde3390d16a2638e23bd0"
}
Key {
type: 6
@@ -926,23 +926,23 @@ VisualTest {
}
Frame {
msec: 2224
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b56e002e5eddde0245f7ad4c75339968"
}
Frame {
msec: 2240
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b56e002e5eddde0245f7ad4c75339968"
}
Frame {
msec: 2256
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b56e002e5eddde0245f7ad4c75339968"
}
Frame {
msec: 2272
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b56e002e5eddde0245f7ad4c75339968"
}
Frame {
msec: 2288
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b56e002e5eddde0245f7ad4c75339968"
}
Key {
type: 6
@@ -954,7 +954,7 @@ VisualTest {
}
Frame {
msec: 2304
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0bdd50e3c8b382b464c82d791ae6c1e5"
}
Key {
type: 7
@@ -966,15 +966,15 @@ VisualTest {
}
Frame {
msec: 2320
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0bdd50e3c8b382b464c82d791ae6c1e5"
}
Frame {
msec: 2336
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0bdd50e3c8b382b464c82d791ae6c1e5"
}
Frame {
msec: 2352
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "0bdd50e3c8b382b464c82d791ae6c1e5"
}
Key {
type: 6
@@ -986,11 +986,11 @@ VisualTest {
}
Frame {
msec: 2368
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b61b475b84c6e6a149f6262fc560b741"
}
Frame {
msec: 2384
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b61b475b84c6e6a149f6262fc560b741"
}
Key {
type: 7
@@ -1002,15 +1002,15 @@ VisualTest {
}
Frame {
msec: 2400
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b61b475b84c6e6a149f6262fc560b741"
}
Frame {
msec: 2416
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b61b475b84c6e6a149f6262fc560b741"
}
Frame {
msec: 2432
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b61b475b84c6e6a149f6262fc560b741"
}
Key {
type: 7
@@ -1022,15 +1022,15 @@ VisualTest {
}
Frame {
msec: 2448
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b61b475b84c6e6a149f6262fc560b741"
}
Frame {
msec: 2464
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b61b475b84c6e6a149f6262fc560b741"
}
Frame {
msec: 2480
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b61b475b84c6e6a149f6262fc560b741"
}
Key {
type: 6
@@ -1042,19 +1042,19 @@ VisualTest {
}
Frame {
msec: 2496
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1acd6152f317a6c8f6aca52ccf62a8c6"
}
Frame {
msec: 2512
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1acd6152f317a6c8f6aca52ccf62a8c6"
}
Frame {
msec: 2528
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1acd6152f317a6c8f6aca52ccf62a8c6"
}
Frame {
msec: 2544
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1acd6152f317a6c8f6aca52ccf62a8c6"
}
Key {
type: 7
@@ -1066,27 +1066,27 @@ VisualTest {
}
Frame {
msec: 2560
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1acd6152f317a6c8f6aca52ccf62a8c6"
}
Frame {
msec: 2576
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1acd6152f317a6c8f6aca52ccf62a8c6"
}
Frame {
msec: 2592
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1acd6152f317a6c8f6aca52ccf62a8c6"
}
Frame {
msec: 2608
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1acd6152f317a6c8f6aca52ccf62a8c6"
}
Frame {
msec: 2624
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1acd6152f317a6c8f6aca52ccf62a8c6"
}
Frame {
msec: 2640
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "1acd6152f317a6c8f6aca52ccf62a8c6"
}
Key {
type: 6
@@ -1098,19 +1098,19 @@ VisualTest {
}
Frame {
msec: 2656
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "90ab887de5fbf34f4d45e13c4b211490"
}
Frame {
msec: 2672
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "90ab887de5fbf34f4d45e13c4b211490"
}
Frame {
msec: 2688
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "90ab887de5fbf34f4d45e13c4b211490"
}
Frame {
msec: 2704
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "90ab887de5fbf34f4d45e13c4b211490"
}
Key {
type: 7
@@ -1122,15 +1122,15 @@ VisualTest {
}
Frame {
msec: 2720
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "90ab887de5fbf34f4d45e13c4b211490"
}
Frame {
msec: 2736
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "90ab887de5fbf34f4d45e13c4b211490"
}
Frame {
msec: 2752
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "90ab887de5fbf34f4d45e13c4b211490"
}
Key {
type: 6
@@ -1142,23 +1142,23 @@ VisualTest {
}
Frame {
msec: 2768
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "fc91281749bf1a844a19f20d87a17126"
}
Frame {
msec: 2784
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "fc91281749bf1a844a19f20d87a17126"
}
Frame {
msec: 2800
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "fc91281749bf1a844a19f20d87a17126"
}
Frame {
msec: 2816
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "fc91281749bf1a844a19f20d87a17126"
}
Frame {
msec: 2832
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "fc91281749bf1a844a19f20d87a17126"
}
Key {
type: 6
@@ -1178,19 +1178,19 @@ VisualTest {
}
Frame {
msec: 2848
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "dcf6e510866fa20e54255c2c980d7b4b"
}
Frame {
msec: 2864
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "dcf6e510866fa20e54255c2c980d7b4b"
}
Frame {
msec: 2880
- image: "wrap.2.png"
+ hash: "dcf6e510866fa20e54255c2c980d7b4b"
}
Frame {
msec: 2896
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ image: "wrap.3.png"
}
Key {
type: 6
@@ -1202,11 +1202,11 @@ VisualTest {
}
Frame {
msec: 2912
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a26b06714f951084f2ee5ee4b4e67e43"
}
Frame {
msec: 2928
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a26b06714f951084f2ee5ee4b4e67e43"
}
Key {
type: 7
@@ -1218,11 +1218,11 @@ VisualTest {
}
Frame {
msec: 2944
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a26b06714f951084f2ee5ee4b4e67e43"
}
Frame {
msec: 2960
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a26b06714f951084f2ee5ee4b4e67e43"
}
Key {
type: 7
@@ -1234,35 +1234,35 @@ VisualTest {
}
Frame {
msec: 2976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a26b06714f951084f2ee5ee4b4e67e43"
}
Frame {
msec: 2992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a26b06714f951084f2ee5ee4b4e67e43"
}
Frame {
msec: 3008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a26b06714f951084f2ee5ee4b4e67e43"
}
Frame {
msec: 3024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a26b06714f951084f2ee5ee4b4e67e43"
}
Frame {
msec: 3040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a26b06714f951084f2ee5ee4b4e67e43"
}
Frame {
msec: 3056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a26b06714f951084f2ee5ee4b4e67e43"
}
Frame {
msec: 3072
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a26b06714f951084f2ee5ee4b4e67e43"
}
Frame {
msec: 3088
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "a26b06714f951084f2ee5ee4b4e67e43"
}
Key {
type: 6
@@ -1274,23 +1274,23 @@ VisualTest {
}
Frame {
msec: 3104
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "832c43553cea6d22b7664ef6f145d1c6"
}
Frame {
msec: 3120
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "832c43553cea6d22b7664ef6f145d1c6"
}
Frame {
msec: 3136
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "832c43553cea6d22b7664ef6f145d1c6"
}
Frame {
msec: 3152
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "832c43553cea6d22b7664ef6f145d1c6"
}
Frame {
msec: 3168
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "832c43553cea6d22b7664ef6f145d1c6"
}
Key {
type: 7
@@ -1302,23 +1302,23 @@ VisualTest {
}
Frame {
msec: 3184
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "832c43553cea6d22b7664ef6f145d1c6"
}
Frame {
msec: 3200
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "832c43553cea6d22b7664ef6f145d1c6"
}
Frame {
msec: 3216
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "832c43553cea6d22b7664ef6f145d1c6"
}
Frame {
msec: 3232
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "832c43553cea6d22b7664ef6f145d1c6"
}
Frame {
msec: 3248
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "832c43553cea6d22b7664ef6f145d1c6"
}
Key {
type: 6
@@ -1330,15 +1330,15 @@ VisualTest {
}
Frame {
msec: 3264
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "081c183901aadcc6406f4ad9f41efa7e"
}
Frame {
msec: 3280
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "081c183901aadcc6406f4ad9f41efa7e"
}
Frame {
msec: 3296
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "081c183901aadcc6406f4ad9f41efa7e"
}
Key {
type: 7
@@ -1350,15 +1350,15 @@ VisualTest {
}
Frame {
msec: 3312
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "081c183901aadcc6406f4ad9f41efa7e"
}
Frame {
msec: 3328
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "081c183901aadcc6406f4ad9f41efa7e"
}
Frame {
msec: 3344
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "081c183901aadcc6406f4ad9f41efa7e"
}
Key {
type: 6
@@ -1370,23 +1370,23 @@ VisualTest {
}
Frame {
msec: 3360
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9bd3c76a58f942880f40566cfbaa2e99"
}
Frame {
msec: 3376
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9bd3c76a58f942880f40566cfbaa2e99"
}
Frame {
msec: 3392
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9bd3c76a58f942880f40566cfbaa2e99"
}
Frame {
msec: 3408
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9bd3c76a58f942880f40566cfbaa2e99"
}
Frame {
msec: 3424
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9bd3c76a58f942880f40566cfbaa2e99"
}
Key {
type: 7
@@ -1398,15 +1398,15 @@ VisualTest {
}
Frame {
msec: 3440
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9bd3c76a58f942880f40566cfbaa2e99"
}
Frame {
msec: 3456
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9bd3c76a58f942880f40566cfbaa2e99"
}
Frame {
msec: 3472
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "9bd3c76a58f942880f40566cfbaa2e99"
}
Key {
type: 6
@@ -1418,19 +1418,19 @@ VisualTest {
}
Frame {
msec: 3488
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "204a2ee8a33e5452d47d95ad4142d417"
}
Frame {
msec: 3504
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "204a2ee8a33e5452d47d95ad4142d417"
}
Frame {
msec: 3520
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "204a2ee8a33e5452d47d95ad4142d417"
}
Frame {
msec: 3536
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "204a2ee8a33e5452d47d95ad4142d417"
}
Key {
type: 7
@@ -1442,11 +1442,11 @@ VisualTest {
}
Frame {
msec: 3552
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "204a2ee8a33e5452d47d95ad4142d417"
}
Frame {
msec: 3568
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "204a2ee8a33e5452d47d95ad4142d417"
}
Key {
type: 6
@@ -1458,27 +1458,27 @@ VisualTest {
}
Frame {
msec: 3584
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4729d1f555fe604d4660f02673f9c5f3"
}
Frame {
msec: 3600
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4729d1f555fe604d4660f02673f9c5f3"
}
Frame {
msec: 3616
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4729d1f555fe604d4660f02673f9c5f3"
}
Frame {
msec: 3632
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4729d1f555fe604d4660f02673f9c5f3"
}
Frame {
msec: 3648
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4729d1f555fe604d4660f02673f9c5f3"
}
Frame {
msec: 3664
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4729d1f555fe604d4660f02673f9c5f3"
}
Key {
type: 6
@@ -1490,7 +1490,7 @@ VisualTest {
}
Frame {
msec: 3680
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2c0e0951ce4839b302a6e2735adc6c09"
}
Key {
type: 7
@@ -1502,23 +1502,23 @@ VisualTest {
}
Frame {
msec: 3696
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2c0e0951ce4839b302a6e2735adc6c09"
}
Frame {
msec: 3712
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2c0e0951ce4839b302a6e2735adc6c09"
}
Frame {
msec: 3728
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2c0e0951ce4839b302a6e2735adc6c09"
}
Frame {
msec: 3744
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2c0e0951ce4839b302a6e2735adc6c09"
}
Frame {
msec: 3760
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2c0e0951ce4839b302a6e2735adc6c09"
}
Key {
type: 7
@@ -1530,39 +1530,39 @@ VisualTest {
}
Frame {
msec: 3776
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2c0e0951ce4839b302a6e2735adc6c09"
}
Frame {
msec: 3792
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2c0e0951ce4839b302a6e2735adc6c09"
}
Frame {
msec: 3808
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2c0e0951ce4839b302a6e2735adc6c09"
}
Frame {
msec: 3824
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2c0e0951ce4839b302a6e2735adc6c09"
}
Frame {
msec: 3840
- image: "wrap.3.png"
+ hash: "2c0e0951ce4839b302a6e2735adc6c09"
}
Frame {
msec: 3856
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ image: "wrap.4.png"
}
Frame {
msec: 3872
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2c0e0951ce4839b302a6e2735adc6c09"
}
Frame {
msec: 3888
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2c0e0951ce4839b302a6e2735adc6c09"
}
Frame {
msec: 3904
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "2c0e0951ce4839b302a6e2735adc6c09"
}
Key {
type: 6
@@ -1574,23 +1574,23 @@ VisualTest {
}
Frame {
msec: 3920
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "28c2ffe2ad35010dc077625cde7d21b6"
}
Frame {
msec: 3936
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "28c2ffe2ad35010dc077625cde7d21b6"
}
Frame {
msec: 3952
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "28c2ffe2ad35010dc077625cde7d21b6"
}
Frame {
msec: 3968
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "28c2ffe2ad35010dc077625cde7d21b6"
}
Frame {
msec: 3984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "28c2ffe2ad35010dc077625cde7d21b6"
}
Key {
type: 7
@@ -1602,11 +1602,11 @@ VisualTest {
}
Frame {
msec: 4000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "28c2ffe2ad35010dc077625cde7d21b6"
}
Frame {
msec: 4016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "28c2ffe2ad35010dc077625cde7d21b6"
}
Key {
type: 6
@@ -1618,15 +1618,15 @@ VisualTest {
}
Frame {
msec: 4032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6f206482adcd45a2b0d8d3c8b85f53c6"
}
Frame {
msec: 4048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6f206482adcd45a2b0d8d3c8b85f53c6"
}
Frame {
msec: 4064
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6f206482adcd45a2b0d8d3c8b85f53c6"
}
Key {
type: 7
@@ -1638,7 +1638,7 @@ VisualTest {
}
Frame {
msec: 4080
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6f206482adcd45a2b0d8d3c8b85f53c6"
}
Key {
type: 6
@@ -1650,19 +1650,19 @@ VisualTest {
}
Frame {
msec: 4096
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4685a786f36cb821a69b0ac059145a5f"
}
Frame {
msec: 4112
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4685a786f36cb821a69b0ac059145a5f"
}
Frame {
msec: 4128
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4685a786f36cb821a69b0ac059145a5f"
}
Frame {
msec: 4144
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4685a786f36cb821a69b0ac059145a5f"
}
Key {
type: 7
@@ -1674,15 +1674,15 @@ VisualTest {
}
Frame {
msec: 4160
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4685a786f36cb821a69b0ac059145a5f"
}
Frame {
msec: 4176
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4685a786f36cb821a69b0ac059145a5f"
}
Frame {
msec: 4192
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "4685a786f36cb821a69b0ac059145a5f"
}
Key {
type: 6
@@ -1694,23 +1694,23 @@ VisualTest {
}
Frame {
msec: 4208
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d0efb89ee3e2d2b18429b57dcfe13f33"
}
Frame {
msec: 4224
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d0efb89ee3e2d2b18429b57dcfe13f33"
}
Frame {
msec: 4240
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d0efb89ee3e2d2b18429b57dcfe13f33"
}
Frame {
msec: 4256
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d0efb89ee3e2d2b18429b57dcfe13f33"
}
Frame {
msec: 4272
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d0efb89ee3e2d2b18429b57dcfe13f33"
}
Key {
type: 6
@@ -1722,7 +1722,7 @@ VisualTest {
}
Frame {
msec: 4288
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cbe0bb714b2e9b63af978f666292d8f0"
}
Key {
type: 7
@@ -1734,15 +1734,15 @@ VisualTest {
}
Frame {
msec: 4304
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cbe0bb714b2e9b63af978f666292d8f0"
}
Frame {
msec: 4320
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cbe0bb714b2e9b63af978f666292d8f0"
}
Frame {
msec: 4336
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cbe0bb714b2e9b63af978f666292d8f0"
}
Key {
type: 7
@@ -1754,23 +1754,23 @@ VisualTest {
}
Frame {
msec: 4352
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cbe0bb714b2e9b63af978f666292d8f0"
}
Frame {
msec: 4368
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cbe0bb714b2e9b63af978f666292d8f0"
}
Frame {
msec: 4384
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cbe0bb714b2e9b63af978f666292d8f0"
}
Frame {
msec: 4400
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cbe0bb714b2e9b63af978f666292d8f0"
}
Frame {
msec: 4416
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cbe0bb714b2e9b63af978f666292d8f0"
}
Key {
type: 6
@@ -1782,15 +1782,15 @@ VisualTest {
}
Frame {
msec: 4432
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d15a45a86874daaff5f2e6afae43b2f4"
}
Frame {
msec: 4448
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d15a45a86874daaff5f2e6afae43b2f4"
}
Frame {
msec: 4464
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d15a45a86874daaff5f2e6afae43b2f4"
}
Key {
type: 7
@@ -1802,23 +1802,23 @@ VisualTest {
}
Frame {
msec: 4480
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d15a45a86874daaff5f2e6afae43b2f4"
}
Frame {
msec: 4496
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d15a45a86874daaff5f2e6afae43b2f4"
}
Frame {
msec: 4512
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d15a45a86874daaff5f2e6afae43b2f4"
}
Frame {
msec: 4528
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d15a45a86874daaff5f2e6afae43b2f4"
}
Frame {
msec: 4544
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "d15a45a86874daaff5f2e6afae43b2f4"
}
Key {
type: 6
@@ -1830,19 +1830,19 @@ VisualTest {
}
Frame {
msec: 4560
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b0c3ef9c5331af8768b23537d1d38311"
}
Frame {
msec: 4576
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b0c3ef9c5331af8768b23537d1d38311"
}
Frame {
msec: 4592
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b0c3ef9c5331af8768b23537d1d38311"
}
Frame {
msec: 4608
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b0c3ef9c5331af8768b23537d1d38311"
}
Key {
type: 7
@@ -1854,19 +1854,19 @@ VisualTest {
}
Frame {
msec: 4624
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b0c3ef9c5331af8768b23537d1d38311"
}
Frame {
msec: 4640
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b0c3ef9c5331af8768b23537d1d38311"
}
Frame {
msec: 4656
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b0c3ef9c5331af8768b23537d1d38311"
}
Frame {
msec: 4672
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "b0c3ef9c5331af8768b23537d1d38311"
}
Key {
type: 6
@@ -1878,19 +1878,19 @@ VisualTest {
}
Frame {
msec: 4688
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3be1d2faec1ab5d3d1ab72c25db95059"
}
Frame {
msec: 4704
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3be1d2faec1ab5d3d1ab72c25db95059"
}
Frame {
msec: 4720
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3be1d2faec1ab5d3d1ab72c25db95059"
}
Frame {
msec: 4736
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3be1d2faec1ab5d3d1ab72c25db95059"
}
Key {
type: 7
@@ -1902,15 +1902,15 @@ VisualTest {
}
Frame {
msec: 4752
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3be1d2faec1ab5d3d1ab72c25db95059"
}
Frame {
msec: 4768
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3be1d2faec1ab5d3d1ab72c25db95059"
}
Frame {
msec: 4784
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "3be1d2faec1ab5d3d1ab72c25db95059"
}
Key {
type: 6
@@ -1922,11 +1922,11 @@ VisualTest {
}
Frame {
msec: 4800
- image: "wrap.4.png"
+ hash: "db999862fcf827930098b3f129ff567f"
}
Frame {
msec: 4816
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ image: "wrap.5.png"
}
Key {
type: 7
@@ -1938,19 +1938,19 @@ VisualTest {
}
Frame {
msec: 4832
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "db999862fcf827930098b3f129ff567f"
}
Frame {
msec: 4848
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "db999862fcf827930098b3f129ff567f"
}
Frame {
msec: 4864
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "db999862fcf827930098b3f129ff567f"
}
Frame {
msec: 4880
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "db999862fcf827930098b3f129ff567f"
}
Key {
type: 6
@@ -1962,19 +1962,19 @@ VisualTest {
}
Frame {
msec: 4896
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 4912
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 4928
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 4944
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Key {
type: 7
@@ -1986,482 +1986,482 @@ VisualTest {
}
Frame {
msec: 4960
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 4976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 4992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5072
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5088
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5104
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5120
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5136
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5152
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5168
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5184
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5200
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5216
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5232
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5248
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5264
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5280
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5296
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5312
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5328
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5344
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5360
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5376
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5392
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5408
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5424
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5440
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5456
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5472
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5488
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5504
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5520
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5536
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5552
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5568
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5584
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5600
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5616
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5632
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5648
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5664
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5680
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5696
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5712
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5728
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5744
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5760
- image: "wrap.5.png"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5776
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ image: "wrap.6.png"
}
Frame {
msec: 5792
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5808
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5824
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5840
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5856
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5872
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5888
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5904
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5920
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5936
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5952
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5968
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 5984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6064
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6080
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6096
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6112
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6128
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6144
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6160
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6176
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6192
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6208
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6224
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6240
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6256
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6272
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6288
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6304
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6320
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6336
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6352
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6368
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6384
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6400
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6416
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6432
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6448
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6464
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6480
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6496
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6512
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6528
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6544
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6560
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6576
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6592
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6608
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6624
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6640
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6656
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6672
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6688
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6704
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6720
- image: "wrap.6.png"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6736
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ image: "wrap.7.png"
}
Frame {
msec: 6752
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6768
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6784
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6800
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6816
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6832
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6848
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
Frame {
msec: 6864
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "6557c4982e2c23d0ef5ec8a594df7277"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.0.png
index 555996a21a..b24344c344 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.png
index b705bad7b0..5e29359b0c 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.png
index 094cd2a6ec..0ffee647ff 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.png
index 9c519c715c..6c56e9c331 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.png
index 3ec77b509d..276170d3ea 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.png
index 579a66e5b9..3d8709fd16 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.png
index 9e5ac90c18..80b960c197 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.png
index 9f3acfcc25..72472771c3 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.png
index f27518a1bb..af5a996b7b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.9.png
new file mode 100644
index 0000000000..b254164fbe
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.qml
index ef9ba33b1b..38190433d1 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/cursorDelegate.qml
@@ -6,239 +6,287 @@ VisualTest {
}
Frame {
msec: 16
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "6e8324bf913d9df21a59ab4337257c15"
}
Frame {
msec: 32
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "4e068995d68e8939e6560e35b685e839"
}
Frame {
msec: 48
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "761b09bce25b3b240093d16ad02268d7"
}
Frame {
msec: 64
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "1ecb6d7d08d4e4e14db28e24a60eccc4"
}
Frame {
msec: 80
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "642417a56b3d6b8b35f5aec1bf0a9d2c"
}
Frame {
msec: 96
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "2e24870a44d3fc6c6d5c920bab29d417"
}
Frame {
msec: 112
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "9a59d0672f2a752943561af89fd71d7f"
}
Frame {
msec: 128
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "c359dd36910678a30f935a13c8680ee4"
}
Frame {
msec: 144
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "245f1e127549e9b28c7574ffb143fcde"
}
Frame {
msec: 160
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "8df3d3dbce673311d88c055e8dffaeb5"
}
Frame {
msec: 176
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "590fdeaddb3df033a1908a8a95fcd17a"
}
Frame {
msec: 192
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "a158891c8d2ee3899463412a3363e48c"
}
Frame {
msec: 208
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "e9ec2c82f46b36fbd0285ce6795c7cf9"
}
Frame {
msec: 224
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "0a02598af770dfe1d332f10c9482e770"
}
Frame {
msec: 240
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "8765475468bccbd0df897a533241f3c5"
}
Frame {
msec: 256
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "4cd9deed66bfdfadde8f8bf34f0e5513"
}
Frame {
msec: 272
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "139bf5a1811beb2438df4ecfa3bbaac7"
}
Frame {
msec: 288
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "9d51555afd71a7035e67a543846dcf7f"
}
Frame {
msec: 304
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "de187b58fc8dfaad2d62e9463691b0c0"
}
Frame {
msec: 320
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "9f88ac6d71246b06ca7ce9d8d983c91b"
}
Frame {
msec: 336
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "a43c12a7d6597d171112dc43085a439e"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 352
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "ad38f32755f669837ec2243e355ebc85"
}
Frame {
msec: 368
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "d87bd14345c785cc7e78a5c5462b90ec"
}
Frame {
msec: 384
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "77850031e012246dd967ac689e353eb3"
}
Frame {
msec: 400
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "f1bd048cd9167a8f162d1c39aca4f7c1"
}
Frame {
msec: 416
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "0fa030c5da23f23a0665a535e23b84a2"
}
Frame {
msec: 432
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "af3a5f1982459164dfec26746172b0eb"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 448
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "0de90659472b63dd41a5602197ff502e"
}
Frame {
msec: 464
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "81e40abf91017614a52e03bb2474549f"
}
Frame {
msec: 480
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 496
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 512
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "0416581d32ab84680dfc26b6f546d2c5"
}
Frame {
msec: 528
- hash: "15da97430bcbac3a16d9897bbf2e4dbd"
+ hash: "0416581d32ab84680dfc26b6f546d2c5"
}
Frame {
msec: 544
- hash: "2aec32493055ad17f4aac9b3c9b84c5f"
+ hash: "0416581d32ab84680dfc26b6f546d2c5"
}
Frame {
msec: 560
- hash: "e0826ff09b628a5e3ddf6d9e5593f937"
+ hash: "0416581d32ab84680dfc26b6f546d2c5"
}
Frame {
msec: 576
- hash: "eacfa8db605b9e386a55508e8943e7d1"
+ hash: "ac98b973e6d12193829139661d3e5847"
}
Frame {
msec: 592
- hash: "2dbe9b5bbb5baf12cd2cbfb4190be316"
+ hash: "366907376adae4d88d42d1b9e7533ec0"
}
Frame {
msec: 608
- hash: "60a60e06237318bf005f87bbba386fef"
+ hash: "5f486d0a21c74f2ba50afcafa8c15453"
}
Frame {
msec: 624
- hash: "97549f388c02adb8884c2e79510adc7e"
+ hash: "a3bf6dde525e528745272a8e43fc895c"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 640
- hash: "d882fe91d9df9862d620cf984e27d0bd"
+ hash: "4ffb297d2a98a3d13b848af569b1b5b5"
}
Frame {
msec: 656
- hash: "6310b65572e39256122c7620f7e87442"
+ hash: "3679a17658e417bf08fc86d4bef0d4e9"
}
Frame {
msec: 672
- hash: "4e7374a683050ff440056b6e7c971d2b"
+ hash: "5c6a25284ffd13350425e792fd143421"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 688
- hash: "35c0d55cda3a02eb4c441a5832bcbbf4"
+ hash: "09a2c1032d0206e20340ae4267525f98"
}
Frame {
msec: 704
- hash: "8d71c418593eb3e4834d5e608ffd3f29"
+ hash: "0036070d9a7ee854b3612858af46ab59"
}
Frame {
msec: 720
- hash: "0da2c1cd0138172698a3bee5d19168c5"
+ hash: "8774509eaa5fc29385da89214ef77589"
}
Frame {
msec: 736
- hash: "8ca757a4fd1987329488f63251b0f6b4"
+ hash: "6d4f8ebf046148e5079f498396c119b4"
}
Frame {
msec: 752
- hash: "70c827f1b34b44cbd775b666913556d6"
+ hash: "4c7d5d2f77116c96357b0791348af058"
}
Frame {
msec: 768
- hash: "2b91dcef1b3ca66059dd9db4c8e335f3"
+ hash: "398c927a3525d5b90a5dd7a05ba9467b"
}
Frame {
msec: 784
- hash: "38abc77b2361ce257d39c0cf268ba42b"
+ hash: "d84b45f6acb8cbd399d4ed6bf80ce132"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 800
- hash: "59865194eb63465dd0f3925c7a500340"
+ hash: "40c597d9e04e8e0daf62f58b9e7973b3"
}
Frame {
msec: 816
- hash: "7bed5747d6b771db0fe5802153e54f2f"
+ hash: "2c7fdd47e29d924e3e008a6840e0e6be"
}
Frame {
msec: 832
- hash: "9ac1bf268749bc8e58bc4d04b55ef849"
+ hash: "2b3229bb1aa220499114f274cf643ce9"
}
Frame {
msec: 848
- hash: "64ea5cb46782d250c46a7a2c8cceea20"
+ hash: "e55446874c1a343ce3607d679d69d1d4"
}
Frame {
msec: 864
- hash: "d81037eb21bfcb434b6c7f3bbd21ad12"
+ hash: "6824708eb176a9cf92f241d4054800dd"
}
Frame {
msec: 880
- hash: "1079ea3a1a62e2cca9a8e907bc5aa4e1"
+ hash: "d386230dd416740625eb4f677ef4531b"
}
Frame {
msec: 896
- hash: "96422f9bfbc11775cd7d1fae2ba357bd"
+ hash: "9b2fbddab890dbe43e84e85bf320e6c1"
}
Frame {
msec: 912
- hash: "0d247385059a6f68b37bc34f6b2214b1"
+ hash: "1d1065aca7eb47f0096bc2c8c4320880"
}
Frame {
msec: 928
- hash: "7c513361e13a90eef229b42e68ffaa18"
+ hash: "d97ba6e2bfc021fe993afdb5b28316ba"
}
Frame {
msec: 944
- hash: "510b8441c613f0637dfc46e03c278112"
+ hash: "3a3a2f340bf1ccb14eab0562d7ecfe87"
}
Frame {
msec: 960
@@ -246,271 +294,287 @@ VisualTest {
}
Frame {
msec: 976
- hash: "8d90112e2e1c6f226a1a5f4f75785939"
+ hash: "ea4f4c1de5bfb1be43ab0188afb7189c"
}
Frame {
msec: 992
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "399ca2d4411d3fb226c94bd32a17d0cd"
}
Frame {
msec: 1008
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "ca78503396613536c8e4076884354cb1"
}
Frame {
msec: 1024
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "ca78503396613536c8e4076884354cb1"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1040
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "399ca2d4411d3fb226c94bd32a17d0cd"
}
Frame {
msec: 1056
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "ea4f4c1de5bfb1be43ab0188afb7189c"
}
Frame {
msec: 1072
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "d23d7492b85e4f30994ecd64e8273ff6"
}
Frame {
msec: 1088
- hash: "8d90112e2e1c6f226a1a5f4f75785939"
+ hash: "3a3a2f340bf1ccb14eab0562d7ecfe87"
}
Frame {
msec: 1104
- hash: "85e6af1f5fd15338a15f984e24d5ec9d"
+ hash: "d97ba6e2bfc021fe993afdb5b28316ba"
}
Frame {
msec: 1120
- hash: "510b8441c613f0637dfc46e03c278112"
+ hash: "1d1065aca7eb47f0096bc2c8c4320880"
}
Frame {
msec: 1136
- hash: "7c513361e13a90eef229b42e68ffaa18"
+ hash: "9b2fbddab890dbe43e84e85bf320e6c1"
}
Frame {
msec: 1152
- hash: "0d247385059a6f68b37bc34f6b2214b1"
+ hash: "d386230dd416740625eb4f677ef4531b"
}
Frame {
msec: 1168
- hash: "96422f9bfbc11775cd7d1fae2ba357bd"
+ hash: "6824708eb176a9cf92f241d4054800dd"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1184
- hash: "1079ea3a1a62e2cca9a8e907bc5aa4e1"
+ hash: "e8e14dbba33578a36d9c69214333c537"
}
Frame {
msec: 1200
- hash: "d81037eb21bfcb434b6c7f3bbd21ad12"
+ hash: "95c6e967f6f445748945c51943cf532f"
}
Frame {
msec: 1216
- hash: "64ea5cb46782d250c46a7a2c8cceea20"
+ hash: "d145d4cbd0e3a98686b3bac1c5c17093"
}
Frame {
msec: 1232
- hash: "9ac1bf268749bc8e58bc4d04b55ef849"
+ hash: "09348a4108a585dd23c3a252a5c596f6"
}
Frame {
msec: 1248
- hash: "7bed5747d6b771db0fe5802153e54f2f"
+ hash: "55126f2c879771e1aa5ced51b54c827a"
}
Frame {
msec: 1264
- hash: "59865194eb63465dd0f3925c7a500340"
+ hash: "ebb36a4c2fcb85107033ec2731fc5743"
}
Frame {
msec: 1280
- hash: "38abc77b2361ce257d39c0cf268ba42b"
+ hash: "0581a4432d4b3d0c1555a31e772c2575"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1296
- hash: "2b91dcef1b3ca66059dd9db4c8e335f3"
+ hash: "b4030774f06935f1b43fc8f1a69e53a5"
}
Frame {
msec: 1312
- hash: "70c827f1b34b44cbd775b666913556d6"
+ hash: "655e1739c130888ff83a3b69bb0ab7e3"
}
Frame {
msec: 1328
- hash: "8ca757a4fd1987329488f63251b0f6b4"
+ hash: "99fc97c572e7c8949693b32910e6eefb"
}
Frame {
msec: 1344
- hash: "0da2c1cd0138172698a3bee5d19168c5"
+ hash: "e9c8bb13c2549047c05d671daa378496"
}
Frame {
msec: 1360
- hash: "8d71c418593eb3e4834d5e608ffd3f29"
+ hash: "cb344e0d39b5b07ca7d094bf30ce9f53"
}
Frame {
msec: 1376
- hash: "35c0d55cda3a02eb4c441a5832bcbbf4"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "15ba6e62c693f2bf74bdf86668139985"
}
Frame {
msec: 1392
- hash: "4e7374a683050ff440056b6e7c971d2b"
+ hash: "48133ec73eb9723059eb6e6af3139f2b"
}
Frame {
msec: 1408
- hash: "6310b65572e39256122c7620f7e87442"
+ hash: "0b19e777a04f03774f2d5f5398bdb10f"
}
Frame {
msec: 1424
- hash: "d882fe91d9df9862d620cf984e27d0bd"
+ hash: "fc41d9a9aedf9274a68b33603ed6ccd0"
}
Frame {
msec: 1440
- hash: "97549f388c02adb8884c2e79510adc7e"
+ hash: "fa6e65f0c835b12dc10463711bd73350"
}
Frame {
msec: 1456
- hash: "60a60e06237318bf005f87bbba386fef"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "25a02c3388e52df550a0332efde90fcd"
}
Frame {
msec: 1472
- hash: "2dbe9b5bbb5baf12cd2cbfb4190be316"
+ hash: "2390443be82acf291856be59fa18fc26"
}
Frame {
msec: 1488
- hash: "eacfa8db605b9e386a55508e8943e7d1"
+ hash: "2390443be82acf291856be59fa18fc26"
}
Frame {
msec: 1504
- hash: "e0826ff09b628a5e3ddf6d9e5593f937"
+ hash: "2390443be82acf291856be59fa18fc26"
}
Frame {
msec: 1520
- hash: "2aec32493055ad17f4aac9b3c9b84c5f"
+ hash: "2390443be82acf291856be59fa18fc26"
}
Frame {
msec: 1536
- hash: "c0e72cdf776b0c62742aa9c3683cd523"
+ hash: "2390443be82acf291856be59fa18fc26"
}
Frame {
msec: 1552
- hash: "ea3f512181b3ee94d8cdd4d9f59ed962"
+ hash: "2390443be82acf291856be59fa18fc26"
}
Frame {
msec: 1568
- hash: "de924155855e76d0591217448f79bdb6"
+ hash: "284cd356d551a048d4a000b90217ac72"
}
Frame {
msec: 1584
- hash: "51da770a75102de9ad1920f1f6c44146"
+ hash: "94fb20c3767e09d1b4254ee6122cf24e"
}
Frame {
msec: 1600
- hash: "e3c0e8f6385ef2ab9b671be3243774c4"
+ hash: "bfac920384425ce9f34505b44eceb523"
}
Frame {
msec: 1616
- hash: "eac6de65ea6726f0cc50b6d30c1b7ba5"
+ hash: "4a2d434efcb9a57f2013dc6b366e0e4e"
}
Frame {
msec: 1632
- hash: "2ee111386bd646c4ee577405e490a2f7"
+ hash: "d0fbe98dc34c4bb0d1ceb7e4678cc1d5"
+ }
+ Frame {
+ msec: 1648
+ hash: "28ab147983a71e93e5610f53e14bd113"
}
Key {
type: 6
- key: 16777233
- modifiers: 0
+ key: 16777249
+ modifiers: 100663296
text: ""
autorep: false
count: 1
}
Frame {
- msec: 1648
- hash: "24c376d5a2b3555126b156c8bc7a7a0c"
- }
- Frame {
msec: 1664
- hash: "d9c35de8b02f11db321d9bdcdcd65403"
+ hash: "2e6ee60fe9ff07fa4558134e6b1d6da8"
}
Frame {
msec: 1680
- hash: "0b32a66497ec3cdd05dc27c0ef9c5718"
+ hash: "f181e578e865981d7a2073080b381ec1"
}
Frame {
msec: 1696
- hash: "9626f80ef170af2db135792337203265"
+ hash: "d7c0558ea16829b52ea6d09814c301b9"
}
Frame {
msec: 1712
- hash: "6e4ce7599da579f764ff10e982888889"
+ hash: "c9304cb66c04566cf4374b46ab85e6e7"
}
Frame {
msec: 1728
- hash: "5ad4dd681be780c0068734ca5c722507"
- }
- Key {
- type: 7
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "024dde64822afc9eea63974851fe57e1"
}
Frame {
msec: 1744
- hash: "7d620ef53049f9195cc832d6f9dfd52b"
+ hash: "8e4520e95a8acc8f1d4b710c4a14898f"
}
Frame {
msec: 1760
- hash: "0f54144c574af01958505eedd69162f6"
+ hash: "6b271c3f1d9d49bbd80a8ee33f3fc09c"
}
Frame {
msec: 1776
- hash: "50f168354e3901283708a4ae9088783d"
+ hash: "eb76a46632856bf07b005cad2ba2f6ab"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1792
- hash: "c55fdf2fd0a4eeb9ca0e3072aa3e60c4"
+ hash: "a29bd83f6b4e877f3c7b89c82dfcab54"
}
Frame {
msec: 1808
- hash: "d351de13e7bb5b273ec3aebb88dffbd5"
+ hash: "dca39b6b6fff5e4a6309e4c0e42811c0"
}
Frame {
msec: 1824
- hash: "977d44194d1ef05801167157714891af"
+ hash: "88ad3f9f638a97bed98f00ec7d78dfe4"
}
Frame {
msec: 1840
- hash: "ef3694ca78764709abbe2f8781578fb4"
+ hash: "5697a705f36283213bbe4b5848baa764"
}
Frame {
msec: 1856
- hash: "77afbc0e0b828d03148ed7fe342dfbda"
+ hash: "8850842afae3060a91d612f7b869fd48"
}
Frame {
msec: 1872
- hash: "0d94e37430d8b835e65750a6af525ef7"
+ hash: "4f08dbd1cab0bfcc8b9f232d46cf42db"
}
Frame {
msec: 1888
- hash: "e009a8d2cb7c7f1200055666cf2efd9c"
+ hash: "f7df5b96d0983a918e3c81aa7bee3950"
}
Frame {
msec: 1904
- hash: "096a2742962d7b22dba768577373e656"
+ hash: "b28681bcb414d428588acda377fef838"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1920
@@ -518,271 +582,271 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "905b6c7ab24fd1a12f17494fc1935e98"
+ hash: "5c154b54776ed555563d3e5196a8aedd"
}
Frame {
msec: 1952
- hash: "9bc98b4a32ea933fcc3a40eaae9b3516"
+ hash: "ee64c0452b325880de3a4fea599c18cc"
}
Frame {
msec: 1968
- hash: "70f0313540b3517f3b6d403c3ab1199c"
+ hash: "0776e1557b2d32db1c7c43331c532331"
}
Frame {
msec: 1984
- hash: "309ae1af1ef7dbaf0b892ad60fd3eb93"
+ hash: "24b68da9a63bbf00ffffeca649f771fa"
}
Frame {
msec: 2000
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "00d49d91b51f5bd428c07e9be65f551a"
}
Frame {
msec: 2016
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "874d4b599cb92cd9160960e3b3af74e0"
}
Frame {
msec: 2032
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "00d49d91b51f5bd428c07e9be65f551a"
}
Frame {
msec: 2048
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "24b68da9a63bbf00ffffeca649f771fa"
}
Frame {
msec: 2064
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "0776e1557b2d32db1c7c43331c532331"
}
Frame {
msec: 2080
- hash: "309ae1af1ef7dbaf0b892ad60fd3eb93"
+ hash: "ee64c0452b325880de3a4fea599c18cc"
}
Frame {
msec: 2096
- hash: "70f0313540b3517f3b6d403c3ab1199c"
+ hash: "5c154b54776ed555563d3e5196a8aedd"
}
Frame {
msec: 2112
- hash: "9bc98b4a32ea933fcc3a40eaae9b3516"
- }
- Key {
- type: 6
- key: 16777248
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "a5f90da82b51bc866648304a20a1dcd3"
}
Frame {
msec: 2128
- hash: "905b6c7ab24fd1a12f17494fc1935e98"
+ hash: "b28681bcb414d428588acda377fef838"
}
Frame {
msec: 2144
- hash: "31adf3a3bfbd1083c50cae7ed5d64334"
+ hash: "f7df5b96d0983a918e3c81aa7bee3950"
}
Frame {
msec: 2160
- hash: "096a2742962d7b22dba768577373e656"
+ hash: "4f08dbd1cab0bfcc8b9f232d46cf42db"
}
Frame {
msec: 2176
- hash: "e009a8d2cb7c7f1200055666cf2efd9c"
+ hash: "8850842afae3060a91d612f7b869fd48"
}
Frame {
msec: 2192
- hash: "0d94e37430d8b835e65750a6af525ef7"
+ hash: "5697a705f36283213bbe4b5848baa764"
}
Frame {
msec: 2208
- hash: "77afbc0e0b828d03148ed7fe342dfbda"
+ hash: "88ad3f9f638a97bed98f00ec7d78dfe4"
}
Frame {
msec: 2224
- hash: "ef3694ca78764709abbe2f8781578fb4"
+ hash: "dca39b6b6fff5e4a6309e4c0e42811c0"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2240
- hash: "977d44194d1ef05801167157714891af"
+ hash: "a29bd83f6b4e877f3c7b89c82dfcab54"
}
Frame {
msec: 2256
- hash: "d351de13e7bb5b273ec3aebb88dffbd5"
+ hash: "7defd2ecefeb86b457a2ee76d97424ee"
}
Frame {
msec: 2272
- hash: "c55fdf2fd0a4eeb9ca0e3072aa3e60c4"
+ hash: "ccf6d45e8822d72482d9b585909b612b"
}
Frame {
msec: 2288
- hash: "50f168354e3901283708a4ae9088783d"
+ hash: "996dddf091394513adda1b1f00bf0c68"
}
Frame {
msec: 2304
- hash: "0f54144c574af01958505eedd69162f6"
+ hash: "3cf94e90eddb4b0815762b89f58f8325"
}
Frame {
msec: 2320
- hash: "7d620ef53049f9195cc832d6f9dfd52b"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "ab9f876450526b37774c6c4a5794c7b1"
}
Frame {
msec: 2336
- hash: "03e906dfb3bf98f521d805331d3b5b9c"
+ hash: "9109880e9201e92eb17ae87a3648dca7"
}
Frame {
msec: 2352
- hash: "c2376393ea9541b909b6b4fe188fa03e"
+ hash: "0e759f2f279057c1f4d1147be5b41214"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2368
- hash: "9b3935370412c75acdf6e91100cf2f53"
+ hash: "d87bd14345c785cc7e78a5c5462b90ec"
}
Frame {
msec: 2384
- hash: "30ab7913bdfc51d2df5ab9f3863d28c7"
+ hash: "77850031e012246dd967ac689e353eb3"
}
Frame {
msec: 2400
- hash: "593656e93d6e01419002dbb581aa6cbd"
+ hash: "f1bd048cd9167a8f162d1c39aca4f7c1"
}
Frame {
msec: 2416
- hash: "33800dd560e44ce39d6325bbdee689de"
+ hash: "0fa030c5da23f23a0665a535e23b84a2"
}
Frame {
msec: 2432
- hash: "c41a9c4f08053d5d18fb2d530ed8b5ad"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "af3a5f1982459164dfec26746172b0eb"
}
Frame {
msec: 2448
- hash: "b3f2d4a2cb9a9d1304a2a2d07ad41ff2"
+ hash: "0de90659472b63dd41a5602197ff502e"
}
Frame {
msec: 2464
- hash: "93cf7fe53bc1fd749c523d40b27d17b4"
+ hash: "81e40abf91017614a52e03bb2474549f"
}
Frame {
msec: 2480
- hash: "6e9226d01dd93cff763e851148da8dfd"
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2496
- hash: "79fdbda495bbc6c9ae8be03e1467de92"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 2512
- hash: "c30fc0fa9351dbcdbe4f2a297cba9a52"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 2528
- hash: "eaf26162fd5ce42262ea08ef39a7123d"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 2544
- hash: "7bf0d6a5753a60eefae6d3c3819fabe4"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 2560
- hash: "a2ee3a3b9cd22d7c0e54524cad32e647"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 2576
- hash: "822298cfc4e2d64db1bf3e442dd891e6"
+ hash: "e26dbfb26415b21198add56d5de02cb2"
}
Frame {
msec: 2592
- hash: "d075c64000b045eae1b42dce701787b7"
+ hash: "fa2877a963417789b82170b32e0af7a0"
}
Frame {
msec: 2608
- hash: "5ca7f15af781f896c83c81077f6b072e"
+ hash: "860b39f92c412a7d946f882d8f99d837"
}
Frame {
msec: 2624
- hash: "7d0f14896e67c56ed5238472dc127cb1"
+ hash: "d7b8c52aef183965a97d82a18b03ed94"
}
Frame {
msec: 2640
- hash: "dca161e8a9d786ba9d50aa655ccbecd3"
+ hash: "b1ce9cf0ebd8e1e783e5bd43bbd72072"
}
Frame {
msec: 2656
- hash: "73bfcb0f5104efd056f25f7d73126369"
+ hash: "d214b419ec5b4cff8f877bdeb1b9ef96"
}
Frame {
msec: 2672
- hash: "0090459043b05bf9504434f36230b32b"
+ hash: "95e7057104508b3919d722d4befde7b7"
}
Frame {
msec: 2688
- hash: "f64315858f375c6ded480b2017fc18a5"
+ hash: "270489ec5da5bf9a93fa4e52f47a71f5"
}
Frame {
msec: 2704
- hash: "fe4c0ecfa9779c9fe052d4ffc9386d46"
+ hash: "46646e396ab0c1c20427dadd71d45ba9"
}
Frame {
msec: 2720
- hash: "849ad15f0ca893881165e956e8a26174"
+ hash: "65e2fd167565f876310d56fa9203c118"
}
Frame {
msec: 2736
- hash: "c4373fa63ed00832c70a6b94cb729397"
+ hash: "aff0da79bd9bd8c285139d7737a1316f"
}
Frame {
msec: 2752
- hash: "0c7e08fb7f0dd954b0f171a37ef2a310"
+ hash: "bf264fe7d774a597a3ff0965d912fa90"
}
Frame {
msec: 2768
- hash: "505071572df7aa300a675f8a808bc7f4"
+ hash: "f00358343437f6e058848c7237601632"
}
Frame {
msec: 2784
- hash: "52839867e81d52746196f299a8371453"
- }
- Key {
- type: 7
- key: 16777248
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "88c9e1d58397a81ed23931c7fdae1e7d"
}
Frame {
msec: 2800
- hash: "c4d214a7e0fc52c2a45fc6e3df12550a"
+ hash: "44d46b459f6bb89510e52b0d999fd499"
}
Frame {
msec: 2816
- hash: "f1fa48d796667bd053fff4af7ec1d8ce"
+ hash: "0c196a24c9ca7143d382688db678d855"
}
Frame {
msec: 2832
- hash: "081e46decc8aba911f018acfd761cda1"
+ hash: "9df6d3d3b9981cb907ab89e65b743e97"
}
Frame {
msec: 2848
- hash: "fa417c9bfda1da66320a8e59fbaeb5b6"
+ hash: "501a644d6cde64ad041b086e00fd3950"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2864
- hash: "83dfa353fd20f3bf7caa8e6ca9a9933c"
+ hash: "83f297406b1c6311da3a216024836d15"
}
Frame {
msec: 2880
@@ -790,511 +854,527 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "c11459b1d3e51f3d2f5bd30049bcca42"
+ hash: "93f79f8717948bde8ee55c668af2d397"
}
Frame {
msec: 2912
- hash: "997ff3fa82ba2fb27a9c41ed9abe8991"
+ hash: "881b5c2ccd0bbdaea4d61abbec600fc5"
}
Frame {
msec: 2928
- hash: "f8baaadde147266416c9ab3f9d9106ce"
+ hash: "be72fe7c27901db62f2dbd9a757e4838"
}
Frame {
msec: 2944
- hash: "79d1d34fd343d8de631aa3259167fe26"
+ hash: "c83c973fb1253ccab333fb1e604155b8"
}
Frame {
msec: 2960
- hash: "8b1445ca6131a0fc4377ded24a60186a"
+ hash: "dd6072d204812c23e24db1e7a81c6f57"
}
Frame {
msec: 2976
- hash: "784cc01604ecadf74a45164f73f0336d"
+ hash: "fb342743dc5ab9ade2b8a48a2a11dc8f"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2992
- hash: "b9aeac2be5c8e16e7938e141f32776be"
+ hash: "fc8ede705bfe8f339fe47041c502b0d6"
}
Frame {
msec: 3008
- hash: "b9aeac2be5c8e16e7938e141f32776be"
+ hash: "00fa0306d3fdc7e384cfc0660a3a355d"
}
Frame {
msec: 3024
- hash: "b9aeac2be5c8e16e7938e141f32776be"
+ hash: "00fa0306d3fdc7e384cfc0660a3a355d"
}
Frame {
msec: 3040
- hash: "b9aeac2be5c8e16e7938e141f32776be"
+ hash: "fc8ede705bfe8f339fe47041c502b0d6"
}
Frame {
msec: 3056
- hash: "b9aeac2be5c8e16e7938e141f32776be"
+ hash: "fb342743dc5ab9ade2b8a48a2a11dc8f"
}
Frame {
msec: 3072
- hash: "b9aeac2be5c8e16e7938e141f32776be"
- }
- Key {
- type: 6
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "dd6072d204812c23e24db1e7a81c6f57"
}
Frame {
msec: 3088
- hash: "00dfc5f4468482cb5f74e62be235b1d2"
+ hash: "c83c973fb1253ccab333fb1e604155b8"
}
Frame {
msec: 3104
- hash: "62bc9c57724f7ab6bcf7d75d8ff68097"
+ hash: "be72fe7c27901db62f2dbd9a757e4838"
}
Frame {
msec: 3120
- hash: "ad65de5a6887c0a31a9d8f72a2a651db"
+ hash: "881b5c2ccd0bbdaea4d61abbec600fc5"
}
Frame {
msec: 3136
- hash: "75e854ccaad087bfe776a843f0bd7284"
+ hash: "93f79f8717948bde8ee55c668af2d397"
}
Frame {
msec: 3152
- hash: "1e3f580f37a0dc063a383bdf435e85ea"
+ hash: "1bb236db749ef514c00d0a3dd698d24f"
}
Frame {
msec: 3168
- hash: "3d78320cb021944d7c6cee1a42056663"
+ hash: "83f297406b1c6311da3a216024836d15"
}
Frame {
msec: 3184
- hash: "fca865f762c1a6cc3e487e0e908eef73"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "3d284b4000d2849ed4af2f7c1b859492"
}
Frame {
msec: 3200
- hash: "fb7ad9156658f3866d19e43f006cf013"
+ hash: "de315e6836334fd0a2da855f5be4ff30"
}
Frame {
msec: 3216
- hash: "6f7411363c66d0959ea5a16a9b610e61"
- }
- Frame {
- msec: 3232
- hash: "a33dce3c55b1b1541cfb9b85a75fcb53"
- }
- Frame {
- msec: 3248
- hash: "56b81435dc4ce193bb98c3d02c781242"
+ hash: "5ca117709284f4a1cbd64cdba4079340"
}
Key {
type: 6
- key: 16777234
- modifiers: 0
+ key: 16777236
+ modifiers: 67108864
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 3232
+ hash: "308a4220f5c74fd56bd218cd695b9822"
+ }
+ Frame {
+ msec: 3248
+ hash: "4ac4e09e987f2ba9661ed52fb1bdf236"
+ }
+ Frame {
msec: 3264
- hash: "59865194eb63465dd0f3925c7a500340"
+ hash: "9ffd39a8a540ec88ff2b20a16ef083ee"
}
Frame {
msec: 3280
- hash: "38abc77b2361ce257d39c0cf268ba42b"
+ hash: "4a36ed8e68811954fef171d5734ccbaf"
}
Frame {
msec: 3296
- hash: "2b91dcef1b3ca66059dd9db4c8e335f3"
+ hash: "714a6231aca70cfa8e83ea71b7ae90dc"
}
Frame {
msec: 3312
- hash: "70c827f1b34b44cbd775b666913556d6"
+ hash: "1fa9e35449ee87c972e3189ad0651a68"
}
Frame {
msec: 3328
- hash: "8ca757a4fd1987329488f63251b0f6b4"
- }
- Frame {
- msec: 3344
- hash: "0da2c1cd0138172698a3bee5d19168c5"
- }
- Frame {
- msec: 3360
- hash: "8d71c418593eb3e4834d5e608ffd3f29"
+ hash: "d602008fada2f4edb6ad00fe759f9db9"
}
Key {
type: 7
- key: 16777234
- modifiers: 0
+ key: 16777236
+ modifiers: 67108864
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 3344
+ hash: "bf16cc38f109e761b5ac2b0c63a1a2fe"
+ }
+ Frame {
+ msec: 3360
+ hash: "30f26041533455ed92c4984f55e3c6ff"
+ }
+ Frame {
msec: 3376
- hash: "35c0d55cda3a02eb4c441a5832bcbbf4"
+ hash: "5838d666902bc693de505522dad13254"
}
Frame {
msec: 3392
- hash: "4e7374a683050ff440056b6e7c971d2b"
+ hash: "6c8ada09b627050e4340da6e8ddd646e"
}
Frame {
msec: 3408
- hash: "6310b65572e39256122c7620f7e87442"
+ hash: "b33cd5bbb90d435dd7ea3ab67bef88ee"
}
Frame {
msec: 3424
- hash: "d882fe91d9df9862d620cf984e27d0bd"
+ hash: "692d4029938c01044b4210958dd1ee7e"
}
Frame {
msec: 3440
- hash: "97549f388c02adb8884c2e79510adc7e"
+ hash: "7e2e55555ee2c7e172e61ddb6365355d"
}
Frame {
msec: 3456
- hash: "60a60e06237318bf005f87bbba386fef"
+ hash: "87ca0584879b25336a1023ac3252fc9a"
}
Frame {
msec: 3472
- hash: "2dbe9b5bbb5baf12cd2cbfb4190be316"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 3488
- hash: "eacfa8db605b9e386a55508e8943e7d1"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 3504
- hash: "e0826ff09b628a5e3ddf6d9e5593f937"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 3520
- hash: "2aec32493055ad17f4aac9b3c9b84c5f"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 3536
- hash: "c0e72cdf776b0c62742aa9c3683cd523"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 3552
- hash: "ea3f512181b3ee94d8cdd4d9f59ed962"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 3568
- hash: "de924155855e76d0591217448f79bdb6"
+ hash: "8c6052eb4cf03d7742a73874d9f15285"
}
Frame {
msec: 3584
- hash: "51da770a75102de9ad1920f1f6c44146"
+ hash: "8a1b63c42867f87a1cf4b47944b3860a"
}
Frame {
msec: 3600
- hash: "e3c0e8f6385ef2ab9b671be3243774c4"
+ hash: "90712efd7c17b0ad33d2c2c02e9eaa97"
}
Frame {
msec: 3616
- hash: "eac6de65ea6726f0cc50b6d30c1b7ba5"
+ hash: "8099972420ffd03e2bfc3ea45918a543"
}
Frame {
msec: 3632
- hash: "2ee111386bd646c4ee577405e490a2f7"
+ hash: "2b78b1179a34319c287a6659406e23c3"
}
Frame {
msec: 3648
- hash: "fe95122352effcf1815bc237fc6ce6ab"
+ hash: "ad9458ab4d6376c87350a2356c280f94"
}
Frame {
msec: 3664
- hash: "e3bb1ec3b84df25712f06e0d6963efdd"
+ hash: "a74bc230e310a2826b2fed962db22f7a"
}
Frame {
msec: 3680
- hash: "a10d3184acc85c46e171fe4cf82e1c23"
+ hash: "bd72e8f4757050c41673a6f0d38f2285"
}
Frame {
msec: 3696
- hash: "d566b2763312e5e823593806acd9e809"
+ hash: "379bad4fa4b605cb6a16434bdb031e2b"
}
Frame {
msec: 3712
- hash: "7db073b7487ddea48e7c9df8b9bfdc00"
+ hash: "e144a8e9586f29f9b2f042b47e7739ae"
}
Frame {
msec: 3728
- hash: "85c663b943f67d158367dba0508980a5"
+ hash: "bd74c9e79bc1a88dd6a17a3aed21e368"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3744
- hash: "6336ce0d912ee63773475c4c6c5d59be"
+ hash: "144724168f42372e10ec6c39662a5ed8"
}
Frame {
msec: 3760
- hash: "c75ba80484af36633b6a4d17b666b1c9"
+ hash: "d8859888802e7b54e2d2a44cf252eb54"
}
Frame {
msec: 3776
- hash: "08b7d4eef2d15bc717ff1a981a11f275"
+ hash: "20561e2faf7e8fe1d6337248e6cd5e94"
}
Frame {
msec: 3792
- hash: "0ab8bebb0e43786a7e51ea780745080c"
+ hash: "184cff262d1004ce702c117a6b5b9699"
}
Frame {
msec: 3808
- hash: "6fa1811f520eff9893b3c7b00e53fa7d"
+ hash: "61b156acacefa6e4f4ddd8adaca90d08"
}
Frame {
msec: 3824
- hash: "6feb44655bfbec651cc2902676bd08b4"
+ hash: "0906852b1e62a936694a22d6ffa4f5dd"
}
Frame {
msec: 3840
image: "cursorDelegate.3.png"
}
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
Frame {
msec: 3856
- hash: "00b7714df163d8055514e0dbd8a83bac"
+ hash: "cc0fb2ae2dd1ccad94c453bc4c4b6d32"
}
Frame {
msec: 3872
- hash: "6ef2a330d70a7e0ce343bb352c46f126"
+ hash: "6a6baee5ca76d331c47fca4d0f7168e5"
}
Frame {
msec: 3888
- hash: "f4e26309fa3b8a6d55f44bf146544101"
+ hash: "32032d7ce55af41c97ac5bf33aca40bb"
}
Frame {
msec: 3904
- hash: "dfa1e24149f2662a4a552da3bb64348c"
+ hash: "a8781226e5e494324a34e120aa446cd1"
}
Frame {
msec: 3920
- hash: "9ab9d6ef4aeb5863401a9e251f684e2d"
+ hash: "0dd5df088fcc0228a97ffe715c95e2b6"
}
Frame {
msec: 3936
- hash: "c9f7591a37a3743b3b48de5337fd2fa0"
+ hash: "774b161fe9645bc69b89e580b3e41f71"
}
Frame {
msec: 3952
- hash: "2d38f17db530050574d9192c805c142d"
+ hash: "5756d7ffd8ff656db54f4329ea909553"
}
Frame {
msec: 3968
- hash: "38a4ad2cf9fa3015eff67014900a44cc"
+ hash: "2b4a5c97ff4d8792a7706bb78385ec35"
}
Frame {
msec: 3984
- hash: "9d9ce4ac0de6caa2f0bb78eac414ba65"
+ hash: "f9765e4def564b64861402e1a873b169"
}
Frame {
msec: 4000
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "287b07ef6288dcea13fffd2b95aafd54"
}
Frame {
msec: 4016
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "7abcb9d6cf223c1655f6265f780a321a"
}
Frame {
msec: 4032
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "287b07ef6288dcea13fffd2b95aafd54"
}
Frame {
msec: 4048
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "f9765e4def564b64861402e1a873b169"
}
Frame {
msec: 4064
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
+ hash: "2b4a5c97ff4d8792a7706bb78385ec35"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 4080
- hash: "9d9ce4ac0de6caa2f0bb78eac414ba65"
+ hash: "5756d7ffd8ff656db54f4329ea909553"
}
Frame {
msec: 4096
- hash: "38a4ad2cf9fa3015eff67014900a44cc"
+ hash: "774b161fe9645bc69b89e580b3e41f71"
}
Frame {
msec: 4112
- hash: "2d38f17db530050574d9192c805c142d"
+ hash: "0dd5df088fcc0228a97ffe715c95e2b6"
}
Frame {
msec: 4128
- hash: "c9f7591a37a3743b3b48de5337fd2fa0"
+ hash: "a8781226e5e494324a34e120aa446cd1"
}
Frame {
msec: 4144
- hash: "9ab9d6ef4aeb5863401a9e251f684e2d"
+ hash: "32032d7ce55af41c97ac5bf33aca40bb"
}
Frame {
msec: 4160
- hash: "dfa1e24149f2662a4a552da3bb64348c"
+ hash: "6a6baee5ca76d331c47fca4d0f7168e5"
}
Frame {
msec: 4176
- hash: "f4e26309fa3b8a6d55f44bf146544101"
+ hash: "cc0fb2ae2dd1ccad94c453bc4c4b6d32"
}
Frame {
msec: 4192
- hash: "6ef2a330d70a7e0ce343bb352c46f126"
+ hash: "2d1b406be294727a278ba6bbc97be62a"
}
Frame {
msec: 4208
- hash: "00b7714df163d8055514e0dbd8a83bac"
+ hash: "0906852b1e62a936694a22d6ffa4f5dd"
}
Frame {
msec: 4224
- hash: "ae46d672649a4b0fc5171f776af93a2c"
+ hash: "61b156acacefa6e4f4ddd8adaca90d08"
}
Frame {
msec: 4240
- hash: "6feb44655bfbec651cc2902676bd08b4"
+ hash: "184cff262d1004ce702c117a6b5b9699"
}
Frame {
msec: 4256
- hash: "6fa1811f520eff9893b3c7b00e53fa7d"
+ hash: "20561e2faf7e8fe1d6337248e6cd5e94"
}
Frame {
msec: 4272
- hash: "0ab8bebb0e43786a7e51ea780745080c"
+ hash: "d8859888802e7b54e2d2a44cf252eb54"
}
Frame {
msec: 4288
- hash: "08b7d4eef2d15bc717ff1a981a11f275"
+ hash: "144724168f42372e10ec6c39662a5ed8"
}
Frame {
msec: 4304
- hash: "c75ba80484af36633b6a4d17b666b1c9"
+ hash: "d2da36fbf73289f545133bd608af66a2"
}
Frame {
msec: 4320
- hash: "6336ce0d912ee63773475c4c6c5d59be"
+ hash: "b1d7da6b42a31bba91148ab37b111945"
}
Frame {
msec: 4336
- hash: "85c663b943f67d158367dba0508980a5"
+ hash: "6f226a3b20d95e17df69e2c4e5aff3d1"
}
Frame {
msec: 4352
- hash: "7db073b7487ddea48e7c9df8b9bfdc00"
+ hash: "1109da0f043a9418661fc05e53fe3b45"
}
Frame {
msec: 4368
- hash: "d566b2763312e5e823593806acd9e809"
+ hash: "f3e901db9efd1d9fadf1cb6858040d51"
}
Frame {
msec: 4384
- hash: "a10d3184acc85c46e171fe4cf82e1c23"
+ hash: "c8e50c0e924b11a3f1943abb9a4008a4"
}
Frame {
msec: 4400
- hash: "e3bb1ec3b84df25712f06e0d6963efdd"
+ hash: "431226a27488ed1dba237de3d43f94c5"
}
Frame {
msec: 4416
- hash: "fe95122352effcf1815bc237fc6ce6ab"
+ hash: "420d316430c84f10d7cd24d29b918149"
}
Frame {
msec: 4432
- hash: "2ee111386bd646c4ee577405e490a2f7"
+ hash: "ccbd4d1e4865ebd9b0fe923e6ab05e5c"
}
Frame {
msec: 4448
- hash: "eac6de65ea6726f0cc50b6d30c1b7ba5"
+ hash: "231bff73758a1c6f7c7c0365159ba3e6"
}
Frame {
msec: 4464
- hash: "e3c0e8f6385ef2ab9b671be3243774c4"
+ hash: "d1ac7ceda7303bbf3392d33f47037ed6"
}
Frame {
msec: 4480
- hash: "51da770a75102de9ad1920f1f6c44146"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4496
- hash: "de924155855e76d0591217448f79bdb6"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4512
- hash: "ea3f512181b3ee94d8cdd4d9f59ed962"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4528
- hash: "c0e72cdf776b0c62742aa9c3683cd523"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4544
- hash: "2aec32493055ad17f4aac9b3c9b84c5f"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4560
- hash: "e0826ff09b628a5e3ddf6d9e5593f937"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4576
- hash: "eacfa8db605b9e386a55508e8943e7d1"
+ hash: "a2ad07326fafcb3012cdb869f39af466"
}
Frame {
msec: 4592
- hash: "2dbe9b5bbb5baf12cd2cbfb4190be316"
+ hash: "8622eb25a6da44926b5161bce213a483"
}
Frame {
msec: 4608
- hash: "60a60e06237318bf005f87bbba386fef"
+ hash: "fe563aa9dae9655871f82a779063cdbd"
}
Frame {
msec: 4624
- hash: "97549f388c02adb8884c2e79510adc7e"
+ hash: "775cd79b012f79b773449a0ad8457149"
}
Frame {
msec: 4640
- hash: "d882fe91d9df9862d620cf984e27d0bd"
+ hash: "01e9fab344a148a0877a7332d561be5a"
}
Frame {
msec: 4656
- hash: "6310b65572e39256122c7620f7e87442"
+ hash: "935566d139599a30197850774fb059ba"
}
Frame {
msec: 4672
- hash: "4e7374a683050ff440056b6e7c971d2b"
+ hash: "4aae1ac532624417decddd978f516b6e"
}
Frame {
msec: 4688
- hash: "35c0d55cda3a02eb4c441a5832bcbbf4"
+ hash: "34dc78df6e9941988712c1f8f79c3db0"
}
Frame {
msec: 4704
- hash: "8d71c418593eb3e4834d5e608ffd3f29"
+ hash: "23a96c11d5917c44bd48239ed2b5777f"
}
Frame {
msec: 4720
- hash: "0da2c1cd0138172698a3bee5d19168c5"
+ hash: "f8f13e097eae3152db3ccebff1343fe0"
}
Frame {
msec: 4736
- hash: "8ca757a4fd1987329488f63251b0f6b4"
+ hash: "02f8fca7c4ab80ecf425e4b39e966b86"
}
Frame {
msec: 4752
- hash: "70c827f1b34b44cbd775b666913556d6"
+ hash: "c3356367750e797ff81bc4102f948134"
}
Frame {
msec: 4768
- hash: "2b91dcef1b3ca66059dd9db4c8e335f3"
+ hash: "7b5de3772b8bcb4b10f3d265d5603afb"
}
Frame {
msec: 4784
- hash: "38abc77b2361ce257d39c0cf268ba42b"
+ hash: "ed3c741639232377f61867fd353ce58a"
}
Frame {
msec: 4800
@@ -1302,2254 +1382,118 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "7bed5747d6b771db0fe5802153e54f2f"
+ hash: "5ca117709284f4a1cbd64cdba4079340"
}
Frame {
msec: 4832
- hash: "9ac1bf268749bc8e58bc4d04b55ef849"
+ hash: "de315e6836334fd0a2da855f5be4ff30"
}
Frame {
msec: 4848
- hash: "64ea5cb46782d250c46a7a2c8cceea20"
+ hash: "3d284b4000d2849ed4af2f7c1b859492"
}
Frame {
msec: 4864
- hash: "d81037eb21bfcb434b6c7f3bbd21ad12"
+ hash: "83f297406b1c6311da3a216024836d15"
}
Frame {
msec: 4880
- hash: "1079ea3a1a62e2cca9a8e907bc5aa4e1"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 130; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "1bb236db749ef514c00d0a3dd698d24f"
}
Frame {
msec: 4896
- hash: "3d78320cb021944d7c6cee1a42056663"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 130; y: 102
- modifiers: 0
- sendToViewport: true
+ hash: "93f79f8717948bde8ee55c668af2d397"
}
Frame {
msec: 4912
- hash: "1e3f580f37a0dc063a383bdf435e85ea"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 131; y: 102
- modifiers: 0
- sendToViewport: true
+ hash: "881b5c2ccd0bbdaea4d61abbec600fc5"
}
Frame {
msec: 4928
- hash: "75e854ccaad087bfe776a843f0bd7284"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 132; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "be72fe7c27901db62f2dbd9a757e4838"
}
Frame {
msec: 4944
- hash: "ad65de5a6887c0a31a9d8f72a2a651db"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 133; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 134; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "c83c973fb1253ccab333fb1e604155b8"
}
Frame {
msec: 4960
- hash: "62bc9c57724f7ab6bcf7d75d8ff68097"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 135; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "dd6072d204812c23e24db1e7a81c6f57"
}
Frame {
msec: 4976
- hash: "00dfc5f4468482cb5f74e62be235b1d2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 136; y: 103
- modifiers: 0
- sendToViewport: true
+ hash: "fb342743dc5ab9ade2b8a48a2a11dc8f"
}
Frame {
msec: 4992
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 137; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 138; y: 102
- modifiers: 0
- sendToViewport: true
+ hash: "fc8ede705bfe8f339fe47041c502b0d6"
}
Frame {
msec: 5008
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 139; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "00fa0306d3fdc7e384cfc0660a3a355d"
}
Frame {
msec: 5024
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 140; y: 101
- modifiers: 0
- sendToViewport: true
+ hash: "00fa0306d3fdc7e384cfc0660a3a355d"
}
Frame {
msec: 5040
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 141; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 143; y: 100
- modifiers: 0
- sendToViewport: true
+ hash: "fc8ede705bfe8f339fe47041c502b0d6"
}
Frame {
msec: 5056
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 100
- modifiers: 0
- sendToViewport: true
+ hash: "fb342743dc5ab9ade2b8a48a2a11dc8f"
}
Frame {
msec: 5072
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 146; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "dd6072d204812c23e24db1e7a81c6f57"
}
Frame {
msec: 5088
- hash: "748dc58a3ad83d7b99d7b26ad2f82786"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 148; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 149; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "c83c973fb1253ccab333fb1e604155b8"
}
Frame {
msec: 5104
- hash: "242cc0ee7c3bdb44e8933068d3a93b61"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 150; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "be72fe7c27901db62f2dbd9a757e4838"
}
Frame {
msec: 5120
- hash: "3be6f0a35fb085dcf6c9481cf1c23f9d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 151; y: 99
- modifiers: 0
- sendToViewport: true
+ hash: "881b5c2ccd0bbdaea4d61abbec600fc5"
}
Frame {
msec: 5136
- hash: "a6f63267eaba9aefd2c9ab338571ef33"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "93f79f8717948bde8ee55c668af2d397"
}
Frame {
msec: 5152
- hash: "ba37dd9ba649e294465dc707f6b768ec"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 153; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "1bb236db749ef514c00d0a3dd698d24f"
}
Frame {
msec: 5168
- hash: "35b186609721ec0b8a121d15bc54ce49"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "83f297406b1c6311da3a216024836d15"
}
Frame {
msec: 5184
- hash: "700ff15e4e48af93362455a149d90363"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 155; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "3d284b4000d2849ed4af2f7c1b859492"
}
Frame {
msec: 5200
- hash: "1c51eb8d4d25d086bda4d595a49c3a86"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "de315e6836334fd0a2da855f5be4ff30"
}
Frame {
msec: 5216
- hash: "2f085b047d24384d463163df7fac2bd3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 158; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "5ca117709284f4a1cbd64cdba4079340"
}
Frame {
msec: 5232
- hash: "46d7aff6eb47e50e23c061ecb149fbf9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 161; y: 98
- modifiers: 0
- sendToViewport: true
+ hash: "4f0d49aff27a1c83287d38e760c10f16"
}
Frame {
msec: 5248
- hash: "48d7a8f749f7501dbaa4599ca41096a5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 97
- modifiers: 0
- sendToViewport: true
+ hash: "ed3c741639232377f61867fd353ce58a"
}
Frame {
msec: 5264
- hash: "4c2a085c69c118fedfa15fe46cdc508b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 164; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5280
- hash: "25f25828a4d22fe85db0de5c562f658e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 168; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5296
- hash: "e9fb14ec21e9ec1235d2fea6e055b69d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 170; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5312
- hash: "66417881aeb85778be66566241c45f5a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 174; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5328
- hash: "c8c136690ffd8e5cc3e58f7376693b4f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 176; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 178; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5344
- hash: "c58c4fb5b7197cd8bd95742dc8715bbf"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 179; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5360
- hash: "2e0c93380883fcf2d0e56024fecba605"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 180; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5376
- hash: "5f169f09e3d868eb0425a331d4bc3144"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 182; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 183; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5392
- hash: "ed648742be4b0ded04e713e83ed24b27"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 185; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5408
- hash: "92131288bb38480469f4578282dedaf8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 187; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5424
- hash: "e16773f750bb0f635552b1eeadb2d625"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 189; y: 93
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 191; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5440
- hash: "6e653cd552d82f38f30b8027d1951534"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 192; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5456
- hash: "cfc1d6efa8d1b3b86396704f0be031ad"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 194; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5472
- hash: "5848af73f5ab7c811639a6d01921d502"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 196; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 198; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5488
- hash: "3823e7da05678f63e6761a81ed7233e2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 199; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5504
- hash: "d095abe9814a60824914960a11663f12"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 91
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5520
- hash: "18922bb3269d903a36e0b690249b473a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 91
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 201; y: 90
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5536
- hash: "4d8400a3ca2b782e7b054bb2f71d4543"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 202; y: 89
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5552
- hash: "24ed25d7a767f01fb02f545fc6c6931a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 203; y: 88
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5568
- hash: "55fb16784e3655ae70f97d6c32853cdc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 204; y: 88
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5584
- hash: "694e6979f0de62b61324dc4b144a2d5d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 207; y: 86
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 208; y: 85
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5600
- hash: "e61b8b03251f6312e3de4e0c8af684d5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 210; y: 85
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5616
- hash: "6203321f87d53692dbb2b2aaf7dd3944"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5632
- hash: "297b77029475d77cd8e481199b23da30"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 213; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 214; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5648
- hash: "414615d772b4c80bf85eabfdca6fd0e0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5664
- hash: "46d70882552a21267eebb3505da086f3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5680
- hash: "372acafc63624307bcb384c48a803ab7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 217; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5696
- hash: "1b98094dd4f192af8229b7058b8ce396"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5712
- hash: "d627fa0ce696e46650225e43134643f5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 84
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5728
- hash: "0410f4b504d768bc00940b20d3d942f9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 85
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 86
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 220; y: 86
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5744
- hash: "5f8011b44681d769800af8d205c757cb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 221; y: 87
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5760
- image: "cursorDelegate.5.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 87
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5776
- hash: "99f7a46f841f96445962b5fb3496d996"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 88
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5792
- hash: "ed8bba2823ca2fe7cf138af0fcc52806"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 224; y: 90
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5808
- hash: "c9007b7ae5038ba59bfc6fac15c80d5f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 226; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5824
- hash: "2db81c955a99652bcfef958e870054af"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 228; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5840
- hash: "1e3906d7f3ee5a29c3c90b8e1f6c1eb0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 229; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 231; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5856
- hash: "fc59738903cc9e6f36ef4d27bfde9496"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 232; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5872
- hash: "768aaf4ef2b13b40b75bdf15787966b6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 233; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5888
- hash: "3085baedc0c58a6757b134bb4f80fa9e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 233; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5904
- hash: "0a1b8cad167bf93801f4d0dd34bf872e"
- }
- Frame {
- msec: 5920
- hash: "6366e04808ee015feed44d95cc117e1e"
- }
- Frame {
- msec: 5936
- hash: "dd67a8542a243aac9462e25dc1586e6e"
- }
- Frame {
- msec: 5952
- hash: "e06c8788b2ef327d005b4048f0807334"
- }
- Frame {
- msec: 5968
- hash: "dda2beda1253bd477d04cada4ec4df27"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 233; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 5984
- hash: "d659d1724637d90497c8e417764d3477"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 232; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 232; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6000
- hash: "91035aecf2ac15f3c2c3dbc4b73b540f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 231; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6016
- hash: "91035aecf2ac15f3c2c3dbc4b73b540f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 230; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6032
- hash: "91035aecf2ac15f3c2c3dbc4b73b540f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 229; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 228; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6048
- hash: "91035aecf2ac15f3c2c3dbc4b73b540f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 227; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6064
- hash: "91035aecf2ac15f3c2c3dbc4b73b540f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 225; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6080
- hash: "bdc53613cad59416ed79287874eb59f8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 224; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6096
- hash: "54efe0acb07fb69827024a566773a36e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 220; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6112
- hash: "860530a5ac3d89193f3cf234e21f8f6a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6128
- hash: "ade5f8e28159304b22866f688efdbb46"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 217; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6144
- hash: "7d5f5cf34910527d899e89ea07fb7254"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6160
- hash: "c201ed0f2419396a229d8396152aba01"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 213; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6176
- hash: "b99135e2cb03ab252ff379c8001c26ad"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6192
- hash: "768aaf4ef2b13b40b75bdf15787966b6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 210; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6208
- hash: "71a5bed1a87e16c986b2f4b245e956b8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 210; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6224
- hash: "7155607add8c7254286097cda52b5888"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 208; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 207; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6240
- hash: "e516e4d8a4ef0195ae04b3287f536ffd"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 206; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6256
- hash: "afa06d10b37d8ad8b57e392142ff50f2"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 205; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6272
- hash: "88c3fe68f7251d87a5bf197b9d59b899"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 204; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 203; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6288
- hash: "b2687baf5148539ee2181b18077e0a3d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 202; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6304
- hash: "457aed68cee2b9f3ff3c7d5f0eb2b6aa"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 201; y: 104
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6320
- hash: "48bb4683718a3b7c34baea29260fbe8c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 199; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6336
- hash: "7c32fbf799bbfc10d0fbdd96bcfa9d95"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 197; y: 102
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6352
- hash: "68cee3b8213a9d38e2ed431d06eb6756"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 196; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 194; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6368
- hash: "596c732c40a86d16bc649f164b919457"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 191; y: 101
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 188; y: 100
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6384
- hash: "d9cb5bf69d4f8aaebefae6d680a99185"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 187; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6400
- hash: "bb6759f3aff00f027f4f426efb775d2d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 185; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6416
- hash: "a408d88f97c30ab8ab12a222b03571b4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 182; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6432
- hash: "bb2e8994dc014eb6d4e4e33257269c2a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 176; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6448
- hash: "190e9df0b8d20b0f37a198e9f3976416"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 171; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6464
- hash: "aa7be52534c8550948deea6ae174330d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6480
- hash: "533caac613ea1279a51a5b5b29acdccc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 160; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6496
- hash: "288cc34879d9ed8ed381ba6cc31de3e7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 159; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6512
- hash: "2a57602c47ab788f288daa81b985fc1d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6528
- hash: "fa3540fafa1a9e3c5e796b598dce8fb1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 156; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6544
- hash: "7e9b17ae7c10cb30153539911ac6eb13"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 155; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6560
- hash: "9e62b16c858e80ff1294ec53e2390498"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 94
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 153; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6576
- hash: "287470e6cf9bd4b9acfd1cd1512307e3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 151; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6592
- hash: "4086c7c7a573a1b9f98d22ebf9b46c5f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 149; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6608
- hash: "7d0868f000a1102916720a29a332543f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 148; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6624
- hash: "bda3cfdca81f7cba54514c512eb6b12e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 146; y: 96
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6640
- hash: "923ff9fac39c3fba2c9cf7b52fc652ad"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 145; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6656
- hash: "269718e3586affbbdf0b9599e12f5677"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 145; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6672
- hash: "d12e03b5da6ea7b162d7dec6930c1a54"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6688
- hash: "96edf1f15c674c5d8c4e4ce9e1d34f1d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6704
- hash: "70ce229fae6985dd49de8cca01c031e6"
- }
- Frame {
- msec: 6720
- image: "cursorDelegate.6.png"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 144; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6736
- hash: "56215b7d24ac382ff1ed256c80d14091"
- }
- Frame {
- msec: 6752
- hash: "ac132304e072806431803d26e345b264"
- }
- Frame {
- msec: 6768
- hash: "a8f3e7fbb95ed8fe2b83871eb3d2c151"
- }
- Frame {
- msec: 6784
- hash: "43906030c2572af0f8f0577dbc86e346"
- }
- Frame {
- msec: 6800
- hash: "d64b58801430d5063225dceac1603bca"
- }
- Frame {
- msec: 6816
- hash: "56b81435dc4ce193bb98c3d02c781242"
- }
- Frame {
- msec: 6832
- hash: "a33dce3c55b1b1541cfb9b85a75fcb53"
- }
- Frame {
- msec: 6848
- hash: "6f7411363c66d0959ea5a16a9b610e61"
- }
- Frame {
- msec: 6864
- hash: "fb7ad9156658f3866d19e43f006cf013"
- }
- Frame {
- msec: 6880
- hash: "fca865f762c1a6cc3e487e0e908eef73"
- }
- Frame {
- msec: 6896
- hash: "3d78320cb021944d7c6cee1a42056663"
- }
- Frame {
- msec: 6912
- hash: "1e3f580f37a0dc063a383bdf435e85ea"
- }
- Frame {
- msec: 6928
- hash: "75e854ccaad087bfe776a843f0bd7284"
- }
- Frame {
- msec: 6944
- hash: "ad65de5a6887c0a31a9d8f72a2a651db"
- }
- Frame {
- msec: 6960
- hash: "62bc9c57724f7ab6bcf7d75d8ff68097"
- }
- Frame {
- msec: 6976
- hash: "00dfc5f4468482cb5f74e62be235b1d2"
- }
- Frame {
- msec: 6992
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 7008
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 7024
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 7040
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 7056
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 7072
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 7088
- hash: "00dfc5f4468482cb5f74e62be235b1d2"
- }
- Frame {
- msec: 7104
- hash: "62bc9c57724f7ab6bcf7d75d8ff68097"
- }
- Frame {
- msec: 7120
- hash: "ad65de5a6887c0a31a9d8f72a2a651db"
- }
- Frame {
- msec: 7136
- hash: "75e854ccaad087bfe776a843f0bd7284"
- }
- Frame {
- msec: 7152
- hash: "1e3f580f37a0dc063a383bdf435e85ea"
- }
- Frame {
- msec: 7168
- hash: "3d78320cb021944d7c6cee1a42056663"
- }
- Frame {
- msec: 7184
- hash: "fca865f762c1a6cc3e487e0e908eef73"
- }
- Frame {
- msec: 7200
- hash: "fb7ad9156658f3866d19e43f006cf013"
- }
- Frame {
- msec: 7216
- hash: "6f7411363c66d0959ea5a16a9b610e61"
- }
- Frame {
- msec: 7232
- hash: "a33dce3c55b1b1541cfb9b85a75fcb53"
- }
- Frame {
- msec: 7248
- hash: "56b81435dc4ce193bb98c3d02c781242"
- }
- Frame {
- msec: 7264
- hash: "d64b58801430d5063225dceac1603bca"
- }
- Frame {
- msec: 7280
- hash: "43906030c2572af0f8f0577dbc86e346"
- }
- Frame {
- msec: 7296
- hash: "a8f3e7fbb95ed8fe2b83871eb3d2c151"
- }
- Frame {
- msec: 7312
- hash: "ac132304e072806431803d26e345b264"
- }
- Frame {
- msec: 7328
- hash: "56215b7d24ac382ff1ed256c80d14091"
- }
- Frame {
- msec: 7344
- hash: "4d5c97925b21d699f1c3720a3f51ebbb"
- }
- Frame {
- msec: 7360
- hash: "70ce229fae6985dd49de8cca01c031e6"
- }
- Frame {
- msec: 7376
- hash: "96edf1f15c674c5d8c4e4ce9e1d34f1d"
- }
- Frame {
- msec: 7392
- hash: "d12e03b5da6ea7b162d7dec6930c1a54"
- }
- Frame {
- msec: 7408
- hash: "269718e3586affbbdf0b9599e12f5677"
- }
- Frame {
- msec: 7424
- hash: "42d19ea6dd328c505da5a4eee23a257d"
- }
- Frame {
- msec: 7440
- hash: "e4d9d77859759dd95cf3ffee8f142cd8"
- }
- Frame {
- msec: 7456
- hash: "445e4c6e9872b63a1461e3277dd8185c"
- }
- Frame {
- msec: 7472
- hash: "d6343c629acd987179eae0d158d2504c"
- }
- Frame {
- msec: 7488
- hash: "a5340087baa2c3694ed0cc2bbc3e2ad9"
- }
- Frame {
- msec: 7504
- hash: "205973c30aaca71d1f20e740ce971d82"
- }
- Frame {
- msec: 7520
- hash: "ed28c7e07755e177222c7e322116bfb4"
- }
- Frame {
- msec: 7536
- hash: "6cebfc407a985694c803940608ab1303"
- }
- Frame {
- msec: 7552
- hash: "87f825fc820d3942e4d9b5ece5be3714"
- }
- Frame {
- msec: 7568
- hash: "9aa56dfe90ed2eba58eee0ff6ff3822c"
- }
- Frame {
- msec: 7584
- hash: "c93acf87a918f21a55cf39ea255315a3"
- }
- Frame {
- msec: 7600
- hash: "f8ce1bec5d5016c56fc66d52c28e69d1"
- }
- Frame {
- msec: 7616
- hash: "a365dba2f7c4be77ea98b727813c2f03"
- }
- Frame {
- msec: 7632
- hash: "e8d1c35ee9ef74c4070adfce5e4560f1"
- }
- Frame {
- msec: 7648
- hash: "f5f2dbb041eeb4de1821761f4fbca506"
- }
- Frame {
- msec: 7664
- hash: "f4ea6e9dff51778e9b5d1321453617ec"
- }
- Frame {
- msec: 7680
- image: "cursorDelegate.7.png"
- }
- Frame {
- msec: 7696
- hash: "f2869791dde1eb4c2ea24e04dc3ac653"
- }
- Frame {
- msec: 7712
- hash: "9bd70e91b765de22b70fe295adc4f87f"
- }
- Frame {
- msec: 7728
- hash: "c0338d0a5c72ba63bff666a76ab3242c"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 227; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7744
- hash: "cb2a643eed9b5658260e04495820cd3d"
- }
- Frame {
- msec: 7760
- hash: "6dda51f2e611b1f589c75820fd8c7295"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 227; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7776
- hash: "98d8692afd47c61421ddcae62414a72e"
- }
- Frame {
- msec: 7792
- hash: "2c533bcdd9df45c6f942d47509ebf20e"
- }
- Frame {
- msec: 7808
- hash: "d28f231fb1e128329e8985689deac882"
- }
- Frame {
- msec: 7824
- hash: "ea73450baf98a2f629ce1c203cfcd728"
- }
- Frame {
- msec: 7840
- hash: "959a31d38edc343b5e081fd0cddc81df"
- }
- Frame {
- msec: 7856
- hash: "9b1ae10ee8e9b3f176357733af9e6735"
- }
- Frame {
- msec: 7872
- hash: "89b0dd11f456bbb321e0bd2e1614c193"
- }
- Frame {
- msec: 7888
- hash: "a0a3aa6d8d4c677894e745ee432084e2"
- }
- Frame {
- msec: 7904
- hash: "f63207b8903085b19de1c9b6a9ff90e0"
- }
- Frame {
- msec: 7920
- hash: "c8f2126fece8c2b473c6511aa568dddb"
- }
- Frame {
- msec: 7936
- hash: "6ccd1f30e85dbad74468c228d92a9a3c"
- }
- Frame {
- msec: 7952
- hash: "bae09fe9f29e0f6ebda298cae753ddab"
- }
- Frame {
- msec: 7968
- hash: "cde4abae868488345fb124b927f46b45"
- }
- Frame {
- msec: 7984
- hash: "a88ccf9c8ae34ffcfd15af4e66102040"
- }
- Frame {
- msec: 8000
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 8016
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 8032
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 8048
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 8064
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 8080
- hash: "a88ccf9c8ae34ffcfd15af4e66102040"
- }
- Frame {
- msec: 8096
- hash: "cde4abae868488345fb124b927f46b45"
- }
- Frame {
- msec: 8112
- hash: "bae09fe9f29e0f6ebda298cae753ddab"
- }
- Frame {
- msec: 8128
- hash: "6ccd1f30e85dbad74468c228d92a9a3c"
- }
- Frame {
- msec: 8144
- hash: "c8f2126fece8c2b473c6511aa568dddb"
- }
- Frame {
- msec: 8160
- hash: "f63207b8903085b19de1c9b6a9ff90e0"
- }
- Frame {
- msec: 8176
- hash: "a0a3aa6d8d4c677894e745ee432084e2"
- }
- Frame {
- msec: 8192
- hash: "89b0dd11f456bbb321e0bd2e1614c193"
- }
- Frame {
- msec: 8208
- hash: "9b1ae10ee8e9b3f176357733af9e6735"
- }
- Frame {
- msec: 8224
- hash: "959a31d38edc343b5e081fd0cddc81df"
- }
- Frame {
- msec: 8240
- hash: "ea73450baf98a2f629ce1c203cfcd728"
- }
- Frame {
- msec: 8256
- hash: "d28f231fb1e128329e8985689deac882"
- }
- Frame {
- msec: 8272
- hash: "2c533bcdd9df45c6f942d47509ebf20e"
- }
- Frame {
- msec: 8288
- hash: "98d8692afd47c61421ddcae62414a72e"
- }
- Frame {
- msec: 8304
- hash: "6dda51f2e611b1f589c75820fd8c7295"
- }
- Frame {
- msec: 8320
- hash: "cb2a643eed9b5658260e04495820cd3d"
- }
- Frame {
- msec: 8336
- hash: "88afd2fa1182fbb2aab100d4587a1006"
- }
- Frame {
- msec: 8352
- hash: "bc657c5181a11a9ff9565f134bdccb8d"
- }
- Frame {
- msec: 8368
- hash: "a296634d814a6e12f9d09f4d8a9fa097"
- }
- Frame {
- msec: 8384
- hash: "f05a2deeb12722904c4f31d641dffeb4"
- }
- Frame {
- msec: 8400
- hash: "75823698247e39dd10a70fe224e13597"
- }
- Frame {
- msec: 8416
- hash: "244fa06c168f7a7401b8ec7f5ddb0e52"
- }
- Frame {
- msec: 8432
- hash: "a78e0f88d269290e9086d1d854618f0c"
- }
- Frame {
- msec: 8448
- hash: "57b1281d29d5c5fdc15d9cf1e3a5545c"
- }
- Frame {
- msec: 8464
- hash: "a24ac211ef29dcf7f22ac95991f1af3f"
- }
- Frame {
- msec: 8480
- hash: "361f978ea3597fd518c25c0069c22e8b"
- }
- Frame {
- msec: 8496
- hash: "ac8e2c01eb58aac0eb4feb6aba9b9628"
- }
- Frame {
- msec: 8512
- hash: "6099612934b5eb90296f1cc3cb5c1a84"
- }
- Frame {
- msec: 8528
- hash: "7c3f08291168065fc9c1d62108022d33"
- }
- Frame {
- msec: 8544
- hash: "8bf57ba445d668af5f3e59276c4f8800"
- }
- Frame {
- msec: 8560
- hash: "c8ed352cbfbc472ea4802a9e03d40052"
- }
- Frame {
- msec: 8576
- hash: "11e5546b30e47d2f3067c0364b9f0877"
- }
- Frame {
- msec: 8592
- hash: "9df0f136fca92d4a05f17ee68f0cd286"
- }
- Frame {
- msec: 8608
- hash: "39f47838a622ba328548cad57cca9e12"
- }
- Frame {
- msec: 8624
- hash: "c891d582be4b23c01e29032fe861081f"
- }
- Frame {
- msec: 8640
- image: "cursorDelegate.8.png"
- }
- Frame {
- msec: 8656
- hash: "c3820dfd382c4568d9fbd2ee95889eda"
- }
- Frame {
- msec: 8672
- hash: "528cf8778318bf7216b54f983dadb2b4"
- }
- Frame {
- msec: 8688
- hash: "419518a3c63aa36f6070e95eb93e58a3"
- }
- Frame {
- msec: 8704
- hash: "11b22e2853c0a9ea6e4ac764348698c9"
- }
- Frame {
- msec: 8720
- hash: "8018329c4b57647942ae34a5f83c2b12"
- }
- Frame {
- msec: 8736
- hash: "c37e9fd5c3d664c2e4911c8cb9fcabf7"
- }
- Frame {
- msec: 8752
- hash: "4e7895f802c9fc249894ba0db25959f7"
- }
- Frame {
- msec: 8768
- hash: "5fed71d99ef70432bc6be8caaea36f17"
- }
- Frame {
- msec: 8784
- hash: "69976d074acbd7a5731c70b33c8f084b"
- }
- Frame {
- msec: 8800
- hash: "c88952348da3df0627b12b8bb05ca13e"
- }
- Frame {
- msec: 8816
- hash: "cc5222da7a17c66d4db146c406492701"
- }
- Frame {
- msec: 8832
- hash: "8915e752776da27cb86019c9decc8a8c"
- }
- Frame {
- msec: 8848
- hash: "d8a77ccc7c01cf187e846a2903e1c55e"
- }
- Frame {
- msec: 8864
- hash: "3cf3f02f98a199c81ef73e8905e7f7ee"
- }
- Frame {
- msec: 8880
- hash: "7a1d47e0109fc370bf63714040cbef96"
- }
- Frame {
- msec: 8896
- hash: "2ca8b8ddbe73b29327e474da34a14a87"
- }
- Frame {
- msec: 8912
- hash: "ee75214865fca848aa38cc05b6049d8f"
- }
- Frame {
- msec: 8928
- hash: "05ab7d8118a806f2215160f5f266a082"
- }
- Frame {
- msec: 8944
- hash: "31e63095b7be56d0bf75e9cff832feb7"
- }
- Frame {
- msec: 8960
- hash: "3ffda2c2f154f1eb806e9f0963057fa1"
- }
- Frame {
- msec: 8976
- hash: "4e805203b58e8f6f331f2e878704fa01"
- }
- Frame {
- msec: 8992
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 9008
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 9024
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 9040
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 9056
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 9072
- hash: "60edce44dd4ca7fac8d8093990ee5ec1"
- }
- Frame {
- msec: 9088
- hash: "4e805203b58e8f6f331f2e878704fa01"
- }
- Frame {
- msec: 9104
- hash: "3ffda2c2f154f1eb806e9f0963057fa1"
- }
- Frame {
- msec: 9120
- hash: "31e63095b7be56d0bf75e9cff832feb7"
- }
- Frame {
- msec: 9136
- hash: "05ab7d8118a806f2215160f5f266a082"
+ hash: "7b5de3772b8bcb4b10f3d265d5603afb"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.0.png
new file mode 100644
index 0000000000..e69860ebbc
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.1.png
new file mode 100644
index 0000000000..1db3c262d8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.10.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.10.png
new file mode 100644
index 0000000000..9c72d52a98
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.10.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.11.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.11.png
new file mode 100644
index 0000000000..9c72d52a98
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.11.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.2.png
new file mode 100644
index 0000000000..fbef8052a6
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.3.png
new file mode 100644
index 0000000000..dc56c7e1de
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.4.png
new file mode 100644
index 0000000000..04ea496431
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.5.png
new file mode 100644
index 0000000000..98bf7dee1e
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.6.png
new file mode 100644
index 0000000000..d95b8952c5
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.7.png
new file mode 100644
index 0000000000..9954344363
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.8.png
new file mode 100644
index 0000000000..d49c2ff1f8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.9.png
new file mode 100644
index 0000000000..9c72d52a98
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.qml
new file mode 100644
index 0000000000..94891e5d07
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data/usingMultilineEdit.qml
@@ -0,0 +1,4687 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 32
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 48
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 64
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 80
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 96
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 112
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 128
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 144
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 160
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 176
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 192
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 208
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 224
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 240
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 256
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 272
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 288
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 304
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 320
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 118; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 336
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 352
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 368
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 384
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 400
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 118; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 416
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 432
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 448
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 464
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 480
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 496
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 512
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 528
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 544
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 560
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 576
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 592
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 608
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 624
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Frame {
+ msec: 640
+ hash: "a4edfba57a47b45f96fe1fa7a37c1720"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 117; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 656
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 672
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 117; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 688
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 704
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 720
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 736
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 752
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 768
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 784
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 800
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 816
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 832
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 848
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 864
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 880
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 896
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 912
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 928
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 944
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 960
+ image: "usingMultilineEdit.0.png"
+ }
+ Frame {
+ msec: 976
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 992
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1008
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1024
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1040
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1056
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1072
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1088
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1104
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1120
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1136
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1152
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1168
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1184
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1200
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1216
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1232
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1248
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1264
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1280
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Frame {
+ msec: 1296
+ hash: "bf9ad629e190df34f8bbb242e986083f"
+ }
+ Key {
+ type: 6
+ key: 44
+ modifiers: 0
+ text: "2c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1312
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Frame {
+ msec: 1328
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Frame {
+ msec: 1344
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Frame {
+ msec: 1360
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Frame {
+ msec: 1376
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Key {
+ type: 7
+ key: 44
+ modifiers: 0
+ text: "2c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1392
+ hash: "bf65dbbfc02ad1589093d965c83d5806"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1408
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1424
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1440
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1456
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1472
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1488
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1504
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1520
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1536
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Frame {
+ msec: 1552
+ hash: "ef0640a754b76b5e28bff78376f1aaf3"
+ }
+ Key {
+ type: 6
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1568
+ hash: "b392b8d675e61166e9707f4a7f191c15"
+ }
+ Frame {
+ msec: 1584
+ hash: "b392b8d675e61166e9707f4a7f191c15"
+ }
+ Frame {
+ msec: 1600
+ hash: "b392b8d675e61166e9707f4a7f191c15"
+ }
+ Key {
+ type: 7
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1616
+ hash: "b392b8d675e61166e9707f4a7f191c15"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1632
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1648
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1664
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1680
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1696
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1712
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Frame {
+ msec: 1728
+ hash: "f7a9826581a72f37b1211f1006d93ae5"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1744
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Frame {
+ msec: 1760
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Frame {
+ msec: 1776
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1792
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Frame {
+ msec: 1808
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Frame {
+ msec: 1824
+ hash: "cea68eaed3000fe598917688b49525b7"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1840
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Frame {
+ msec: 1856
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Frame {
+ msec: 1872
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Frame {
+ msec: 1888
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Frame {
+ msec: 1904
+ hash: "968932500933300e0a0ca711067d6659"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1920
+ image: "usingMultilineEdit.1.png"
+ }
+ Frame {
+ msec: 1936
+ hash: "1d5b3f8dc6e0701c0c11a330e055ba5d"
+ }
+ Frame {
+ msec: 1952
+ hash: "1d5b3f8dc6e0701c0c11a330e055ba5d"
+ }
+ Frame {
+ msec: 1968
+ hash: "1d5b3f8dc6e0701c0c11a330e055ba5d"
+ }
+ Key {
+ type: 6
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1984
+ hash: "067182091936c99dfa5c29b226bd4351"
+ }
+ Frame {
+ msec: 2000
+ hash: "067182091936c99dfa5c29b226bd4351"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2016
+ hash: "067182091936c99dfa5c29b226bd4351"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2032
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2048
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Key {
+ type: 7
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2080
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2096
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2112
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2128
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Frame {
+ msec: 2144
+ hash: "810e996b65424f80e229160860805492"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2160
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2176
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2192
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2208
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2224
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Frame {
+ msec: 2240
+ hash: "10aca130f139e44c0889d8d9c9bb8673"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2256
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2272
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2288
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2304
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2320
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Key {
+ type: 7
+ key: 82
+ modifiers: 0
+ text: "72"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2336
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Frame {
+ msec: 2352
+ hash: "6785570c7f2cc9f3c6b0b07b8a94ecb2"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2368
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Frame {
+ msec: 2384
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Frame {
+ msec: 2400
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Frame {
+ msec: 2416
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2432
+ hash: "701c2738b7c064cd487bd0c6c0beb6b4"
+ }
+ Key {
+ type: 6
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2464
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2480
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2496
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2512
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Frame {
+ msec: 2528
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Key {
+ type: 7
+ key: 80
+ modifiers: 0
+ text: "70"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2544
+ hash: "35c0c51dd874faa28058251164836dcb"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2560
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2576
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2592
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2608
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2624
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2640
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2656
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2672
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Frame {
+ msec: 2688
+ hash: "12748fe9d3b72aff29449deeb2372d03"
+ }
+ Key {
+ type: 6
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2704
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2720
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2736
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2752
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2768
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Frame {
+ msec: 2784
+ hash: "0d119074fb7e882ebe4dfbad9bfb401a"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2800
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Key {
+ type: 7
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2816
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2832
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2848
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2864
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 0
+ text: "69"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2880
+ image: "usingMultilineEdit.2.png"
+ }
+ Frame {
+ msec: 2896
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2912
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Frame {
+ msec: 2928
+ hash: "3646bd6ea35fb8f0160a24a203b0f469"
+ }
+ Key {
+ type: 6
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2944
+ hash: "d90cbfbec0e5a73781664eec63ba7081"
+ }
+ Frame {
+ msec: 2960
+ hash: "d90cbfbec0e5a73781664eec63ba7081"
+ }
+ Frame {
+ msec: 2976
+ hash: "d90cbfbec0e5a73781664eec63ba7081"
+ }
+ Key {
+ type: 7
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2992
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Frame {
+ msec: 3008
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Frame {
+ msec: 3024
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Frame {
+ msec: 3040
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3056
+ hash: "8faa6d1174cf3e8ef10f6575276ed125"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3072
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Frame {
+ msec: 3088
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Frame {
+ msec: 3104
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3120
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 33554432
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3136
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Frame {
+ msec: 3152
+ hash: "bac072bfe350abe83fbc941e56845939"
+ }
+ Key {
+ type: 6
+ key: 73
+ modifiers: 33554432
+ text: "49"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3168
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Frame {
+ msec: 3184
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Frame {
+ msec: 3200
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Frame {
+ msec: 3216
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Key {
+ type: 7
+ key: 73
+ modifiers: 33554432
+ text: "49"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3232
+ hash: "386a85651164d0edbeb5cc2b7ee438c7"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3248
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Frame {
+ msec: 3264
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Frame {
+ msec: 3280
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Frame {
+ msec: 3296
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3312
+ hash: "982d48e7ef886a74791306f055ddc714"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3328
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Frame {
+ msec: 3344
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Frame {
+ msec: 3360
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Frame {
+ msec: 3376
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Frame {
+ msec: 3392
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3408
+ hash: "38003a58f17d25d302c5e1b643b271b0"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3424
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Frame {
+ msec: 3440
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Frame {
+ msec: 3456
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Frame {
+ msec: 3472
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Frame {
+ msec: 3488
+ hash: "18d37190d139a1567d91882fdac411d6"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 78
+ modifiers: 0
+ text: "6e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3504
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3520
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3536
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3552
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3568
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Frame {
+ msec: 3584
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Key {
+ type: 7
+ key: 78
+ modifiers: 0
+ text: "6e"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3600
+ hash: "279aa32aaeebea7f8078e8a750d0514b"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3616
+ hash: "626123df4dc8fc1321d0262871ffbe3e"
+ }
+ Frame {
+ msec: 3632
+ hash: "626123df4dc8fc1321d0262871ffbe3e"
+ }
+ Frame {
+ msec: 3648
+ hash: "626123df4dc8fc1321d0262871ffbe3e"
+ }
+ Frame {
+ msec: 3664
+ hash: "626123df4dc8fc1321d0262871ffbe3e"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3680
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3696
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3712
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3728
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3744
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3760
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3776
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3792
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3808
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3824
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3840
+ image: "usingMultilineEdit.3.png"
+ }
+ Frame {
+ msec: 3856
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3872
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3888
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3904
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3920
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3936
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3952
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Frame {
+ msec: 3968
+ hash: "00972f42fed66eb94832506b436b203d"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3984
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Frame {
+ msec: 4000
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Frame {
+ msec: 4016
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Frame {
+ msec: 4032
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Frame {
+ msec: 4048
+ hash: "72d952ff90862b93ccec046f61d85360"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4064
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4080
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Frame {
+ msec: 4096
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Frame {
+ msec: 4112
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Frame {
+ msec: 4128
+ hash: "abd2bd3a1fdf5dbdd5bfdcc84bad136c"
+ }
+ Key {
+ type: 6
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4144
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Frame {
+ msec: 4160
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4176
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Frame {
+ msec: 4192
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Frame {
+ msec: 4208
+ hash: "f091e9b3d660c3664960f3fe6f624a1d"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4224
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4240
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Key {
+ type: 7
+ key: 85
+ modifiers: 0
+ text: "75"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4256
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4272
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4288
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4304
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4320
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4336
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4352
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Frame {
+ msec: 4368
+ hash: "bc9ae8ea7f8a7f1089263a20b4a5e826"
+ }
+ Key {
+ type: 6
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4384
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Frame {
+ msec: 4400
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Frame {
+ msec: 4416
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Frame {
+ msec: 4432
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Frame {
+ msec: 4448
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Key {
+ type: 7
+ key: 84
+ modifiers: 0
+ text: "74"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4464
+ hash: "f96b7c209a5e558543157cf5aa4ce69e"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4480
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4496
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4512
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4528
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4544
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4560
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4576
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4592
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4608
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4624
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4640
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4656
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4672
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4688
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4704
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4720
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4736
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4752
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4768
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4784
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4800
+ image: "usingMultilineEdit.4.png"
+ }
+ Frame {
+ msec: 4816
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Frame {
+ msec: 4832
+ hash: "67facce41bc51af385bd8102a7e1285e"
+ }
+ Key {
+ type: 6
+ key: 63
+ modifiers: 33554432
+ text: "3f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4848
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4864
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4880
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4896
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4912
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4928
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4944
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Key {
+ type: 7
+ key: 63
+ modifiers: 33554432
+ text: "3f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4960
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4976
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 4992
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5008
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5024
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5040
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5056
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5072
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5088
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5104
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5120
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5136
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5152
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5168
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5184
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5200
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5216
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5232
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5248
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5264
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5280
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5296
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5312
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5328
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5344
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5360
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5376
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5392
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5408
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5424
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5440
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5456
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5472
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5488
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5504
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5520
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5536
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5552
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5568
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5584
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5600
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5616
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5632
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5648
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5664
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5680
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5696
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5712
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5728
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5744
+ hash: "a616e994d83964ff75d95b702f355937"
+ }
+ Frame {
+ msec: 5760
+ image: "usingMultilineEdit.5.png"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 48; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5776
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Frame {
+ msec: 5792
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Frame {
+ msec: 5808
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Frame {
+ msec: 5824
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: 21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5840
+ hash: "e9532a9023548cf5dfca3fdaeb3467e7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5856
+ hash: "3ee2836c3a2ff4c71d82dd261941883b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5872
+ hash: "3ee2836c3a2ff4c71d82dd261941883b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 41
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5888
+ hash: "3ee2836c3a2ff4c71d82dd261941883b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5904
+ hash: "4e620c1b847274f691e80a384eac5320"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 58; y: 52
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5920
+ hash: "1a246aa1be0878c38da2eaac6befb738"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 69
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5936
+ hash: "7d6d4a33aacd1d2f530834af31069793"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 62; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5952
+ hash: "eba517141a4dc94025801fabc8c5e813"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 86
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 90
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5968
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 97
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5984
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 101
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 105
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6000
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 111
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6016
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 114
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 116
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6032
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 122
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6048
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 124
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 128
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6064
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 130
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 132
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6080
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 134
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 137
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6096
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 138
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 140
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6112
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 141
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 144
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6128
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 148
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6144
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 149
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 151
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6160
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 69; y: 153
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6176
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 155
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6192
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Frame {
+ msec: 6208
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Frame {
+ msec: 6224
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Frame {
+ msec: 6240
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Frame {
+ msec: 6256
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 154
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6272
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 152
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 149
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6288
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 68; y: 145
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 139
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6304
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 66; y: 126
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6320
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 63; y: 98
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6336
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6352
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 72
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6368
+ hash: "a0f4a1f253c763054ca7d9727d517e5c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 59; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6384
+ hash: "b6589493e0225846be0af57024e25d98"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 57; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6400
+ hash: "b6589493e0225846be0af57024e25d98"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6416
+ hash: "d8a1bee2a0e57944d8268a2ce7e6c3c1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 6
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6432
+ hash: "a609d3c9cb375240e66dd316af27543c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -2
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -9
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6448
+ hash: "0d376060ba0f9843ed814a8d8150d047"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: -23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6464
+ hash: "9ad787bf41f0ab66beffff056a115c23"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6480
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6496
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6512
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6528
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6544
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6560
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6576
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6592
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6608
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6624
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6640
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6656
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Frame {
+ msec: 6672
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6688
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: -45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: -42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6704
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 44; y: -39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6720
+ image: "usingMultilineEdit.6.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: -33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: -28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6736
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -25
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 47; y: -21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6752
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: -18
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: -14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6768
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 49; y: -10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -8
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6784
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: -6
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: -3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6800
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: -1
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 0
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6816
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 2
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 52; y: 3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6832
+ hash: "bc4cd74678c08403bb16b74630d0fd18"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 5
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 7
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6848
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 54; y: 8
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6864
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6880
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 55; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6896
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6912
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6928
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6944
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6960
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6976
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 6992
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7008
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7024
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7040
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7056
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7072
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Frame {
+ msec: 7088
+ hash: "0e728de352bc8658bb3e2900a56bfad9"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 59; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7104
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7120
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7136
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7152
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7168
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 59; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7184
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7200
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7216
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7232
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7248
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7264
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7280
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7296
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7312
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7328
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7344
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7360
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7376
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7392
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7408
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7424
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7440
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7456
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7472
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7488
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7504
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7520
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7536
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7552
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Frame {
+ msec: 7568
+ hash: "c9b766ef3743159fdd7a01d3eeaa357b"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7584
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7600
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7616
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7632
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7648
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7664
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7680
+ image: "usingMultilineEdit.7.png"
+ }
+ Frame {
+ msec: 7696
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Frame {
+ msec: 7712
+ hash: "f8d7e167379a5109b1744727b3bb5050"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7728
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7744
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7760
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7776
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7792
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7808
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7824
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7840
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7856
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7872
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7888
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7904
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7920
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7936
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Frame {
+ msec: 7952
+ hash: "d1f43fa2f710725527736ac3439577df"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 7968
+ hash: "1553d42725394fa4d4c9b97dc12a78b9"
+ }
+ Frame {
+ msec: 7984
+ hash: "1553d42725394fa4d4c9b97dc12a78b9"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8000
+ hash: "a62df700f3209668a813e765a79e7859"
+ }
+ Frame {
+ msec: 8016
+ hash: "a62df700f3209668a813e765a79e7859"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8032
+ hash: "e8928770969b82523e828e3036bbe106"
+ }
+ Frame {
+ msec: 8048
+ hash: "e8928770969b82523e828e3036bbe106"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 0
+ text: ""
+ autorep: true
+ count: 1
+ }
+ Frame {
+ msec: 8064
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Frame {
+ msec: 8080
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8096
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Frame {
+ msec: 8112
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Frame {
+ msec: 8128
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Frame {
+ msec: 8144
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Frame {
+ msec: 8160
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Frame {
+ msec: 8176
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Frame {
+ msec: 8192
+ hash: "ba0c406580cc0fa02a6b26367a290ec9"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8208
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Frame {
+ msec: 8224
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Frame {
+ msec: 8240
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Frame {
+ msec: 8256
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8272
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Frame {
+ msec: 8288
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Frame {
+ msec: 8304
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Frame {
+ msec: 8320
+ hash: "479b5ba3f5b3d38b5e9aba6b5204da03"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8336
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Frame {
+ msec: 8352
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Frame {
+ msec: 8368
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Frame {
+ msec: 8384
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8400
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Frame {
+ msec: 8416
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Frame {
+ msec: 8432
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Frame {
+ msec: 8448
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Frame {
+ msec: 8464
+ hash: "978ed05f4ea2cc7ddb06807a25883335"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8480
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8496
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8512
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8528
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8544
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8560
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8576
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8592
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8608
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8624
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8640
+ image: "usingMultilineEdit.8.png"
+ }
+ Frame {
+ msec: 8656
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 8672
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8688
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8704
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8720
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8736
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8752
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8768
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8784
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8800
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8816
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8832
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8848
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8864
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8880
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8896
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8912
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8928
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8944
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8960
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8976
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 8992
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9008
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9024
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9040
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9056
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9072
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9088
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9104
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9120
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9136
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9152
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9168
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9184
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9200
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 70; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9216
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9232
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 74
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9248
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 76
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9264
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 77
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9280
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 70; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9296
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9312
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9328
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9344
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9360
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9376
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9392
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9408
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9424
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Frame {
+ msec: 9440
+ hash: "b65c439a091d3293352de410d28aaca1"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 71; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9456
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9472
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9488
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9504
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9520
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9536
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 71; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9552
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9568
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9584
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9600
+ image: "usingMultilineEdit.9.png"
+ }
+ Frame {
+ msec: 9616
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9632
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9648
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9664
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 9680
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9696
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9712
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9728
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9744
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9760
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9776
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9792
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9808
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9824
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9840
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9856
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9872
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9888
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9904
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9920
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9936
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9952
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9968
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 9984
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10000
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10016
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10032
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10048
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10064
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10080
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10096
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Key {
+ type: 6
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10112
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10128
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10144
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10160
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10176
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10192
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10208
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10224
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Key {
+ type: 7
+ key: 16777237
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10240
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10256
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10272
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10288
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10304
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10320
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10336
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Frame {
+ msec: 10352
+ hash: "8d9ca5bff73c2c93a0db5787ca7ef76b"
+ }
+ Key {
+ type: 6
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10368
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10384
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10400
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10416
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10432
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10448
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Key {
+ type: 7
+ key: 16777235
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10464
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10480
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10496
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10512
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10528
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10544
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10560
+ image: "usingMultilineEdit.10.png"
+ }
+ Frame {
+ msec: 10576
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10592
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10608
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10624
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10640
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 10656
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10672
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10688
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10704
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10720
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10736
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10752
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10768
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10784
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10800
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10816
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10832
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10848
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10864
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10880
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10896
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10912
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10928
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10944
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10960
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10976
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 10992
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11008
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11024
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11040
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11056
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11072
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11088
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11104
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11120
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11136
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11152
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11168
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11184
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11200
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11216
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11232
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11248
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11264
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11280
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11296
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11312
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11328
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11344
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11360
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11376
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11392
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11408
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11424
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11440
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11456
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11472
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11488
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11504
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11520
+ image: "usingMultilineEdit.11.png"
+ }
+ Frame {
+ msec: 11536
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11552
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11568
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11584
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11600
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+ Frame {
+ msec: 11616
+ hash: "3d08eff16edf54f522a75df1734150df"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml
index b5bb102fea..5f80234646 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/qt-669.qml
@@ -1,17 +1,17 @@
import QtQuick 1.0
+import "../shared" 1.0
Rectangle {
Component { id: testableCursor
- //Doesn't blink
+ //This shouldn't blink
Rectangle {
color:"black"
width:1
}
}
- color: "green"
- width:400;
+ 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 4cf7e97d86..bf5e7a0198 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/usingMultilineEdit.qml
@@ -1,13 +1,14 @@
import QtQuick 1.0
Rectangle{
- width: 600
- height: 200
- Column{
- MultilineEdit{
+ width: 280
+ height: 140
+ 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;
}
- 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 4afe417e2f..63400f1b35 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 74c16e2c90..6789eac28b 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
@@ -41,8 +42,9 @@ Item {
text:""
horizontalAlignment: TextInput.AlignLeft
font.pixelSize:15
+ selectionColor: 'steelblue'
}
- 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 973462a2df..f2a34b7cc5 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;
@@ -11,8 +13,8 @@ import QtQuick 1.0
Rectangle { id:bottom; color: "black"; width: 3; height: 1; x: -1; anchors.bottom: parent.bottom;}
opacity: 1
SequentialAnimation on opacity { running: cPage.parent.focus == true; loops: Animation.Infinite;
- NumberAnimation { properties: "opacity"; to: 1; duration: 500; easing.type: "InQuad"}
- NumberAnimation { properties: "opacity"; to: 0; duration: 500; easing.type: "OutQuad"}
+ NumberAnimation { to: 1; duration: 500; easing.type: "InQuad"}
+ NumberAnimation { to: 0; duration: 500; easing.type: "OutQuad"}
}
}
width: 1;
@@ -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 9d0bab2705..b65bc372f9 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 db66ff79b3..ebaa01161b 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 cbcca68d43..57ee3706d4 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 c22196b6bf..4b70b4a584 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 a1d051e6bd..18ae753c8f 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.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png
index 9289dc028a..2b463f0d92 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.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 208d05f203..6b8ba9b1b7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml
@@ -6,134 +6,146 @@ VisualTest {
}
Frame {
msec: 16
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ image: "cursorDelegate.0.png"
}
Frame {
msec: 32
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 48
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 64
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 80
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 96
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 112
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 128
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 144
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 160
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 176
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 192
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 208
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 224
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 240
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 256
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 272
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 288
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 304
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 320
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 336
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 352
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 368
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 384
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 400
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 416
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 432
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
}
Frame {
msec: 448
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "a7af287992f894f9cf76e834b922f5b3"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 464
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "74b6ebfbe8246f0b2b43f88d9f6028d1"
}
Frame {
msec: 480
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "74b6ebfbe8246f0b2b43f88d9f6028d1"
}
Frame {
msec: 496
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "74b6ebfbe8246f0b2b43f88d9f6028d1"
}
Frame {
msec: 512
- hash: "701d8c0f72330c0b72df071bd17749e6"
+ hash: "74b6ebfbe8246f0b2b43f88d9f6028d1"
+ }
+ Frame {
+ msec: 528
+ hash: "0f0e9ced5d2f9f20a2b5f1b5bde0be62"
}
Key {
- type: 6
+ type: 7
key: 16777234
modifiers: 0
text: ""
@@ -141,36 +153,44 @@ VisualTest {
count: 1
}
Frame {
- msec: 528
- hash: "438be260f19d04c9f98ed7dce1c7db40"
- }
- Frame {
msec: 544
- hash: "6032aada2c48092000ecb93e52656414"
+ hash: "bec7fff73d6d869d2d15b3ea35fa0605"
}
Frame {
msec: 560
- hash: "d23bdd94019477d8378cde580d8765ad"
+ hash: "e3afffc91ed0a78a0022421e6d1bd0d2"
}
Frame {
msec: 576
- hash: "d74f8e44d47710714d4197809fffb622"
+ hash: "45f44411121d335ed7a844803313e566"
}
Frame {
msec: 592
- hash: "4fbbb8447d80012bc6b5c24ddbfe498e"
+ hash: "b951279da53fe76ab62ca9837ecbd7a6"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 608
- hash: "4e875ba8703b690a17e445f2b3810435"
+ hash: "b5678202f08099b09ce88cef5eeea20a"
}
Frame {
msec: 624
- hash: "e4d7a59716cd704fe1cfa8ba91454e93"
+ hash: "93f6663d083a2bd3b4079241f3fc0159"
}
Frame {
msec: 640
- hash: "a2ea272b45d8de225826d9381015ff2e"
+ hash: "8c802943d3030214cb7af7fd1db1c813"
+ }
+ Frame {
+ msec: 656
+ hash: "01396c0332523ba2a8971a99c6962516"
}
Key {
type: 7
@@ -181,67 +201,47 @@ VisualTest {
count: 1
}
Frame {
- msec: 656
- hash: "5d112a3675ea4c010e7bc60e036d0262"
- }
- Frame {
msec: 672
- hash: "788d8962f311adf57a3acc876b0e8804"
+ hash: "fc5dd253219d1a8aca7fcf31be0e7d69"
}
Frame {
msec: 688
- hash: "827fdd6a3d1006f4a9dd2faf208ea436"
+ hash: "545071a58d8db4f73e1cb6981e9ec62e"
+ }
+ Frame {
+ msec: 704
+ hash: "13bc1aa8ce4fc3d9ba9a6c3046e14c92"
+ }
+ Frame {
+ msec: 720
+ hash: "ba7d13545fb7384dcb3edd32979c9442"
}
Key {
type: 6
- key: 16777236
+ key: 16777234
modifiers: 0
text: ""
autorep: false
count: 1
}
Frame {
- msec: 704
- hash: "91b2695e4915238ae8610a64e279b0f4"
- }
- Frame {
- msec: 720
- hash: "a97d90765f87b998eae6e9f603c61bff"
- }
- Frame {
msec: 736
- hash: "48969edab07b942480d93ac2d383ca24"
+ hash: "8f9e1abd8eb2d072907b910630e93c9a"
}
Frame {
msec: 752
- hash: "ecfd9d6d5873001f0c67806544a14983"
+ hash: "003d0e4a01909aa51cb1967738383ede"
}
Frame {
msec: 768
- hash: "a3a3bc1e2523d3e7f961893bcd1dd3a8"
+ hash: "223cce18cef44b3945d0a1d45554c5c1"
}
Frame {
msec: 784
- hash: "e337735ad0b42e60c54f16f3da7af3cf"
- }
- Frame {
- msec: 800
- hash: "c39db081130d269f25dbcb1a19afb8d0"
- }
- Frame {
- msec: 816
- hash: "c464d501e3935ec0f53eb780bd1a8289"
+ hash: "fcd7f862bdce75d7e6df574ff0146ca6"
}
Key {
type: 7
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Key {
- type: 6
key: 16777234
modifiers: 0
text: ""
@@ -249,28 +249,44 @@ VisualTest {
count: 1
}
Frame {
+ msec: 800
+ hash: "21f5e3696987222106b00f0efe3bb165"
+ }
+ Frame {
+ msec: 816
+ hash: "6380ce26303da8180dff8fcc88caaf1d"
+ }
+ Frame {
msec: 832
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "52bfa995405a3d6523d97b2c36428d89"
}
Frame {
msec: 848
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "7169d69c2adb50bf80c075e30eb8e965"
}
Frame {
msec: 864
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "f5ad55885a4fc2b47a5420e9e0d7c59c"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 880
- hash: "34bc703c915b49b0450ece1d18306df8"
+ hash: "831081f829df0a226c75389bc457a768"
}
Frame {
msec: 896
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ hash: "2306a9c9cb570bc922f120f2f63e26e4"
}
Frame {
msec: 912
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "23d6728fe34436e53a449e26962c3ad5"
}
Key {
type: 7
@@ -282,219 +298,259 @@ VisualTest {
}
Frame {
msec: 928
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "db2de48337701cbb36a14e32f1846683"
}
Frame {
msec: 944
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "04bb83a694d293fd4ba956fc79db79e7"
}
Frame {
msec: 960
- image: "cursorDelegate.0.png"
+ hash: "7a1a71b2d7e42934163990d5c011c464"
}
Frame {
msec: 976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ image: "cursorDelegate.1.png"
}
Frame {
msec: 992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 1024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 1040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 1056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Key {
- type: 6
- key: 16777248
+ type: 7
+ key: 16777234
modifiers: 0
text: ""
autorep: false
count: 1
}
- Key {
- type: 6
- key: 16777249
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ Frame {
+ msec: 1056
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 1072
- hash: "35425ae3ccf3c8dcc1483479c57a3287"
+ hash: "20f1db4245d1689e980371d7b1bcb903"
}
Frame {
msec: 1088
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "6a3629223845d352ba02e3ad8569f698"
}
Frame {
msec: 1104
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "ee3dd4535fcf24249c41ebebb5f4fca6"
}
Frame {
msec: 1120
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "7bf5df6a807da0c8d316420ced34e267"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1136
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ hash: "4f5ce98428d5fba11a6322f88cab14c3"
}
Frame {
msec: 1152
- hash: "34bc703c915b49b0450ece1d18306df8"
+ hash: "14406e8d0e120a0f30864fa8793f2e8d"
}
Frame {
msec: 1168
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "6e891d584ce4f636708cee1111193878"
}
Frame {
msec: 1184
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "cd6bbc72108cfffd043a31d0d3655851"
}
Frame {
msec: 1200
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "d4069e606ab2b10c90e6f567be462c10"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1216
- hash: "76fb2e1ad33affe33c0887f04caa7396"
+ hash: "de8e00d6116b1aa900478a41c7ac78f1"
}
Frame {
msec: 1232
- hash: "0f500339c81ca3621d13910017b84b7b"
+ hash: "5a0c4e31eb9ecb2ffc9380d474861846"
}
Frame {
msec: 1248
- hash: "702864de569e6a5648ee174d5ef891f8"
+ hash: "bbacdb359c6206b50a859169b106ec92"
}
Frame {
msec: 1264
- hash: "01e937e1fcc0331b2541fa32c3479a24"
+ hash: "c4f4ed5a4842f1bbdda67a27d74fd5f4"
}
Frame {
msec: 1280
- hash: "ee661e6cc1f86e755ff399adb6b11fd1"
+ hash: "4deb6d0a83b14abef80f2bfa0491cbd0"
}
Frame {
msec: 1296
- hash: "ea2d610e9b41e72b2984a51f0d3f7587"
+ hash: "9caca7068ce5b289d70c39667e87a57f"
}
- Frame {
- msec: 1312
- hash: "4a646d76b706698a02cead560b1f8d57"
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
- msec: 1328
- hash: "48ec87bfc25471f6fa2d43f9db80b693"
+ msec: 1312
+ hash: "e3ca7a8a860efc3811b8befe0a97d7f1"
}
Key {
type: 6
- key: 16777234
- modifiers: 100663296
+ key: 16777248
+ modifiers: 67108864
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 1328
+ hash: "ddb3dcb40f412c087d0ae21b5a8e47aa"
+ }
+ Frame {
msec: 1344
- hash: "12b5e016bad990d1f2bf427ee8e3e6d9"
+ hash: "325d8356c3e14467c54d03d096a3c1a5"
}
Frame {
msec: 1360
- hash: "66a2ba3f9e005cd58aa50cfa0000cd15"
+ hash: "83f4c541b94180863e538e6c0a0e1ae0"
}
Frame {
msec: 1376
- hash: "a2e9e42e09dadbd0791f52bb96e0e0dc"
+ hash: "16623dc34067800f3c7d6aabe1076927"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1392
- hash: "ac68396566ea85a157e944e601dd8d18"
+ hash: "e7319b080b621c5d176d6913cd9a8f7e"
}
Frame {
msec: 1408
- hash: "b9bfdebec8dd1a93de7ef2768b2542ba"
+ hash: "353a200418b2cc0fbe925329224e658a"
}
Frame {
msec: 1424
- hash: "2e0a4b960803770acb34ef56ccf2be35"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ hash: "98fd3f1fc108de1d78f07587f9e94ec4"
}
Frame {
msec: 1440
- hash: "df1643f0f8b7aa2dc080958822aeb3d0"
+ hash: "f75fbda5a1403f7b1dd8e9d05e30ebeb"
}
Frame {
msec: 1456
- hash: "15bb91195adfaf83e88fd93e41ff3e17"
+ hash: "c2742ff9a04bbae6c6de13f08d514913"
}
Frame {
msec: 1472
- hash: "dc0476c27bd7eef3a59637df9a3fecd8"
+ hash: "a73b65c18ba10e6b6d310fc325d7ccb2"
}
Frame {
msec: 1488
- hash: "a271f69e9dc6d1e0362c3e10760895df"
+ hash: "bbe72b26a6f3f518a3c8b6cd9e8dbfd1"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1504
- hash: "7fe66bcc6bada354b4dd7baf8c977740"
+ hash: "679205439a359f3ffb05f631a1979596"
}
Frame {
msec: 1520
- hash: "6b502dbd5ac8ff010df326cb9b593dce"
+ hash: "7ada5f6a58a6a7f9a3b4199a412fccfd"
}
Frame {
msec: 1536
- hash: "a9dd21649a95a6a6e8daea91bc6e2a5f"
+ hash: "66749c0e5b97cec02f4908a709201604"
}
Frame {
msec: 1552
- hash: "374686590eaa02b7b436caa40cc0b0a0"
+ hash: "373bfac053f5cfeceabe2979f3e6f444"
}
Frame {
msec: 1568
- hash: "09ac3c5d413b1f650407eaa971aade81"
+ hash: "c7ab2bcdcd1b7fd25ac775c4dd382635"
}
Frame {
msec: 1584
- hash: "39f84e04f1ae58600591c0de40558d2c"
+ hash: "3116b1a0cf1724bdae2cb71b9e15c73e"
}
Frame {
msec: 1600
- hash: "0336ea1799835af2185c361e221a9661"
+ hash: "9bdc4513c30bf2d1eca61317cc22ebaa"
}
Frame {
msec: 1616
- hash: "8c7ab13e499d7f31107cf0f899334259"
+ hash: "bbecf871ff569ac1020272c1ccc9aa14"
}
Frame {
msec: 1632
- hash: "bad5899324e52c9e6eadb72f3e7c2150"
+ hash: "beef5a84dcc7794cf0aabfc8b7f811bc"
}
Frame {
msec: 1648
- hash: "4b78f451ecb22cfbed9f5998d61018eb"
+ hash: "2db7161f3591ef0b3f1e3cb2aa357c8b"
+ }
+ Frame {
+ msec: 1664
+ hash: "b8b5ffef5e52a8ae94ddb5ec3328fa0e"
+ }
+ Frame {
+ msec: 1680
+ hash: "b65c4657ffb97a59455f2c3e23e3eb51"
}
Key {
type: 6
@@ -505,2875 +561,991 @@ VisualTest {
count: 1
}
Frame {
- msec: 1664
- hash: "6c913bc712eee18947a43dd1c0a6516b"
- }
- Frame {
- msec: 1680
- hash: "4e566abf1e0696e72b2a4beab5a53d6e"
- }
- Frame {
msec: 1696
- hash: "6ad579c289c63a6b90a1517765fc041e"
+ hash: "9702981b8eb5f035f2f4da6708ad1a92"
}
Frame {
msec: 1712
- hash: "cef43f349cf221a1aa6e6e70f1fa6339"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ hash: "a6f46dd869daf69c5a5a3c887ae35a05"
}
Frame {
msec: 1728
- hash: "d89f7e3e2510fcb34786584747633673"
+ hash: "902c0f174b16b1b0d419c13220937e06"
}
Frame {
msec: 1744
- hash: "eb23a3eac684808f73034f4e4ef8984d"
+ hash: "97a5ea7449a1f313d0d5e818edc29bf6"
}
Frame {
msec: 1760
- hash: "6f2c1f61e58940d9cc1a70c0db903446"
+ hash: "d5b69638452ea2260861c17991fc8bef"
}
Frame {
msec: 1776
- hash: "f036a5ecda518be198f3bdf2dbc5baab"
+ hash: "5fa21c53d65b078d1b30830d99a0fbaf"
}
Frame {
msec: 1792
- hash: "7411784774fdc3b324644395f7beb013"
+ hash: "668de1d2fa5780f5088637d919db0a0d"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1808
- hash: "abfdd1f8440998af2ff7903f49f1bd7c"
+ hash: "1989592754c28456aa917562fa3620bd"
}
Frame {
msec: 1824
- hash: "6edd29f2e8d3d81e912c6b279ecc1885"
+ hash: "89cd0ef7c366bbcee8e4404e9a2285a7"
}
Frame {
msec: 1840
- hash: "8eb5ba22793c7cbfa97a64557f2a023f"
+ hash: "d062d4b132ee3086a00220d47e8907fc"
}
Frame {
msec: 1856
- hash: "9a39470525e6f508228f7e0014e02d64"
+ hash: "198bd9fc763c70fb84bdae122f0bdd8b"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1872
- hash: "b3ad10cf28151f5f7f5a4c3540f1660e"
+ hash: "304f7f6cef5b09c09db1284b8095e9a2"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1888
- hash: "816203df3cf42fa7a0e8d6730c186444"
+ hash: "565003fef7b9810ffe95c3bbeeda5bbc"
}
Frame {
msec: 1904
- hash: "a0a7e7ff7960dfe6149e526badf799a6"
+ hash: "2fa85a19ba2bb7d04264a246c4982eb4"
}
Frame {
msec: 1920
- image: "cursorDelegate.1.png"
+ hash: "7be44eca358924dc11c5123e406f1c99"
}
Frame {
msec: 1936
- hash: "4d245b2285eadfd206409f74e03c7fc9"
+ image: "cursorDelegate.2.png"
}
Frame {
msec: 1952
- hash: "e1d5e6c2e4df1454b5a256c3678ffdef"
+ hash: "a08502b3fbb425c7b1cad93e4bc5701e"
}
Frame {
msec: 1968
- hash: "781d7fb03a37cb3f297cc0d2df338fd7"
- }
- Key {
- type: 7
- key: 16777249
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ hash: "fba3a88b7fe6f7583daf07db78f3598c"
}
Frame {
msec: 1984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "509d75aa56bcdb6718c18b56e138ef3c"
}
Frame {
msec: 2000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "509d75aa56bcdb6718c18b56e138ef3c"
}
Frame {
msec: 2016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "509d75aa56bcdb6718c18b56e138ef3c"
}
Frame {
msec: 2032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "509d75aa56bcdb6718c18b56e138ef3c"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "509d75aa56bcdb6718c18b56e138ef3c"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2064
- hash: "781d7fb03a37cb3f297cc0d2df338fd7"
+ hash: "fba3a88b7fe6f7583daf07db78f3598c"
}
Frame {
msec: 2080
- hash: "e1d5e6c2e4df1454b5a256c3678ffdef"
+ hash: "a08502b3fbb425c7b1cad93e4bc5701e"
}
Frame {
msec: 2096
- hash: "4d245b2285eadfd206409f74e03c7fc9"
+ hash: "86ad5a9e06d19ea79e0fc9f7f36cdb0f"
}
Frame {
msec: 2112
- hash: "5a647962e016d15daa417d88524d6061"
+ hash: "7be44eca358924dc11c5123e406f1c99"
}
Frame {
msec: 2128
- hash: "a0a7e7ff7960dfe6149e526badf799a6"
+ hash: "2fa85a19ba2bb7d04264a246c4982eb4"
}
Frame {
msec: 2144
- hash: "816203df3cf42fa7a0e8d6730c186444"
+ hash: "565003fef7b9810ffe95c3bbeeda5bbc"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2160
- hash: "b3ad10cf28151f5f7f5a4c3540f1660e"
+ hash: "39c81c6efdbc32b6e0378810404bef2c"
}
Frame {
msec: 2176
- hash: "9a39470525e6f508228f7e0014e02d64"
+ hash: "756f36cf41c2bae3a8a8716701e55e37"
}
Frame {
msec: 2192
- hash: "8eb5ba22793c7cbfa97a64557f2a023f"
+ hash: "fb09d44a5a5b5b795d562512e9547301"
}
Frame {
msec: 2208
- hash: "6edd29f2e8d3d81e912c6b279ecc1885"
+ hash: "183538d04cf009f100a1e49a3229c143"
}
Frame {
msec: 2224
- hash: "abfdd1f8440998af2ff7903f49f1bd7c"
+ hash: "2ec91bfdb0f106a526f6bde3eb0ed7ce"
}
Frame {
msec: 2240
- hash: "7411784774fdc3b324644395f7beb013"
- }
- Frame {
- msec: 2256
- hash: "f036a5ecda518be198f3bdf2dbc5baab"
+ hash: "f34175acc261ad79bc9d2083af04ae10"
}
Key {
type: 7
- key: 16777248
- modifiers: 33554432
+ key: 16777236
+ modifiers: 0
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 2256
+ hash: "39a59b2e9e0bee87d3ba50e1408bea1c"
+ }
+ Frame {
msec: 2272
- hash: "6f2c1f61e58940d9cc1a70c0db903446"
+ hash: "db61ba19d56b69d148aeb182de596713"
}
Frame {
msec: 2288
- hash: "eb23a3eac684808f73034f4e4ef8984d"
+ hash: "e0b07106a5adc1603788444d48b9c3db"
}
Frame {
msec: 2304
- hash: "d89f7e3e2510fcb34786584747633673"
+ hash: "1dd5625fb6a0ddbaa3919a1702695e9c"
}
Frame {
msec: 2320
- hash: "cef43f349cf221a1aa6e6e70f1fa6339"
+ hash: "d7d39e8f717bab17aaf8a12e4f9e0dfc"
}
Frame {
msec: 2336
- hash: "6ad579c289c63a6b90a1517765fc041e"
+ hash: "d7a226b40a049dee56755af9206246b4"
}
Frame {
msec: 2352
- hash: "4e566abf1e0696e72b2a4beab5a53d6e"
+ hash: "37d2d2830f6ae6bf0c8fb29c5d4f521a"
}
Key {
type: 6
- key: 16777236
+ key: 16777249
modifiers: 0
text: ""
autorep: false
count: 1
}
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
Frame {
msec: 2368
- hash: "6c913bc712eee18947a43dd1c0a6516b"
+ hash: "21008b3a5179e25f9b132a4c05b8b8c4"
}
Frame {
msec: 2384
- hash: "2c518a32ca3b5ca924709cc6990fb039"
+ hash: "a6f05fb5206a456bea790ba7ba31868c"
}
Frame {
msec: 2400
- hash: "7f40db00bd3e6d0b39454eefa1403f44"
+ hash: "754e2fca1b3ed5ee9875aafb1a0c62d3"
}
Frame {
msec: 2416
- hash: "98db32e0d1812e9584105dc4dbceff80"
+ hash: "75d1ae9c60573f9e27cd7c2d1706cbfc"
}
Frame {
msec: 2432
- hash: "c2150a67391bb574141c16cb011847bf"
+ hash: "c78608cde907bc09760d858795b43bbf"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2448
- hash: "f9ea21d894fa2dace4d43ce99a580b90"
+ hash: "348438b012690f63956e6a865c4173c5"
}
Frame {
msec: 2464
- hash: "2f580c3244499fc6ecd2121693f463fd"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "b0c970656fdb5af48efc4bf0e1879f36"
}
Frame {
msec: 2480
- hash: "2f7f421d3e6a895a9efa6b0e8feb81c4"
+ hash: "7291a68c8e790f58e2440dfbe896c36d"
}
Frame {
msec: 2496
- hash: "35a18447f319431ed0a645d05a1d03d1"
+ hash: "9bcbf9f7b35987c3acbd80031a688279"
}
Frame {
msec: 2512
- hash: "54e36fb4014be554d13709b48b9bdce7"
+ hash: "48a00bd3f844e863338898bd28d845a4"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2528
- hash: "dbe3456536a729b268850a6ee5d1fb47"
+ hash: "dc5f63ee9e8d50f744f7b375a52e32c3"
}
Frame {
msec: 2544
- hash: "4c148434cf3868db5dc98f426d9fb913"
+ hash: "f52d2f475a335a75fad0a0f84e812809"
}
Frame {
msec: 2560
- hash: "2eb6da3ebfd531037523347603a805e2"
+ hash: "bc54cefc8f0b84fc2432b0fb01203b9c"
}
Frame {
msec: 2576
- hash: "fefbb2f4671f8a36f9d2207ced8c0bfb"
+ hash: "e6f14d1181a0db90d2c2891fd6e82883"
}
Frame {
msec: 2592
- hash: "1ab596339afc1f96136ee69c4b7688e1"
+ hash: "1edc2fff7b3d76bbe2615810a5d15d41"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2608
- hash: "e07f59d729cb2790296e8c7cd3d0d3c9"
+ hash: "5bc156937a29989a3a39761b58958fbd"
}
Frame {
msec: 2624
- hash: "a7dccada1080487cab2d0a916676c5cb"
+ hash: "071d45235a669e870356efc60ba8016c"
}
Frame {
msec: 2640
- hash: "ac5939eb4379394fab829b307cbfe7ec"
+ hash: "1d588fb1f8321e4b437f924077fa7d60"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2656
- hash: "9329d353c678d2bc61d08f63029d1b9b"
+ hash: "ca9aff6590dda45a66cdca601dccaf59"
}
Frame {
msec: 2672
- hash: "41263f56af7875028bb0c1e7eccf6f5d"
+ hash: "2553146fff0d367cc6fa2d11f0a5c83a"
}
Frame {
msec: 2688
- hash: "e2eb18af82c85ea78ba438163e922df3"
+ hash: "05bd919cd91ff449027b188d9a24b61f"
}
Frame {
msec: 2704
- hash: "91b2695e4915238ae8610a64e279b0f4"
+ hash: "35d6ce9ecef79d006d6416c3b0d75e79"
}
Frame {
msec: 2720
- hash: "a97d90765f87b998eae6e9f603c61bff"
- }
- Frame {
- msec: 2736
- hash: "48969edab07b942480d93ac2d383ca24"
- }
- Frame {
- msec: 2752
- hash: "ecfd9d6d5873001f0c67806544a14983"
+ hash: "1459a2410a971e344d4dacccff1eb7da"
}
Key {
type: 6
key: 16777234
- modifiers: 0
+ modifiers: 100663296
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 2736
+ hash: "bd04cc87db0138b57bf0feeafa7630f5"
+ }
+ Frame {
+ msec: 2752
+ hash: "81521187d5d88b62f4f7578ea4ee5f68"
+ }
+ Frame {
msec: 2768
- hash: "01e937e1fcc0331b2541fa32c3479a24"
+ hash: "f2f8d1e8232787da1e36d7e8a27b6d93"
}
Frame {
msec: 2784
- hash: "702864de569e6a5648ee174d5ef891f8"
+ hash: "a5dbd1f572419ca4a4b91629e522867f"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2800
- hash: "0f500339c81ca3621d13910017b84b7b"
+ hash: "23ab256301d7190f56c4f0af7f57bcc2"
}
Frame {
msec: 2816
- hash: "76fb2e1ad33affe33c0887f04caa7396"
+ hash: "3a106a01b1cf6b53b5f8721415538f15"
}
Frame {
msec: 2832
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "881f4de48cf79636f5cb292f4cacf842"
}
Frame {
msec: 2848
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "4abe8abf4f29a31220c03af143ef9978"
}
Frame {
msec: 2864
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "50db0e06ceb12795d3e11b2c4a04df9c"
}
Frame {
msec: 2880
- image: "cursorDelegate.2.png"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "39f759d5b58ffdaa79d438f932a72582"
}
Frame {
msec: 2896
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ image: "cursorDelegate.3.png"
}
Frame {
msec: 2912
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "0cf83e3a000b8ae6a21ef64e5470430f"
}
Frame {
msec: 2928
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "07116cd7cf46fc692542ac57c3e30aea"
}
Frame {
msec: 2944
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "bd92a36fad90de909b5a29a6fead2160"
}
Frame {
msec: 2960
- hash: "35425ae3ccf3c8dcc1483479c57a3287"
+ hash: "95c4d0cc52903dc70c9118e26cd58b7b"
}
Frame {
msec: 2976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cb6ca047657a99dbbb037c1c45b40866"
}
Frame {
msec: 2992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cb6ca047657a99dbbb037c1c45b40866"
}
Frame {
msec: 3008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cb6ca047657a99dbbb037c1c45b40866"
}
Frame {
msec: 3024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cb6ca047657a99dbbb037c1c45b40866"
}
Frame {
msec: 3040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cb6ca047657a99dbbb037c1c45b40866"
}
Frame {
msec: 3056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "cb6ca047657a99dbbb037c1c45b40866"
}
Frame {
msec: 3072
- hash: "35425ae3ccf3c8dcc1483479c57a3287"
+ hash: "95c4d0cc52903dc70c9118e26cd58b7b"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3088
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "f9e0bd08b722c16493a8886a19920dda"
}
Frame {
msec: 3104
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "0636b7c5cc215882c60b50f62133c715"
}
Frame {
msec: 3120
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "150b5a2f2e916b7023764c481c768492"
}
Frame {
msec: 3136
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ hash: "14bc879f562ace9d2d1a3f3980a72e1f"
}
Frame {
msec: 3152
- hash: "34bc703c915b49b0450ece1d18306df8"
+ hash: "2bdc09121f13e95e15e331ac90fbbe5e"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3168
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "b701aa41aff9df45cc4b35d23789ad46"
}
Frame {
msec: 3184
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "ad77330d51b1251576905a45fdbdf576"
}
Frame {
msec: 3200
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "4ab6780997a5a598d2da7fbbc19877b7"
}
Frame {
msec: 3216
- hash: "76fb2e1ad33affe33c0887f04caa7396"
+ hash: "43b324d0e4882147d316a5dc16eff4a5"
}
Frame {
msec: 3232
- hash: "0f500339c81ca3621d13910017b84b7b"
+ hash: "4379bfd0da6fedac77e2111d9fdc5ecb"
}
Frame {
msec: 3248
- hash: "702864de569e6a5648ee174d5ef891f8"
+ hash: "ca35937be71e1f982cedd33bdd09d127"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3264
- hash: "01e937e1fcc0331b2541fa32c3479a24"
+ hash: "f6bac38774fa8a09084c045e34fd1732"
}
Frame {
msec: 3280
- hash: "ee661e6cc1f86e755ff399adb6b11fd1"
+ hash: "6d8b58612860febb13800958cab3aecd"
}
Frame {
msec: 3296
- hash: "ea2d610e9b41e72b2984a51f0d3f7587"
+ hash: "7f921d2293cf547de3b5573dbf98d5bb"
}
Frame {
msec: 3312
- hash: "4a646d76b706698a02cead560b1f8d57"
+ hash: "18771337bbe826b5a34bd9705c79f56a"
}
Frame {
msec: 3328
- hash: "48ec87bfc25471f6fa2d43f9db80b693"
+ hash: "3dd49406c4b39980908d8869dc3c060a"
}
Frame {
msec: 3344
- hash: "827fdd6a3d1006f4a9dd2faf208ea436"
+ hash: "8cae649565b5655d606f216334a0b5b5"
}
Frame {
msec: 3360
- hash: "788d8962f311adf57a3acc876b0e8804"
+ hash: "27c59b474d706ce79b5d075713c1ea88"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3376
- hash: "5d112a3675ea4c010e7bc60e036d0262"
+ hash: "6d70d654998bbc0a2431ca7c4a58cd3c"
}
Frame {
msec: 3392
- hash: "a2ea272b45d8de225826d9381015ff2e"
+ hash: "bf55fffd1727c0d076e05e274dcebb0d"
}
Frame {
msec: 3408
- hash: "e4d7a59716cd704fe1cfa8ba91454e93"
+ hash: "d5b0696cbe2969723bb2fe740deeb81f"
}
Frame {
msec: 3424
- hash: "4e875ba8703b690a17e445f2b3810435"
+ hash: "27968050a9cf7d57d016274709086be1"
}
Frame {
msec: 3440
- hash: "4fbbb8447d80012bc6b5c24ddbfe498e"
+ hash: "3bc037fd17d0d394b82ba19914f31b90"
}
Frame {
msec: 3456
- hash: "d74f8e44d47710714d4197809fffb622"
+ hash: "117d7ad2d2ae47f3a0c2a68928534b76"
}
Frame {
msec: 3472
- hash: "d23bdd94019477d8378cde580d8765ad"
+ hash: "a538ce971f34a497c05258da2567a208"
}
Frame {
msec: 3488
- hash: "6032aada2c48092000ecb93e52656414"
+ hash: "91e2e5cc6efcffc9e58646a008a57c9d"
}
Frame {
msec: 3504
- hash: "438be260f19d04c9f98ed7dce1c7db40"
+ hash: "13db17cc3c6513014a95210a443e5842"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3520
- hash: "3af60972e7d5d4320a549e5df52a1228"
+ hash: "03325597bd4e7d7b6f7c84c848018872"
}
Frame {
msec: 3536
- hash: "bf8459b99ca0bf568c58a3bb2a2fcc1f"
+ hash: "e96dc6d611d23553b363a765195604f9"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3552
- hash: "c0dc1cf5ba7014e069c4d4bd7ac0f89d"
+ hash: "942476dd6fb7a4f3d10c398503cb7b90"
}
Frame {
msec: 3568
- hash: "f2ddf9d4fd3a2a2d354172714ce94d99"
+ hash: "cbe34fd18b6355ae9be469a594b44192"
}
Frame {
msec: 3584
- hash: "bdfb42dc3879099e402784238c2cdddb"
+ hash: "3dce89f398d2c856bcd32da34867ebd8"
}
Frame {
msec: 3600
- hash: "5e483b0fd4808f2fb31aea90ccf86d3e"
+ hash: "c78608cde907bc09760d858795b43bbf"
}
Frame {
msec: 3616
- hash: "8159bda651d95a320ac09aa6feb377a1"
+ hash: "75d1ae9c60573f9e27cd7c2d1706cbfc"
}
Frame {
msec: 3632
- hash: "ceda37af96bd02baae218d3bfaed93f7"
+ hash: "754e2fca1b3ed5ee9875aafb1a0c62d3"
}
Frame {
msec: 3648
- hash: "4b81757a105aa7c5ac6148455eea66c3"
+ hash: "a6f05fb5206a456bea790ba7ba31868c"
}
Frame {
msec: 3664
- hash: "ff7e2cdd006f9b76ab8c0416d81f0cb1"
+ hash: "21008b3a5179e25f9b132a4c05b8b8c4"
}
Frame {
msec: 3680
- hash: "9b174cd9a87ff193ce646408946b310c"
+ hash: "37d2d2830f6ae6bf0c8fb29c5d4f521a"
}
Frame {
msec: 3696
- hash: "89fa590b47ee77021dedf7938439ce69"
+ hash: "d7a226b40a049dee56755af9206246b4"
}
Frame {
msec: 3712
- hash: "6e5680803184dfc76cbf1c2de804d6cc"
+ hash: "d7d39e8f717bab17aaf8a12e4f9e0dfc"
}
Frame {
msec: 3728
- hash: "c6de6b9203673c77427ab84ce86daaf5"
+ hash: "1dd5625fb6a0ddbaa3919a1702695e9c"
}
Frame {
msec: 3744
- hash: "198f8e912c19debd51f837627d1171e9"
+ hash: "e0b07106a5adc1603788444d48b9c3db"
}
Frame {
msec: 3760
- hash: "3b380dcb6815698241f3dcccb52785c2"
+ hash: "db61ba19d56b69d148aeb182de596713"
}
Frame {
msec: 3776
- hash: "254942e12b8a31420d2243b7e2529ae8"
+ hash: "39a59b2e9e0bee87d3ba50e1408bea1c"
}
Frame {
msec: 3792
- hash: "ebf121910a5318c284f8e964d63aed40"
+ hash: "f34175acc261ad79bc9d2083af04ae10"
}
Frame {
msec: 3808
- hash: "0fcf416a80d22f077fcf4d23bddeb6c6"
+ hash: "2ec91bfdb0f106a526f6bde3eb0ed7ce"
}
Frame {
msec: 3824
- hash: "4a6596da390380dbafc1cdaceca1101e"
+ hash: "183538d04cf009f100a1e49a3229c143"
}
Frame {
msec: 3840
- image: "cursorDelegate.3.png"
+ hash: "fb09d44a5a5b5b795d562512e9547301"
}
Frame {
msec: 3856
- hash: "c2be53ae5e2d5d3081df9af31426ec84"
+ image: "cursorDelegate.4.png"
}
Frame {
msec: 3872
- hash: "52350ac5d10f8fe7571d12193b861d3f"
+ hash: "39c81c6efdbc32b6e0378810404bef2c"
}
Frame {
msec: 3888
- hash: "f286a35d7f4a022315f69a5db72da388"
+ hash: "23d9a9a6a9d032c7e447407193ca51ef"
}
Frame {
msec: 3904
- hash: "aa329519eba4dad9589bff095528c535"
+ hash: "bdd00cfe933985fe77626114902ce823"
}
Frame {
msec: 3920
- hash: "0beae60853afaaa0e7f7540fb50bcddf"
+ hash: "1d25c2753ccabdaaf47a669c28d9e2cb"
}
Frame {
msec: 3936
- hash: "dc098a8b4d2f117a09cf1f2ced201a60"
+ hash: "20fde9bbe26ebede31fc8c21dec3fcc5"
}
Frame {
msec: 3952
- hash: "3655b992097b433071ec9dd69e086c70"
+ hash: "c9147c159aebb7aa51d4bac28f96cb57"
}
Frame {
msec: 3968
- hash: "82cb92d7940d13deee97e4ccda9210fb"
+ hash: "68d331f508b43e756d6e30ba9b60f9aa"
}
Frame {
msec: 3984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 4000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 4016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 4032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 4048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
+ hash: "af99069cdddfa9d099fbe25ba586e138"
}
Frame {
msec: 4064
- hash: "82cb92d7940d13deee97e4ccda9210fb"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "68d331f508b43e756d6e30ba9b60f9aa"
}
Frame {
msec: 4080
- hash: "3655b992097b433071ec9dd69e086c70"
+ hash: "c9147c159aebb7aa51d4bac28f96cb57"
}
Frame {
msec: 4096
- hash: "dc098a8b4d2f117a09cf1f2ced201a60"
+ hash: "20fde9bbe26ebede31fc8c21dec3fcc5"
}
Frame {
msec: 4112
- hash: "0beae60853afaaa0e7f7540fb50bcddf"
+ hash: "1d25c2753ccabdaaf47a669c28d9e2cb"
}
Frame {
msec: 4128
- hash: "aa329519eba4dad9589bff095528c535"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "bdd00cfe933985fe77626114902ce823"
}
Frame {
msec: 4144
- hash: "f286a35d7f4a022315f69a5db72da388"
+ hash: "23d9a9a6a9d032c7e447407193ca51ef"
}
Frame {
msec: 4160
- hash: "52350ac5d10f8fe7571d12193b861d3f"
+ hash: "39c81c6efdbc32b6e0378810404bef2c"
}
Frame {
msec: 4176
- hash: "c2be53ae5e2d5d3081df9af31426ec84"
+ hash: "756f36cf41c2bae3a8a8716701e55e37"
}
Frame {
msec: 4192
- hash: "367391b2a124e2c818510567d0884d18"
+ hash: "fb09d44a5a5b5b795d562512e9547301"
}
Frame {
msec: 4208
- hash: "4a6596da390380dbafc1cdaceca1101e"
+ hash: "183538d04cf009f100a1e49a3229c143"
}
Frame {
msec: 4224
- hash: "0fcf416a80d22f077fcf4d23bddeb6c6"
+ hash: "2ec91bfdb0f106a526f6bde3eb0ed7ce"
}
Frame {
msec: 4240
- hash: "ebf121910a5318c284f8e964d63aed40"
+ hash: "f34175acc261ad79bc9d2083af04ae10"
}
Frame {
msec: 4256
- hash: "254942e12b8a31420d2243b7e2529ae8"
+ hash: "39a59b2e9e0bee87d3ba50e1408bea1c"
}
Frame {
msec: 4272
- hash: "3b380dcb6815698241f3dcccb52785c2"
+ hash: "db61ba19d56b69d148aeb182de596713"
}
Frame {
msec: 4288
- hash: "198f8e912c19debd51f837627d1171e9"
+ hash: "e0b07106a5adc1603788444d48b9c3db"
}
Frame {
msec: 4304
- hash: "c6de6b9203673c77427ab84ce86daaf5"
+ hash: "1dd5625fb6a0ddbaa3919a1702695e9c"
}
Frame {
msec: 4320
- hash: "6e5680803184dfc76cbf1c2de804d6cc"
+ hash: "d7d39e8f717bab17aaf8a12e4f9e0dfc"
}
Frame {
msec: 4336
- hash: "89fa590b47ee77021dedf7938439ce69"
+ hash: "d7a226b40a049dee56755af9206246b4"
}
Frame {
msec: 4352
- hash: "9b174cd9a87ff193ce646408946b310c"
+ hash: "37d2d2830f6ae6bf0c8fb29c5d4f521a"
}
Frame {
msec: 4368
- hash: "ff7e2cdd006f9b76ab8c0416d81f0cb1"
+ hash: "21008b3a5179e25f9b132a4c05b8b8c4"
}
Frame {
msec: 4384
- hash: "4b81757a105aa7c5ac6148455eea66c3"
+ hash: "a6f05fb5206a456bea790ba7ba31868c"
}
Frame {
msec: 4400
- hash: "ceda37af96bd02baae218d3bfaed93f7"
+ hash: "754e2fca1b3ed5ee9875aafb1a0c62d3"
}
Frame {
msec: 4416
- hash: "8159bda651d95a320ac09aa6feb377a1"
+ hash: "75d1ae9c60573f9e27cd7c2d1706cbfc"
}
Frame {
msec: 4432
- hash: "5e483b0fd4808f2fb31aea90ccf86d3e"
+ hash: "c78608cde907bc09760d858795b43bbf"
}
Frame {
msec: 4448
- hash: "bdfb42dc3879099e402784238c2cdddb"
+ hash: "3dce89f398d2c856bcd32da34867ebd8"
}
Frame {
msec: 4464
- hash: "f2ddf9d4fd3a2a2d354172714ce94d99"
+ hash: "cbe34fd18b6355ae9be469a594b44192"
}
Frame {
msec: 4480
- hash: "c0dc1cf5ba7014e069c4d4bd7ac0f89d"
+ hash: "942476dd6fb7a4f3d10c398503cb7b90"
}
Frame {
msec: 4496
- hash: "bf8459b99ca0bf568c58a3bb2a2fcc1f"
+ hash: "e96dc6d611d23553b363a765195604f9"
}
Frame {
msec: 4512
- hash: "3af60972e7d5d4320a549e5df52a1228"
+ hash: "03325597bd4e7d7b6f7c84c848018872"
}
Frame {
msec: 4528
- hash: "438be260f19d04c9f98ed7dce1c7db40"
+ hash: "13db17cc3c6513014a95210a443e5842"
}
Frame {
msec: 4544
- hash: "6032aada2c48092000ecb93e52656414"
+ hash: "91e2e5cc6efcffc9e58646a008a57c9d"
}
Frame {
msec: 4560
- hash: "d23bdd94019477d8378cde580d8765ad"
+ hash: "a538ce971f34a497c05258da2567a208"
}
Frame {
msec: 4576
- hash: "d74f8e44d47710714d4197809fffb622"
- }
- Key {
- type: 6
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "117d7ad2d2ae47f3a0c2a68928534b76"
}
Frame {
msec: 4592
- hash: "4fbbb8447d80012bc6b5c24ddbfe498e"
+ hash: "3bc037fd17d0d394b82ba19914f31b90"
}
Frame {
msec: 4608
- hash: "4e875ba8703b690a17e445f2b3810435"
+ hash: "27968050a9cf7d57d016274709086be1"
}
Frame {
msec: 4624
- hash: "e4d7a59716cd704fe1cfa8ba91454e93"
- }
- Key {
- type: 7
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "d5b0696cbe2969723bb2fe740deeb81f"
}
Frame {
msec: 4640
- hash: "a2ea272b45d8de225826d9381015ff2e"
+ hash: "bf55fffd1727c0d076e05e274dcebb0d"
}
Frame {
msec: 4656
- hash: "5d112a3675ea4c010e7bc60e036d0262"
+ hash: "6d70d654998bbc0a2431ca7c4a58cd3c"
}
Frame {
msec: 4672
- hash: "788d8962f311adf57a3acc876b0e8804"
+ hash: "27c59b474d706ce79b5d075713c1ea88"
}
Frame {
msec: 4688
- hash: "827fdd6a3d1006f4a9dd2faf208ea436"
+ hash: "8cae649565b5655d606f216334a0b5b5"
}
Frame {
msec: 4704
- hash: "48ec87bfc25471f6fa2d43f9db80b693"
+ hash: "3dd49406c4b39980908d8869dc3c060a"
}
Frame {
msec: 4720
- hash: "4a646d76b706698a02cead560b1f8d57"
+ hash: "18771337bbe826b5a34bd9705c79f56a"
}
Frame {
msec: 4736
- hash: "ea2d610e9b41e72b2984a51f0d3f7587"
+ hash: "7f921d2293cf547de3b5573dbf98d5bb"
}
Frame {
msec: 4752
- hash: "ee661e6cc1f86e755ff399adb6b11fd1"
+ hash: "6d8b58612860febb13800958cab3aecd"
}
Frame {
msec: 4768
- hash: "01e937e1fcc0331b2541fa32c3479a24"
+ hash: "f6bac38774fa8a09084c045e34fd1732"
}
Frame {
msec: 4784
- hash: "702864de569e6a5648ee174d5ef891f8"
+ hash: "ca35937be71e1f982cedd33bdd09d127"
}
Frame {
msec: 4800
- image: "cursorDelegate.4.png"
+ hash: "4379bfd0da6fedac77e2111d9fdc5ecb"
}
Frame {
msec: 4816
- hash: "76fb2e1ad33affe33c0887f04caa7396"
+ image: "cursorDelegate.5.png"
}
Frame {
msec: 4832
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
+ hash: "4ab6780997a5a598d2da7fbbc19877b7"
}
Frame {
msec: 4848
- hash: "d94054222fd37a350bd8abd592a332e3"
+ hash: "ad77330d51b1251576905a45fdbdf576"
}
Frame {
msec: 4864
- hash: "46fed264c233490b477e3a7c22183e18"
+ hash: "b701aa41aff9df45cc4b35d23789ad46"
}
Frame {
msec: 4880
- hash: "34bc703c915b49b0450ece1d18306df8"
+ hash: "2bdc09121f13e95e15e331ac90fbbe5e"
}
Frame {
msec: 4896
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
+ hash: "14bc879f562ace9d2d1a3f3980a72e1f"
}
Frame {
msec: 4912
- hash: "4f6dbc7b249c37390518cc263832b587"
+ hash: "150b5a2f2e916b7023764c481c768492"
}
Frame {
msec: 4928
- hash: "df09fa2fd138d1b480eec82db3872d6f"
+ hash: "0636b7c5cc215882c60b50f62133c715"
}
Frame {
msec: 4944
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
+ hash: "f9e0bd08b722c16493a8886a19920dda"
}
Frame {
msec: 4960
- hash: "35425ae3ccf3c8dcc1483479c57a3287"
- }
- Frame {
- msec: 4976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 4992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 5008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 5024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 5040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 5056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 5072
- hash: "35425ae3ccf3c8dcc1483479c57a3287"
- }
- Frame {
- msec: 5088
- hash: "b74cb1bfbb979a5e91853d9145d277d8"
- }
- Frame {
- msec: 5104
- hash: "df09fa2fd138d1b480eec82db3872d6f"
- }
- Frame {
- msec: 5120
- hash: "4f6dbc7b249c37390518cc263832b587"
- }
- Frame {
- msec: 5136
- hash: "e87f18da2fa5c91c9b2b5dea50f9c1e2"
- }
- Frame {
- msec: 5152
- hash: "34bc703c915b49b0450ece1d18306df8"
- }
- Frame {
- msec: 5168
- hash: "46fed264c233490b477e3a7c22183e18"
- }
- Frame {
- msec: 5184
- hash: "d94054222fd37a350bd8abd592a332e3"
- }
- Frame {
- msec: 5200
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
- }
- Frame {
- msec: 5216
- hash: "76fb2e1ad33affe33c0887f04caa7396"
- }
- Frame {
- msec: 5232
- hash: "0f500339c81ca3621d13910017b84b7b"
- }
- Frame {
- msec: 5248
- hash: "702864de569e6a5648ee174d5ef891f8"
- }
- Frame {
- msec: 5264
- hash: "01e937e1fcc0331b2541fa32c3479a24"
- }
- Frame {
- msec: 5280
- hash: "ee661e6cc1f86e755ff399adb6b11fd1"
- }
- Frame {
- msec: 5296
- hash: "ea2d610e9b41e72b2984a51f0d3f7587"
- }
- Frame {
- msec: 5312
- hash: "4a646d76b706698a02cead560b1f8d57"
- }
- Frame {
- msec: 5328
- hash: "48ec87bfc25471f6fa2d43f9db80b693"
- }
- Frame {
- msec: 5344
- hash: "827fdd6a3d1006f4a9dd2faf208ea436"
- }
- Frame {
- msec: 5360
- hash: "788d8962f311adf57a3acc876b0e8804"
- }
- Frame {
- msec: 5376
- hash: "5d112a3675ea4c010e7bc60e036d0262"
- }
- Frame {
- msec: 5392
- hash: "a2ea272b45d8de225826d9381015ff2e"
- }
- Frame {
- msec: 5408
- hash: "e4d7a59716cd704fe1cfa8ba91454e93"
- }
- Frame {
- msec: 5424
- hash: "4e875ba8703b690a17e445f2b3810435"
- }
- Frame {
- msec: 5440
- hash: "4fbbb8447d80012bc6b5c24ddbfe498e"
- }
- Frame {
- msec: 5456
- hash: "d74f8e44d47710714d4197809fffb622"
- }
- Frame {
- msec: 5472
- hash: "d23bdd94019477d8378cde580d8765ad"
- }
- Frame {
- msec: 5488
- hash: "6032aada2c48092000ecb93e52656414"
- }
- Frame {
- msec: 5504
- hash: "438be260f19d04c9f98ed7dce1c7db40"
- }
- Frame {
- msec: 5520
- hash: "3af60972e7d5d4320a549e5df52a1228"
- }
- Frame {
- msec: 5536
- hash: "bf8459b99ca0bf568c58a3bb2a2fcc1f"
- }
- Frame {
- msec: 5552
- hash: "c0dc1cf5ba7014e069c4d4bd7ac0f89d"
- }
- Frame {
- msec: 5568
- hash: "f2ddf9d4fd3a2a2d354172714ce94d99"
- }
- Frame {
- msec: 5584
- hash: "bdfb42dc3879099e402784238c2cdddb"
- }
- Frame {
- msec: 5600
- hash: "5e483b0fd4808f2fb31aea90ccf86d3e"
- }
- Frame {
- msec: 5616
- hash: "8159bda651d95a320ac09aa6feb377a1"
- }
- Frame {
- msec: 5632
- hash: "ceda37af96bd02baae218d3bfaed93f7"
- }
- Frame {
- msec: 5648
- hash: "4b81757a105aa7c5ac6148455eea66c3"
- }
- Frame {
- msec: 5664
- hash: "ff7e2cdd006f9b76ab8c0416d81f0cb1"
- }
- Frame {
- msec: 5680
- hash: "9b174cd9a87ff193ce646408946b310c"
- }
- Frame {
- msec: 5696
- hash: "89fa590b47ee77021dedf7938439ce69"
- }
- Frame {
- msec: 5712
- hash: "6e5680803184dfc76cbf1c2de804d6cc"
- }
- Frame {
- msec: 5728
- hash: "c6de6b9203673c77427ab84ce86daaf5"
- }
- Frame {
- msec: 5744
- hash: "198f8e912c19debd51f837627d1171e9"
- }
- Frame {
- msec: 5760
- image: "cursorDelegate.5.png"
- }
- Frame {
- msec: 5776
- hash: "254942e12b8a31420d2243b7e2529ae8"
- }
- Frame {
- msec: 5792
- hash: "ebf121910a5318c284f8e964d63aed40"
- }
- Frame {
- msec: 5808
- hash: "0fcf416a80d22f077fcf4d23bddeb6c6"
- }
- Frame {
- msec: 5824
- hash: "4a6596da390380dbafc1cdaceca1101e"
- }
- Frame {
- msec: 5840
- hash: "367391b2a124e2c818510567d0884d18"
- }
- Frame {
- msec: 5856
- hash: "c2be53ae5e2d5d3081df9af31426ec84"
- }
- Frame {
- msec: 5872
- hash: "52350ac5d10f8fe7571d12193b861d3f"
- }
- Frame {
- msec: 5888
- hash: "f286a35d7f4a022315f69a5db72da388"
- }
- Frame {
- msec: 5904
- hash: "aa329519eba4dad9589bff095528c535"
- }
- Frame {
- msec: 5920
- hash: "0beae60853afaaa0e7f7540fb50bcddf"
- }
- Frame {
- msec: 5936
- hash: "dc098a8b4d2f117a09cf1f2ced201a60"
- }
- Frame {
- msec: 5952
- hash: "3655b992097b433071ec9dd69e086c70"
- }
- Frame {
- msec: 5968
- hash: "82cb92d7940d13deee97e4ccda9210fb"
- }
- Frame {
- msec: 5984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 6000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 6016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 6032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 6048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 6064
- hash: "82cb92d7940d13deee97e4ccda9210fb"
- }
- Frame {
- msec: 6080
- hash: "3655b992097b433071ec9dd69e086c70"
- }
- Frame {
- msec: 6096
- hash: "dc098a8b4d2f117a09cf1f2ced201a60"
- }
- Frame {
- msec: 6112
- hash: "0beae60853afaaa0e7f7540fb50bcddf"
- }
- Frame {
- msec: 6128
- hash: "aa329519eba4dad9589bff095528c535"
- }
- Frame {
- msec: 6144
- hash: "f286a35d7f4a022315f69a5db72da388"
- }
- Frame {
- msec: 6160
- hash: "52350ac5d10f8fe7571d12193b861d3f"
- }
- Frame {
- msec: 6176
- hash: "c2be53ae5e2d5d3081df9af31426ec84"
- }
- Frame {
- msec: 6192
- hash: "367391b2a124e2c818510567d0884d18"
- }
- Frame {
- msec: 6208
- hash: "4a6596da390380dbafc1cdaceca1101e"
- }
- Frame {
- msec: 6224
- hash: "0fcf416a80d22f077fcf4d23bddeb6c6"
- }
- Frame {
- msec: 6240
- hash: "ebf121910a5318c284f8e964d63aed40"
- }
- Frame {
- msec: 6256
- hash: "254942e12b8a31420d2243b7e2529ae8"
- }
- Frame {
- msec: 6272
- hash: "3b380dcb6815698241f3dcccb52785c2"
- }
- Frame {
- msec: 6288
- hash: "198f8e912c19debd51f837627d1171e9"
- }
- Frame {
- msec: 6304
- hash: "c6de6b9203673c77427ab84ce86daaf5"
- }
- Frame {
- msec: 6320
- hash: "6e5680803184dfc76cbf1c2de804d6cc"
- }
- Frame {
- msec: 6336
- hash: "89fa590b47ee77021dedf7938439ce69"
- }
- Frame {
- msec: 6352
- hash: "9b174cd9a87ff193ce646408946b310c"
- }
- Frame {
- msec: 6368
- hash: "ff7e2cdd006f9b76ab8c0416d81f0cb1"
- }
- Frame {
- msec: 6384
- hash: "4b81757a105aa7c5ac6148455eea66c3"
- }
- Frame {
- msec: 6400
- hash: "ceda37af96bd02baae218d3bfaed93f7"
- }
- Frame {
- msec: 6416
- hash: "8159bda651d95a320ac09aa6feb377a1"
- }
- Frame {
- msec: 6432
- hash: "5e483b0fd4808f2fb31aea90ccf86d3e"
- }
- Frame {
- msec: 6448
- hash: "bdfb42dc3879099e402784238c2cdddb"
- }
- Frame {
- msec: 6464
- hash: "f2ddf9d4fd3a2a2d354172714ce94d99"
- }
- Frame {
- msec: 6480
- hash: "c0dc1cf5ba7014e069c4d4bd7ac0f89d"
- }
- Frame {
- msec: 6496
- hash: "bf8459b99ca0bf568c58a3bb2a2fcc1f"
- }
- Frame {
- msec: 6512
- hash: "3af60972e7d5d4320a549e5df52a1228"
- }
- Frame {
- msec: 6528
- hash: "438be260f19d04c9f98ed7dce1c7db40"
- }
- Frame {
- msec: 6544
- hash: "6032aada2c48092000ecb93e52656414"
- }
- Frame {
- msec: 6560
- hash: "d23bdd94019477d8378cde580d8765ad"
- }
- Frame {
- msec: 6576
- hash: "d74f8e44d47710714d4197809fffb622"
- }
- Frame {
- msec: 6592
- hash: "4fbbb8447d80012bc6b5c24ddbfe498e"
- }
- Frame {
- msec: 6608
- hash: "4e875ba8703b690a17e445f2b3810435"
- }
- Frame {
- msec: 6624
- hash: "e4d7a59716cd704fe1cfa8ba91454e93"
- }
- Frame {
- msec: 6640
- hash: "a2ea272b45d8de225826d9381015ff2e"
- }
- Frame {
- msec: 6656
- hash: "5d112a3675ea4c010e7bc60e036d0262"
- }
- Frame {
- msec: 6672
- hash: "788d8962f311adf57a3acc876b0e8804"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 271; y: 89
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6688
- hash: "e2eb18af82c85ea78ba438163e922df3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 271; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6704
- hash: "91b2695e4915238ae8610a64e279b0f4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 271; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 270; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6720
- image: "cursorDelegate.6.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 269; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6736
- hash: "ea2d610e9b41e72b2984a51f0d3f7587"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 268; y: 107
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6752
- hash: "ee661e6cc1f86e755ff399adb6b11fd1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 266; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6768
- hash: "01e937e1fcc0331b2541fa32c3479a24"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 266; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6784
- hash: "702864de569e6a5648ee174d5ef891f8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 265; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6800
- hash: "0f500339c81ca3621d13910017b84b7b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 263; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 261; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6816
- hash: "76fb2e1ad33affe33c0887f04caa7396"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 259; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6832
- hash: "9dc01a69f2a6892d3c4203674c8bef72"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 256; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6848
- hash: "58693aa1a3616310b7ae1e529c4c461a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 250; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 243; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6864
- hash: "96afccd7ec697c9c10840f0effaa448d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 235; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6880
- hash: "a00d49e2a9069b1be41f95f6ff4c0312"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 227; y: 121
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6896
- hash: "a0ff4b93291fc12054d3989a20335a87"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 124
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 209; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6912
- hash: "a86e1347bb25489547514955762d92d3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6928
- hash: "e5cba3c1e41e38117508c84e894beb11"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 190; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6944
- hash: "2560f53b8ac0a84fef895dbb8f0e393e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 181; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 172; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6960
- hash: "c1b8bfc008319b793b6bd9345d34ccf5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 146; y: 124
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 138; y: 121
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 130; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 123; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 118; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 114; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 110; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7072
- hash: "a9f2804ac7918971f237c4cfa6339c24"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 108; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7088
- hash: "bc9c96855f048cb6c86d480e501322ab"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 107; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 106; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7104
- hash: "706730602364bfb4d0193d1728a6d350"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 105; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7120
- hash: "df80fe3e3ba35ab3fafca929b9101e13"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 104; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7136
- hash: "aa8fa1baf61919004a4f14948826882e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7152
- hash: "1829dfa3615d6ae430ba81a2df9a9e15"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7168
- hash: "c4ea5c767192bbd3bfac58d07594016a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7184
- hash: "319aede65b3473f28a4ca62a524e4a76"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7200
- hash: "e1de653161e3348e083267c9082bc0f0"
- }
- Frame {
- msec: 7216
- hash: "de5f2d5147c600d2cb44072801c2338e"
- }
- Frame {
- msec: 7232
- hash: "6db41d704d2e28f36b206bdb317ee361"
- }
- Frame {
- msec: 7248
- hash: "a500b87efea241cdf8adf97ae86e10c3"
- }
- Frame {
- msec: 7264
- hash: "86c4eb0164a5b57eb22de4c9d58345f5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7280
- hash: "2dbb1e3a1374b7c4aecd5a891be4573d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7296
- hash: "07bcafdf5ca28a1416a20ed375ec3ea6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7312
- hash: "e79def41bbf7e544d64cf19d74524d3a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7328
- hash: "20aff98618d16c00dc9b76035e9523f5"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7344
- hash: "12b5e016bad990d1f2bf427ee8e3e6d9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 104; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 105; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7360
- hash: "66a2ba3f9e005cd58aa50cfa0000cd15"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 107; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7376
- hash: "a2e9e42e09dadbd0791f52bb96e0e0dc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 110; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7392
- hash: "ac68396566ea85a157e944e601dd8d18"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 113; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 117; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7408
- hash: "b9bfdebec8dd1a93de7ef2768b2542ba"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 124; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7424
- hash: "2e0a4b960803770acb34ef56ccf2be35"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 131; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7440
- hash: "df1643f0f8b7aa2dc080958822aeb3d0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 138; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7456
- hash: "af8ce877d953727d37fd6f7e4962f45a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 148; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7472
- hash: "b9de04c0d7532d67404a5a773d9fab99"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 155; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7488
- hash: "7904312a7efe0b545070c5a5615011df"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7504
- hash: "0069a8f088c83c6716bac15567a5b38d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 159; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 162; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7520
- hash: "8c17c78d663097e275ed2f80d6479caf"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7536
- hash: "9e8781569e07fca7def229b76189082d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 165; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7552
- hash: "8dba2f259740d869bfa20205d2e14433"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 168; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7568
- hash: "4e7ad066aadbad3f71a08962ba1379c0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 171; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7584
- hash: "a5d1554a6fb311239acc077f01adc597"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 174; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7600
- hash: "e91b45c430f7e10c2205af620350ddb6"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 177; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 183; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7616
- hash: "6c731f4dbdec441cd36b1e9727758d73"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 188; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7632
- hash: "31634e757bdec45feb1f021e35746d65"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 193; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7648
- hash: "846dcb42fa85719223eb19f7af3d0630"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 198; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 206; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7664
- hash: "a5826c5d7d1b9161cc7fb76f59021fdd"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 209; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7680
- image: "cursorDelegate.7.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 211; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7696
- hash: "bdfb9b949489744bc77905249eb647f9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7712
- hash: "307d4fb47604c00e213f8d9616e0da13"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 213; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7728
- hash: "74201a80a9032cb18b0c9e26bb67363f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 214; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7744
- hash: "38ca918199552a525fb7f3a3773761d9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7760
- hash: "d64c06c25229b3b64b779ca1bef7d2cb"
- }
- Frame {
- msec: 7776
- hash: "4ba0117db1ff431de20c06c79866d509"
- }
- Frame {
- msec: 7792
- hash: "ca56899ded0e5ea361aac24493793f58"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7808
- hash: "ebce1d3b4d088278b6f36dac444c7ca6"
- }
- Frame {
- msec: 7824
- hash: "16c52065169bffc4648eda0226dba13a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7840
- hash: "7a5a6a02f57545d9f2336ff18dd118d6"
- }
- Frame {
- msec: 7856
- hash: "328c8133c68fc2e86dc2193d1bee3259"
- }
- Frame {
- msec: 7872
- hash: "fcad1d2819e3cede6081b4dfbb5a4a65"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7888
- hash: "85ff2968ba06443f300c9c0ef36c7054"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7904
- hash: "871025c33fa769a790fc460a95b183ec"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7920
- hash: "5b96f2673e0ccd2b198b9f99c65b4b12"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 217; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7936
- hash: "5fc6f30a2dd019c4f2af056b51cfaa27"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7952
- hash: "fc6bf3bcde1f89f0bff40e3e019aed33"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7968
- hash: "703beec7b035080146131936da8c0fb3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 220; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7984
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 221; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 113
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8000
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 113
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8016
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8032
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8048
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8064
- hash: "703beec7b035080146131936da8c0fb3"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8080
- hash: "fc6bf3bcde1f89f0bff40e3e019aed33"
- }
- Frame {
- msec: 8096
- hash: "5fc6f30a2dd019c4f2af056b51cfaa27"
- }
- Frame {
- msec: 8112
- hash: "5b96f2673e0ccd2b198b9f99c65b4b12"
- }
- Frame {
- msec: 8128
- hash: "871025c33fa769a790fc460a95b183ec"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 222; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8144
- hash: "85ff2968ba06443f300c9c0ef36c7054"
- }
- Frame {
- msec: 8160
- hash: "fcad1d2819e3cede6081b4dfbb5a4a65"
- }
- Frame {
- msec: 8176
- hash: "328c8133c68fc2e86dc2193d1bee3259"
- }
- Frame {
- msec: 8192
- hash: "7a5a6a02f57545d9f2336ff18dd118d6"
- }
- Frame {
- msec: 8208
- hash: "16c52065169bffc4648eda0226dba13a"
- }
- Frame {
- msec: 8224
- hash: "ebce1d3b4d088278b6f36dac444c7ca6"
- }
- Frame {
- msec: 8240
- hash: "ca56899ded0e5ea361aac24493793f58"
- }
- Frame {
- msec: 8256
- hash: "4ba0117db1ff431de20c06c79866d509"
- }
- Frame {
- msec: 8272
- hash: "d64c06c25229b3b64b779ca1bef7d2cb"
- }
- Frame {
- msec: 8288
- hash: "38ca918199552a525fb7f3a3773761d9"
- }
- Frame {
- msec: 8304
- hash: "74201a80a9032cb18b0c9e26bb67363f"
- }
- Frame {
- msec: 8320
- hash: "307d4fb47604c00e213f8d9616e0da13"
- }
- Frame {
- msec: 8336
- hash: "9ad660f83ed62b964b676106f8aa7114"
- }
- Frame {
- msec: 8352
- hash: "457fc0df515f9813e98a6a86f4ab5231"
- }
- Frame {
- msec: 8368
- hash: "372cbc6ad4edc85319743627ced05671"
- }
- Frame {
- msec: 8384
- hash: "4e08beac6ee40acaa4de6963522d63d0"
- }
- Frame {
- msec: 8400
- hash: "5e790c2199a5e95fc17f8c0b49809cc9"
- }
- Frame {
- msec: 8416
- hash: "e36310e1866d4a95bac60084fa4aa2c1"
- }
- Frame {
- msec: 8432
- hash: "b7182b171316cc2db4de2b23de93dc41"
- }
- Frame {
- msec: 8448
- hash: "6aaf7f8e6e238973dfd4030eb146198b"
- }
- Frame {
- msec: 8464
- hash: "901ead3167e602dfe043c56c6c805d54"
- }
- Frame {
- msec: 8480
- hash: "5a97542680475b1382ad5b7c3f6fa96a"
- }
- Frame {
- msec: 8496
- hash: "fb34d93127f3c3ad0c7bacce0200753b"
- }
- Frame {
- msec: 8512
- hash: "993c97dc85e83e241538356e317b7767"
- }
- Frame {
- msec: 8528
- hash: "fb11a9edb3a613be5cb6949c76c5c715"
- }
- Frame {
- msec: 8544
- hash: "e68b7461f94adeaf330f67d36d0d3b3e"
- }
- Frame {
- msec: 8560
- hash: "7ed043cc027fdb467bd16847187cd48d"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 277; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8576
- hash: "fefbb2f4671f8a36f9d2207ced8c0bfb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 277; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8592
- hash: "1ab596339afc1f96136ee69c4b7688e1"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 276; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8608
- hash: "e07f59d729cb2790296e8c7cd3d0d3c9"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 276; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8624
- hash: "a7dccada1080487cab2d0a916676c5cb"
- }
- Frame {
- msec: 8640
- image: "cursorDelegate.8.png"
- }
- Frame {
- msec: 8656
- hash: "9329d353c678d2bc61d08f63029d1b9b"
- }
- Frame {
- msec: 8672
- hash: "41263f56af7875028bb0c1e7eccf6f5d"
- }
- Frame {
- msec: 8688
- hash: "e2eb18af82c85ea78ba438163e922df3"
- }
- Frame {
- msec: 8704
- hash: "91b2695e4915238ae8610a64e279b0f4"
- }
- Frame {
- msec: 8720
- hash: "a97d90765f87b998eae6e9f603c61bff"
- }
- Frame {
- msec: 8736
- hash: "48969edab07b942480d93ac2d383ca24"
- }
- Frame {
- msec: 8752
- hash: "ecfd9d6d5873001f0c67806544a14983"
- }
- Frame {
- msec: 8768
- hash: "a3a3bc1e2523d3e7f961893bcd1dd3a8"
- }
- Frame {
- msec: 8784
- hash: "e337735ad0b42e60c54f16f3da7af3cf"
- }
- Frame {
- msec: 8800
- hash: "c39db081130d269f25dbcb1a19afb8d0"
- }
- Frame {
- msec: 8816
- hash: "c464d501e3935ec0f53eb780bd1a8289"
- }
- Frame {
- msec: 8832
- hash: "2be4fd986de19f6f76dfddec75b26804"
- }
- Frame {
- msec: 8848
- hash: "a1280e9fb86ca96b2340bb70aa774806"
- }
- Frame {
- msec: 8864
- hash: "cce4c17a387893478bcfa547f7561aba"
- }
- Frame {
- msec: 8880
- hash: "7094db3e04895d8d7f5f58caf0658592"
- }
- Frame {
- msec: 8896
- hash: "edb1f644757f9ba0a39549d77141c280"
- }
- Frame {
- msec: 8912
- hash: "cd381e847ecfce2db111bdf94a437cbc"
- }
- Frame {
- msec: 8928
- hash: "6a089603b641b683a744b88f2ebe82d1"
- }
- Frame {
- msec: 8944
- hash: "8c0e47f7c87a1a11cd733a453b31c780"
- }
- Frame {
- msec: 8960
- hash: "b53c892d62e787eb2565820d79739de6"
- }
- Frame {
- msec: 8976
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 8992
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9008
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9024
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9040
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9056
- hash: "e165a0b90fdc1eef2c8244ad8545bd6f"
- }
- Frame {
- msec: 9072
- hash: "b53c892d62e787eb2565820d79739de6"
- }
- Frame {
- msec: 9088
- hash: "8c0e47f7c87a1a11cd733a453b31c780"
- }
- Frame {
- msec: 9104
- hash: "6a089603b641b683a744b88f2ebe82d1"
- }
- Frame {
- msec: 9120
- hash: "cd381e847ecfce2db111bdf94a437cbc"
- }
- Frame {
- msec: 9136
- hash: "edb1f644757f9ba0a39549d77141c280"
- }
- Frame {
- msec: 9152
- hash: "7094db3e04895d8d7f5f58caf0658592"
- }
- Frame {
- msec: 9168
- hash: "cce4c17a387893478bcfa547f7561aba"
- }
- Frame {
- msec: 9184
- hash: "a1280e9fb86ca96b2340bb70aa774806"
- }
- Frame {
- msec: 9200
- hash: "2be4fd986de19f6f76dfddec75b26804"
- }
- Frame {
- msec: 9216
- hash: "c464d501e3935ec0f53eb780bd1a8289"
- }
- Frame {
- msec: 9232
- hash: "c39db081130d269f25dbcb1a19afb8d0"
- }
- Frame {
- msec: 9248
- hash: "e337735ad0b42e60c54f16f3da7af3cf"
- }
- Frame {
- msec: 9264
- hash: "a3a3bc1e2523d3e7f961893bcd1dd3a8"
- }
- Frame {
- msec: 9280
- hash: "ecfd9d6d5873001f0c67806544a14983"
- }
- Frame {
- msec: 9296
- hash: "48969edab07b942480d93ac2d383ca24"
- }
- Frame {
- msec: 9312
- hash: "a97d90765f87b998eae6e9f603c61bff"
- }
- Frame {
- msec: 9328
- hash: "91b2695e4915238ae8610a64e279b0f4"
- }
- Frame {
- msec: 9344
- hash: "e2eb18af82c85ea78ba438163e922df3"
- }
- Frame {
- msec: 9360
- hash: "41263f56af7875028bb0c1e7eccf6f5d"
- }
- Frame {
- msec: 9376
- hash: "9329d353c678d2bc61d08f63029d1b9b"
- }
- Frame {
- msec: 9392
- hash: "ac5939eb4379394fab829b307cbfe7ec"
- }
- Frame {
- msec: 9408
- hash: "a7dccada1080487cab2d0a916676c5cb"
- }
- Frame {
- msec: 9424
- hash: "e07f59d729cb2790296e8c7cd3d0d3c9"
+ hash: "f499f4b3017c88c63f0a2035ad527a0e"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png
new file mode 100644
index 0000000000..5f632d0d18
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..060be223b0
--- /dev/null
+++ 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
new file mode 100644
index 0000000000..d373aef317
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png
new file mode 100644
index 0000000000..5dad108cb6
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml
new file mode 100644
index 0000000000..6081aaf747
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml
@@ -0,0 +1,1043 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "echoMode.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 48
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 64
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 80
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 96
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 112
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 128
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 144
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 160
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 176
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 192
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 208
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 224
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 240
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 256
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 272
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 288
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 304
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 320
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 336
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Frame {
+ msec: 352
+ hash: "0e7c7dc19aab217751411568b58830ef"
+ }
+ Key {
+ type: 6
+ key: 74
+ modifiers: 33554432
+ text: "4a"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 368
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 384
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 400
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 416
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 432
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Key {
+ type: 7
+ key: 74
+ modifiers: 33554432
+ text: "4a"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 448
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 464
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 480
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 496
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 512
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 528
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 544
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 560
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 576
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 592
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 608
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 624
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 640
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 656
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 672
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Frame {
+ msec: 688
+ hash: "593867b082681c362d7dffda12615284"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 704
+ hash: "8d4a4baca932c318fba437b05962a635"
+ }
+ Frame {
+ msec: 720
+ hash: "8d4a4baca932c318fba437b05962a635"
+ }
+ Frame {
+ msec: 736
+ hash: "8d4a4baca932c318fba437b05962a635"
+ }
+ Frame {
+ msec: 752
+ hash: "8d4a4baca932c318fba437b05962a635"
+ }
+ Frame {
+ msec: 768
+ hash: "8d4a4baca932c318fba437b05962a635"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 784
+ hash: "8d4a4baca932c318fba437b05962a635"
+ }
+ Frame {
+ msec: 800
+ hash: "8d4a4baca932c318fba437b05962a635"
+ }
+ Frame {
+ msec: 816
+ hash: "8d4a4baca932c318fba437b05962a635"
+ }
+ Frame {
+ msec: 832
+ hash: "8d4a4baca932c318fba437b05962a635"
+ }
+ Frame {
+ msec: 848
+ hash: "8d4a4baca932c318fba437b05962a635"
+ }
+ Key {
+ type: 6
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 864
+ hash: "b2698dba3a5ebe80e26f273b32857506"
+ }
+ Frame {
+ msec: 880
+ hash: "b2698dba3a5ebe80e26f273b32857506"
+ }
+ Frame {
+ msec: 896
+ hash: "b2698dba3a5ebe80e26f273b32857506"
+ }
+ Key {
+ type: 7
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 912
+ hash: "b2698dba3a5ebe80e26f273b32857506"
+ }
+ Frame {
+ msec: 928
+ hash: "b2698dba3a5ebe80e26f273b32857506"
+ }
+ Frame {
+ msec: 944
+ hash: "b2698dba3a5ebe80e26f273b32857506"
+ }
+ Frame {
+ msec: 960
+ hash: "b2698dba3a5ebe80e26f273b32857506"
+ }
+ Frame {
+ msec: 976
+ image: "echoMode.1.png"
+ }
+ Key {
+ type: 6
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 992
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Frame {
+ msec: 1008
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Frame {
+ msec: 1024
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Frame {
+ msec: 1040
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Key {
+ type: 7
+ key: 75
+ modifiers: 0
+ text: "6b"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1056
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Frame {
+ msec: 1072
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Frame {
+ msec: 1088
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Frame {
+ msec: 1104
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Frame {
+ msec: 1120
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Frame {
+ msec: 1136
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Frame {
+ msec: 1152
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Frame {
+ msec: 1168
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Frame {
+ msec: 1184
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Frame {
+ msec: 1200
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Frame {
+ msec: 1216
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Frame {
+ msec: 1232
+ hash: "3ea06a90d633d5e9fe5a11cc4ed67764"
+ }
+ Key {
+ type: 6
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1248
+ hash: "a190bbf59ec807391077b9d1183f72b5"
+ }
+ Frame {
+ msec: 1264
+ hash: "a190bbf59ec807391077b9d1183f72b5"
+ }
+ Frame {
+ msec: 1280
+ hash: "a190bbf59ec807391077b9d1183f72b5"
+ }
+ Key {
+ type: 7
+ key: 68
+ modifiers: 0
+ text: "64"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1296
+ hash: "a190bbf59ec807391077b9d1183f72b5"
+ }
+ Frame {
+ msec: 1312
+ hash: "a190bbf59ec807391077b9d1183f72b5"
+ }
+ Frame {
+ msec: 1328
+ hash: "a190bbf59ec807391077b9d1183f72b5"
+ }
+ Key {
+ type: 6
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1344
+ hash: "f171a98a3a726b517ad4b401a0720ba2"
+ }
+ Frame {
+ msec: 1360
+ hash: "f171a98a3a726b517ad4b401a0720ba2"
+ }
+ Frame {
+ msec: 1376
+ hash: "f171a98a3a726b517ad4b401a0720ba2"
+ }
+ Frame {
+ msec: 1392
+ hash: "f171a98a3a726b517ad4b401a0720ba2"
+ }
+ Frame {
+ msec: 1408
+ hash: "f171a98a3a726b517ad4b401a0720ba2"
+ }
+ Frame {
+ msec: 1424
+ hash: "f171a98a3a726b517ad4b401a0720ba2"
+ }
+ Frame {
+ msec: 1440
+ hash: "f171a98a3a726b517ad4b401a0720ba2"
+ }
+ Frame {
+ msec: 1456
+ hash: "f171a98a3a726b517ad4b401a0720ba2"
+ }
+ Frame {
+ msec: 1472
+ hash: "f171a98a3a726b517ad4b401a0720ba2"
+ }
+ Key {
+ type: 7
+ key: 65
+ modifiers: 0
+ text: "61"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1488
+ hash: "f171a98a3a726b517ad4b401a0720ba2"
+ }
+ Key {
+ type: 6
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1504
+ hash: "e7199e4284be9dea34caff7bde0f6303"
+ }
+ Frame {
+ msec: 1520
+ hash: "e7199e4284be9dea34caff7bde0f6303"
+ }
+ Frame {
+ msec: 1536
+ hash: "e7199e4284be9dea34caff7bde0f6303"
+ }
+ Frame {
+ msec: 1552
+ hash: "e7199e4284be9dea34caff7bde0f6303"
+ }
+ Key {
+ type: 7
+ key: 87
+ modifiers: 0
+ text: "77"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1568
+ hash: "e7199e4284be9dea34caff7bde0f6303"
+ }
+ Frame {
+ msec: 1584
+ hash: "e7199e4284be9dea34caff7bde0f6303"
+ }
+ Frame {
+ msec: 1600
+ hash: "e7199e4284be9dea34caff7bde0f6303"
+ }
+ Frame {
+ msec: 1616
+ hash: "e7199e4284be9dea34caff7bde0f6303"
+ }
+ Frame {
+ msec: 1632
+ hash: "e7199e4284be9dea34caff7bde0f6303"
+ }
+ Frame {
+ msec: 1648
+ hash: "e7199e4284be9dea34caff7bde0f6303"
+ }
+ Key {
+ type: 6
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1664
+ hash: "1d9d3c6435f2fa06bda16ef4a2ff238f"
+ }
+ Frame {
+ msec: 1680
+ hash: "1d9d3c6435f2fa06bda16ef4a2ff238f"
+ }
+ Frame {
+ msec: 1696
+ hash: "1d9d3c6435f2fa06bda16ef4a2ff238f"
+ }
+ Frame {
+ msec: 1712
+ hash: "1d9d3c6435f2fa06bda16ef4a2ff238f"
+ }
+ Frame {
+ msec: 1728
+ hash: "1d9d3c6435f2fa06bda16ef4a2ff238f"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1744
+ hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c"
+ }
+ Key {
+ type: 7
+ key: 83
+ modifiers: 0
+ text: "73"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1760
+ hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c"
+ }
+ Frame {
+ msec: 1776
+ hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c"
+ }
+ Frame {
+ msec: 1792
+ hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1808
+ hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c"
+ }
+ Frame {
+ msec: 1824
+ hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c"
+ }
+ Frame {
+ msec: 1840
+ hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c"
+ }
+ Frame {
+ msec: 1856
+ hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c"
+ }
+ Key {
+ type: 6
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1872
+ hash: "2af75935ad1d3be02c6481c094737575"
+ }
+ Frame {
+ msec: 1888
+ hash: "2af75935ad1d3be02c6481c094737575"
+ }
+ Frame {
+ msec: 1904
+ hash: "2af75935ad1d3be02c6481c094737575"
+ }
+ Frame {
+ msec: 1920
+ hash: "2af75935ad1d3be02c6481c094737575"
+ }
+ Key {
+ type: 7
+ key: 76
+ modifiers: 0
+ text: "6c"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1936
+ image: "echoMode.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "2af75935ad1d3be02c6481c094737575"
+ }
+ Frame {
+ msec: 1968
+ hash: "2af75935ad1d3be02c6481c094737575"
+ }
+ Frame {
+ msec: 1984
+ hash: "2af75935ad1d3be02c6481c094737575"
+ }
+ Frame {
+ msec: 2000
+ hash: "2af75935ad1d3be02c6481c094737575"
+ }
+ Frame {
+ msec: 2016
+ hash: "2af75935ad1d3be02c6481c094737575"
+ }
+ Key {
+ type: 6
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2032
+ hash: "c3512d6a7ead481aa6fec8ef8ee2f1d1"
+ }
+ Frame {
+ msec: 2048
+ hash: "c3512d6a7ead481aa6fec8ef8ee2f1d1"
+ }
+ Key {
+ type: 7
+ key: 79
+ modifiers: 0
+ text: "6f"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "c3512d6a7ead481aa6fec8ef8ee2f1d1"
+ }
+ Frame {
+ msec: 2080
+ hash: "c3512d6a7ead481aa6fec8ef8ee2f1d1"
+ }
+ Key {
+ type: 6
+ key: 86
+ modifiers: 0
+ text: "76"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2096
+ hash: "064e1fc885ab7f07dad1770361087bef"
+ }
+ Frame {
+ msec: 2112
+ hash: "064e1fc885ab7f07dad1770361087bef"
+ }
+ Frame {
+ msec: 2128
+ hash: "064e1fc885ab7f07dad1770361087bef"
+ }
+ Frame {
+ msec: 2144
+ hash: "064e1fc885ab7f07dad1770361087bef"
+ }
+ Key {
+ type: 6
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 86
+ modifiers: 0
+ text: "76"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2160
+ hash: "9b764f6e9cc3d30446e1b32f7ab94f66"
+ }
+ Frame {
+ msec: 2176
+ hash: "9b764f6e9cc3d30446e1b32f7ab94f66"
+ }
+ Frame {
+ msec: 2192
+ hash: "9b764f6e9cc3d30446e1b32f7ab94f66"
+ }
+ Frame {
+ msec: 2208
+ hash: "9b764f6e9cc3d30446e1b32f7ab94f66"
+ }
+ Key {
+ type: 6
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2224
+ hash: "18eff632e106f632aad481ab40f985d7"
+ }
+ Key {
+ type: 7
+ key: 69
+ modifiers: 0
+ text: "65"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2240
+ hash: "18eff632e106f632aad481ab40f985d7"
+ }
+ Frame {
+ msec: 2256
+ hash: "18eff632e106f632aad481ab40f985d7"
+ }
+ Frame {
+ msec: 2272
+ hash: "18eff632e106f632aad481ab40f985d7"
+ }
+ Frame {
+ msec: 2288
+ hash: "18eff632e106f632aad481ab40f985d7"
+ }
+ Frame {
+ msec: 2304
+ hash: "18eff632e106f632aad481ab40f985d7"
+ }
+ Key {
+ type: 7
+ key: 32
+ modifiers: 0
+ text: "20"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2320
+ hash: "18eff632e106f632aad481ab40f985d7"
+ }
+ Frame {
+ msec: 2336
+ hash: "18eff632e106f632aad481ab40f985d7"
+ }
+ Key {
+ type: 6
+ key: 77
+ modifiers: 0
+ text: "6d"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2352
+ hash: "eaabd4617081e3bc68a5b9099c63272a"
+ }
+ Frame {
+ msec: 2368
+ hash: "eaabd4617081e3bc68a5b9099c63272a"
+ }
+ Frame {
+ msec: 2384
+ hash: "eaabd4617081e3bc68a5b9099c63272a"
+ }
+ Frame {
+ msec: 2400
+ hash: "eaabd4617081e3bc68a5b9099c63272a"
+ }
+ Frame {
+ msec: 2416
+ hash: "eaabd4617081e3bc68a5b9099c63272a"
+ }
+ Frame {
+ msec: 2432
+ hash: "eaabd4617081e3bc68a5b9099c63272a"
+ }
+ Key {
+ type: 7
+ key: 77
+ modifiers: 0
+ text: "6d"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "eaabd4617081e3bc68a5b9099c63272a"
+ }
+ Frame {
+ msec: 2464
+ hash: "eaabd4617081e3bc68a5b9099c63272a"
+ }
+ Frame {
+ msec: 2480
+ hash: "eaabd4617081e3bc68a5b9099c63272a"
+ }
+ Frame {
+ msec: 2496
+ hash: "eaabd4617081e3bc68a5b9099c63272a"
+ }
+ Key {
+ type: 6
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2512
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2528
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2544
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Key {
+ type: 7
+ key: 89
+ modifiers: 0
+ text: "79"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2560
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2576
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2592
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2608
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2624
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2640
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2656
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2672
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2688
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2704
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2720
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2736
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2752
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2768
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2784
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2800
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2816
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2832
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2848
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2864
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2880
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2896
+ image: "echoMode.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2928
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2944
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2960
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2976
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 2992
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 3008
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 3024
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 3040
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+ Frame {
+ msec: 3056
+ hash: "fec019ea87914d30b5bf4754ce8ba916"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.0.png
new file mode 100644
index 0000000000..6a32f0d550
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml
new file mode 100644
index 0000000000..fd64d642fa
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml
@@ -0,0 +1,107 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "hAlign.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 48
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 64
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 80
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 96
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 112
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 128
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 144
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 160
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 176
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 192
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 208
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 224
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 240
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 256
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 272
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 288
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 304
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 320
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 336
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 352
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 368
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 384
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+ Frame {
+ msec: 400
+ hash: "043c40378d2707bd231a448cd242aa3c"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.0.png
new file mode 100644
index 0000000000..6ca52b6792
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.1.png
new file mode 100644
index 0000000000..31d6b2cb90
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.10.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.10.png
new file mode 100644
index 0000000000..d89e2d87eb
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.10.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.11.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.11.png
new file mode 100644
index 0000000000..834516a997
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.11.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.2.png
new file mode 100644
index 0000000000..31d6b2cb90
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.3.png
new file mode 100644
index 0000000000..31d6b2cb90
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.4.png
new file mode 100644
index 0000000000..8147bda0b9
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.5.png
new file mode 100644
index 0000000000..c67e619b8c
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.6.png
new file mode 100644
index 0000000000..646855f1f3
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.7.png
new file mode 100644
index 0000000000..c1a9d5c927
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.8.png
new file mode 100644
index 0000000000..d6c92b76a5
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.9.png
new file mode 100644
index 0000000000..e798d3be10
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml
new file mode 100644
index 0000000000..fc8a11566d
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml
@@ -0,0 +1,4335 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "usingLineEdit.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 48
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 64
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 80
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 96
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 112
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 128
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 144
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 160
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 176
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 192
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 208
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 224
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 240
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 256
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 272
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 288
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 304
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 320
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 336
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 352
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 368
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 384
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 400
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 416
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 432
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 448
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 464
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 480
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 496
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 512
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 528
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 544
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 560
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 576
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 592
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 608
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 624
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 640
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 656
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 672
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 688
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 704
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 720
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 736
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 752
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 768
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 784
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 800
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 816
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 832
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 848
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 864
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 880
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 896
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 912
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Frame {
+ msec: 928
+ hash: "b2bcfe5c299742bf7da166e9ae1e1126"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 85; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 944
+ hash: "1e95a74868a748e11efdc6fbb500f6e8"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 85; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 960
+ hash: "1e95a74868a748e11efdc6fbb500f6e8"
+ }
+ Mouse {
+ type: 4
+ button: 1
+ buttons: 1
+ x: 85; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 976
+ image: "usingLineEdit.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1008
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1024
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1040
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1056
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 85; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1072
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1088
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1104
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1120
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1136
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1152
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1168
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1184
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1200
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1216
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1232
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1248
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1264
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1280
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1296
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1312
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1328
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1344
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1360
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1376
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1392
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1408
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1424
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1440
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1456
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1472
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1488
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1504
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1520
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1536
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1552
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1568
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1584
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1600
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1616
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1632
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1648
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1664
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1680
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1696
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1712
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1728
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1744
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1760
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1776
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1792
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1808
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1824
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1840
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1856
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1872
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1888
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1904
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1920
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1936
+ image: "usingLineEdit.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1968
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 1984
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Key {
+ type: 6
+ key: 67
+ modifiers: 67108864
+ text: "03"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2000
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2016
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2032
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2048
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2064
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2080
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2096
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2112
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 67
+ modifiers: 0
+ text: "63"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2128
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2144
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2160
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2176
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2192
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2208
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2224
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2240
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2256
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2272
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2288
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2304
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2320
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2336
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2352
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2368
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2384
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2400
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2416
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2432
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2448
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2464
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2480
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Key {
+ type: 6
+ key: 16777233
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2496
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2512
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2528
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2544
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2560
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2576
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Key {
+ type: 7
+ key: 16777233
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2592
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2608
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2624
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2640
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2656
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2672
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2688
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2704
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2720
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2736
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2752
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2768
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2784
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2800
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2816
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2832
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2848
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2864
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2880
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2896
+ image: "usingLineEdit.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2928
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2944
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2960
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2976
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 2992
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 3008
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 3024
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 3040
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 3056
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 3072
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 3088
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 3104
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 3120
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 3136
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 3152
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 3168
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 3184
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 3200
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Frame {
+ msec: 3216
+ hash: "c346bd1c6a8c04dff75bc14882a4d964"
+ }
+ Key {
+ type: 6
+ key: 86
+ modifiers: 67108864
+ text: "16"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3232
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3248
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3264
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3280
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3296
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3312
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3328
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Key {
+ type: 7
+ key: 86
+ modifiers: 67108864
+ text: "16"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3344
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3360
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3376
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3392
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3408
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3424
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3440
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3456
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3472
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3488
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3504
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3520
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3536
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Frame {
+ msec: 3552
+ hash: "4e24e7e6a205160479b0d23057a50b37"
+ }
+ Key {
+ type: 6
+ key: 86
+ modifiers: 67108864
+ text: "16"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3568
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3584
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3600
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3616
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3632
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3648
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3664
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3680
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Key {
+ type: 7
+ key: 86
+ modifiers: 67108864
+ text: "16"
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3696
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3712
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3728
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3744
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3760
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3776
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3792
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3808
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3824
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3840
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3856
+ image: "usingLineEdit.4.png"
+ }
+ Frame {
+ msec: 3872
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3888
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3904
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3920
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3936
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3952
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3968
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 3984
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4000
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4016
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4032
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4048
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4064
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4080
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4096
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4112
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4128
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4144
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4160
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4176
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4192
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 4208
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4224
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4240
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4256
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4272
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4288
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4304
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4320
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4336
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4352
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4368
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4384
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4400
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4416
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4432
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4448
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4464
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4480
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4496
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4512
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4528
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4544
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4560
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4576
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4592
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4608
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4624
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4640
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4656
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4672
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4688
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Frame {
+ msec: 4704
+ hash: "c6354c09a2bdf6ff23cae30640abdd65"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 69; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4720
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4736
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4752
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4768
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4784
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4800
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 69; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4816
+ image: "usingLineEdit.5.png"
+ }
+ Frame {
+ msec: 4832
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4848
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4864
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4880
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4896
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4912
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4928
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4944
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4960
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4976
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 4992
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5008
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5024
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5040
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5056
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5072
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5088
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5104
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5120
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5136
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5152
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5168
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5184
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5200
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5216
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5232
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5248
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5264
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5280
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5296
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5312
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5328
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5344
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Frame {
+ msec: 5360
+ hash: "b7e9475cc88b099f9e17b67f4d0c8ed0"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5376
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5392
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5408
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5424
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5440
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5456
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5472
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5488
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5504
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5520
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5536
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5552
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5568
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5584
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5600
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Frame {
+ msec: 5616
+ hash: "5435254889b22b00b043f0d748021369"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5632
+ hash: "94fa3848acc33accfb607ce31029f06d"
+ }
+ Frame {
+ msec: 5648
+ hash: "94fa3848acc33accfb607ce31029f06d"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5664
+ hash: "1ea423dd8084001f2357f1613a77daa4"
+ }
+ Frame {
+ msec: 5680
+ hash: "1ea423dd8084001f2357f1613a77daa4"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5696
+ hash: "b0f808e85cc5721473da7cd84b1987dc"
+ }
+ Frame {
+ msec: 5712
+ hash: "b0f808e85cc5721473da7cd84b1987dc"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5728
+ hash: "0667aaf2eb49c2375b831301fefb0035"
+ }
+ Frame {
+ msec: 5744
+ hash: "0667aaf2eb49c2375b831301fefb0035"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5760
+ hash: "7680aca6b9feccc7e73efa79c1473ce8"
+ }
+ Frame {
+ msec: 5776
+ image: "usingLineEdit.6.png"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5792
+ hash: "fbbc99bf6a697d60ef348148c0a48bc2"
+ }
+ Frame {
+ msec: 5808
+ hash: "fbbc99bf6a697d60ef348148c0a48bc2"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5824
+ hash: "9550d8fab2512470dd9dde62f3494450"
+ }
+ Frame {
+ msec: 5840
+ hash: "9550d8fab2512470dd9dde62f3494450"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5856
+ hash: "9550d8fab2512470dd9dde62f3494450"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5872
+ hash: "ab79f5095d60f5cef526a074ef6d4e96"
+ }
+ Frame {
+ msec: 5888
+ hash: "ab79f5095d60f5cef526a074ef6d4e96"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5904
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 5920
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Frame {
+ msec: 5936
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Frame {
+ msec: 5952
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Frame {
+ msec: 5968
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Frame {
+ msec: 5984
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Frame {
+ msec: 6000
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Frame {
+ msec: 6016
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Frame {
+ msec: 6032
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Frame {
+ msec: 6048
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 6064
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Frame {
+ msec: 6080
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Frame {
+ msec: 6096
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Frame {
+ msec: 6112
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Frame {
+ msec: 6128
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Frame {
+ msec: 6144
+ hash: "4e6ef470ed2c2a2418a4838c6e4ae64b"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 6160
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6176
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6192
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6208
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6224
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6240
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6256
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6272
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6288
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6304
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6320
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6336
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6352
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6368
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6384
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6400
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 6416
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6432
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 6448
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6464
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 6480
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6496
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6512
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6528
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6544
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6560
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6576
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6592
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6608
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6624
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6640
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6656
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6672
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6688
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6704
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6720
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6736
+ image: "usingLineEdit.7.png"
+ }
+ Frame {
+ msec: 6752
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6768
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6784
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 6800
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 6816
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6832
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6848
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6864
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6880
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6896
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6912
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6928
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Frame {
+ msec: 6944
+ hash: "ed2a8fae3e94e2f90232d172246d3783"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 6960
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 6976
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 6992
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7008
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7024
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7040
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7056
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7072
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7088
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7104
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7120
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7136
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7152
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7168
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7184
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7200
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7216
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7232
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7248
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7264
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7280
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7296
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7312
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7328
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7344
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7360
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7376
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7392
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7408
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7424
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7440
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7456
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7472
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7488
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7504
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7520
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 7536
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7552
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7568
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7584
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7600
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7616
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7632
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7648
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7664
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7680
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7696
+ image: "usingLineEdit.8.png"
+ }
+ Frame {
+ msec: 7712
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7728
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7744
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7760
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7776
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7792
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7808
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7824
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7840
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7856
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7872
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7888
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7904
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7920
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7936
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7952
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7968
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 7984
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8000
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8016
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8032
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8048
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8064
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8080
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8096
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8112
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8128
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8144
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8160
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8176
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8192
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8208
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8224
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8240
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8256
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8272
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8288
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8304
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8320
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8336
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8352
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8368
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8384
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8400
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8416
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8432
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8448
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8464
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8480
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Frame {
+ msec: 8496
+ hash: "f1c4f46ee86ce1eb24fcd72106da0248"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 61; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8512
+ hash: "e779fc73a3ca131452f62e889d5c96ea"
+ }
+ Frame {
+ msec: 8528
+ hash: "e779fc73a3ca131452f62e889d5c96ea"
+ }
+ Frame {
+ msec: 8544
+ hash: "e779fc73a3ca131452f62e889d5c96ea"
+ }
+ Frame {
+ msec: 8560
+ hash: "e779fc73a3ca131452f62e889d5c96ea"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 60; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 58; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8576
+ hash: "e779fc73a3ca131452f62e889d5c96ea"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 46; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8592
+ hash: "400b446983d944bac62889fb47e8d405"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 41; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 40; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8608
+ hash: "400b446983d944bac62889fb47e8d405"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 32; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8624
+ hash: "769278730ba7e2a31333496a0c99499f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 31; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 30; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8640
+ hash: "769278730ba7e2a31333496a0c99499f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 29; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8656
+ image: "usingLineEdit.9.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 28; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 27; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8672
+ hash: "c193a6f52a967c97961df08ebffe50c1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 26; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8688
+ hash: "c193a6f52a967c97961df08ebffe50c1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 25; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 24; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8704
+ hash: "c193a6f52a967c97961df08ebffe50c1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 23; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 22; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8720
+ hash: "c193a6f52a967c97961df08ebffe50c1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 20; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 19; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8736
+ hash: "ce0d865bf18c5c3ff93bda82f95e97c2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 18; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 17; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8752
+ hash: "ce0d865bf18c5c3ff93bda82f95e97c2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 16; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 15; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8768
+ hash: "ce0d865bf18c5c3ff93bda82f95e97c2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 14; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 13; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8784
+ hash: "ce0d865bf18c5c3ff93bda82f95e97c2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 12; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 11; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8800
+ hash: "ce0d865bf18c5c3ff93bda82f95e97c2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 10; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 8; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8816
+ hash: "af2a9c17451a89153e04418e056d9ea5"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 6; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 5; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8832
+ hash: "749a1ccf2050c809be5e3820d3b2fba9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 3; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 2; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8848
+ hash: "74f183256682200a804baa620a6ce978"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 0; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -1; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8864
+ hash: "9d837fb68c47ac3659b93e9f77cea0af"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -2; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -3; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8880
+ hash: "2dc20ba694548e05c80383d0fcc429fc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -5; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -6; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8896
+ hash: "0f5b95fbbdd932c8dbfaffd0cdd44dec"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -7; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -9; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8912
+ hash: "dd9e9d86eacd44b19c6c9c64c2abf007"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -10; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -11; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8928
+ hash: "7c67140abcbe7b8a36a7324016377272"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -12; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -13; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8944
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -14; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -15; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8960
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Frame {
+ msec: 8976
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -16; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -17; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 8992
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -18; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9008
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Frame {
+ msec: 9024
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Frame {
+ msec: 9040
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Frame {
+ msec: 9056
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Frame {
+ msec: 9072
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Frame {
+ msec: 9088
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Frame {
+ msec: 9104
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Frame {
+ msec: 9120
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Frame {
+ msec: 9136
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Frame {
+ msec: 9152
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Frame {
+ msec: 9168
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Frame {
+ msec: 9184
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Frame {
+ msec: 9200
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -17; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9216
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -16; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9232
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -14; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -13; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9248
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -11; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -10; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9264
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -8; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -7; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9280
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -6; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -5; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9296
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -3; y: 32
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: -1; y: 32
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9312
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 1; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 3; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9328
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 4; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 6; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9344
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 7; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 8; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9360
+ hash: "a085e2633649f0328f109bc4143eaccc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 10; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 11; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9376
+ hash: "fe89231a1ac7f48eee7cea14167b6616"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 12; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 14; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9392
+ hash: "fe89231a1ac7f48eee7cea14167b6616"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 15; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 17; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9408
+ hash: "fe89231a1ac7f48eee7cea14167b6616"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 21; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 24; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9424
+ hash: "e816757e030c8927d6721295f8685162"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 27; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 30; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9440
+ hash: "48f3a7d217ff85ad6088e18c1b88d6d7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 33; y: 32
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 35; y: 32
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9456
+ hash: "48f3a7d217ff85ad6088e18c1b88d6d7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 38; y: 32
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 39; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9472
+ hash: "6cb50f458ba606cc4204727a02e9191b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 43; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 45; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9488
+ hash: "6cb50f458ba606cc4204727a02e9191b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 48; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 50; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9504
+ hash: "936d1a2ceed861a48fb3dd0c54cb0982"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 51; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 53; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9520
+ hash: "936d1a2ceed861a48fb3dd0c54cb0982"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 55; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9536
+ hash: "936d1a2ceed861a48fb3dd0c54cb0982"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 56; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 58; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9552
+ hash: "9fb9dbff35b91d65e1e7ce569baede55"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 61; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 64; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9568
+ hash: "9fb9dbff35b91d65e1e7ce569baede55"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 67; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9584
+ hash: "78038f8df4ef17a164172c5bce16527d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 73; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 74; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9600
+ hash: "b390e534fe43678ff031ec9de32b50d0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 76; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9616
+ image: "usingLineEdit.10.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 77; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 78; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9632
+ hash: "b390e534fe43678ff031ec9de32b50d0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 79; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 80; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9648
+ hash: "b390e534fe43678ff031ec9de32b50d0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 81; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 84; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9664
+ hash: "94fa3848acc33accfb607ce31029f06d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 85; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 88; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9680
+ hash: "b0f808e85cc5721473da7cd84b1987dc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 89; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 91; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9696
+ hash: "7680aca6b9feccc7e73efa79c1473ce8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 92; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 94; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9712
+ hash: "ab79f5095d60f5cef526a074ef6d4e96"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 95; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 96; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9728
+ hash: "35c718664fc8e817e26054c307f908f9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 98; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 100; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9744
+ hash: "23267fdc8202daba400140e51f5e3bdc"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 102; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 104; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9760
+ hash: "0b2765ae503f0194e6e526ea6f9ed8f9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 105; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 108; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9776
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 109; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 110; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9792
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 111; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9808
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 112; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9824
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 113; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9840
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 114; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9856
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 9872
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 115; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9888
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 116; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9904
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 117; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9920
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 118; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9936
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 9952
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 119; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9968
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 120; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 9984
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 121; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10000
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10016
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 122; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10032
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10048
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10064
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10080
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10096
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10112
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10128
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10144
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10160
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10176
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10192
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10208
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10224
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10240
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 122; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 10256
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10272
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10288
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10304
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10320
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10336
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10352
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10368
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10384
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10400
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10416
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10432
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10448
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10464
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10480
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10496
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10512
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10528
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10544
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10560
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10576
+ image: "usingLineEdit.11.png"
+ }
+ Frame {
+ msec: 10592
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10608
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10624
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10640
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10656
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10672
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10688
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10704
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10720
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10736
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10752
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10768
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10784
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10800
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10816
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10832
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10848
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10864
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10880
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10896
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10912
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10928
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10944
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10960
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10976
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 10992
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11008
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11024
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11040
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11056
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11072
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11088
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11104
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11120
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11136
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11152
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11168
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11184
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11200
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11216
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11232
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11248
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+ Frame {
+ msec: 11264
+ hash: "6f6154528c95da216e1f3830de000195"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.0.png
new file mode 100644
index 0000000000..18dd55ea6c
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.1.png
new file mode 100644
index 0000000000..9cc8b85c89
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.2.png
new file mode 100644
index 0000000000..f7c23e2fd2
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.3.png
new file mode 100644
index 0000000000..a5bd6cce0d
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.4.png
new file mode 100644
index 0000000000..fdcdf88ca5
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.5.png
new file mode 100644
index 0000000000..89fd161fad
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.qml
new file mode 100644
index 0000000000..e14fb8269d
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/cursorDelegate.qml
@@ -0,0 +1,1551 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "cursorDelegate.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 48
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 64
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 80
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 96
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 112
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 128
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 144
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 160
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 176
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 192
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 208
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 224
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 240
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 256
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 272
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 288
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 304
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 320
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 336
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 352
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 368
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 384
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 400
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 416
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 432
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Frame {
+ msec: 448
+ hash: "ea218f136c6c7a70f2a4da569fae92b0"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 464
+ hash: "e0cce7628c07ad989161e77d87f7f511"
+ }
+ Frame {
+ msec: 480
+ hash: "e0cce7628c07ad989161e77d87f7f511"
+ }
+ Frame {
+ msec: 496
+ hash: "e0cce7628c07ad989161e77d87f7f511"
+ }
+ Frame {
+ msec: 512
+ hash: "e0cce7628c07ad989161e77d87f7f511"
+ }
+ Frame {
+ msec: 528
+ hash: "b86c442f4a561503d34238465fd20aec"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 544
+ hash: "36f5f4397549f151ebfc0295ca33f55f"
+ }
+ Frame {
+ msec: 560
+ hash: "1cc9682b652e65b547bbeb2b37f9d1e7"
+ }
+ Frame {
+ msec: 576
+ hash: "b3874acb58643e1bb70a0b579e517526"
+ }
+ Frame {
+ msec: 592
+ hash: "152b962f8a00b68459df073962a1a947"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 608
+ hash: "891f86211cdc5050881421613b199939"
+ }
+ Frame {
+ msec: 624
+ hash: "5862b5e1ed2d1905357adbc5a7f2ade9"
+ }
+ Frame {
+ msec: 640
+ hash: "2fd895e688fa1c8b2f0bbf6e7defdb2a"
+ }
+ Frame {
+ msec: 656
+ hash: "66c31658d38604b3e2d424aea15b715d"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 672
+ hash: "df5331bc225d5e6f443812d489b19324"
+ }
+ Frame {
+ msec: 688
+ hash: "6ca6367bb314804598b6257fd8b49d28"
+ }
+ Frame {
+ msec: 704
+ hash: "877f64d93ba9d0d31181c3600bc02f80"
+ }
+ Frame {
+ msec: 720
+ hash: "6b3210a6e4f8c448e5d90c6dada7a114"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 736
+ hash: "4e64391a8142f94cb1ae38082218af01"
+ }
+ Frame {
+ msec: 752
+ hash: "7bc3285fc6a0275622a76e605e2f7609"
+ }
+ Frame {
+ msec: 768
+ hash: "895b45ca668e4fe112913d818f28631e"
+ }
+ Frame {
+ msec: 784
+ hash: "98e49c0ade7408c3229489ba6681088b"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 800
+ hash: "98c7370ca0f570dbe23c2724cb4ddead"
+ }
+ Frame {
+ msec: 816
+ hash: "a71a7684552b072754469f6ae16d18b6"
+ }
+ Frame {
+ msec: 832
+ hash: "9cf40ec30d20e2cf95de2bfede4e46c6"
+ }
+ Frame {
+ msec: 848
+ hash: "ed1efc0873a05be9f0c001c9cab94414"
+ }
+ Frame {
+ msec: 864
+ hash: "4909c38a27da00d9c6f0dafc52c45035"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 880
+ hash: "81d4e7ca4265332555434fdd5f19c621"
+ }
+ Frame {
+ msec: 896
+ hash: "c336bac65473a8b76cecca1854c94752"
+ }
+ Frame {
+ msec: 912
+ hash: "8bf0b0c6bd2c0fbf7c9f3529a5b92ebc"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 928
+ hash: "8b7f6b8eebd1d7648becb91d256ac475"
+ }
+ Frame {
+ msec: 944
+ hash: "6fcc3b9dee14bcdd2b60a32f696eec05"
+ }
+ Frame {
+ msec: 960
+ hash: "939ac75fa99f482509ee1bb6b93f2ed0"
+ }
+ Frame {
+ msec: 976
+ image: "cursorDelegate.1.png"
+ }
+ Frame {
+ msec: 992
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1008
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 1024
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 1040
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1056
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 1072
+ hash: "3d6db6e3ee77ee75341ce16dc4a56c59"
+ }
+ Frame {
+ msec: 1088
+ hash: "ff43ccdb14ae4d12ffead2eb261a5056"
+ }
+ Frame {
+ msec: 1104
+ hash: "cd14458426f94efbbc729112e6a481c5"
+ }
+ Frame {
+ msec: 1120
+ hash: "6bd66d118ff27b0cea7944ea22c727c9"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1136
+ hash: "c294f1f7b7dd842d797ec5346f8794b3"
+ }
+ Frame {
+ msec: 1152
+ hash: "185228bb06e052a279bc0481760a1920"
+ }
+ Frame {
+ msec: 1168
+ hash: "81b01e755b7fcbda18634b88052326e4"
+ }
+ Frame {
+ msec: 1184
+ hash: "ff16045d2ae8a5e48440fe5094780987"
+ }
+ Frame {
+ msec: 1200
+ hash: "01b2a227010cba52952763cd9fbc8c94"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1216
+ hash: "3c6ffa5250e90c994e334745efa15b19"
+ }
+ Frame {
+ msec: 1232
+ hash: "9656663feae42fced5646d8c21ad05ec"
+ }
+ Frame {
+ msec: 1248
+ hash: "95ecea8c39c38c2319a8a0de1c3c97b1"
+ }
+ Frame {
+ msec: 1264
+ hash: "7bc610d4efadf5ef603d0c62e81021b2"
+ }
+ Frame {
+ msec: 1280
+ hash: "b5343907926d112165a1e8914fa12383"
+ }
+ Frame {
+ msec: 1296
+ hash: "7b1be2c0e963b92accd35606cd9521f5"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1312
+ hash: "2004b105d197f736f68eef070574767d"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1328
+ hash: "dbafec45c35739835180f7644f4bf66c"
+ }
+ Frame {
+ msec: 1344
+ hash: "ed86b86cc0eb1c8c05b0ddb063937270"
+ }
+ Frame {
+ msec: 1360
+ hash: "bdc640c90728a4f39c22e0a415c595b4"
+ }
+ Frame {
+ msec: 1376
+ hash: "2af0c828b767942ba1745dd9838a54b5"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1392
+ hash: "547f4cbf1637d997f50f755965dd4704"
+ }
+ Frame {
+ msec: 1408
+ hash: "ede46a74a6e5297454da63227684d6cf"
+ }
+ Frame {
+ msec: 1424
+ hash: "3a8747e0b26763c7bbc5ecd433c41d5a"
+ }
+ Frame {
+ msec: 1440
+ hash: "0ae75d3cf890fe95e53f4c2c2eb0c660"
+ }
+ Frame {
+ msec: 1456
+ hash: "1014ed3a45803f4ca8dfd669137d3502"
+ }
+ Frame {
+ msec: 1472
+ hash: "0abf6b3183b4b85eabbcb3f2d4173473"
+ }
+ Frame {
+ msec: 1488
+ hash: "39dbf6788ad997531894fd5138953f21"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1504
+ hash: "0fd0841b32106155e25c274b47724d60"
+ }
+ Frame {
+ msec: 1520
+ hash: "9fa396cab1425ca03e394c681ccb798d"
+ }
+ Frame {
+ msec: 1536
+ hash: "3c62d2a016bba6cd3f83982dcb7c1582"
+ }
+ Frame {
+ msec: 1552
+ hash: "ee6f16b9165eb663ae78716f723e5b16"
+ }
+ Frame {
+ msec: 1568
+ hash: "dd2c49caa8b8f690fd8a29aac7f85dc8"
+ }
+ Frame {
+ msec: 1584
+ hash: "79343bd1b7472d75daad9ae9848b89ba"
+ }
+ Frame {
+ msec: 1600
+ hash: "4c087ae0614e4736130235eea0af5267"
+ }
+ Frame {
+ msec: 1616
+ hash: "87d75b0e3bd197084f8d8c0601ba195d"
+ }
+ Frame {
+ msec: 1632
+ hash: "ccd66bab965c78aa3b39728aef0648c6"
+ }
+ Frame {
+ msec: 1648
+ hash: "d311116fafc9693e6c55eb2c1273a487"
+ }
+ Frame {
+ msec: 1664
+ hash: "a4c1bc9c9f987bacfd19ea64f9a3ec2c"
+ }
+ Frame {
+ msec: 1680
+ hash: "a6b86821b0563c06b478b62037edffe5"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1696
+ hash: "30b8fd8f9d3e63c9101cf3558fc7f0d6"
+ }
+ Frame {
+ msec: 1712
+ hash: "8224ae61cfce9bbf9f69677071285ddc"
+ }
+ Frame {
+ msec: 1728
+ hash: "1b7408ad665e5e316893397c9362e069"
+ }
+ Frame {
+ msec: 1744
+ hash: "7ace1472840c3184263fe23cec5ba929"
+ }
+ Frame {
+ msec: 1760
+ hash: "ea3f542c80564ad841675197b51272c9"
+ }
+ Frame {
+ msec: 1776
+ hash: "0c4989dbd8d4008c1834140e28b98405"
+ }
+ Frame {
+ msec: 1792
+ hash: "337452c36385bebadb35498172eb82ef"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1808
+ hash: "030ff7472ad4d566166e99aeb1daf1ad"
+ }
+ Frame {
+ msec: 1824
+ hash: "59f7bb68de85445bad114caca87ae859"
+ }
+ Frame {
+ msec: 1840
+ hash: "5c0e8905d830357ca7bc26c6383a2dcc"
+ }
+ Frame {
+ msec: 1856
+ hash: "b00e889ee28556eaca18a6d52b8b4c0c"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1872
+ hash: "07d4cc37e71ff6fb34c1370db27bd0f9"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 1888
+ hash: "86d74cd53c541fde95b36a3899859272"
+ }
+ Frame {
+ msec: 1904
+ hash: "82457df6a73b8aa32b567cac53d19679"
+ }
+ Frame {
+ msec: 1920
+ hash: "63be8d924bace20717f87f7d260060e5"
+ }
+ Frame {
+ msec: 1936
+ image: "cursorDelegate.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "d274989f514174cda3316fa6650aed05"
+ }
+ Frame {
+ msec: 1968
+ hash: "f1cae5982318ec621423513f7a090adf"
+ }
+ Frame {
+ msec: 1984
+ hash: "1b30dd4a817370d8b6f5908cef69eeb9"
+ }
+ Frame {
+ msec: 2000
+ hash: "1b30dd4a817370d8b6f5908cef69eeb9"
+ }
+ Frame {
+ msec: 2016
+ hash: "1b30dd4a817370d8b6f5908cef69eeb9"
+ }
+ Frame {
+ msec: 2032
+ hash: "1b30dd4a817370d8b6f5908cef69eeb9"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2048
+ hash: "1b30dd4a817370d8b6f5908cef69eeb9"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2064
+ hash: "f1cae5982318ec621423513f7a090adf"
+ }
+ Frame {
+ msec: 2080
+ hash: "d274989f514174cda3316fa6650aed05"
+ }
+ Frame {
+ msec: 2096
+ hash: "4c51c2e71ee1fef13b9ac5213b057cef"
+ }
+ Frame {
+ msec: 2112
+ hash: "63be8d924bace20717f87f7d260060e5"
+ }
+ Frame {
+ msec: 2128
+ hash: "82457df6a73b8aa32b567cac53d19679"
+ }
+ Frame {
+ msec: 2144
+ hash: "86d74cd53c541fde95b36a3899859272"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2160
+ hash: "9bfb6b9a2604b4c534539bc731abda10"
+ }
+ Frame {
+ msec: 2176
+ hash: "dfa52bb483388dfee56577968d013c8f"
+ }
+ Frame {
+ msec: 2192
+ hash: "ea77a49e7e246649248e19b72d6433c9"
+ }
+ Frame {
+ msec: 2208
+ hash: "348e6a82b1491739e72c5c361158a967"
+ }
+ Frame {
+ msec: 2224
+ hash: "bb52aa533659d770d01deb8bef5a8b4d"
+ }
+ Frame {
+ msec: 2240
+ hash: "082441b5fea02f2676ad4d53aefb6927"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2256
+ hash: "9194cd1399ceeda421944cd87182039b"
+ }
+ Frame {
+ msec: 2272
+ hash: "edff1333eb3a0047c527503ab3dbe71c"
+ }
+ Frame {
+ msec: 2288
+ hash: "e5c9931c8baf260d77f9cfcc1bb41101"
+ }
+ Frame {
+ msec: 2304
+ hash: "75c37de92c5af3305733a92d405a4ec8"
+ }
+ Frame {
+ msec: 2320
+ hash: "f27082799d0860c660d16c3f9fe6e538"
+ }
+ Frame {
+ msec: 2336
+ hash: "5d79ff6cac5bd6943b656964c1d78b00"
+ }
+ Frame {
+ msec: 2352
+ hash: "d58a1176858e49c89fc77bed260c6269"
+ }
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2368
+ hash: "70deb136fd364646e73390f0aa751baa"
+ }
+ Frame {
+ msec: 2384
+ hash: "ed3bf83d975d6b8f830ce0b5a0ad64cc"
+ }
+ Frame {
+ msec: 2400
+ hash: "9007b93c9b9ae3612a0f97fe2e2ae825"
+ }
+ Frame {
+ msec: 2416
+ hash: "c39f05a5471fb3a26f57feab2b99c8fa"
+ }
+ Frame {
+ msec: 2432
+ hash: "49cd710decb32599d7a9c8e0239bf9a5"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2448
+ hash: "df3e2a44ed4e7cf6adb49f84b1d4fc53"
+ }
+ Frame {
+ msec: 2464
+ hash: "5b7984204405b31a0262da011ff3903e"
+ }
+ Frame {
+ msec: 2480
+ hash: "0dd2dc00c42eb7bb731d64e9a7188c83"
+ }
+ Frame {
+ msec: 2496
+ hash: "1b811aa744375668672fb8b4e0d75621"
+ }
+ Frame {
+ msec: 2512
+ hash: "f34c084f977a20fcf96eaf1e7b5423f7"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2528
+ hash: "145b1c6526e04f02adf94eb5d0369ae0"
+ }
+ Frame {
+ msec: 2544
+ hash: "1b047f1cb4738188c10d8b05e636694a"
+ }
+ Frame {
+ msec: 2560
+ hash: "3f5921d19c63c7d434f0428cb155426e"
+ }
+ Frame {
+ msec: 2576
+ hash: "940a9ca625a813af3c9f74600b9dd668"
+ }
+ Frame {
+ msec: 2592
+ hash: "3df53c013eae20a71e4337be5499ff65"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2608
+ hash: "34e4524d132bbb2a9e4aaffa0982ad33"
+ }
+ Frame {
+ msec: 2624
+ hash: "87942e371bd51726dbfa5a09fdd31631"
+ }
+ Frame {
+ msec: 2640
+ hash: "a2baf811e2b51215c4e5f88f0854f5a5"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2656
+ hash: "cc12390ac2a3296c04f2538fb3b4cc00"
+ }
+ Frame {
+ msec: 2672
+ hash: "f209d32ec1742194c8436c36230a8239"
+ }
+ Frame {
+ msec: 2688
+ hash: "444d87a6fc19b8f0e8dcda0615a484aa"
+ }
+ Frame {
+ msec: 2704
+ hash: "2e492b973fffd68245c24d603d2a8221"
+ }
+ Frame {
+ msec: 2720
+ hash: "742ab9c9d4d8e37337f237f792aba160"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2736
+ hash: "74db3d75c0b30946b18edf5fc115dfce"
+ }
+ Frame {
+ msec: 2752
+ hash: "86685be3dbb2236676f767894c694a5a"
+ }
+ Frame {
+ msec: 2768
+ hash: "327351a6164fd566dd0f7ead05c7ea36"
+ }
+ Frame {
+ msec: 2784
+ hash: "ba9262ab3d8824e3a9cdcfe29059bbda"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 2800
+ hash: "8c8aba2c44a7ea5b4d1e2206a3dbd6a2"
+ }
+ Frame {
+ msec: 2816
+ hash: "560067cbba922e2958bc7bae5ab93572"
+ }
+ Frame {
+ msec: 2832
+ hash: "566c84584e49c633fdada833ea386565"
+ }
+ Frame {
+ msec: 2848
+ hash: "615819749d92cb0b927e370c05321f5b"
+ }
+ Frame {
+ msec: 2864
+ hash: "9f11ee25f10750cc2302e6b528ab68b9"
+ }
+ Frame {
+ msec: 2880
+ hash: "5140d2ac5f1b361776fb335d43fcda1a"
+ }
+ Frame {
+ msec: 2896
+ image: "cursorDelegate.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "5fb75369681ac189b4de918dfa639f55"
+ }
+ Frame {
+ msec: 2928
+ hash: "9da1688d1084f1588b6d203698c8a2b6"
+ }
+ Frame {
+ msec: 2944
+ hash: "91bbae5a8fd04da71b1353f687c15d9f"
+ }
+ Frame {
+ msec: 2960
+ hash: "d3c0a6ed0510abb6135fb2e61f8721d8"
+ }
+ Frame {
+ msec: 2976
+ hash: "23e728398c03c805066766081e434d41"
+ }
+ Frame {
+ msec: 2992
+ hash: "23e728398c03c805066766081e434d41"
+ }
+ Frame {
+ msec: 3008
+ hash: "23e728398c03c805066766081e434d41"
+ }
+ Frame {
+ msec: 3024
+ hash: "23e728398c03c805066766081e434d41"
+ }
+ Frame {
+ msec: 3040
+ hash: "23e728398c03c805066766081e434d41"
+ }
+ Frame {
+ msec: 3056
+ hash: "23e728398c03c805066766081e434d41"
+ }
+ Frame {
+ msec: 3072
+ hash: "d3c0a6ed0510abb6135fb2e61f8721d8"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3088
+ hash: "d5519a015a697dcb1763748bd2789441"
+ }
+ Frame {
+ msec: 3104
+ hash: "d8ca000081bf565a4f3de5a5e94d894b"
+ }
+ Frame {
+ msec: 3120
+ hash: "03984ab7a25d80e24dd0650f881b8203"
+ }
+ Frame {
+ msec: 3136
+ hash: "edfea780ea62d48ac69afa5e6cad00af"
+ }
+ Frame {
+ msec: 3152
+ hash: "b00a5d2424568d823eb7be0438dafa1f"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3168
+ hash: "76fda33dcea27a034ddfab61031d8de6"
+ }
+ Frame {
+ msec: 3184
+ hash: "11b9e3a58fd2c6d86e61a5e3b7db04b4"
+ }
+ Frame {
+ msec: 3200
+ hash: "f7c583d00d7154d9e8af88bec706f97f"
+ }
+ Frame {
+ msec: 3216
+ hash: "8680b8c69c544213fb8d55233bde4ce5"
+ }
+ Frame {
+ msec: 3232
+ hash: "74fc148e3c466023e2449c6b1367bceb"
+ }
+ Frame {
+ msec: 3248
+ hash: "9495a0ffe7589351cfced8b26f6d64e4"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3264
+ hash: "519c58c8c0f62d96005b49f68648565b"
+ }
+ Frame {
+ msec: 3280
+ hash: "609a2d8f02c8b42e0921a2a900edccbd"
+ }
+ Frame {
+ msec: 3296
+ hash: "c54617fb7b21ef8dc2bc0d8492ec476e"
+ }
+ Frame {
+ msec: 3312
+ hash: "096dc0d8b3ed47894ab0289bcfe3aa8f"
+ }
+ Frame {
+ msec: 3328
+ hash: "5b725bb5951caa968d221fe7c5dd6370"
+ }
+ Frame {
+ msec: 3344
+ hash: "6733673178a1b85b22d22610a6f6c3d7"
+ }
+ Frame {
+ msec: 3360
+ hash: "5efbed8f4de4387572c5a98ba14f3c27"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3376
+ hash: "650a0792ee0025e12f7f0ce6df72df6c"
+ }
+ Frame {
+ msec: 3392
+ hash: "0064815fa6e2bcbbe5f2ea8222ddd2b0"
+ }
+ Frame {
+ msec: 3408
+ hash: "13ca683ddd0071771e853a09fc6e5842"
+ }
+ Frame {
+ msec: 3424
+ hash: "1625325eee9b4eaab2df135e0d2f0f14"
+ }
+ Frame {
+ msec: 3440
+ hash: "9e3f1df1b243167b5470778e8c44f7d1"
+ }
+ Frame {
+ msec: 3456
+ hash: "493634fa37f10eb02d255253171d190d"
+ }
+ Frame {
+ msec: 3472
+ hash: "86ddfc357d158deae39a7565c512d0c0"
+ }
+ Frame {
+ msec: 3488
+ hash: "74486ca31cf165f0e55aacfae7af9e4c"
+ }
+ Frame {
+ msec: 3504
+ hash: "3479f78faf16d4d07b6b44d7682ac016"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3520
+ hash: "cb35c6a887f191b2eb5de961912c94b8"
+ }
+ Frame {
+ msec: 3536
+ hash: "53f5028e96fc65cc6171e78c31c16026"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Frame {
+ msec: 3552
+ hash: "c77e078983f12d8007c5509cd8b356f9"
+ }
+ Frame {
+ msec: 3568
+ hash: "ec2da5c6869161936e2598961c605674"
+ }
+ Frame {
+ msec: 3584
+ hash: "bb9adcb5730aeafb2956e01d9aacaee1"
+ }
+ Frame {
+ msec: 3600
+ hash: "49cd710decb32599d7a9c8e0239bf9a5"
+ }
+ Frame {
+ msec: 3616
+ hash: "c39f05a5471fb3a26f57feab2b99c8fa"
+ }
+ Frame {
+ msec: 3632
+ hash: "9007b93c9b9ae3612a0f97fe2e2ae825"
+ }
+ Frame {
+ msec: 3648
+ hash: "ed3bf83d975d6b8f830ce0b5a0ad64cc"
+ }
+ Frame {
+ msec: 3664
+ hash: "70deb136fd364646e73390f0aa751baa"
+ }
+ Frame {
+ msec: 3680
+ hash: "d58a1176858e49c89fc77bed260c6269"
+ }
+ Frame {
+ msec: 3696
+ hash: "5d79ff6cac5bd6943b656964c1d78b00"
+ }
+ Frame {
+ msec: 3712
+ hash: "f27082799d0860c660d16c3f9fe6e538"
+ }
+ Frame {
+ msec: 3728
+ hash: "75c37de92c5af3305733a92d405a4ec8"
+ }
+ Frame {
+ msec: 3744
+ hash: "e5c9931c8baf260d77f9cfcc1bb41101"
+ }
+ Frame {
+ msec: 3760
+ hash: "edff1333eb3a0047c527503ab3dbe71c"
+ }
+ Frame {
+ msec: 3776
+ hash: "9194cd1399ceeda421944cd87182039b"
+ }
+ Frame {
+ msec: 3792
+ hash: "082441b5fea02f2676ad4d53aefb6927"
+ }
+ Frame {
+ msec: 3808
+ hash: "bb52aa533659d770d01deb8bef5a8b4d"
+ }
+ Frame {
+ msec: 3824
+ hash: "348e6a82b1491739e72c5c361158a967"
+ }
+ Frame {
+ msec: 3840
+ hash: "ea77a49e7e246649248e19b72d6433c9"
+ }
+ Frame {
+ msec: 3856
+ image: "cursorDelegate.4.png"
+ }
+ Frame {
+ msec: 3872
+ hash: "9bfb6b9a2604b4c534539bc731abda10"
+ }
+ Frame {
+ msec: 3888
+ hash: "02b01092c1f0e279872490306163647d"
+ }
+ Frame {
+ msec: 3904
+ hash: "acf688ab0ceba1d5d1e0225b90fd706f"
+ }
+ Frame {
+ msec: 3920
+ hash: "5866ceee0fd72361dd490a2163b4fc55"
+ }
+ Frame {
+ msec: 3936
+ hash: "218083c830ad133e2aeb4692d2d1517d"
+ }
+ Frame {
+ msec: 3952
+ hash: "3542537f0b0e1375d81c7f0365bbdf1d"
+ }
+ Frame {
+ msec: 3968
+ hash: "ca17401d638025fde8aad18b9a358029"
+ }
+ Frame {
+ msec: 3984
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 4000
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 4016
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 4032
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 4048
+ hash: "87d666ee3bcf7a606e2aecb4954cfb28"
+ }
+ Frame {
+ msec: 4064
+ hash: "ca17401d638025fde8aad18b9a358029"
+ }
+ Frame {
+ msec: 4080
+ hash: "3542537f0b0e1375d81c7f0365bbdf1d"
+ }
+ Frame {
+ msec: 4096
+ hash: "218083c830ad133e2aeb4692d2d1517d"
+ }
+ Frame {
+ msec: 4112
+ hash: "5866ceee0fd72361dd490a2163b4fc55"
+ }
+ Frame {
+ msec: 4128
+ hash: "acf688ab0ceba1d5d1e0225b90fd706f"
+ }
+ Frame {
+ msec: 4144
+ hash: "02b01092c1f0e279872490306163647d"
+ }
+ Frame {
+ msec: 4160
+ hash: "9bfb6b9a2604b4c534539bc731abda10"
+ }
+ Frame {
+ msec: 4176
+ hash: "dfa52bb483388dfee56577968d013c8f"
+ }
+ Frame {
+ msec: 4192
+ hash: "ea77a49e7e246649248e19b72d6433c9"
+ }
+ Frame {
+ msec: 4208
+ hash: "348e6a82b1491739e72c5c361158a967"
+ }
+ Frame {
+ msec: 4224
+ hash: "bb52aa533659d770d01deb8bef5a8b4d"
+ }
+ Frame {
+ msec: 4240
+ hash: "082441b5fea02f2676ad4d53aefb6927"
+ }
+ Frame {
+ msec: 4256
+ hash: "9194cd1399ceeda421944cd87182039b"
+ }
+ Frame {
+ msec: 4272
+ hash: "edff1333eb3a0047c527503ab3dbe71c"
+ }
+ Frame {
+ msec: 4288
+ hash: "e5c9931c8baf260d77f9cfcc1bb41101"
+ }
+ Frame {
+ msec: 4304
+ hash: "75c37de92c5af3305733a92d405a4ec8"
+ }
+ Frame {
+ msec: 4320
+ hash: "f27082799d0860c660d16c3f9fe6e538"
+ }
+ Frame {
+ msec: 4336
+ hash: "5d79ff6cac5bd6943b656964c1d78b00"
+ }
+ Frame {
+ msec: 4352
+ hash: "d58a1176858e49c89fc77bed260c6269"
+ }
+ Frame {
+ msec: 4368
+ hash: "70deb136fd364646e73390f0aa751baa"
+ }
+ Frame {
+ msec: 4384
+ hash: "ed3bf83d975d6b8f830ce0b5a0ad64cc"
+ }
+ Frame {
+ msec: 4400
+ hash: "9007b93c9b9ae3612a0f97fe2e2ae825"
+ }
+ Frame {
+ msec: 4416
+ hash: "c39f05a5471fb3a26f57feab2b99c8fa"
+ }
+ Frame {
+ msec: 4432
+ hash: "49cd710decb32599d7a9c8e0239bf9a5"
+ }
+ Frame {
+ msec: 4448
+ hash: "bb9adcb5730aeafb2956e01d9aacaee1"
+ }
+ Frame {
+ msec: 4464
+ hash: "ec2da5c6869161936e2598961c605674"
+ }
+ Frame {
+ msec: 4480
+ hash: "c77e078983f12d8007c5509cd8b356f9"
+ }
+ Frame {
+ msec: 4496
+ hash: "53f5028e96fc65cc6171e78c31c16026"
+ }
+ Frame {
+ msec: 4512
+ hash: "cb35c6a887f191b2eb5de961912c94b8"
+ }
+ Frame {
+ msec: 4528
+ hash: "3479f78faf16d4d07b6b44d7682ac016"
+ }
+ Frame {
+ msec: 4544
+ hash: "74486ca31cf165f0e55aacfae7af9e4c"
+ }
+ Frame {
+ msec: 4560
+ hash: "86ddfc357d158deae39a7565c512d0c0"
+ }
+ Frame {
+ msec: 4576
+ hash: "493634fa37f10eb02d255253171d190d"
+ }
+ Frame {
+ msec: 4592
+ hash: "9e3f1df1b243167b5470778e8c44f7d1"
+ }
+ Frame {
+ msec: 4608
+ hash: "1625325eee9b4eaab2df135e0d2f0f14"
+ }
+ Frame {
+ msec: 4624
+ hash: "13ca683ddd0071771e853a09fc6e5842"
+ }
+ Frame {
+ msec: 4640
+ hash: "0064815fa6e2bcbbe5f2ea8222ddd2b0"
+ }
+ Frame {
+ msec: 4656
+ hash: "650a0792ee0025e12f7f0ce6df72df6c"
+ }
+ Frame {
+ msec: 4672
+ hash: "5efbed8f4de4387572c5a98ba14f3c27"
+ }
+ Frame {
+ msec: 4688
+ hash: "6733673178a1b85b22d22610a6f6c3d7"
+ }
+ Frame {
+ msec: 4704
+ hash: "5b725bb5951caa968d221fe7c5dd6370"
+ }
+ Frame {
+ msec: 4720
+ hash: "096dc0d8b3ed47894ab0289bcfe3aa8f"
+ }
+ Frame {
+ msec: 4736
+ hash: "c54617fb7b21ef8dc2bc0d8492ec476e"
+ }
+ Frame {
+ msec: 4752
+ hash: "609a2d8f02c8b42e0921a2a900edccbd"
+ }
+ Frame {
+ msec: 4768
+ hash: "519c58c8c0f62d96005b49f68648565b"
+ }
+ Frame {
+ msec: 4784
+ hash: "5d1dd05aade754c204d13f5de03413dd"
+ }
+ Frame {
+ msec: 4800
+ hash: "ceca317086930994c35b0ed08db71d64"
+ }
+ Frame {
+ msec: 4816
+ image: "cursorDelegate.5.png"
+ }
+ Frame {
+ msec: 4832
+ hash: "64fcbd6ba961634b0ba33ec5b6693945"
+ }
+ Frame {
+ msec: 4848
+ hash: "48a6ced88807a05aea34b47d36261347"
+ }
+ Frame {
+ msec: 4864
+ hash: "aafa7081d0f1a46478c0956ad5c56d1d"
+ }
+ Frame {
+ msec: 4880
+ hash: "6a9f14ec3fcd119afe68cbf372b13076"
+ }
+ Frame {
+ msec: 4896
+ hash: "927556bdf4e883c409ba8797001152ce"
+ }
+ Frame {
+ msec: 4912
+ hash: "b93878281f21c85c211908086f2899e7"
+ }
+ Frame {
+ msec: 4928
+ hash: "235b68812a3cb48fc09bd8319aef40f1"
+ }
+ Frame {
+ msec: 4944
+ hash: "8943d47912a4206e61836d99cca835da"
+ }
+ Frame {
+ msec: 4960
+ hash: "4d06d264f71d75421c9a6d5a87d6a9ba"
+ }
+}
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 f30ee4f17b..a6593c9ecb 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 7ae3b94a57..914f1b13ec 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 636afe8f92..dd2b94636d 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.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png
index aa24805e0c..629b84b5c4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.4.png
deleted file mode 100644
index aa24805e0c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.4.png
+++ /dev/null
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 b5a48373e3..211ca685e4 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml
@@ -6,11 +6,11 @@ VisualTest {
}
Frame {
msec: 16
- hash: "48400809c3862dae64b0cd00d51057a4"
+ image: "echoMode.0.png"
}
Frame {
msec: 32
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Key {
type: 6
@@ -22,83 +22,83 @@ VisualTest {
}
Frame {
msec: 48
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 64
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 80
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 96
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 112
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 128
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 144
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 160
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 176
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 192
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 208
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 224
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 240
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 256
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 272
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 288
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 304
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 320
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 336
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Frame {
msec: 352
- hash: "48400809c3862dae64b0cd00d51057a4"
+ hash: "eff6a4491bc00e5570ea73a1371f63fc"
}
Key {
type: 6
@@ -110,23 +110,23 @@ VisualTest {
}
Frame {
msec: 368
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 384
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 400
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 416
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 432
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Key {
type: 7
@@ -138,27 +138,27 @@ VisualTest {
}
Frame {
msec: 448
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 464
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 480
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 496
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 512
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 528
- hash: "4acf112eda369b7eb351e0e522cefa05"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Key {
type: 7
@@ -170,43 +170,43 @@ VisualTest {
}
Frame {
msec: 544
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 560
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 576
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 592
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 608
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 624
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 640
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 656
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 672
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Frame {
msec: 688
- hash: "238dc96885dadb763bfc1500d8b7c5b2"
+ hash: "00097f2bb5cf4ea412db48acb93ffd76"
}
Key {
type: 6
@@ -218,23 +218,23 @@ VisualTest {
}
Frame {
msec: 704
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "94e683223900efc840296b86ce934ec3"
}
Frame {
msec: 720
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "94e683223900efc840296b86ce934ec3"
}
Frame {
msec: 736
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "94e683223900efc840296b86ce934ec3"
}
Frame {
msec: 752
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "94e683223900efc840296b86ce934ec3"
}
Frame {
msec: 768
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "94e683223900efc840296b86ce934ec3"
}
Key {
type: 7
@@ -246,23 +246,23 @@ VisualTest {
}
Frame {
msec: 784
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "94e683223900efc840296b86ce934ec3"
}
Frame {
msec: 800
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "94e683223900efc840296b86ce934ec3"
}
Frame {
msec: 816
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "94e683223900efc840296b86ce934ec3"
}
Frame {
msec: 832
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "94e683223900efc840296b86ce934ec3"
}
Frame {
msec: 848
- hash: "2da540e72d88932b61a261d791fc34b0"
+ hash: "94e683223900efc840296b86ce934ec3"
}
Key {
type: 6
@@ -274,15 +274,15 @@ VisualTest {
}
Frame {
msec: 864
- hash: "25ade09747f07a9bdd07f5885a72dc55"
+ hash: "a1c7aeece2891f3ca0103761ffa7f424"
}
Frame {
msec: 880
- hash: "25ade09747f07a9bdd07f5885a72dc55"
+ hash: "a1c7aeece2891f3ca0103761ffa7f424"
}
Frame {
msec: 896
- hash: "25ade09747f07a9bdd07f5885a72dc55"
+ hash: "a1c7aeece2891f3ca0103761ffa7f424"
}
Key {
type: 7
@@ -294,23 +294,23 @@ VisualTest {
}
Frame {
msec: 912
- hash: "25ade09747f07a9bdd07f5885a72dc55"
+ hash: "a1c7aeece2891f3ca0103761ffa7f424"
}
Frame {
msec: 928
- hash: "25ade09747f07a9bdd07f5885a72dc55"
+ hash: "a1c7aeece2891f3ca0103761ffa7f424"
}
Frame {
msec: 944
- hash: "25ade09747f07a9bdd07f5885a72dc55"
+ hash: "a1c7aeece2891f3ca0103761ffa7f424"
}
Frame {
msec: 960
- image: "echoMode.0.png"
+ hash: "a1c7aeece2891f3ca0103761ffa7f424"
}
Frame {
msec: 976
- hash: "25ade09747f07a9bdd07f5885a72dc55"
+ image: "echoMode.1.png"
}
Key {
type: 6
@@ -322,19 +322,19 @@ VisualTest {
}
Frame {
msec: 992
- hash: "0a60e76e96846f9f4e909f7a01ede377"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Frame {
msec: 1008
- hash: "0a60e76e96846f9f4e909f7a01ede377"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Frame {
msec: 1024
- hash: "0a60e76e96846f9f4e909f7a01ede377"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Frame {
msec: 1040
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Key {
type: 7
@@ -346,51 +346,51 @@ VisualTest {
}
Frame {
msec: 1056
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Frame {
msec: 1072
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Frame {
msec: 1088
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Frame {
msec: 1104
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Frame {
msec: 1120
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Frame {
msec: 1136
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Frame {
msec: 1152
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Frame {
msec: 1168
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Frame {
msec: 1184
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Frame {
msec: 1200
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Frame {
msec: 1216
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Frame {
msec: 1232
- hash: "6f28f435e552cbbf6376f2443ed3843c"
+ hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75"
}
Key {
type: 6
@@ -402,15 +402,15 @@ VisualTest {
}
Frame {
msec: 1248
- hash: "16a353e711a8fb654b5fe3097ba29296"
+ hash: "b7cdd294253e065c06fabc60895a29c2"
}
Frame {
msec: 1264
- hash: "16a353e711a8fb654b5fe3097ba29296"
+ hash: "b7cdd294253e065c06fabc60895a29c2"
}
Frame {
msec: 1280
- hash: "16a353e711a8fb654b5fe3097ba29296"
+ hash: "b7cdd294253e065c06fabc60895a29c2"
}
Key {
type: 7
@@ -422,15 +422,15 @@ VisualTest {
}
Frame {
msec: 1296
- hash: "16a353e711a8fb654b5fe3097ba29296"
+ hash: "b7cdd294253e065c06fabc60895a29c2"
}
Frame {
msec: 1312
- hash: "16a353e711a8fb654b5fe3097ba29296"
+ hash: "b7cdd294253e065c06fabc60895a29c2"
}
Frame {
msec: 1328
- hash: "16a353e711a8fb654b5fe3097ba29296"
+ hash: "b7cdd294253e065c06fabc60895a29c2"
}
Key {
type: 6
@@ -442,39 +442,39 @@ VisualTest {
}
Frame {
msec: 1344
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "d8669a3194f485aaef3a1421f7fd50f6"
}
Frame {
msec: 1360
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "d8669a3194f485aaef3a1421f7fd50f6"
}
Frame {
msec: 1376
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "d8669a3194f485aaef3a1421f7fd50f6"
}
Frame {
msec: 1392
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "d8669a3194f485aaef3a1421f7fd50f6"
}
Frame {
msec: 1408
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "d8669a3194f485aaef3a1421f7fd50f6"
}
Frame {
msec: 1424
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "d8669a3194f485aaef3a1421f7fd50f6"
}
Frame {
msec: 1440
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "d8669a3194f485aaef3a1421f7fd50f6"
}
Frame {
msec: 1456
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "d8669a3194f485aaef3a1421f7fd50f6"
}
Frame {
msec: 1472
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "d8669a3194f485aaef3a1421f7fd50f6"
}
Key {
type: 7
@@ -486,7 +486,7 @@ VisualTest {
}
Frame {
msec: 1488
- hash: "fcdbf8ef17e1a7aa6e0e1d952b25d47d"
+ hash: "d8669a3194f485aaef3a1421f7fd50f6"
}
Key {
type: 6
@@ -498,19 +498,19 @@ VisualTest {
}
Frame {
msec: 1504
- hash: "fe0e4e097f655e0b330ed6fcfce669c2"
+ hash: "b53fd36f58dc692856e6a789371aaf33"
}
Frame {
msec: 1520
- hash: "fe0e4e097f655e0b330ed6fcfce669c2"
+ hash: "b53fd36f58dc692856e6a789371aaf33"
}
Frame {
msec: 1536
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "b53fd36f58dc692856e6a789371aaf33"
}
Frame {
msec: 1552
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "b53fd36f58dc692856e6a789371aaf33"
}
Key {
type: 7
@@ -522,27 +522,27 @@ VisualTest {
}
Frame {
msec: 1568
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "b53fd36f58dc692856e6a789371aaf33"
}
Frame {
msec: 1584
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "b53fd36f58dc692856e6a789371aaf33"
}
Frame {
msec: 1600
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "b53fd36f58dc692856e6a789371aaf33"
}
Frame {
msec: 1616
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "b53fd36f58dc692856e6a789371aaf33"
}
Frame {
msec: 1632
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "b53fd36f58dc692856e6a789371aaf33"
}
Frame {
msec: 1648
- hash: "522f11cbb8da0cca25af91d3f6d5240b"
+ hash: "b53fd36f58dc692856e6a789371aaf33"
}
Key {
type: 6
@@ -554,23 +554,23 @@ VisualTest {
}
Frame {
msec: 1664
- hash: "f459ca172e643d6e22c38067f8ced305"
+ hash: "98de66666f6ea1a87bd493db3f67a7c6"
}
Frame {
msec: 1680
- hash: "f459ca172e643d6e22c38067f8ced305"
+ hash: "98de66666f6ea1a87bd493db3f67a7c6"
}
Frame {
msec: 1696
- hash: "f459ca172e643d6e22c38067f8ced305"
+ hash: "98de66666f6ea1a87bd493db3f67a7c6"
}
Frame {
msec: 1712
- hash: "f459ca172e643d6e22c38067f8ced305"
+ hash: "98de66666f6ea1a87bd493db3f67a7c6"
}
Frame {
msec: 1728
- hash: "f459ca172e643d6e22c38067f8ced305"
+ hash: "98de66666f6ea1a87bd493db3f67a7c6"
}
Key {
type: 6
@@ -582,7 +582,7 @@ VisualTest {
}
Frame {
msec: 1744
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "696807419ef2b228dfb9d85dd79dd293"
}
Key {
type: 7
@@ -594,15 +594,15 @@ VisualTest {
}
Frame {
msec: 1760
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "696807419ef2b228dfb9d85dd79dd293"
}
Frame {
msec: 1776
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "696807419ef2b228dfb9d85dd79dd293"
}
Frame {
msec: 1792
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "696807419ef2b228dfb9d85dd79dd293"
}
Key {
type: 7
@@ -614,19 +614,19 @@ VisualTest {
}
Frame {
msec: 1808
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "696807419ef2b228dfb9d85dd79dd293"
}
Frame {
msec: 1824
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "696807419ef2b228dfb9d85dd79dd293"
}
Frame {
msec: 1840
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "696807419ef2b228dfb9d85dd79dd293"
}
Frame {
msec: 1856
- hash: "0016ecff508885d3a199b27baa9b7ecf"
+ hash: "696807419ef2b228dfb9d85dd79dd293"
}
Key {
type: 6
@@ -638,19 +638,19 @@ VisualTest {
}
Frame {
msec: 1872
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "4c0a528609872cf65180d336bbca4231"
}
Frame {
msec: 1888
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "4c0a528609872cf65180d336bbca4231"
}
Frame {
msec: 1904
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "4c0a528609872cf65180d336bbca4231"
}
Frame {
msec: 1920
- image: "echoMode.1.png"
+ hash: "4c0a528609872cf65180d336bbca4231"
}
Key {
type: 7
@@ -662,27 +662,27 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "05c631afb9df51c23b1f714a7de92788"
+ image: "echoMode.2.png"
}
Frame {
msec: 1952
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "4c0a528609872cf65180d336bbca4231"
}
Frame {
msec: 1968
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "4c0a528609872cf65180d336bbca4231"
}
Frame {
msec: 1984
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "4c0a528609872cf65180d336bbca4231"
}
Frame {
msec: 2000
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "4c0a528609872cf65180d336bbca4231"
}
Frame {
msec: 2016
- hash: "05c631afb9df51c23b1f714a7de92788"
+ hash: "4c0a528609872cf65180d336bbca4231"
}
Key {
type: 6
@@ -694,11 +694,11 @@ VisualTest {
}
Frame {
msec: 2032
- hash: "95ad72a49b991225e2ed5ae9c2a7b4e5"
+ hash: "03b670f413abfa1811d4020de969b2ea"
}
Frame {
msec: 2048
- hash: "95ad72a49b991225e2ed5ae9c2a7b4e5"
+ hash: "03b670f413abfa1811d4020de969b2ea"
}
Key {
type: 7
@@ -710,11 +710,11 @@ VisualTest {
}
Frame {
msec: 2064
- hash: "95ad72a49b991225e2ed5ae9c2a7b4e5"
+ hash: "03b670f413abfa1811d4020de969b2ea"
}
Frame {
msec: 2080
- hash: "95ad72a49b991225e2ed5ae9c2a7b4e5"
+ hash: "03b670f413abfa1811d4020de969b2ea"
}
Key {
type: 6
@@ -726,19 +726,19 @@ VisualTest {
}
Frame {
msec: 2096
- hash: "7f2366b163c110a50259936c150d8287"
+ hash: "6d478c62fa5bb37f0178e94914473174"
}
Frame {
msec: 2112
- hash: "7f2366b163c110a50259936c150d8287"
+ hash: "6d478c62fa5bb37f0178e94914473174"
}
Frame {
msec: 2128
- hash: "7f2366b163c110a50259936c150d8287"
+ hash: "6d478c62fa5bb37f0178e94914473174"
}
Frame {
msec: 2144
- hash: "7f2366b163c110a50259936c150d8287"
+ hash: "6d478c62fa5bb37f0178e94914473174"
}
Key {
type: 6
@@ -758,19 +758,19 @@ VisualTest {
}
Frame {
msec: 2160
- hash: "b5110b1a7aa74f7b4ed72f573f10b1fe"
+ hash: "2f9803e906ce38a6ade3874bbeb27216"
}
Frame {
msec: 2176
- hash: "b5110b1a7aa74f7b4ed72f573f10b1fe"
+ hash: "2f9803e906ce38a6ade3874bbeb27216"
}
Frame {
msec: 2192
- hash: "b5110b1a7aa74f7b4ed72f573f10b1fe"
+ hash: "2f9803e906ce38a6ade3874bbeb27216"
}
Frame {
msec: 2208
- hash: "b5110b1a7aa74f7b4ed72f573f10b1fe"
+ hash: "2f9803e906ce38a6ade3874bbeb27216"
}
Key {
type: 6
@@ -782,7 +782,7 @@ VisualTest {
}
Frame {
msec: 2224
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "d93582b0c7de46d5ff1c9959c158bfe7"
}
Key {
type: 7
@@ -794,23 +794,23 @@ VisualTest {
}
Frame {
msec: 2240
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "d93582b0c7de46d5ff1c9959c158bfe7"
}
Frame {
msec: 2256
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "d93582b0c7de46d5ff1c9959c158bfe7"
}
Frame {
msec: 2272
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "d93582b0c7de46d5ff1c9959c158bfe7"
}
Frame {
msec: 2288
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "d93582b0c7de46d5ff1c9959c158bfe7"
}
Frame {
msec: 2304
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "d93582b0c7de46d5ff1c9959c158bfe7"
}
Key {
type: 7
@@ -822,11 +822,11 @@ VisualTest {
}
Frame {
msec: 2320
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "d93582b0c7de46d5ff1c9959c158bfe7"
}
Frame {
msec: 2336
- hash: "30cdfb276e7a234c72d89a03e6a10dc5"
+ hash: "d93582b0c7de46d5ff1c9959c158bfe7"
}
Key {
type: 6
@@ -838,27 +838,27 @@ VisualTest {
}
Frame {
msec: 2352
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "8accfa30ddc59803d8f9d2f60dd6a891"
}
Frame {
msec: 2368
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "8accfa30ddc59803d8f9d2f60dd6a891"
}
Frame {
msec: 2384
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "8accfa30ddc59803d8f9d2f60dd6a891"
}
Frame {
msec: 2400
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "8accfa30ddc59803d8f9d2f60dd6a891"
}
Frame {
msec: 2416
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "8accfa30ddc59803d8f9d2f60dd6a891"
}
Frame {
msec: 2432
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "8accfa30ddc59803d8f9d2f60dd6a891"
}
Key {
type: 7
@@ -870,19 +870,19 @@ VisualTest {
}
Frame {
msec: 2448
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "8accfa30ddc59803d8f9d2f60dd6a891"
}
Frame {
msec: 2464
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "8accfa30ddc59803d8f9d2f60dd6a891"
}
Frame {
msec: 2480
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "8accfa30ddc59803d8f9d2f60dd6a891"
}
Frame {
msec: 2496
- hash: "c0f7406f3718ab0120c79ff119d6986c"
+ hash: "8accfa30ddc59803d8f9d2f60dd6a891"
}
Key {
type: 6
@@ -894,15 +894,15 @@ VisualTest {
}
Frame {
msec: 2512
- hash: "870d7866b8e289b4843b62c856d769d4"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2528
- hash: "870d7866b8e289b4843b62c856d769d4"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2544
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Key {
type: 7
@@ -914,130 +914,130 @@ VisualTest {
}
Frame {
msec: 2560
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2576
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2592
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2608
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2624
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2640
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2656
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2672
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2688
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2704
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2720
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2736
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2752
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2768
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2784
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2800
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2816
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2832
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2848
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2864
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2880
- image: "echoMode.2.png"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2896
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ image: "echoMode.3.png"
}
Frame {
msec: 2912
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2928
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2944
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2960
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2976
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 2992
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 3008
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 3024
- hash: "84e1cbf26e6b571603e0b9e69579af8b"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 3040
- hash: "870d7866b8e289b4843b62c856d769d4"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
Frame {
msec: 3056
- hash: "870d7866b8e289b4843b62c856d769d4"
+ hash: "a444ce402f5dc0d892f66a88b8252301"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png
index 87c2e07ec3..a12db0a69b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml
index a0351e87fd..acc646c763 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml
@@ -6,102 +6,102 @@ VisualTest {
}
Frame {
msec: 16
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ image: "hAlign.0.png"
}
Frame {
msec: 32
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 48
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 64
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 80
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 96
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 112
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 128
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 144
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 160
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 176
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 192
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 208
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 224
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 240
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 256
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 272
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 288
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 304
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 320
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 336
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 352
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 368
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 384
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
Frame {
msec: 400
- hash: "7619ed68aca3544f373777e11a4bfefa"
+ hash: "fe5a0e7ac7ea0796d8cf3e49b513669d"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.0.png
index b064e79745..fb0eb85e4c 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.0.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.1.png
index 7dd1bd857c..444ee34485 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.1.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.10.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.10.png
index d8e55e2bad..5f3668c7df 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.10.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.10.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.11.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.11.png
new file mode 100644
index 0000000000..0ea21f3b9b
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.11.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.2.png
index f9f17446d1..444ee34485 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.2.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.3.png
index 70ae713009..9bcd6a7a8b 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.3.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.4.png
index 9ce28db647..04a1e66dc7 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.4.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.5.png
index 2ef2ac0427..716f59bbb0 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.5.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.6.png
index 2a614f8b2c..f6b9fcea6d 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.6.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.7.png
index f916c97dc2..61430e8e0c 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.7.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.8.png
index 56bf00babd..be9691f6bd 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.8.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.9.png
index 97847d9aa6..4f285b19cf 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.9.png
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.qml
index cdc5153eda..8957e39366 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/usingLineEdit.qml
@@ -6,235 +6,235 @@ VisualTest {
}
Frame {
msec: 16
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ image: "usingLineEdit.0.png"
}
Frame {
msec: 32
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 48
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 64
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 80
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 96
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 112
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 128
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 144
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 160
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 176
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 192
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 208
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 224
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 240
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 256
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 272
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 288
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 304
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 320
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 336
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 352
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 368
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 384
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 400
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 416
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 432
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 448
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 464
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 480
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 496
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 512
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 528
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 544
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 560
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 576
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 592
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 608
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 624
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 640
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 656
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 672
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 688
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 704
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 720
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 736
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 752
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 768
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 784
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 800
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 816
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 832
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 848
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 864
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 880
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 896
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 912
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Frame {
msec: 928
- hash: "a6d33b1212bb4d1241734bfff167d1a5"
+ hash: "2e747d3e26cc85e4c36c42097ab3f379"
}
Mouse {
type: 2
@@ -246,7 +246,7 @@ VisualTest {
}
Frame {
msec: 944
- hash: "c83faf1ed7b59715046e1abef04fa546"
+ hash: "227431895322480615fb61a635305230"
}
Mouse {
type: 3
@@ -258,7 +258,7 @@ VisualTest {
}
Frame {
msec: 960
- image: "usingLineEdit.0.png"
+ hash: "227431895322480615fb61a635305230"
}
Mouse {
type: 4
@@ -270,27 +270,27 @@ VisualTest {
}
Frame {
msec: 976
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ image: "usingLineEdit.1.png"
}
Frame {
msec: 992
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1008
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1024
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1040
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1056
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Mouse {
type: 3
@@ -302,79 +302,79 @@ VisualTest {
}
Frame {
msec: 1072
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1088
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1104
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1120
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1136
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1152
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1168
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1184
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1200
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1216
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1232
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1248
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1264
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1280
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1296
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1312
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1328
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1344
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1360
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Key {
type: 6
@@ -386,159 +386,159 @@ VisualTest {
}
Frame {
msec: 1376
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1392
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1408
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1424
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1440
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1456
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1472
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1488
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1504
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1520
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1536
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1552
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1568
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1584
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1600
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1616
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1632
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1648
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1664
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1680
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1696
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1712
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1728
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1744
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1760
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1776
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1792
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1808
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1824
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1840
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1856
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1872
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1888
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1904
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1920
- image: "usingLineEdit.1.png"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1936
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ image: "usingLineEdit.2.png"
}
Frame {
msec: 1952
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1968
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 1984
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Key {
type: 6
@@ -550,35 +550,35 @@ VisualTest {
}
Frame {
msec: 2000
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2016
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2032
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2048
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2064
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2080
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2096
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2112
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Key {
type: 7
@@ -598,95 +598,95 @@ VisualTest {
}
Frame {
msec: 2128
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2144
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2160
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2176
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2192
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2208
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2224
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2240
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2256
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2272
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2288
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2304
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2320
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2336
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2352
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2368
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2384
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2400
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2416
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2432
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2448
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2464
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Frame {
msec: 2480
- hash: "3b899cd28b58c3f94946286a0ddcab89"
+ hash: "b888cf6d6e002e28690cff49726eea70"
}
Key {
type: 6
@@ -698,27 +698,27 @@ VisualTest {
}
Frame {
msec: 2496
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2512
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2528
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2544
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2560
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2576
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Key {
type: 7
@@ -730,55 +730,55 @@ VisualTest {
}
Frame {
msec: 2592
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2608
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2624
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2640
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2656
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2672
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2688
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2704
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2720
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2736
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2752
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2768
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2784
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Key {
type: 6
@@ -790,111 +790,111 @@ VisualTest {
}
Frame {
msec: 2800
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2816
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2832
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2848
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2864
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2880
- image: "usingLineEdit.2.png"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2896
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ image: "usingLineEdit.3.png"
}
Frame {
msec: 2912
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2928
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2944
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2960
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2976
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 2992
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 3008
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 3024
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 3040
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 3056
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 3072
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 3088
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 3104
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 3120
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 3136
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 3152
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 3168
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 3184
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 3200
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Frame {
msec: 3216
- hash: "f2a573f227a3eb84f60418d0f3e81fb3"
+ hash: "62afc4e3874da1bcd7e86860bbf6db20"
}
Key {
type: 6
@@ -906,31 +906,31 @@ VisualTest {
}
Frame {
msec: 3232
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3248
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3264
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3280
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3296
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3312
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3328
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Key {
type: 7
@@ -942,59 +942,59 @@ VisualTest {
}
Frame {
msec: 3344
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3360
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3376
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3392
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3408
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3424
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3440
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3456
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3472
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3488
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3504
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3520
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3536
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Frame {
msec: 3552
- hash: "202ad01bacfb48341efdd85197df6964"
+ hash: "dc7187f95e9f178cd5d5a0c4e0d637c3"
}
Key {
type: 6
@@ -1006,35 +1006,35 @@ VisualTest {
}
Frame {
msec: 3568
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3584
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3600
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3616
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3632
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3648
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3664
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3680
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Key {
type: 7
@@ -1046,131 +1046,131 @@ VisualTest {
}
Frame {
msec: 3696
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3712
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3728
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3744
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3760
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3776
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3792
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3808
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3824
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3840
- image: "usingLineEdit.3.png"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3856
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ image: "usingLineEdit.4.png"
}
Frame {
msec: 3872
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3888
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3904
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3920
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3936
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3952
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3968
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 3984
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4000
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4016
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4032
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4048
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4064
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4080
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4096
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4112
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4128
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4144
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4160
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4176
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4192
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Key {
type: 7
@@ -1182,131 +1182,131 @@ VisualTest {
}
Frame {
msec: 4208
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4224
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4240
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4256
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4272
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4288
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4304
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4320
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4336
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4352
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4368
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4384
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4400
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4416
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4432
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4448
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4464
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4480
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4496
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4512
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4528
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4544
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4560
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4576
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4592
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4608
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4624
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4640
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4656
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4672
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4688
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Frame {
msec: 4704
- hash: "eac37a53473ad7f378a2a1bb37fa6b58"
+ hash: "942d2dde9d40eb0864831831b9056525"
}
Mouse {
type: 2
@@ -1318,27 +1318,27 @@ VisualTest {
}
Frame {
msec: 4720
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4736
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4752
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4768
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4784
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4800
- image: "usingLineEdit.4.png"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Mouse {
type: 3
@@ -1350,143 +1350,143 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "c65ff28e032b18223c65f8810b39d603"
+ image: "usingLineEdit.5.png"
}
Frame {
msec: 4832
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4848
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4864
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4880
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4896
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4912
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4928
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4944
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4960
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4976
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 4992
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5008
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5024
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5040
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5056
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5072
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5088
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5104
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5120
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5136
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5152
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5168
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5184
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5200
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5216
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5232
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5248
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5264
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5280
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5296
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5312
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5328
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5344
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Frame {
msec: 5360
- hash: "c65ff28e032b18223c65f8810b39d603"
+ hash: "9103b19d12565b6d28380f48acfce3c3"
}
Key {
type: 6
@@ -1498,67 +1498,67 @@ VisualTest {
}
Frame {
msec: 5376
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5392
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5408
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5424
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5440
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5456
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5472
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5488
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5504
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5520
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5536
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5552
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5568
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5584
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5600
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Frame {
msec: 5616
- hash: "8c755780c2d281aba23c507bcebfd5db"
+ hash: "3c6258003fba9b4a61bde3a5eb2394d5"
}
Key {
type: 7
@@ -1578,11 +1578,11 @@ VisualTest {
}
Frame {
msec: 5632
- hash: "baa42bc9d5e16c3e7af81e126d37655a"
+ hash: "f2c1bfd1a4ffb5bc0a5a354707a8ecf8"
}
Frame {
msec: 5648
- hash: "baa42bc9d5e16c3e7af81e126d37655a"
+ hash: "f2c1bfd1a4ffb5bc0a5a354707a8ecf8"
}
Key {
type: 7
@@ -1602,11 +1602,11 @@ VisualTest {
}
Frame {
msec: 5664
- hash: "aa876e6d6ff0f169bcc3cf25be5e7a81"
+ hash: "9f4fc35d1b6f5984972da9f819a4031e"
}
Frame {
msec: 5680
- hash: "aa876e6d6ff0f169bcc3cf25be5e7a81"
+ hash: "9f4fc35d1b6f5984972da9f819a4031e"
}
Key {
type: 7
@@ -1626,11 +1626,11 @@ VisualTest {
}
Frame {
msec: 5696
- hash: "8ec4c1a8ae28af44dcabf338fc056717"
+ hash: "68e84d0e6c0febe00cbc8ff13e7efae1"
}
Frame {
msec: 5712
- hash: "8ec4c1a8ae28af44dcabf338fc056717"
+ hash: "68e84d0e6c0febe00cbc8ff13e7efae1"
}
Key {
type: 7
@@ -1650,11 +1650,11 @@ VisualTest {
}
Frame {
msec: 5728
- hash: "ec0da333c0bc090eec0ded5e4d18bd6e"
+ hash: "f0c61e706be86d31f124d6405c14c5b4"
}
Frame {
msec: 5744
- hash: "ec0da333c0bc090eec0ded5e4d18bd6e"
+ hash: "f0c61e706be86d31f124d6405c14c5b4"
}
Key {
type: 7
@@ -1674,11 +1674,11 @@ VisualTest {
}
Frame {
msec: 5760
- image: "usingLineEdit.5.png"
+ hash: "dbca3c9292e2a6efac887a33b735607f"
}
Frame {
msec: 5776
- hash: "325ba5789a6150ec0fef81fa5b005c09"
+ image: "usingLineEdit.6.png"
}
Key {
type: 7
@@ -1698,11 +1698,11 @@ VisualTest {
}
Frame {
msec: 5792
- hash: "023dd8fe428b1ed0f4c994f7e67ac3cd"
+ hash: "6cb5d4a9c79ac3dc6522c5a1022b2e6e"
}
Frame {
msec: 5808
- hash: "023dd8fe428b1ed0f4c994f7e67ac3cd"
+ hash: "6cb5d4a9c79ac3dc6522c5a1022b2e6e"
}
Key {
type: 7
@@ -1722,11 +1722,11 @@ VisualTest {
}
Frame {
msec: 5824
- hash: "f661f599f576ae883f25422b20408138"
+ hash: "71d67363467f3053393382b887f43401"
}
Frame {
msec: 5840
- hash: "f661f599f576ae883f25422b20408138"
+ hash: "71d67363467f3053393382b887f43401"
}
Key {
type: 7
@@ -1738,7 +1738,7 @@ VisualTest {
}
Frame {
msec: 5856
- hash: "f661f599f576ae883f25422b20408138"
+ hash: "71d67363467f3053393382b887f43401"
}
Key {
type: 6
@@ -1750,11 +1750,11 @@ VisualTest {
}
Frame {
msec: 5872
- hash: "8e7ad34802a0ced493e88b779c73cc47"
+ hash: "db9175c9b81cb4b43f6d4d80549a5ae1"
}
Frame {
msec: 5888
- hash: "8e7ad34802a0ced493e88b779c73cc47"
+ hash: "db9175c9b81cb4b43f6d4d80549a5ae1"
}
Key {
type: 7
@@ -1774,7 +1774,7 @@ VisualTest {
}
Frame {
msec: 5904
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Key {
type: 7
@@ -1786,39 +1786,39 @@ VisualTest {
}
Frame {
msec: 5920
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Frame {
msec: 5936
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Frame {
msec: 5952
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Frame {
msec: 5968
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Frame {
msec: 5984
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Frame {
msec: 6000
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Frame {
msec: 6016
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Frame {
msec: 6032
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Frame {
msec: 6048
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Key {
type: 6
@@ -1830,27 +1830,27 @@ VisualTest {
}
Frame {
msec: 6064
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Frame {
msec: 6080
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Frame {
msec: 6096
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Frame {
msec: 6112
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Frame {
msec: 6128
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Frame {
msec: 6144
- hash: "943c7ec51fbe8db38fcd3086990fa4e0"
+ hash: "535d1bbe1d2147d70bec0b7d932eff41"
}
Key {
type: 6
@@ -1862,67 +1862,67 @@ VisualTest {
}
Frame {
msec: 6160
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6176
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6192
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6208
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6224
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6240
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6256
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6272
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6288
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6304
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6320
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6336
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6352
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6368
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6384
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Frame {
msec: 6400
- hash: "bd2e37c4ac90a6389f7f4e1e1360b31b"
+ hash: "63132fa980a9fdcce415af1503f34ca6"
}
Key {
type: 7
@@ -1942,11 +1942,11 @@ VisualTest {
}
Frame {
msec: 6416
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6432
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Key {
type: 7
@@ -1966,11 +1966,11 @@ VisualTest {
}
Frame {
msec: 6448
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6464
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Key {
type: 7
@@ -1998,83 +1998,83 @@ VisualTest {
}
Frame {
msec: 6480
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6496
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6512
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6528
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6544
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6560
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6576
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6592
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6608
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6624
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6640
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6656
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6672
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6688
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6704
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6720
- image: "usingLineEdit.6.png"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6736
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ image: "usingLineEdit.7.png"
}
Frame {
msec: 6752
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6768
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6784
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Key {
type: 6
@@ -2086,7 +2086,7 @@ VisualTest {
}
Frame {
msec: 6800
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Key {
type: 7
@@ -2098,39 +2098,39 @@ VisualTest {
}
Frame {
msec: 6816
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6832
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6848
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6864
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6880
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6896
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6912
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6928
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Frame {
msec: 6944
- hash: "608bba00320e20da05aa2a6bbcba6e19"
+ hash: "cf2ccad24e42d8764c1395e076f3a0df"
}
Key {
type: 6
@@ -2142,19 +2142,19 @@ VisualTest {
}
Frame {
msec: 6960
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "43217b3192aea23b17e2a2e7d820def8"
}
Frame {
msec: 6976
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "43217b3192aea23b17e2a2e7d820def8"
}
Frame {
msec: 6992
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "43217b3192aea23b17e2a2e7d820def8"
}
Frame {
msec: 7008
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "43217b3192aea23b17e2a2e7d820def8"
}
Key {
type: 7
@@ -2166,23 +2166,23 @@ VisualTest {
}
Frame {
msec: 7024
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "43217b3192aea23b17e2a2e7d820def8"
}
Frame {
msec: 7040
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "43217b3192aea23b17e2a2e7d820def8"
}
Frame {
msec: 7056
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "43217b3192aea23b17e2a2e7d820def8"
}
Frame {
msec: 7072
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "43217b3192aea23b17e2a2e7d820def8"
}
Frame {
msec: 7088
- hash: "40456a6d22e09e1817b07f3898676524"
+ hash: "43217b3192aea23b17e2a2e7d820def8"
}
Key {
type: 6
@@ -2194,19 +2194,19 @@ VisualTest {
}
Frame {
msec: 7104
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "02dceb1b71d82bfbea5fcfb630fef22d"
}
Frame {
msec: 7120
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "02dceb1b71d82bfbea5fcfb630fef22d"
}
Frame {
msec: 7136
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "02dceb1b71d82bfbea5fcfb630fef22d"
}
Frame {
msec: 7152
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "02dceb1b71d82bfbea5fcfb630fef22d"
}
Key {
type: 7
@@ -2218,31 +2218,31 @@ VisualTest {
}
Frame {
msec: 7168
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "02dceb1b71d82bfbea5fcfb630fef22d"
}
Frame {
msec: 7184
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "02dceb1b71d82bfbea5fcfb630fef22d"
}
Frame {
msec: 7200
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "02dceb1b71d82bfbea5fcfb630fef22d"
}
Frame {
msec: 7216
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "02dceb1b71d82bfbea5fcfb630fef22d"
}
Frame {
msec: 7232
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "02dceb1b71d82bfbea5fcfb630fef22d"
}
Frame {
msec: 7248
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "02dceb1b71d82bfbea5fcfb630fef22d"
}
Frame {
msec: 7264
- hash: "dada78341b65c1efb2816e16a8cbe8b5"
+ hash: "02dceb1b71d82bfbea5fcfb630fef22d"
}
Key {
type: 6
@@ -2254,23 +2254,23 @@ VisualTest {
}
Frame {
msec: 7280
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7296
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7312
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7328
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7344
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Key {
type: 7
@@ -2282,47 +2282,47 @@ VisualTest {
}
Frame {
msec: 7360
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7376
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7392
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7408
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7424
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7440
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7456
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7472
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7488
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7504
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7520
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Key {
type: 7
@@ -2334,247 +2334,247 @@ VisualTest {
}
Frame {
msec: 7536
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7552
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7568
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7584
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7600
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7616
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7632
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7648
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7664
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7680
- image: "usingLineEdit.7.png"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7696
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ image: "usingLineEdit.8.png"
}
Frame {
msec: 7712
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7728
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7744
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7760
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7776
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7792
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7808
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7824
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7840
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7856
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7872
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7888
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7904
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7920
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7936
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7952
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7968
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 7984
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8000
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8016
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8032
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8048
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8064
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8080
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8096
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8112
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8128
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8144
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8160
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8176
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8192
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8208
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8224
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8240
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8256
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8272
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8288
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8304
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8320
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8336
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8352
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8368
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8384
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8400
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8416
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8432
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8448
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8464
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8480
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Frame {
msec: 8496
- hash: "f249bfae1934844abfd5fc158a9c89cf"
+ hash: "cff8ff96fe5f67faac7a04805d2a945b"
}
Mouse {
type: 2
@@ -2586,19 +2586,19 @@ VisualTest {
}
Frame {
msec: 8512
- hash: "e594125fb367adee5b6acdb1268c86cd"
+ hash: "b901d339089fccecd217f562e3b0253a"
}
Frame {
msec: 8528
- hash: "e594125fb367adee5b6acdb1268c86cd"
+ hash: "b901d339089fccecd217f562e3b0253a"
}
Frame {
msec: 8544
- hash: "e594125fb367adee5b6acdb1268c86cd"
+ hash: "b901d339089fccecd217f562e3b0253a"
}
Frame {
msec: 8560
- hash: "e594125fb367adee5b6acdb1268c86cd"
+ hash: "b901d339089fccecd217f562e3b0253a"
}
Mouse {
type: 5
@@ -2618,7 +2618,7 @@ VisualTest {
}
Frame {
msec: 8576
- hash: "e594125fb367adee5b6acdb1268c86cd"
+ hash: "b901d339089fccecd217f562e3b0253a"
}
Mouse {
type: 5
@@ -2630,7 +2630,7 @@ VisualTest {
}
Frame {
msec: 8592
- hash: "7d4116a8689b6995702a042d974ef74b"
+ hash: "8173ad74ad73a8061af3edb8322b3e28"
}
Mouse {
type: 5
@@ -2650,7 +2650,7 @@ VisualTest {
}
Frame {
msec: 8608
- hash: "cb9221f27ac24e4b6b103ca53acad3b3"
+ hash: "8173ad74ad73a8061af3edb8322b3e28"
}
Mouse {
type: 5
@@ -2662,7 +2662,7 @@ VisualTest {
}
Frame {
msec: 8624
- hash: "074bc6abd9a67db829ae5d6c5f187fb6"
+ hash: "a470057b75a1aade3945dbb61526ae50"
}
Mouse {
type: 5
@@ -2682,7 +2682,7 @@ VisualTest {
}
Frame {
msec: 8640
- image: "usingLineEdit.8.png"
+ hash: "a470057b75a1aade3945dbb61526ae50"
}
Mouse {
type: 5
@@ -2694,7 +2694,7 @@ VisualTest {
}
Frame {
msec: 8656
- hash: "074bc6abd9a67db829ae5d6c5f187fb6"
+ image: "usingLineEdit.9.png"
}
Mouse {
type: 5
@@ -2714,7 +2714,7 @@ VisualTest {
}
Frame {
msec: 8672
- hash: "074bc6abd9a67db829ae5d6c5f187fb6"
+ hash: "74c1edc228a7c4ba1c0adab9ed7dd086"
}
Mouse {
type: 5
@@ -2726,7 +2726,7 @@ VisualTest {
}
Frame {
msec: 8688
- hash: "7e403c56d5652321a7701529fc6b8098"
+ hash: "74c1edc228a7c4ba1c0adab9ed7dd086"
}
Mouse {
type: 5
@@ -2746,7 +2746,7 @@ VisualTest {
}
Frame {
msec: 8704
- hash: "7e403c56d5652321a7701529fc6b8098"
+ hash: "74c1edc228a7c4ba1c0adab9ed7dd086"
}
Mouse {
type: 5
@@ -2766,7 +2766,7 @@ VisualTest {
}
Frame {
msec: 8720
- hash: "7e403c56d5652321a7701529fc6b8098"
+ hash: "74c1edc228a7c4ba1c0adab9ed7dd086"
}
Mouse {
type: 5
@@ -2786,7 +2786,7 @@ VisualTest {
}
Frame {
msec: 8736
- hash: "7e403c56d5652321a7701529fc6b8098"
+ hash: "11e31d23d38f163c2c28ca042af7f9f6"
}
Mouse {
type: 5
@@ -2806,7 +2806,7 @@ VisualTest {
}
Frame {
msec: 8752
- hash: "2435f2526b3ccc12b7b573872b40e5f1"
+ hash: "11e31d23d38f163c2c28ca042af7f9f6"
}
Mouse {
type: 5
@@ -2826,7 +2826,7 @@ VisualTest {
}
Frame {
msec: 8768
- hash: "2435f2526b3ccc12b7b573872b40e5f1"
+ hash: "11e31d23d38f163c2c28ca042af7f9f6"
}
Mouse {
type: 5
@@ -2846,7 +2846,7 @@ VisualTest {
}
Frame {
msec: 8784
- hash: "2435f2526b3ccc12b7b573872b40e5f1"
+ hash: "11e31d23d38f163c2c28ca042af7f9f6"
}
Mouse {
type: 5
@@ -2866,7 +2866,7 @@ VisualTest {
}
Frame {
msec: 8800
- hash: "2435f2526b3ccc12b7b573872b40e5f1"
+ hash: "045f891731548aae37090e0cefb62170"
}
Mouse {
type: 5
@@ -2886,7 +2886,7 @@ VisualTest {
}
Frame {
msec: 8816
- hash: "f5a185b954e8b181222cc50075d8ebb6"
+ hash: "045f891731548aae37090e0cefb62170"
}
Mouse {
type: 5
@@ -2906,7 +2906,7 @@ VisualTest {
}
Frame {
msec: 8832
- hash: "93a00b37c5027650791d1ff589408d0d"
+ hash: "3b6f55bc49e7e326e40b0f3faae71a8b"
}
Mouse {
type: 5
@@ -2926,7 +2926,7 @@ VisualTest {
}
Frame {
msec: 8848
- hash: "0b29f6006be3604ef862db7d31f9a434"
+ hash: "abc04cd8ca8759f981f8e2c3b30a33ac"
}
Mouse {
type: 5
@@ -2946,7 +2946,7 @@ VisualTest {
}
Frame {
msec: 8864
- hash: "8390b63b71e1452cb93c576a3f2395e1"
+ hash: "f96cc6aa0a38639146d8d691d699946b"
}
Mouse {
type: 5
@@ -2966,7 +2966,7 @@ VisualTest {
}
Frame {
msec: 8880
- hash: "72298910946a4e1a9ccc4520d99e9420"
+ hash: "483743419cee348e8f6e24fd1e900ae6"
}
Mouse {
type: 5
@@ -2986,7 +2986,7 @@ VisualTest {
}
Frame {
msec: 8896
- hash: "17d349b0ed29d6aa57bf8fda9a55abf8"
+ hash: "50292f48ceeaee5f55795aea736631d0"
}
Mouse {
type: 5
@@ -3006,7 +3006,7 @@ VisualTest {
}
Frame {
msec: 8912
- hash: "01e8a877d51f5564aaf2f11e7aadbc4a"
+ hash: "9739b19d1496baabad1a01cf35c90374"
}
Mouse {
type: 5
@@ -3026,7 +3026,7 @@ VisualTest {
}
Frame {
msec: 8928
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "bcf1719dc1ec19d3cca83e41ffd4ba0d"
}
Mouse {
type: 5
@@ -3046,7 +3046,7 @@ VisualTest {
}
Frame {
msec: 8944
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Mouse {
type: 5
@@ -3066,11 +3066,11 @@ VisualTest {
}
Frame {
msec: 8960
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Frame {
msec: 8976
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Mouse {
type: 5
@@ -3090,7 +3090,7 @@ VisualTest {
}
Frame {
msec: 8992
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Mouse {
type: 5
@@ -3102,55 +3102,55 @@ VisualTest {
}
Frame {
msec: 9008
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Frame {
msec: 9024
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Frame {
msec: 9040
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Frame {
msec: 9056
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Frame {
msec: 9072
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Frame {
msec: 9088
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Frame {
msec: 9104
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Frame {
msec: 9120
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Frame {
msec: 9136
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Frame {
msec: 9152
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Frame {
msec: 9168
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Frame {
msec: 9184
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Frame {
msec: 9200
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Mouse {
type: 5
@@ -3162,7 +3162,7 @@ VisualTest {
}
Frame {
msec: 9216
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Mouse {
type: 5
@@ -3174,7 +3174,7 @@ VisualTest {
}
Frame {
msec: 9232
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Mouse {
type: 5
@@ -3194,7 +3194,7 @@ VisualTest {
}
Frame {
msec: 9248
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Mouse {
type: 5
@@ -3214,7 +3214,7 @@ VisualTest {
}
Frame {
msec: 9264
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Mouse {
type: 5
@@ -3234,7 +3234,7 @@ VisualTest {
}
Frame {
msec: 9280
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Mouse {
type: 5
@@ -3254,7 +3254,7 @@ VisualTest {
}
Frame {
msec: 9296
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Mouse {
type: 5
@@ -3274,7 +3274,7 @@ VisualTest {
}
Frame {
msec: 9312
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Mouse {
type: 5
@@ -3294,7 +3294,7 @@ VisualTest {
}
Frame {
msec: 9328
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Mouse {
type: 5
@@ -3314,7 +3314,7 @@ VisualTest {
}
Frame {
msec: 9344
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Mouse {
type: 5
@@ -3334,7 +3334,7 @@ VisualTest {
}
Frame {
msec: 9360
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "192a6cf285d42c7a2996bf0342e69c97"
}
Mouse {
type: 5
@@ -3354,7 +3354,7 @@ VisualTest {
}
Frame {
msec: 9376
- hash: "bc8f49abd277f5f15d422341de212183"
+ hash: "b79a6b6b2a670212a0f4310323352862"
}
Mouse {
type: 5
@@ -3374,7 +3374,7 @@ VisualTest {
}
Frame {
msec: 9392
- hash: "12e705f08ff90fd8ddb1937e5a7e23a0"
+ hash: "b79a6b6b2a670212a0f4310323352862"
}
Mouse {
type: 5
@@ -3394,7 +3394,7 @@ VisualTest {
}
Frame {
msec: 9408
- hash: "12e705f08ff90fd8ddb1937e5a7e23a0"
+ hash: "b79a6b6b2a670212a0f4310323352862"
}
Mouse {
type: 5
@@ -3414,7 +3414,7 @@ VisualTest {
}
Frame {
msec: 9424
- hash: "4daae0f05ff1b7ef68ed1d839b113dc4"
+ hash: "82ad8cef2dc81cf061785c211f1b2233"
}
Mouse {
type: 5
@@ -3434,7 +3434,7 @@ VisualTest {
}
Frame {
msec: 9440
- hash: "a1186544d7f5576e6ccbbd7938c1c374"
+ hash: "dc5c2e4ac2c51ac7b84a527a77313ff5"
}
Mouse {
type: 5
@@ -3454,7 +3454,7 @@ VisualTest {
}
Frame {
msec: 9456
- hash: "6ce09c9a06135d2280e4f7bc1c81b70e"
+ hash: "dc5c2e4ac2c51ac7b84a527a77313ff5"
}
Mouse {
type: 5
@@ -3474,7 +3474,7 @@ VisualTest {
}
Frame {
msec: 9472
- hash: "6ce09c9a06135d2280e4f7bc1c81b70e"
+ hash: "dceeee37f46351f54a6dbf9e1d304017"
}
Mouse {
type: 5
@@ -3494,7 +3494,7 @@ VisualTest {
}
Frame {
msec: 9488
- hash: "035b177c3cacd8cdef807d5673de4607"
+ hash: "dceeee37f46351f54a6dbf9e1d304017"
}
Mouse {
type: 5
@@ -3514,7 +3514,7 @@ VisualTest {
}
Frame {
msec: 9504
- hash: "7b7e3c4600f3af7bd0f45799661db993"
+ hash: "b5b370f86804d875363c8aa9fa53c0fe"
}
Mouse {
type: 5
@@ -3534,7 +3534,7 @@ VisualTest {
}
Frame {
msec: 9520
- hash: "7b7e3c4600f3af7bd0f45799661db993"
+ hash: "b5b370f86804d875363c8aa9fa53c0fe"
}
Mouse {
type: 5
@@ -3546,7 +3546,7 @@ VisualTest {
}
Frame {
msec: 9536
- hash: "7b7e3c4600f3af7bd0f45799661db993"
+ hash: "b5b370f86804d875363c8aa9fa53c0fe"
}
Mouse {
type: 5
@@ -3566,7 +3566,7 @@ VisualTest {
}
Frame {
msec: 9552
- hash: "859950e1cf496ef830a30b3a0ec801ac"
+ hash: "8ae0e57709d94c27ecf34f9e76623ba8"
}
Mouse {
type: 5
@@ -3586,7 +3586,7 @@ VisualTest {
}
Frame {
msec: 9568
- hash: "859950e1cf496ef830a30b3a0ec801ac"
+ hash: "8ae0e57709d94c27ecf34f9e76623ba8"
}
Mouse {
type: 5
@@ -3606,7 +3606,7 @@ VisualTest {
}
Frame {
msec: 9584
- hash: "be7343825b6adcb16f49e20ee2bdf19f"
+ hash: "a29b5440525c9fbed90096f287396c91"
}
Mouse {
type: 5
@@ -3626,7 +3626,7 @@ VisualTest {
}
Frame {
msec: 9600
- image: "usingLineEdit.9.png"
+ hash: "d1091d48e0875fec9372c382c6961562"
}
Mouse {
type: 5
@@ -3638,7 +3638,7 @@ VisualTest {
}
Frame {
msec: 9616
- hash: "597923ce1046fbf4b728545c54c97fa5"
+ image: "usingLineEdit.10.png"
}
Mouse {
type: 5
@@ -3658,7 +3658,7 @@ VisualTest {
}
Frame {
msec: 9632
- hash: "597923ce1046fbf4b728545c54c97fa5"
+ hash: "d1091d48e0875fec9372c382c6961562"
}
Mouse {
type: 5
@@ -3678,7 +3678,7 @@ VisualTest {
}
Frame {
msec: 9648
- hash: "597923ce1046fbf4b728545c54c97fa5"
+ hash: "d1091d48e0875fec9372c382c6961562"
}
Mouse {
type: 5
@@ -3698,7 +3698,7 @@ VisualTest {
}
Frame {
msec: 9664
- hash: "2fc5c42f94350f28ae0117bc7f6daff1"
+ hash: "e1ac646b512dec95946fb52811c269da"
}
Mouse {
type: 5
@@ -3718,7 +3718,7 @@ VisualTest {
}
Frame {
msec: 9680
- hash: "4b4ec69d583151f1a64052d696966f9c"
+ hash: "29dfbe2f8ecee4ff5ecdf358a94f35f8"
}
Mouse {
type: 5
@@ -3738,7 +3738,7 @@ VisualTest {
}
Frame {
msec: 9696
- hash: "0882a25ac1c2b534367736d825a73630"
+ hash: "2ce02f81e21d4f9a3fd8d78fc8182898"
}
Mouse {
type: 5
@@ -3758,7 +3758,7 @@ VisualTest {
}
Frame {
msec: 9712
- hash: "d5b6acc155f827c05b0c4c289a2e3eec"
+ hash: "09e41ca9d2286e99cdecb446a33cbf99"
}
Mouse {
type: 5
@@ -3778,7 +3778,7 @@ VisualTest {
}
Frame {
msec: 9728
- hash: "a05b3f2f9f22249ab694ac45e1de7b85"
+ hash: "6d780f15bc7597420fc10b1a2f1c7f7f"
}
Mouse {
type: 5
@@ -3798,7 +3798,7 @@ VisualTest {
}
Frame {
msec: 9744
- hash: "5b0e034813f8543627f370efdcf3591e"
+ hash: "afb956a94411eba22a0257faa5cbc57f"
}
Mouse {
type: 5
@@ -3818,7 +3818,7 @@ VisualTest {
}
Frame {
msec: 9760
- hash: "5b8d80b9d7e2a8c1a24c28e127d0f7e5"
+ hash: "8739d2d2f9d96f0bce61ce95bf1e6062"
}
Mouse {
type: 5
@@ -3838,7 +3838,7 @@ VisualTest {
}
Frame {
msec: 9776
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Mouse {
type: 5
@@ -3858,7 +3858,7 @@ VisualTest {
}
Frame {
msec: 9792
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Mouse {
type: 5
@@ -3870,7 +3870,7 @@ VisualTest {
}
Frame {
msec: 9808
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Mouse {
type: 5
@@ -3882,7 +3882,7 @@ VisualTest {
}
Frame {
msec: 9824
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Mouse {
type: 5
@@ -3894,7 +3894,7 @@ VisualTest {
}
Frame {
msec: 9840
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Mouse {
type: 5
@@ -3906,11 +3906,11 @@ VisualTest {
}
Frame {
msec: 9856
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 9872
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Mouse {
type: 5
@@ -3922,7 +3922,7 @@ VisualTest {
}
Frame {
msec: 9888
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Mouse {
type: 5
@@ -3934,7 +3934,7 @@ VisualTest {
}
Frame {
msec: 9904
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Mouse {
type: 5
@@ -3946,7 +3946,7 @@ VisualTest {
}
Frame {
msec: 9920
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Mouse {
type: 5
@@ -3958,11 +3958,11 @@ VisualTest {
}
Frame {
msec: 9936
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 9952
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Mouse {
type: 5
@@ -3974,7 +3974,7 @@ VisualTest {
}
Frame {
msec: 9968
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Mouse {
type: 5
@@ -3986,7 +3986,7 @@ VisualTest {
}
Frame {
msec: 9984
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Mouse {
type: 5
@@ -3998,11 +3998,11 @@ VisualTest {
}
Frame {
msec: 10000
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10016
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Mouse {
type: 5
@@ -4014,59 +4014,59 @@ VisualTest {
}
Frame {
msec: 10032
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10048
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10064
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10080
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10096
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10112
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10128
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10144
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10160
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10176
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10192
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10208
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10224
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10240
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Mouse {
type: 3
@@ -4078,258 +4078,258 @@ VisualTest {
}
Frame {
msec: 10256
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10272
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10288
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10304
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10320
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10336
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10352
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10368
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10384
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10400
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10416
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10432
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10448
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10464
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10480
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10496
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10512
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10528
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10544
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10560
- image: "usingLineEdit.10.png"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10576
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ image: "usingLineEdit.11.png"
}
Frame {
msec: 10592
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10608
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10624
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10640
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10656
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10672
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10688
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10704
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10720
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10736
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10752
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10768
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10784
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10800
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10816
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10832
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10848
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10864
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10880
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10896
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10912
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10928
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10944
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10960
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10976
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 10992
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11008
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11024
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11040
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11056
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11072
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11088
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11104
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11120
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11136
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11152
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11168
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11184
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11200
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11216
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11232
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11248
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
Frame {
msec: 11264
- hash: "66715d4a4f83d0e5905adbc4c459b0fb"
+ hash: "4e2cb8e4cedab8df2ff823e18b17e575"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.0.png
deleted file mode 100644
index f04f65ead0..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.1.png
deleted file mode 100644
index 46a703a194..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.2.png
deleted file mode 100644
index e4a38774ed..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.3.png
deleted file mode 100644
index 9ef842ae10..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.4.png
deleted file mode 100644
index 706e2b390d..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.5.png
deleted file mode 100644
index bcc86cc407..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.5.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.6.png
deleted file mode 100644
index 51ddd44f40..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.6.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.7.png
deleted file mode 100644
index 0a2fddafdc..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.7.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.8.png
deleted file mode 100644
index 9c88bff24d..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.8.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.qml
index a1d998fc46..81f1bcc6c5 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/cursorDelegate.qml
@@ -6,134 +6,146 @@ VisualTest {
}
Frame {
msec: 16
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 32
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 48
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 64
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 80
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 96
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 112
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 128
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 144
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 160
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 176
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 192
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 208
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 224
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 240
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 256
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 272
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 288
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 304
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 320
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 336
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 352
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 368
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 384
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 400
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 416
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 432
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
}
Frame {
msec: 448
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "65bbc5da769f475d1c47bdedb92ba65e"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 464
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "97eff9733db71f7c5d396969582c572b"
}
Frame {
msec: 480
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "97eff9733db71f7c5d396969582c572b"
}
Frame {
msec: 496
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "97eff9733db71f7c5d396969582c572b"
}
Frame {
msec: 512
- hash: "cd442d6dc4d155f54ae24f03d080f50c"
+ hash: "97eff9733db71f7c5d396969582c572b"
+ }
+ Frame {
+ msec: 528
+ hash: "87902d32dba1439e71ce5f57f514748e"
}
Key {
- type: 6
+ type: 7
key: 16777234
modifiers: 0
text: ""
@@ -141,36 +153,44 @@ VisualTest {
count: 1
}
Frame {
- msec: 528
- hash: "56db24ad686d34e75a2d184e5b1da2a9"
- }
- Frame {
msec: 544
- hash: "c3487c7c7dcd392e7eacb74045dd4143"
+ hash: "cad95931a38718eb481a9175fdfec305"
}
Frame {
msec: 560
- hash: "70aedcda6c93875d18ee111d8a19549e"
+ hash: "1dc99e5c7e4d2fa6b624b6df250b78fc"
}
Frame {
msec: 576
- hash: "47ad557d366536ad457f6866241dba93"
+ hash: "5d5739beb039a83bebb2c41489166edf"
}
Frame {
msec: 592
- hash: "e715c2a82745829665226df78598b819"
+ hash: "6320c9a1c0013f5aa6180992b934ca59"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 608
- hash: "2ff4bd5602c34c020162f0503d625049"
+ hash: "9d9837c1f3779e5dab0dfeb1d11fdea1"
}
Frame {
msec: 624
- hash: "a494b3b25a23daa858034ebccce0d1c7"
+ hash: "9d868112eaf70ce02ce93603278a565d"
}
Frame {
msec: 640
- hash: "59d2fb8e21802d256b11730b31919fb3"
+ hash: "d2bccb3184d3bb42b91017410a8655b6"
+ }
+ Frame {
+ msec: 656
+ hash: "68f8be3e16637fd39a35f0cebb62b74a"
}
Key {
type: 7
@@ -181,67 +201,47 @@ VisualTest {
count: 1
}
Frame {
- msec: 656
- hash: "5e09b95292d6d0afe76a5015b0ccebf1"
- }
- Frame {
msec: 672
- hash: "de3c911aec7e42557ece4bdcf02ce562"
+ hash: "04f5781b57ed9fee32d5ef80dc33f4ff"
}
Frame {
msec: 688
- hash: "680f51f63c4b11a247a668eb7bbd2b62"
+ hash: "06cc2e24a848d441074de5ddff1c739a"
+ }
+ Frame {
+ msec: 704
+ hash: "94526186deb7248ac9c747ede15b106d"
+ }
+ Frame {
+ msec: 720
+ hash: "1ac130517df314f4f44b9bde2d3dcc53"
}
Key {
type: 6
- key: 16777236
+ key: 16777234
modifiers: 0
text: ""
autorep: false
count: 1
}
Frame {
- msec: 704
- hash: "9aa569f7b251371bdd1cb05c8d3aab28"
- }
- Frame {
- msec: 720
- hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e"
- }
- Frame {
msec: 736
- hash: "a0cb3f796fddf7100ca19aee3dedbea8"
+ hash: "270ecf4900e94d60599ded230633aa02"
}
Frame {
msec: 752
- hash: "b4e273b6415e3951eab2f831100b0bb2"
+ hash: "ef2093584cbce9182b99f297fcd2465d"
}
Frame {
msec: 768
- hash: "fd3fd655785c4e3c470f742451e3470f"
+ hash: "c445cf5f56213a712585934681d8af55"
}
Frame {
msec: 784
- hash: "7a9b2057760e48d5f9cfdc79b08866d8"
- }
- Frame {
- msec: 800
- hash: "2a55b52db02d97963d382c9862307384"
- }
- Frame {
- msec: 816
- hash: "c6c90915393fc7cb0aaa464caefbadb0"
+ hash: "9f0edb3871e015a549622e1b70d1b748"
}
Key {
type: 7
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Key {
- type: 6
key: 16777234
modifiers: 0
text: ""
@@ -249,28 +249,44 @@ VisualTest {
count: 1
}
Frame {
+ msec: 800
+ hash: "144c51d7aa47ea8cc8d79a97efa4b430"
+ }
+ Frame {
+ msec: 816
+ hash: "34f768a7c99dfb3c8f0e1fb1a08a37ac"
+ }
+ Frame {
msec: 832
- hash: "4f097223462c8f619188b0b0c2ecb080"
+ hash: "4f3970c4ad02b69f96c11610494e8a50"
}
Frame {
msec: 848
- hash: "243be452ff0798538defc6a14cb8a08b"
+ hash: "815a1cf66f0c9eb47e244753eebb83ba"
}
Frame {
msec: 864
- hash: "e5472ed9a8a43a64a0fea12540619940"
+ hash: "5db11f795c000b382fdc30726a711c65"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 880
- hash: "90b0f5f1aa7b5f066fb1266ea63254eb"
+ hash: "67976ee172d0d55992c0e4734fbb7ccf"
}
Frame {
msec: 896
- hash: "97d5f9fe02e4bd06ec30a7805945f167"
+ hash: "c764e4d5317acbbf5118a08565e5d5fd"
}
Frame {
msec: 912
- hash: "eb381a1e2ad945e4cfa540c137edbda7"
+ hash: "a83f566d01b990e91f43bb63a58fb5b8"
}
Key {
type: 7
@@ -282,11 +298,11 @@ VisualTest {
}
Frame {
msec: 928
- hash: "75252ff61682fd32117f0759ebe4b6a1"
+ hash: "031282f352e01f23bc5f73bf8ce82c9a"
}
Frame {
msec: 944
- hash: "d724bdacc59bce29d0a42d72479be0b6"
+ hash: "1f3dc1d3ad0304376eac5d60d3c226ee"
}
Frame {
msec: 960
@@ -294,207 +310,247 @@ VisualTest {
}
Frame {
msec: 976
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 992
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1008
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 1024
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 1040
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 1056
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Key {
- type: 6
- key: 16777248
- modifiers: 33554432
+ type: 7
+ key: 16777234
+ modifiers: 0
text: ""
autorep: false
count: 1
}
- Key {
- type: 6
- key: 16777249
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ Frame {
+ msec: 1056
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 1072
- hash: "d7703c18b69f485bba3abd655100b50d"
+ hash: "a2ad07326fafcb3012cdb869f39af466"
}
Frame {
msec: 1088
- hash: "d724bdacc59bce29d0a42d72479be0b6"
+ hash: "8622eb25a6da44926b5161bce213a483"
}
Frame {
msec: 1104
- hash: "75252ff61682fd32117f0759ebe4b6a1"
+ hash: "ccbd4d1e4865ebd9b0fe923e6ab05e5c"
}
Frame {
msec: 1120
- hash: "eb381a1e2ad945e4cfa540c137edbda7"
+ hash: "775cd79b012f79b773449a0ad8457149"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1136
- hash: "97d5f9fe02e4bd06ec30a7805945f167"
+ hash: "2a4ed061e512c5afd11072c4b707f707"
}
Frame {
msec: 1152
- hash: "90b0f5f1aa7b5f066fb1266ea63254eb"
+ hash: "c855df7b17811f25fd17e4fb108c02e1"
}
Frame {
msec: 1168
- hash: "e5472ed9a8a43a64a0fea12540619940"
+ hash: "46c37d8e67ece5cae4f766acf50f3ca3"
}
Frame {
msec: 1184
- hash: "243be452ff0798538defc6a14cb8a08b"
+ hash: "95a70f14ce01aae61190080ed3d55c77"
}
Frame {
msec: 1200
- hash: "4f097223462c8f619188b0b0c2ecb080"
+ hash: "87da182d1285f3613bb2e4673e701757"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1216
- hash: "e7346d8f223684143a0940def878b874"
+ hash: "5b97f13f43e713a6fbe96bdca8969191"
}
Frame {
msec: 1232
- hash: "512b9746ae4482557b8cef9f99905954"
+ hash: "4d003182e7b7b0a05413b80f82a0fc41"
}
Frame {
msec: 1248
- hash: "4220dde85eb1c027366efd0798927e8d"
+ hash: "dba09e038291a8dfdc61911d6b4b9bdf"
}
Frame {
msec: 1264
- hash: "54f7f94b5cdf1becb2ee61d7f6f02c0e"
+ hash: "a2ae1e5cc6cd72fae70804e07df5a8a1"
}
Frame {
msec: 1280
- hash: "de09380dd57c58ae99fbdba169a19975"
+ hash: "f1c2a24b6f0ebcf98122e8db1cdcb66f"
}
Frame {
msec: 1296
- hash: "bfc1b03df244839a012e8302dc07764f"
+ hash: "142dade1639655132435ae260b7935a0"
}
- Frame {
- msec: 1312
- hash: "d5f220e5337837ec0d07eb118e2f948e"
+ Key {
+ type: 6
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
- msec: 1328
- hash: "7640c78a286b0b7bdf2ec9117ceced4a"
+ msec: 1312
+ hash: "e80c0175d947bceef4bf53b60bf7eac0"
}
Key {
type: 6
- key: 16777234
+ key: 16777248
modifiers: 100663296
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 1328
+ hash: "de912cd8bd2fe762ec6b1ec819732507"
+ }
+ Frame {
msec: 1344
- hash: "c659fd76d632aac26d396809b57826dd"
+ hash: "d3fa9dfab37ee26572d25bcbe8c66b72"
}
Frame {
msec: 1360
- hash: "b5ba335eca37416970dcab53157d7ae6"
+ hash: "33bdb2817a2858ce430813d0774f0172"
}
Frame {
msec: 1376
- hash: "df498dac81260d8867221612ff3b7619"
+ hash: "4f10f0ffb6b1c87155eedd53af36c74f"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1392
- hash: "578c3a682278f4ead0ca894f029dbfb7"
+ hash: "1b94be0de8412bd9380689895f290af7"
}
Frame {
msec: 1408
- hash: "5fe9b2365b091047df1b18bcaa5b1bb4"
+ hash: "48b3a5e2b04c86a75f4b6595eb2c1f55"
}
Frame {
msec: 1424
- hash: "c513b8df83f1d1cc3c05769c41741653"
- }
- Key {
- type: 7
- key: 16777234
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ hash: "d092fabd3dd51c718486e1e7dadaa0dc"
}
Frame {
msec: 1440
- hash: "ee70a2002f52a3f4a9fa32db668db3d0"
+ hash: "243359437235563f1a60b8eaf63365b6"
}
Frame {
msec: 1456
- hash: "3f299da38c2f3f9057df987d5d339e1f"
+ hash: "a986c8ed8ad2d8b6aab2a001906ba2ad"
}
Frame {
msec: 1472
- hash: "55f6adbd00910e5f39977162cfe8dcc5"
+ hash: "da5e06dc481e9cb7d9159a84d0cc150a"
}
Frame {
msec: 1488
- hash: "151fb386855954ae5143046cab314ddf"
+ hash: "1d70a05fce3a05477e21d22b127ae96a"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1504
- hash: "d9ec76b2c07077b5b6d6c3777d116164"
+ hash: "913448213a07f6c8427c8e310d2026de"
}
Frame {
msec: 1520
- hash: "ef3ba6c27d9b28de829360985505c185"
+ hash: "51bef5ae52977a935b66af4baf1da4e6"
}
Frame {
msec: 1536
- hash: "8eafd8f9aea08c172f40de3c4f2b3b59"
+ hash: "367bc25f868c23005d7fe903a9ea681b"
}
Frame {
msec: 1552
- hash: "2329d5b8182794bb8375f0de204c9b16"
+ hash: "3c25181652e788d128ed571ca4fea0b1"
}
Frame {
msec: 1568
- hash: "e6b25cf1a8c6858f6937e649b1315955"
+ hash: "0218f939ff2b8c0bc22a537ed0f053f0"
}
Frame {
msec: 1584
- hash: "3aeedff600509a138b0de31e10bbdd7b"
+ hash: "a3b765a823b2b3811273a1be90850533"
}
Frame {
msec: 1600
- hash: "0636dee0ddc551ce8ecf3a6c6300b020"
+ hash: "2a42a29774eb4f962d299f8c2c213d55"
}
Frame {
msec: 1616
- hash: "77f5b0dfdf0c631cf863be60bd09db9c"
+ hash: "1f0ad54d0fe8fc27cadbaaeaa37364e0"
}
Frame {
msec: 1632
- hash: "2e86762371ae933546e8b2154c78f74b"
+ hash: "04d6028d1b1a1178e5bf774db8eef2c6"
}
Frame {
msec: 1648
- hash: "1051ec29f94c31b257a5b1c922f8e93f"
+ hash: "c325e46e89e8df04e2c3d8bf111c5f09"
+ }
+ Frame {
+ msec: 1664
+ hash: "70e6223ce16a797e2c56e21ad74b188b"
+ }
+ Frame {
+ msec: 1680
+ hash: "0fb8762fd28564b84b83c17d749a3645"
}
Key {
type: 6
@@ -505,76 +561,84 @@ VisualTest {
count: 1
}
Frame {
- msec: 1664
- hash: "5c60da876c8cc9fa334905b5fc7c2a3d"
- }
- Frame {
- msec: 1680
- hash: "c0b0cddd62853ac3499b7ada200d206a"
- }
- Frame {
msec: 1696
- hash: "5bd588d64917f942e0f5ea1553acbf63"
+ hash: "ef5d19b59792ea8822e2391fe0d91dbd"
}
Frame {
msec: 1712
- hash: "bc5744ef5c81b7d5b365bf977f909be5"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 100663296
- text: ""
- autorep: false
- count: 1
+ hash: "70ad15030164be8afbb4ab22d1ae5f5f"
}
Frame {
msec: 1728
- hash: "892a1a8a5a9c198e5ae04cc19f0e1d0c"
+ hash: "a5dfb8bd4b681e0d8d2c082821a2a976"
}
Frame {
msec: 1744
- hash: "708799d2d834302c659958701e217b37"
+ hash: "864781fbb8673b1e603df015f2d88601"
}
Frame {
msec: 1760
- hash: "360d75bcc178bcfd4f93741d653fd821"
+ hash: "0bdb6a155cdd14f4dce9fde3c5116dde"
}
Frame {
msec: 1776
- hash: "1cfe03528b1cd84e69efc02b9677c748"
+ hash: "5421f521a9bdccc8478fcee97e0dbc99"
}
Frame {
msec: 1792
- hash: "6f45d7c37f1fb90138011b2af24aaf1e"
+ hash: "c5f29693dd017932767f37e2fb2f22f2"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1808
- hash: "ba164375e7ac18cf2e1e613498158fbf"
+ hash: "b5e8abeaec33407e673f8021212528b1"
}
Frame {
msec: 1824
- hash: "14052b9da9e17a6f06fed05d4ed82b9c"
+ hash: "917c968e5ee8f0b25fdb175719d7dbfa"
}
Frame {
msec: 1840
- hash: "aac15ce22bfe38f44a46e4644913f144"
+ hash: "56495c63676b9f73004e76e38d60567e"
}
Frame {
msec: 1856
- hash: "c63aa02ba29ea18334b188185690948d"
+ hash: "86f1ccdd7ff408c5b141d79797eea1fa"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1872
- hash: "11ed187ccd4c2221f166851c08b6b467"
+ hash: "9e9b32a9f71ab1aa4e87ddc323ccda03"
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 1888
- hash: "3543bd4e538981d4bb2c2313c9663a53"
+ hash: "360aef37452ce8f045659c227285cb82"
}
Frame {
msec: 1904
- hash: "a05fa618b094bde2b54b730f513bcabe"
+ hash: "805949377c620fa4310aa4328eba1f23"
}
Frame {
msec: 1920
@@ -582,527 +646,623 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "52fc4a32526a74f9a04d8795c7a47c6e"
+ hash: "00df8110a2008ba77b7e0bf2130e5319"
}
Frame {
msec: 1952
- hash: "17623e1b0ffca3b7736ce930f078dbe0"
+ hash: "835f6f723577071461e41da1fd2e990a"
}
Frame {
msec: 1968
- hash: "75226dac5691627851d83c7370d7603c"
- }
- Key {
- type: 7
- key: 16777249
- modifiers: 33554432
- text: ""
- autorep: false
- count: 1
+ hash: "6876cafa4d6d3a7d387602eba4d26db1"
}
Frame {
msec: 1984
- hash: "9e506ad52020e2913e80a13a7f3ac797"
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
}
Frame {
msec: 2000
- hash: "9e506ad52020e2913e80a13a7f3ac797"
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
}
Frame {
msec: 2016
- hash: "9e506ad52020e2913e80a13a7f3ac797"
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
}
Frame {
msec: 2032
- hash: "9e506ad52020e2913e80a13a7f3ac797"
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2048
- hash: "9e506ad52020e2913e80a13a7f3ac797"
+ hash: "5570ae1e700cdf42ba516be69fbaadc0"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2064
- hash: "75226dac5691627851d83c7370d7603c"
+ hash: "6876cafa4d6d3a7d387602eba4d26db1"
}
Frame {
msec: 2080
- hash: "17623e1b0ffca3b7736ce930f078dbe0"
+ hash: "835f6f723577071461e41da1fd2e990a"
}
Frame {
msec: 2096
- hash: "52fc4a32526a74f9a04d8795c7a47c6e"
+ hash: "00df8110a2008ba77b7e0bf2130e5319"
}
Frame {
msec: 2112
- hash: "89f2d3b4441faee557b8d5f44e1e1e18"
+ hash: "627206a252bd6fcbf57d9f1cde0506bb"
}
Frame {
msec: 2128
- hash: "a05fa618b094bde2b54b730f513bcabe"
+ hash: "805949377c620fa4310aa4328eba1f23"
}
Frame {
msec: 2144
- hash: "3543bd4e538981d4bb2c2313c9663a53"
+ hash: "360aef37452ce8f045659c227285cb82"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2160
- hash: "11ed187ccd4c2221f166851c08b6b467"
+ hash: "0ac33070e0c736bc0fb5ab12fa444b5c"
}
Frame {
msec: 2176
- hash: "c63aa02ba29ea18334b188185690948d"
+ hash: "520a544fd92f17a14380803e253b396f"
}
Frame {
msec: 2192
- hash: "aac15ce22bfe38f44a46e4644913f144"
+ hash: "4a080a5154c517e6bcf24b3a1f1d7f2c"
}
Frame {
msec: 2208
- hash: "14052b9da9e17a6f06fed05d4ed82b9c"
+ hash: "e83642b0793f5a790efca65ccf20a720"
}
Frame {
msec: 2224
- hash: "ba164375e7ac18cf2e1e613498158fbf"
+ hash: "8210b9cbf19f519ee34f4bb1a6afce16"
}
Frame {
msec: 2240
- hash: "6f45d7c37f1fb90138011b2af24aaf1e"
- }
- Frame {
- msec: 2256
- hash: "1cfe03528b1cd84e69efc02b9677c748"
+ hash: "54d04e64af5c0a3d29f2dc8c0977ed3a"
}
Key {
type: 7
- key: 16777248
+ key: 16777236
modifiers: 0
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 2256
+ hash: "ae2a644f96bd7b2662ebcf4ebc33d930"
+ }
+ Frame {
msec: 2272
- hash: "360d75bcc178bcfd4f93741d653fd821"
+ hash: "718ac9cb5ef2992b06b34e957f987b7a"
}
Frame {
msec: 2288
- hash: "708799d2d834302c659958701e217b37"
+ hash: "a2e1dea5e5f37697c7ce1a9419b94f65"
}
Frame {
msec: 2304
- hash: "892a1a8a5a9c198e5ae04cc19f0e1d0c"
+ hash: "c0eb56c72311263d892ce65331547531"
}
Frame {
msec: 2320
- hash: "bc5744ef5c81b7d5b365bf977f909be5"
+ hash: "585ad3efb7330de889b8cf56a51a0899"
}
Frame {
msec: 2336
- hash: "5bd588d64917f942e0f5ea1553acbf63"
+ hash: "236e54ae31e5ee3d08a7bc9aeaef0d9b"
}
Frame {
msec: 2352
- hash: "c0b0cddd62853ac3499b7ada200d206a"
+ hash: "d6218c8bb4da9d62bdb5d0cf5d7f8e37"
}
Key {
type: 6
- key: 16777236
- modifiers: 0
+ key: 16777249
+ modifiers: 67108864
+ text: ""
+ autorep: false
+ count: 1
+ }
+ Key {
+ type: 6
+ key: 16777248
+ modifiers: 100663296
text: ""
autorep: false
count: 1
}
Frame {
msec: 2368
- hash: "5c60da876c8cc9fa334905b5fc7c2a3d"
+ hash: "1dddd18a4ef66df9d9b431b2860e24d1"
}
Frame {
msec: 2384
- hash: "136a103a893991b97ec09f373c68c5b9"
+ hash: "5b1b45e75f5a829b31c0b6eb0189da7c"
}
Frame {
msec: 2400
- hash: "b2181ce0165ee060e1a8b713027011a9"
+ hash: "062091bc7a5f3296c669614318b80fe7"
}
Frame {
msec: 2416
- hash: "e4836bbaf1834658e3ec4bf54a619b53"
+ hash: "836f37fe92a46233640e0bd2c0932fea"
}
Frame {
msec: 2432
- hash: "3072492f5f72427c8d45cf3c5d3ff919"
+ hash: "f14ec1544a380fc9993b39754c23c2f4"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2448
- hash: "d897cba896239c77df4f7adb93ad5def"
+ hash: "2d549b5fea734e47682415df1717e6a6"
}
Frame {
msec: 2464
- hash: "ec9867a95de6d6f4c0f92af567d73771"
- }
- Key {
- type: 7
- key: 16777236
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "824c5960260dd3ed7527709ebfb06d27"
}
Frame {
msec: 2480
- hash: "06b72e3180eb946622e4592de0fa6f91"
+ hash: "258f034fe1e71f25a92e667e05f53e82"
}
Frame {
msec: 2496
- hash: "33f109c026eaefed113cc12db5912a19"
+ hash: "c432e758e19c44d788cb38df6e4c6d69"
}
Frame {
msec: 2512
- hash: "ce72c4b4470394dc1c4efd4d9de9907f"
+ hash: "a1856592208f9a00385b13c44e1c4503"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2528
- hash: "64ac1105ea10ae1f6401e8421731c606"
+ hash: "2b4d40a0555df0b86f52d13790185459"
}
Frame {
msec: 2544
- hash: "ef977bd74941d3506b8f3ee4b1f587ad"
+ hash: "b153143e6b16c47fa06663dc6b1034d6"
}
Frame {
msec: 2560
- hash: "9278de91e10788ae5a80399ff5372460"
+ hash: "ac52236c5d73aeae7c0834df1e6bd84e"
}
Frame {
msec: 2576
- hash: "ddaaf945a5f714b856ed5155f4e502b2"
+ hash: "136eeb348b0b96edc9aaf9fbea741973"
}
Frame {
msec: 2592
- hash: "f6bb6ba15d996345df04825da71c2cf3"
+ hash: "4f8a1dfa8906de2bcdfbf5c3b29fbf9b"
+ }
+ Key {
+ type: 6
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2608
- hash: "466c78a5a5052b39b113adeda761da6c"
+ hash: "7dc9726df2d112b46f4d9dbe66d534c7"
}
Frame {
msec: 2624
- hash: "db650537d773e0d8a737a7bf5f408a5e"
+ hash: "f64086ca0e83fa8bb0fae28065260fdc"
}
Frame {
msec: 2640
- hash: "64be9f85869f19defada296343895a2b"
+ hash: "5237dd2b79d71bbfa0a0d3963a7f42b7"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2656
- hash: "5ac6d9751bfadbc7aa064ca0b4d78b2b"
+ hash: "8dd435b577bb258979d33034885a8cd8"
}
Frame {
msec: 2672
- hash: "a088b351dcc6fc3a8d29256f3a2410c3"
+ hash: "2609c066b8f102b4189991bf7d01eaad"
}
Frame {
msec: 2688
- hash: "a16a77170a6c969042024fa0868da12d"
+ hash: "986fab22391264d04df9a55b18aee645"
}
Frame {
msec: 2704
- hash: "3a2509d0d3a314d2ed72f811f4af741e"
+ hash: "0256423680aa0843fe8ec84f5e68fc9b"
}
Frame {
msec: 2720
- hash: "484db4e1954048cad7eea48bfea08267"
- }
- Frame {
- msec: 2736
- hash: "ad0f84634c5f99ab62ab6d12ad8d8c6a"
- }
- Frame {
- msec: 2752
- hash: "d99b590307f6910963257a1c41c50120"
+ hash: "b822bdcad69aa868f48b2bbf2d62e297"
}
Key {
type: 6
key: 16777234
- modifiers: 0
+ modifiers: 100663296
text: ""
autorep: false
count: 1
}
Frame {
+ msec: 2736
+ hash: "14effed70ca60233be9b2f6d0a1b5e6c"
+ }
+ Frame {
+ msec: 2752
+ hash: "1abaf2c36a0fb9f04606c0e191d113cf"
+ }
+ Frame {
msec: 2768
- hash: "54f7f94b5cdf1becb2ee61d7f6f02c0e"
+ hash: "cffb8ca29b0369d183d6461bf9e63fdf"
}
Frame {
msec: 2784
- hash: "4220dde85eb1c027366efd0798927e8d"
+ hash: "9378bebddb09036bec98ff7018dcf7c1"
+ }
+ Key {
+ type: 7
+ key: 16777234
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 2800
- hash: "512b9746ae4482557b8cef9f99905954"
+ hash: "0c3823994ee8f838c26040118ba62622"
}
Frame {
msec: 2816
- hash: "e7346d8f223684143a0940def878b874"
+ hash: "d374547f47adc81a18428c7a79cb9cf2"
}
Frame {
msec: 2832
- hash: "4f097223462c8f619188b0b0c2ecb080"
+ hash: "449c2996a2d0e74f2300adad619700bc"
}
Frame {
msec: 2848
- hash: "243be452ff0798538defc6a14cb8a08b"
+ hash: "14379a320b6fc36de5d2a6776f1dc963"
}
Frame {
msec: 2864
- hash: "e5472ed9a8a43a64a0fea12540619940"
+ hash: "cb010a99ffa3b6df26c6cd263a21cfcd"
}
Frame {
msec: 2880
image: "cursorDelegate.2.png"
}
- Key {
- type: 7
- key: 16777234
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
Frame {
msec: 2896
- hash: "97d5f9fe02e4bd06ec30a7805945f167"
+ hash: "a445d23288d462009916e31f370a2068"
}
Frame {
msec: 2912
- hash: "eb381a1e2ad945e4cfa540c137edbda7"
+ hash: "8b3f2811300830e837797056f262bec2"
}
Frame {
msec: 2928
- hash: "75252ff61682fd32117f0759ebe4b6a1"
+ hash: "2303a27e72334cae84b4fe51a62974ba"
}
Frame {
msec: 2944
- hash: "d724bdacc59bce29d0a42d72479be0b6"
+ hash: "f3a9f3e74d2d83e38aee78cab7209bd6"
}
Frame {
msec: 2960
- hash: "d7703c18b69f485bba3abd655100b50d"
+ hash: "ca4777127a535655f057af57cf3e8c7b"
}
Frame {
msec: 2976
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "de2b65920fa9177a79019f33712c2275"
}
Frame {
msec: 2992
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "de2b65920fa9177a79019f33712c2275"
}
Frame {
msec: 3008
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "de2b65920fa9177a79019f33712c2275"
}
Frame {
msec: 3024
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "de2b65920fa9177a79019f33712c2275"
}
Frame {
msec: 3040
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "de2b65920fa9177a79019f33712c2275"
}
Frame {
msec: 3056
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "de2b65920fa9177a79019f33712c2275"
}
Frame {
msec: 3072
- hash: "d7703c18b69f485bba3abd655100b50d"
+ hash: "ca4777127a535655f057af57cf3e8c7b"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3088
- hash: "d724bdacc59bce29d0a42d72479be0b6"
+ hash: "83cfb141f6b77fa062443a442a5b2e9e"
}
Frame {
msec: 3104
- hash: "75252ff61682fd32117f0759ebe4b6a1"
+ hash: "b3e262864238d03f988c9750cc74e48f"
}
Frame {
msec: 3120
- hash: "eb381a1e2ad945e4cfa540c137edbda7"
+ hash: "6ed2086ae01be46f0684bbecc05484c4"
}
Frame {
msec: 3136
- hash: "97d5f9fe02e4bd06ec30a7805945f167"
+ hash: "91f6dad8f05577af6e4f5f0aceb06b4b"
}
Frame {
msec: 3152
- hash: "90b0f5f1aa7b5f066fb1266ea63254eb"
+ hash: "1bfb0c299c3c0db0518eaa54137c22b0"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3168
- hash: "e5472ed9a8a43a64a0fea12540619940"
+ hash: "37cc96ef4b760faadf76cc471f6ba49a"
}
Frame {
msec: 3184
- hash: "243be452ff0798538defc6a14cb8a08b"
+ hash: "67c848bf93e845eaf5eebc9b8e57482c"
}
Frame {
msec: 3200
- hash: "4f097223462c8f619188b0b0c2ecb080"
+ hash: "e3906ad9b1dfbd1170364c11ff4b286f"
}
Frame {
msec: 3216
- hash: "e7346d8f223684143a0940def878b874"
+ hash: "24dd59673c5659e3bf6f52723e1bcd07"
}
Frame {
msec: 3232
- hash: "512b9746ae4482557b8cef9f99905954"
+ hash: "4b694f05f147bcf901a16807d4e3ec7c"
}
Frame {
msec: 3248
- hash: "4220dde85eb1c027366efd0798927e8d"
+ hash: "9d9dbf34f6a67a49210caa249b8a1abb"
+ }
+ Key {
+ type: 6
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3264
- hash: "54f7f94b5cdf1becb2ee61d7f6f02c0e"
+ hash: "5381cde4763aa45c97793124e42db6f5"
}
Frame {
msec: 3280
- hash: "de09380dd57c58ae99fbdba169a19975"
+ hash: "0f113c0263faa47428c4d16891ac4d4f"
}
Frame {
msec: 3296
- hash: "bfc1b03df244839a012e8302dc07764f"
+ hash: "cc1767ec13803959333cd35bfb2d9119"
}
Frame {
msec: 3312
- hash: "d5f220e5337837ec0d07eb118e2f948e"
+ hash: "ec1b4c71f9bd63ccf6d766b0b2f68b30"
}
Frame {
msec: 3328
- hash: "7640c78a286b0b7bdf2ec9117ceced4a"
+ hash: "114ad78597ede2afc4dd8bafa1d4df21"
}
Frame {
msec: 3344
- hash: "680f51f63c4b11a247a668eb7bbd2b62"
+ hash: "d08dc22ddc707316483f09b796ea0380"
}
Frame {
msec: 3360
- hash: "de3c911aec7e42557ece4bdcf02ce562"
+ hash: "135b2b0f4e469b207e673d1e7086cd4f"
+ }
+ Key {
+ type: 7
+ key: 16777236
+ modifiers: 100663296
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3376
- hash: "5e09b95292d6d0afe76a5015b0ccebf1"
+ hash: "4267354fe0d24597bdb5ee1a6e9affbb"
}
Frame {
msec: 3392
- hash: "59d2fb8e21802d256b11730b31919fb3"
+ hash: "700bd56ecea646bbec2017007bbb5b84"
}
Frame {
msec: 3408
- hash: "a494b3b25a23daa858034ebccce0d1c7"
+ hash: "874a65c2069f4ba89301c129f884f217"
}
Frame {
msec: 3424
- hash: "2ff4bd5602c34c020162f0503d625049"
+ hash: "b5ec22f95abb43c83533f7dc606667f6"
}
Frame {
msec: 3440
- hash: "e715c2a82745829665226df78598b819"
+ hash: "445de6663e80d1fe1527ec5acf4ec1de"
}
Frame {
msec: 3456
- hash: "47ad557d366536ad457f6866241dba93"
+ hash: "87c129a5bf08536d3fca90375283e26b"
}
Frame {
msec: 3472
- hash: "70aedcda6c93875d18ee111d8a19549e"
+ hash: "a63e2438a9cd412c2b119cd42b11009f"
}
Frame {
msec: 3488
- hash: "c3487c7c7dcd392e7eacb74045dd4143"
+ hash: "61a3475bef5fd276b836cf3483526f57"
}
Frame {
msec: 3504
- hash: "56db24ad686d34e75a2d184e5b1da2a9"
+ hash: "097ab9a1a1fe9743f162f57b93599fe7"
+ }
+ Key {
+ type: 7
+ key: 16777249
+ modifiers: 33554432
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3520
- hash: "436349a8371597a74404428983cd894c"
+ hash: "ebae1fb540c6ff6b0bc9a951391e2e94"
}
Frame {
msec: 3536
- hash: "6e1bb59ec518614a0414092f4939d5ad"
+ hash: "ffc2da2e4c091eadaa9746b42b56d9e4"
+ }
+ Key {
+ type: 7
+ key: 16777248
+ modifiers: 0
+ text: ""
+ autorep: false
+ count: 1
}
Frame {
msec: 3552
- hash: "f0aa02772df579b921e0c68f794d2327"
+ hash: "f243d823fc9977e69a008010d8db8a01"
}
Frame {
msec: 3568
- hash: "09ea1462da333c2aeaaa01e9e4f8d54b"
+ hash: "592ac5bbf1c4b3a360be4d76c40a2be2"
}
Frame {
msec: 3584
- hash: "46d23d8472ce833591dcff548a644288"
+ hash: "bd5b206097f30dfce884a8c74856857d"
}
Frame {
msec: 3600
- hash: "a7566d5d35a89078bb378bf3f6c78e13"
+ hash: "f14ec1544a380fc9993b39754c23c2f4"
}
Frame {
msec: 3616
- hash: "4c5f7155b20e34a5627387cdc466e890"
+ hash: "836f37fe92a46233640e0bd2c0932fea"
}
Frame {
msec: 3632
- hash: "e9b98922327c412db0116a56283d3c86"
+ hash: "062091bc7a5f3296c669614318b80fe7"
}
Frame {
msec: 3648
- hash: "29ffede9c16c34ead5f291e69e388084"
+ hash: "5b1b45e75f5a829b31c0b6eb0189da7c"
}
Frame {
msec: 3664
- hash: "16958b8f0b1dbdc15333d99bd1349124"
+ hash: "1dddd18a4ef66df9d9b431b2860e24d1"
}
Frame {
msec: 3680
- hash: "3408f8d6e4d6ef34d4d5a0cb51090c4c"
+ hash: "d6218c8bb4da9d62bdb5d0cf5d7f8e37"
}
Frame {
msec: 3696
- hash: "b32b099b260789266d0a3c0edd61c04e"
+ hash: "236e54ae31e5ee3d08a7bc9aeaef0d9b"
}
Frame {
msec: 3712
- hash: "4dd3617b25e8b95cf2ec31db8b3bb80f"
+ hash: "585ad3efb7330de889b8cf56a51a0899"
}
Frame {
msec: 3728
- hash: "46b42a08c59909f067810d1984f7a04e"
+ hash: "c0eb56c72311263d892ce65331547531"
}
Frame {
msec: 3744
- hash: "ab8c505601c381e8a44fa7b6eea6579d"
+ hash: "a2e1dea5e5f37697c7ce1a9419b94f65"
}
Frame {
msec: 3760
- hash: "73f56e6e1d2cbf3f559d679eb2c15529"
+ hash: "718ac9cb5ef2992b06b34e957f987b7a"
}
Frame {
msec: 3776
- hash: "b230c56da330823d7d7f7e081c304acb"
+ hash: "ae2a644f96bd7b2662ebcf4ebc33d930"
}
Frame {
msec: 3792
- hash: "9f3cbd0023dbd78ba4951c26f71c7d5d"
+ hash: "54d04e64af5c0a3d29f2dc8c0977ed3a"
}
Frame {
msec: 3808
- hash: "9e9b11cf2695dd02c1ab175ff194f491"
+ hash: "8210b9cbf19f519ee34f4bb1a6afce16"
}
Frame {
msec: 3824
- hash: "8fa6f8eb5deb0ab95c3454e5812ada1d"
+ hash: "e83642b0793f5a790efca65ccf20a720"
}
Frame {
msec: 3840
@@ -1110,271 +1270,239 @@ VisualTest {
}
Frame {
msec: 3856
- hash: "0b6b24ae8df7c3aa9abb48edb6619d8a"
+ hash: "520a544fd92f17a14380803e253b396f"
}
Frame {
msec: 3872
- hash: "45805295dd2482fdf21ac8c9bfe47869"
+ hash: "0ac33070e0c736bc0fb5ab12fa444b5c"
}
Frame {
msec: 3888
- hash: "4893cd31a730d786f075edfd0afc0ad9"
+ hash: "5ee8c9dc7b238db131b3a078e46a8bbd"
}
Frame {
msec: 3904
- hash: "a3fbfe732568f5cf6e63809fd7e0c32e"
+ hash: "69720bcca91f99f229aebc74c5e74261"
}
Frame {
msec: 3920
- hash: "21d3327710d51f714e84b5a28df13e4f"
+ hash: "41d8f4031223f7c833d50208e231964a"
}
Frame {
msec: 3936
- hash: "ea065ab48f27f60505eab36debee3faa"
+ hash: "6fa8fd3252f367f3fafea4e3c7317a48"
}
Frame {
msec: 3952
- hash: "fe4c2e368d2110374b7ba9e30f330713"
+ hash: "8a1b63c42867f87a1cf4b47944b3860a"
}
Frame {
msec: 3968
- hash: "723281f6c1a3f03cf170e4de93fa4dbf"
+ hash: "8c6052eb4cf03d7742a73874d9f15285"
}
Frame {
msec: 3984
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4000
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4016
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4032
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4048
- hash: "e3948b393a3778066a90197b31c71e51"
+ hash: "7bae45481596788afde8866a3c97edd7"
}
Frame {
msec: 4064
- hash: "723281f6c1a3f03cf170e4de93fa4dbf"
- }
- Key {
- type: 6
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "8c6052eb4cf03d7742a73874d9f15285"
}
Frame {
msec: 4080
- hash: "c779e46a89c3c9d0f8234a3192175b60"
+ hash: "8a1b63c42867f87a1cf4b47944b3860a"
}
Frame {
msec: 4096
- hash: "f223cfeba468e161943b24ac960196de"
+ hash: "6fa8fd3252f367f3fafea4e3c7317a48"
}
Frame {
msec: 4112
- hash: "dd2f21f063d055edc23c874380149067"
+ hash: "41d8f4031223f7c833d50208e231964a"
}
Frame {
msec: 4128
- hash: "af580b32b67117eb062bbcefe262c719"
- }
- Key {
- type: 7
- key: 16777232
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "69720bcca91f99f229aebc74c5e74261"
}
Frame {
msec: 4144
- hash: "991f76d483e033024932790f85bb3c5d"
+ hash: "5ee8c9dc7b238db131b3a078e46a8bbd"
}
Frame {
msec: 4160
- hash: "3d8aa66ab9533d14a468f0869b457033"
+ hash: "0ac33070e0c736bc0fb5ab12fa444b5c"
}
Frame {
msec: 4176
- hash: "a5540bd5d088ab1201b5f22b32579d7c"
+ hash: "520a544fd92f17a14380803e253b396f"
}
Frame {
msec: 4192
- hash: "e0844f30578fef2cdcee4e4ff28ab7cf"
+ hash: "4a080a5154c517e6bcf24b3a1f1d7f2c"
}
Frame {
msec: 4208
- hash: "710e7022b65a9b3fd3a7372bf7f37c7a"
+ hash: "e83642b0793f5a790efca65ccf20a720"
}
Frame {
msec: 4224
- hash: "db553c856b11db7e6feb38b9d562a804"
+ hash: "8210b9cbf19f519ee34f4bb1a6afce16"
}
Frame {
msec: 4240
- hash: "6ba56c4ec6e903b0d82235c230ed78cb"
+ hash: "54d04e64af5c0a3d29f2dc8c0977ed3a"
}
Frame {
msec: 4256
- hash: "786de35a11c3fc1a228392195f509c28"
+ hash: "ae2a644f96bd7b2662ebcf4ebc33d930"
}
Frame {
msec: 4272
- hash: "cc6307597cea821b63391fc9bdbe038b"
+ hash: "718ac9cb5ef2992b06b34e957f987b7a"
}
Frame {
msec: 4288
- hash: "73d49e4d0bef103e11820d888bef0368"
+ hash: "a2e1dea5e5f37697c7ce1a9419b94f65"
}
Frame {
msec: 4304
- hash: "b2ed6ebf66252463326c2f220b3992fa"
+ hash: "c0eb56c72311263d892ce65331547531"
}
Frame {
msec: 4320
- hash: "129b5bc6d55621e2366fc0d80f105df2"
+ hash: "585ad3efb7330de889b8cf56a51a0899"
}
Frame {
msec: 4336
- hash: "ae8fe55fa9b497cd6eff18a517c301d8"
+ hash: "236e54ae31e5ee3d08a7bc9aeaef0d9b"
}
Frame {
msec: 4352
- hash: "535210bd848a20db2966b06278198e07"
+ hash: "d6218c8bb4da9d62bdb5d0cf5d7f8e37"
}
Frame {
msec: 4368
- hash: "1f4ea7783b5c60bfc424c73cea07a3a0"
+ hash: "1dddd18a4ef66df9d9b431b2860e24d1"
}
Frame {
msec: 4384
- hash: "5b61f2e9308c4de2864bb7cf133ce545"
+ hash: "5b1b45e75f5a829b31c0b6eb0189da7c"
}
Frame {
msec: 4400
- hash: "f641f87e9556ecfd24f0f0a772295e52"
+ hash: "062091bc7a5f3296c669614318b80fe7"
}
Frame {
msec: 4416
- hash: "36f28574c0b042647bc064d75afa9fbc"
+ hash: "836f37fe92a46233640e0bd2c0932fea"
}
Frame {
msec: 4432
- hash: "dba2ca165b8ab35113b8ec127b204ae9"
+ hash: "f14ec1544a380fc9993b39754c23c2f4"
}
Frame {
msec: 4448
- hash: "56324b95f63eabba718df588159f374d"
+ hash: "bd5b206097f30dfce884a8c74856857d"
}
Frame {
msec: 4464
- hash: "af65d67fef3c743e31acca03716040c4"
+ hash: "592ac5bbf1c4b3a360be4d76c40a2be2"
}
Frame {
msec: 4480
- hash: "105481b5becd127af4c28961d900148c"
+ hash: "f243d823fc9977e69a008010d8db8a01"
}
Frame {
msec: 4496
- hash: "4859d6bf9c456e52fd463e4c2f68d7f6"
+ hash: "ffc2da2e4c091eadaa9746b42b56d9e4"
}
Frame {
msec: 4512
- hash: "21c0958bd3c6a1056bb062165c9bc18b"
+ hash: "ebae1fb540c6ff6b0bc9a951391e2e94"
}
Frame {
msec: 4528
- hash: "287d258a79f45c26c92c69cce6b1a2f3"
+ hash: "097ab9a1a1fe9743f162f57b93599fe7"
}
Frame {
msec: 4544
- hash: "deabc5c7dd111adcb253eb833f118764"
+ hash: "61a3475bef5fd276b836cf3483526f57"
}
Frame {
msec: 4560
- hash: "4bad7380f6b645c551edbe06ff67cac9"
+ hash: "a63e2438a9cd412c2b119cd42b11009f"
}
Frame {
msec: 4576
- hash: "67fc71c16d0b9405c35590bafdc5ea40"
- }
- Key {
- type: 6
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "87c129a5bf08536d3fca90375283e26b"
}
Frame {
msec: 4592
- hash: "7aed794eae2f0c65342f190ed4d4f889"
+ hash: "445de6663e80d1fe1527ec5acf4ec1de"
}
Frame {
msec: 4608
- hash: "23edee3af8f1904558863d37c520555a"
+ hash: "b5ec22f95abb43c83533f7dc606667f6"
}
Frame {
msec: 4624
- hash: "2f9ed13e8a0d0edf098b05db02c04bdf"
- }
- Key {
- type: 7
- key: 16777233
- modifiers: 0
- text: ""
- autorep: false
- count: 1
+ hash: "874a65c2069f4ba89301c129f884f217"
}
Frame {
msec: 4640
- hash: "86ed2aa2428feb9c6c14ad2a74e97978"
+ hash: "700bd56ecea646bbec2017007bbb5b84"
}
Frame {
msec: 4656
- hash: "e189dc0dae9457a6af5082c6ccf451b6"
+ hash: "4267354fe0d24597bdb5ee1a6e9affbb"
}
Frame {
msec: 4672
- hash: "62d4bfa65bfdc50d24d9204f4df7bad8"
+ hash: "135b2b0f4e469b207e673d1e7086cd4f"
}
Frame {
msec: 4688
- hash: "5a11ec8a0485a018ebe317e01136e4a5"
+ hash: "d08dc22ddc707316483f09b796ea0380"
}
Frame {
msec: 4704
- hash: "9aa569f7b251371bdd1cb05c8d3aab28"
+ hash: "114ad78597ede2afc4dd8bafa1d4df21"
}
Frame {
msec: 4720
- hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e"
+ hash: "ec1b4c71f9bd63ccf6d766b0b2f68b30"
}
Frame {
msec: 4736
- hash: "a0cb3f796fddf7100ca19aee3dedbea8"
+ hash: "cc1767ec13803959333cd35bfb2d9119"
}
Frame {
msec: 4752
- hash: "b4e273b6415e3951eab2f831100b0bb2"
+ hash: "0f113c0263faa47428c4d16891ac4d4f"
}
Frame {
msec: 4768
- hash: "fd3fd655785c4e3c470f742451e3470f"
+ hash: "5381cde4763aa45c97793124e42db6f5"
}
Frame {
msec: 4784
- hash: "7a9b2057760e48d5f9cfdc79b08866d8"
+ hash: "99940d6744ac1245f82d62f08c371285"
}
Frame {
msec: 4800
@@ -1382,1998 +1510,42 @@ VisualTest {
}
Frame {
msec: 4816
- hash: "c6c90915393fc7cb0aaa464caefbadb0"
+ hash: "77bbed46c7eb023252cdd80d0a15f38a"
}
Frame {
msec: 4832
- hash: "36b65658073ac2687dbd88ec7a408a98"
+ hash: "36ee4da72825e96d5f670c94865a30d8"
}
Frame {
msec: 4848
- hash: "84e165f9f2c55c5c51a260b11ca195c2"
+ hash: "c64d56c1b7df0a5c63ab8ff08ae6daf9"
}
Frame {
msec: 4864
- hash: "c11cfcfda6f161d058a3d9e93349b578"
+ hash: "942e038a3426fa318212a8f245141225"
}
Frame {
msec: 4880
- hash: "0568f8c0e1fa51b7547790a7f4978ea3"
+ hash: "c033ebaee12dd8fe953e91160f986c3d"
}
Frame {
msec: 4896
- hash: "b66fd97ac36ac395df74e9a0dd58d0c7"
+ hash: "07e64024cf7eda082297f6f83dba8067"
}
Frame {
msec: 4912
- hash: "31b5b3d68e452ffd90e9804ff9e9a264"
+ hash: "b33cd5bbb90d435dd7ea3ab67bef88ee"
}
Frame {
msec: 4928
- hash: "3cc8791e419986e1e913d4e153243fb2"
+ hash: "90712efd7c17b0ad33d2c2c02e9eaa97"
}
Frame {
msec: 4944
- hash: "ff1b3ce85bc9f3dd3feb90fa31c3bc0a"
+ hash: "7e2e55555ee2c7e172e61ddb6365355d"
}
Frame {
msec: 4960
- hash: "d3ae969e538c642d82662d08ef05964e"
- }
- Frame {
- msec: 4976
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 4992
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 5008
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 5024
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 5040
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 5056
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 5072
- hash: "d3ae969e538c642d82662d08ef05964e"
- }
- Frame {
- msec: 5088
- hash: "ff1b3ce85bc9f3dd3feb90fa31c3bc0a"
- }
- Frame {
- msec: 5104
- hash: "3cc8791e419986e1e913d4e153243fb2"
- }
- Frame {
- msec: 5120
- hash: "31b5b3d68e452ffd90e9804ff9e9a264"
- }
- Frame {
- msec: 5136
- hash: "b66fd97ac36ac395df74e9a0dd58d0c7"
- }
- Frame {
- msec: 5152
- hash: "0568f8c0e1fa51b7547790a7f4978ea3"
- }
- Frame {
- msec: 5168
- hash: "c11cfcfda6f161d058a3d9e93349b578"
- }
- Frame {
- msec: 5184
- hash: "84e165f9f2c55c5c51a260b11ca195c2"
- }
- Frame {
- msec: 5200
- hash: "36b65658073ac2687dbd88ec7a408a98"
- }
- Frame {
- msec: 5216
- hash: "c6c90915393fc7cb0aaa464caefbadb0"
- }
- Frame {
- msec: 5232
- hash: "2a55b52db02d97963d382c9862307384"
- }
- Frame {
- msec: 5248
- hash: "7a9b2057760e48d5f9cfdc79b08866d8"
- }
- Frame {
- msec: 5264
- hash: "fd3fd655785c4e3c470f742451e3470f"
- }
- Frame {
- msec: 5280
- hash: "b4e273b6415e3951eab2f831100b0bb2"
- }
- Frame {
- msec: 5296
- hash: "a0cb3f796fddf7100ca19aee3dedbea8"
- }
- Frame {
- msec: 5312
- hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e"
- }
- Frame {
- msec: 5328
- hash: "9aa569f7b251371bdd1cb05c8d3aab28"
- }
- Frame {
- msec: 5344
- hash: "5a11ec8a0485a018ebe317e01136e4a5"
- }
- Frame {
- msec: 5360
- hash: "62d4bfa65bfdc50d24d9204f4df7bad8"
- }
- Frame {
- msec: 5376
- hash: "e189dc0dae9457a6af5082c6ccf451b6"
- }
- Frame {
- msec: 5392
- hash: "86ed2aa2428feb9c6c14ad2a74e97978"
- }
- Frame {
- msec: 5408
- hash: "2f9ed13e8a0d0edf098b05db02c04bdf"
- }
- Frame {
- msec: 5424
- hash: "23edee3af8f1904558863d37c520555a"
- }
- Frame {
- msec: 5440
- hash: "7aed794eae2f0c65342f190ed4d4f889"
- }
- Frame {
- msec: 5456
- hash: "0fa12b48c08266f50e77506e4136dd56"
- }
- Frame {
- msec: 5472
- hash: "679ee2b26a118ab53a84fa116de09edf"
- }
- Frame {
- msec: 5488
- hash: "b9dcdd88fba70636cbcae160edcc0136"
- }
- Frame {
- msec: 5504
- hash: "90af75eeef63ae67e9f6ff1a61d7cca3"
- }
- Frame {
- msec: 5520
- hash: "29d80ae32451c24b655c4d1fd01d3aa1"
- }
- Frame {
- msec: 5536
- hash: "c73fe137644cbc006d0b5274b72faa46"
- }
- Frame {
- msec: 5552
- hash: "8a4d76ae60f5d720a382cced2f6a2b5e"
- }
- Frame {
- msec: 5568
- hash: "a1efa0d424d568d338c6db9fc095c2fb"
- }
- Frame {
- msec: 5584
- hash: "205cafcabb29b78a6db3dcaf44a74ab6"
- }
- Frame {
- msec: 5600
- hash: "7507a3d2158d4cc68454c85922526871"
- }
- Frame {
- msec: 5616
- hash: "7135a6a7999e82cb81e39228805332ee"
- }
- Frame {
- msec: 5632
- hash: "ac2b714b5f32d2b911f31690d7082dc1"
- }
- Frame {
- msec: 5648
- hash: "5cb1ae6d86aafdf11284480c81b939dc"
- }
- Frame {
- msec: 5664
- hash: "ac705840cc94eb4af7a52d62649d0157"
- }
- Frame {
- msec: 5680
- hash: "8c2ebcd80e26ac7b9d25be486f54c4ce"
- }
- Frame {
- msec: 5696
- hash: "12b84aa02dbbab3592d3eb3cb6884b41"
- }
- Frame {
- msec: 5712
- hash: "675043ddde6ed65a3ec4ed093be1e760"
- }
- Frame {
- msec: 5728
- hash: "478126aeef5ddae9c0a77d08294cf3f2"
- }
- Frame {
- msec: 5744
- hash: "0b43af73d91a500ccdf27b4347b9bc47"
- }
- Frame {
- msec: 5760
- image: "cursorDelegate.5.png"
- }
- Frame {
- msec: 5776
- hash: "a6d8708d08bedf0cab5230d6f2936936"
- }
- Frame {
- msec: 5792
- hash: "02e0646024aeef6f01b7541b15267baa"
- }
- Frame {
- msec: 5808
- hash: "da6717c94b46ad7a647c445c06314b0d"
- }
- Frame {
- msec: 5824
- hash: "2ed12d49d72884160ebbf6b6d0e15a9d"
- }
- Frame {
- msec: 5840
- hash: "a1fbc3333b7f742a8336a6fcbad156c9"
- }
- Frame {
- msec: 5856
- hash: "25cac33299d58cdd7775e8b75410085e"
- }
- Frame {
- msec: 5872
- hash: "5d81833eb342f632945c0571e18cb1f9"
- }
- Frame {
- msec: 5888
- hash: "23f6f2a7d971494af43a0fb97dbf8fb5"
- }
- Frame {
- msec: 5904
- hash: "216b70d02a4685dc07258454bb4e7c85"
- }
- Frame {
- msec: 5920
- hash: "1e06742af58d6e63facdc599c46e11b1"
- }
- Frame {
- msec: 5936
- hash: "00f8ac72d3794ed8d66db987402ecde0"
- }
- Frame {
- msec: 5952
- hash: "42ab5f162acba94f563823f5be1e37d2"
- }
- Frame {
- msec: 5968
- hash: "3272b97fdc54eb9f3590e7bbe4ac457d"
- }
- Frame {
- msec: 5984
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 6000
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 6016
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 6032
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 6048
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 6064
- hash: "3272b97fdc54eb9f3590e7bbe4ac457d"
- }
- Frame {
- msec: 6080
- hash: "42ab5f162acba94f563823f5be1e37d2"
- }
- Frame {
- msec: 6096
- hash: "00f8ac72d3794ed8d66db987402ecde0"
- }
- Frame {
- msec: 6112
- hash: "1e06742af58d6e63facdc599c46e11b1"
- }
- Frame {
- msec: 6128
- hash: "216b70d02a4685dc07258454bb4e7c85"
- }
- Frame {
- msec: 6144
- hash: "23f6f2a7d971494af43a0fb97dbf8fb5"
- }
- Frame {
- msec: 6160
- hash: "5d81833eb342f632945c0571e18cb1f9"
- }
- Frame {
- msec: 6176
- hash: "25cac33299d58cdd7775e8b75410085e"
- }
- Frame {
- msec: 6192
- hash: "a1fbc3333b7f742a8336a6fcbad156c9"
- }
- Frame {
- msec: 6208
- hash: "2ed12d49d72884160ebbf6b6d0e15a9d"
- }
- Frame {
- msec: 6224
- hash: "da6717c94b46ad7a647c445c06314b0d"
- }
- Frame {
- msec: 6240
- hash: "02e0646024aeef6f01b7541b15267baa"
- }
- Frame {
- msec: 6256
- hash: "a6d8708d08bedf0cab5230d6f2936936"
- }
- Frame {
- msec: 6272
- hash: "68d459091a85f24ece39a207e395039b"
- }
- Frame {
- msec: 6288
- hash: "0b43af73d91a500ccdf27b4347b9bc47"
- }
- Frame {
- msec: 6304
- hash: "478126aeef5ddae9c0a77d08294cf3f2"
- }
- Frame {
- msec: 6320
- hash: "675043ddde6ed65a3ec4ed093be1e760"
- }
- Frame {
- msec: 6336
- hash: "12b84aa02dbbab3592d3eb3cb6884b41"
- }
- Frame {
- msec: 6352
- hash: "8c2ebcd80e26ac7b9d25be486f54c4ce"
- }
- Frame {
- msec: 6368
- hash: "ac705840cc94eb4af7a52d62649d0157"
- }
- Frame {
- msec: 6384
- hash: "5cb1ae6d86aafdf11284480c81b939dc"
- }
- Frame {
- msec: 6400
- hash: "ac2b714b5f32d2b911f31690d7082dc1"
- }
- Frame {
- msec: 6416
- hash: "7135a6a7999e82cb81e39228805332ee"
- }
- Frame {
- msec: 6432
- hash: "7507a3d2158d4cc68454c85922526871"
- }
- Frame {
- msec: 6448
- hash: "205cafcabb29b78a6db3dcaf44a74ab6"
- }
- Frame {
- msec: 6464
- hash: "a1efa0d424d568d338c6db9fc095c2fb"
- }
- Frame {
- msec: 6480
- hash: "8a4d76ae60f5d720a382cced2f6a2b5e"
- }
- Frame {
- msec: 6496
- hash: "c73fe137644cbc006d0b5274b72faa46"
- }
- Frame {
- msec: 6512
- hash: "29d80ae32451c24b655c4d1fd01d3aa1"
- }
- Frame {
- msec: 6528
- hash: "90af75eeef63ae67e9f6ff1a61d7cca3"
- }
- Frame {
- msec: 6544
- hash: "b9dcdd88fba70636cbcae160edcc0136"
- }
- Frame {
- msec: 6560
- hash: "679ee2b26a118ab53a84fa116de09edf"
- }
- Frame {
- msec: 6576
- hash: "0fa12b48c08266f50e77506e4136dd56"
- }
- Frame {
- msec: 6592
- hash: "7aed794eae2f0c65342f190ed4d4f889"
- }
- Frame {
- msec: 6608
- hash: "23edee3af8f1904558863d37c520555a"
- }
- Frame {
- msec: 6624
- hash: "2f9ed13e8a0d0edf098b05db02c04bdf"
- }
- Frame {
- msec: 6640
- hash: "86ed2aa2428feb9c6c14ad2a74e97978"
- }
- Frame {
- msec: 6656
- hash: "e189dc0dae9457a6af5082c6ccf451b6"
- }
- Frame {
- msec: 6672
- hash: "62d4bfa65bfdc50d24d9204f4df7bad8"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 271; y: 89
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6688
- hash: "680f51f63c4b11a247a668eb7bbd2b62"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 271; y: 92
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6704
- hash: "7640c78a286b0b7bdf2ec9117ceced4a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 271; y: 95
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 270; y: 99
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6720
- image: "cursorDelegate.6.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 269; y: 103
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6736
- hash: "bfc1b03df244839a012e8302dc07764f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 268; y: 107
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6752
- hash: "de09380dd57c58ae99fbdba169a19975"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 266; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6768
- hash: "54f7f94b5cdf1becb2ee61d7f6f02c0e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 266; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6784
- hash: "4220dde85eb1c027366efd0798927e8d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 265; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6800
- hash: "512b9746ae4482557b8cef9f99905954"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 263; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 261; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6816
- hash: "e7346d8f223684143a0940def878b874"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 259; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6832
- hash: "7e7382302681cd29a2c6959a3a704660"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 256; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6848
- hash: "ef8f7dfdd4e70100ecaecca4055d8f52"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 250; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 243; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6864
- hash: "f5cacabb78b88c31af1a1b1e6f60069b"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 235; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6880
- hash: "b016ef2306b0a721df86b6916e7953e4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 227; y: 121
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6896
- hash: "a78e9b0b93569b77b0659c771336971a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 124
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 209; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6912
- hash: "b957ab07bcbaeffca963d9148130a965"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 200; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6928
- hash: "140bc4b078bac52d6903bdfdfc35a94c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 190; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6944
- hash: "047c3a7403ae88cceb7fc875793d1ed8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 181; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 172; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6960
- hash: "03d48446aaf94450a3a9a8f1e956493f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 127
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6976
- hash: "6672e47aa6a975fbd82d2fe5bc99bbaf"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 154; y: 126
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 6992
- hash: "3bc73489d06e446d4c96117756a59227"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 146; y: 124
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 138; y: 121
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7008
- hash: "aed995a61df4a1c189ef2962000d02de"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 130; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7024
- hash: "aed995a61df4a1c189ef2962000d02de"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 123; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7040
- hash: "74f0bbe92a23146fbdbd365edd5741c8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 118; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 114; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7056
- hash: "74f0bbe92a23146fbdbd365edd5741c8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 110; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7072
- hash: "6456208c6367687b8dc701791eccd7d4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 108; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7088
- hash: "376b59dc6e00a51bc9f2d4cfa2718e57"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 107; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 106; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7104
- hash: "fb7bc3401f70ce6eee131c9c7510e1fe"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 105; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7120
- hash: "675a419f0cd8351d6b2a65daf7d2707a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 104; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7136
- hash: "2f7951abac64e0f10d3b66d04966b6e9"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7152
- hash: "1f8daa78c58ae11ec105bd87681c1762"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7168
- hash: "23ab196ed43219c26d94431698f6ac8d"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7184
- hash: "9581e2695f4818e063ec032cb5bb6b7f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7200
- hash: "6752cd7c5383e0ccc9b08f79db6ac310"
- }
- Frame {
- msec: 7216
- hash: "51f5675e0fb1410c5a8ec03a86b42681"
- }
- Frame {
- msec: 7232
- hash: "c3c23213b2649b5ccabd8e420a251e00"
- }
- Frame {
- msec: 7248
- hash: "02ceab31171fe983a10e862b53aea16f"
- }
- Frame {
- msec: 7264
- hash: "8a774dda9a1bc16bd270724e570daf20"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 100; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7280
- hash: "2b6b892cebfcce14a9db485fecf16703"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7296
- hash: "8b8e6d3362f018cbd9b487f03cfb7a22"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 101; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7312
- hash: "a8477a9429633384073618cc60841e6c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 102; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7328
- hash: "59558c6665b73f02809259e039b4423a"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 103; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7344
- hash: "93540071bab8a970a929d209f628970e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 104; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 105; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7360
- hash: "78cdb0a05583150ea33040d32d95de47"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 107; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7376
- hash: "4b1ee34985d3f5b8dd4355678ad39af4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 110; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7392
- hash: "5484e7699c388eabf0311de49706397f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 113; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 117; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7408
- hash: "dee6c2380f398323002ebb43a38d27e8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 124; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7424
- hash: "d66a27728e7fd3c616842613a034c5a0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 131; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7440
- hash: "5f851161f99fcf5b67cbe008a3faf411"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 138; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 144; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7456
- hash: "013e949285cfa9edb34ab14e26753230"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 148; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 152; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7472
- hash: "5b50acdcbd49969bcce2cfab6f9af380"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 155; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7488
- hash: "d4aeb24211007cfc01512d289ae7aa01"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 157; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7504
- hash: "6f1b7e12bbf54586e9a48989145f3274"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 159; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 162; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7520
- hash: "0e09c7468bc03770c6cc7f0fba1ee9c0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 163; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7536
- hash: "0fc4522bbf1a2e72002eb0a3c7224e1f"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 165; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7552
- hash: "91727292aaa314bf263c618a577b7f74"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 166; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 168; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7568
- hash: "a78fb2545d11c521a50a10fd2d1700a7"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 171; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7584
- hash: "c207a291b47628921125acd4b8ed5ea8"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 174; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7600
- hash: "9a8e3df504ba36e82c51d71a3f5ce268"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 177; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 183; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7616
- hash: "8cd9da94db91da50ae457d41866a32ba"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 188; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7632
- hash: "9e52b6fdc3ce4ad9c5986e47ffa762fc"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 193; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7648
- hash: "a1aff55bffb76bd4e2ac9ee482a03978"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 198; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 206; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7664
- hash: "ba52431b72683cfbf0cc795a2407630e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 209; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7680
- image: "cursorDelegate.7.png"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 211; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7696
- hash: "eb5a19fbfbdceef233ed3c86c782817c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 119
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 212; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7712
- hash: "7c8f3f2e96fa6a63867cb716061c8c77"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 213; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7728
- hash: "96b0007f857aa19b41d184a7c7931f69"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 214; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7744
- hash: "96201712b9ffbd9bfbebb5a5b7e23aba"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7760
- hash: "d75e13a7715d5c329a47fdb818dfdbe5"
- }
- Frame {
- msec: 7776
- hash: "c8fa0c2d9e6aa1f3a33e76a31534359d"
- }
- Frame {
- msec: 7792
- hash: "03b11cc517f84c58a681906fdda98347"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 215; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7808
- hash: "74cdf8af5d56216ad422951a56661536"
- }
- Frame {
- msec: 7824
- hash: "fcac2575aad872eada547508f312f09c"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 118
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7840
- hash: "7d76aec1f29d2d6745585be8ef113be5"
- }
- Frame {
- msec: 7856
- hash: "2b4fe4f39433671a9bc440efa1c589a8"
- }
- Frame {
- msec: 7872
- hash: "55a166f920e76173e14121d848a11aa0"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 117
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7888
- hash: "f764df8ecd68161d3529800e922254f4"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7904
- hash: "749caf21947e915b163f72e6fd190032"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 216; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7920
- hash: "c350910df8ae4fea573a20d334fd3401"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 217; y: 116
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7936
- hash: "d177da450f1d380a6d2406e2393b9582"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 218; y: 115
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7952
- hash: "bf3da78d7cac19daf2d5150b77840b1e"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 219; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7968
- hash: "22e337b0b81b18045a205355da6981ad"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 220; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 7984
- hash: "66c66927d2fc590fc43c146a403c1ccb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 221; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 113
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8000
- hash: "66c66927d2fc590fc43c146a403c1ccb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 113
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8016
- hash: "66c66927d2fc590fc43c146a403c1ccb"
- }
- Frame {
- msec: 8032
- hash: "66c66927d2fc590fc43c146a403c1ccb"
- }
- Frame {
- msec: 8048
- hash: "66c66927d2fc590fc43c146a403c1ccb"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8064
- hash: "22e337b0b81b18045a205355da6981ad"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 222; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8080
- hash: "bf3da78d7cac19daf2d5150b77840b1e"
- }
- Frame {
- msec: 8096
- hash: "d177da450f1d380a6d2406e2393b9582"
- }
- Frame {
- msec: 8112
- hash: "c350910df8ae4fea573a20d334fd3401"
- }
- Frame {
- msec: 8128
- hash: "749caf21947e915b163f72e6fd190032"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 222; y: 114
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8144
- hash: "f764df8ecd68161d3529800e922254f4"
- }
- Frame {
- msec: 8160
- hash: "55a166f920e76173e14121d848a11aa0"
- }
- Frame {
- msec: 8176
- hash: "2b4fe4f39433671a9bc440efa1c589a8"
- }
- Frame {
- msec: 8192
- hash: "7d76aec1f29d2d6745585be8ef113be5"
- }
- Frame {
- msec: 8208
- hash: "fcac2575aad872eada547508f312f09c"
- }
- Frame {
- msec: 8224
- hash: "74cdf8af5d56216ad422951a56661536"
- }
- Frame {
- msec: 8240
- hash: "03b11cc517f84c58a681906fdda98347"
- }
- Frame {
- msec: 8256
- hash: "c8fa0c2d9e6aa1f3a33e76a31534359d"
- }
- Frame {
- msec: 8272
- hash: "d75e13a7715d5c329a47fdb818dfdbe5"
- }
- Frame {
- msec: 8288
- hash: "96201712b9ffbd9bfbebb5a5b7e23aba"
- }
- Frame {
- msec: 8304
- hash: "96b0007f857aa19b41d184a7c7931f69"
- }
- Frame {
- msec: 8320
- hash: "bff5b731de7c93fa0cdcefbf99beeb5e"
- }
- Frame {
- msec: 8336
- hash: "ce76704964873be1bc6a324d8a3381be"
- }
- Frame {
- msec: 8352
- hash: "a31b4f2a3defc968098029328de9352d"
- }
- Frame {
- msec: 8368
- hash: "295e3f40a511bd30e1c6599ead93619a"
- }
- Frame {
- msec: 8384
- hash: "3cd74da8b04de8ec7446490dea0e4e6c"
- }
- Frame {
- msec: 8400
- hash: "78a7db5a316609136d1b873d20d5dd3e"
- }
- Frame {
- msec: 8416
- hash: "0f176fb11bfe26f872ef7103011df9e6"
- }
- Frame {
- msec: 8432
- hash: "47866013e79bc77607e0c40bf8457bed"
- }
- Frame {
- msec: 8448
- hash: "5f35467db5c5e0baf5caff90b97e2d0c"
- }
- Frame {
- msec: 8464
- hash: "fefa89763cc1ad8323fdf37b1f5f63d3"
- }
- Frame {
- msec: 8480
- hash: "b9823f88fa51944075ce6dedd695f097"
- }
- Frame {
- msec: 8496
- hash: "72521de21fcc57d6ccf16350b0df8eee"
- }
- Frame {
- msec: 8512
- hash: "fcd591a2e56ba5efa95b315b7bd10532"
- }
- Frame {
- msec: 8528
- hash: "5d437d59995741030e0975829712f85d"
- }
- Frame {
- msec: 8544
- hash: "e7189d174b181985b6aef10b8642726f"
- }
- Frame {
- msec: 8560
- hash: "cefadbae14e573f6c83d07ffc3a5152e"
- }
- Mouse {
- type: 2
- button: 1
- buttons: 1
- x: 277; y: 97
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8576
- hash: "0fa12b48c08266f50e77506e4136dd56"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 277; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8592
- hash: "7aed794eae2f0c65342f190ed4d4f889"
- }
- Mouse {
- type: 5
- button: 0
- buttons: 1
- x: 276; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8608
- hash: "23edee3af8f1904558863d37c520555a"
- }
- Mouse {
- type: 3
- button: 1
- buttons: 0
- x: 276; y: 98
- modifiers: 0
- sendToViewport: true
- }
- Frame {
- msec: 8624
- hash: "2f9ed13e8a0d0edf098b05db02c04bdf"
- }
- Frame {
- msec: 8640
- image: "cursorDelegate.8.png"
- }
- Frame {
- msec: 8656
- hash: "e189dc0dae9457a6af5082c6ccf451b6"
- }
- Frame {
- msec: 8672
- hash: "62d4bfa65bfdc50d24d9204f4df7bad8"
- }
- Frame {
- msec: 8688
- hash: "5a11ec8a0485a018ebe317e01136e4a5"
- }
- Frame {
- msec: 8704
- hash: "9aa569f7b251371bdd1cb05c8d3aab28"
- }
- Frame {
- msec: 8720
- hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e"
- }
- Frame {
- msec: 8736
- hash: "a0cb3f796fddf7100ca19aee3dedbea8"
- }
- Frame {
- msec: 8752
- hash: "b4e273b6415e3951eab2f831100b0bb2"
- }
- Frame {
- msec: 8768
- hash: "fd3fd655785c4e3c470f742451e3470f"
- }
- Frame {
- msec: 8784
- hash: "7a9b2057760e48d5f9cfdc79b08866d8"
- }
- Frame {
- msec: 8800
- hash: "2a55b52db02d97963d382c9862307384"
- }
- Frame {
- msec: 8816
- hash: "c6c90915393fc7cb0aaa464caefbadb0"
- }
- Frame {
- msec: 8832
- hash: "36b65658073ac2687dbd88ec7a408a98"
- }
- Frame {
- msec: 8848
- hash: "84e165f9f2c55c5c51a260b11ca195c2"
- }
- Frame {
- msec: 8864
- hash: "c11cfcfda6f161d058a3d9e93349b578"
- }
- Frame {
- msec: 8880
- hash: "0568f8c0e1fa51b7547790a7f4978ea3"
- }
- Frame {
- msec: 8896
- hash: "b66fd97ac36ac395df74e9a0dd58d0c7"
- }
- Frame {
- msec: 8912
- hash: "31b5b3d68e452ffd90e9804ff9e9a264"
- }
- Frame {
- msec: 8928
- hash: "3cc8791e419986e1e913d4e153243fb2"
- }
- Frame {
- msec: 8944
- hash: "ff1b3ce85bc9f3dd3feb90fa31c3bc0a"
- }
- Frame {
- msec: 8960
- hash: "d3ae969e538c642d82662d08ef05964e"
- }
- Frame {
- msec: 8976
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 8992
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 9008
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 9024
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 9040
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 9056
- hash: "e3948b393a3778066a90197b31c71e51"
- }
- Frame {
- msec: 9072
- hash: "d3ae969e538c642d82662d08ef05964e"
- }
- Frame {
- msec: 9088
- hash: "ff1b3ce85bc9f3dd3feb90fa31c3bc0a"
- }
- Frame {
- msec: 9104
- hash: "3cc8791e419986e1e913d4e153243fb2"
- }
- Frame {
- msec: 9120
- hash: "31b5b3d68e452ffd90e9804ff9e9a264"
- }
- Frame {
- msec: 9136
- hash: "b66fd97ac36ac395df74e9a0dd58d0c7"
- }
- Frame {
- msec: 9152
- hash: "0568f8c0e1fa51b7547790a7f4978ea3"
- }
- Frame {
- msec: 9168
- hash: "c11cfcfda6f161d058a3d9e93349b578"
- }
- Frame {
- msec: 9184
- hash: "84e165f9f2c55c5c51a260b11ca195c2"
- }
- Frame {
- msec: 9200
- hash: "36b65658073ac2687dbd88ec7a408a98"
- }
- Frame {
- msec: 9216
- hash: "c6c90915393fc7cb0aaa464caefbadb0"
- }
- Frame {
- msec: 9232
- hash: "2a55b52db02d97963d382c9862307384"
- }
- Frame {
- msec: 9248
- hash: "7a9b2057760e48d5f9cfdc79b08866d8"
- }
- Frame {
- msec: 9264
- hash: "fd3fd655785c4e3c470f742451e3470f"
- }
- Frame {
- msec: 9280
- hash: "b4e273b6415e3951eab2f831100b0bb2"
- }
- Frame {
- msec: 9296
- hash: "a0cb3f796fddf7100ca19aee3dedbea8"
- }
- Frame {
- msec: 9312
- hash: "a242c9d5ed7f9aef0a0622dcb66d0a7e"
- }
- Frame {
- msec: 9328
- hash: "9aa569f7b251371bdd1cb05c8d3aab28"
- }
- Frame {
- msec: 9344
- hash: "5a11ec8a0485a018ebe317e01136e4a5"
- }
- Frame {
- msec: 9360
- hash: "62d4bfa65bfdc50d24d9204f4df7bad8"
- }
- Frame {
- msec: 9376
- hash: "e189dc0dae9457a6af5082c6ccf451b6"
- }
- Frame {
- msec: 9392
- hash: "86ed2aa2428feb9c6c14ad2a74e97978"
- }
- Frame {
- msec: 9408
- hash: "2f9ed13e8a0d0edf098b05db02c04bdf"
- }
- Frame {
- msec: 9424
- hash: "23edee3af8f1904558863d37c520555a"
+ hash: "87ca0584879b25336a1023ac3252fc9a"
}
}
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.0.png
deleted file mode 100644
index 2b45a061da..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.1.png
deleted file mode 100644
index 1f5bae01c3..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.1.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.2.png
deleted file mode 100644
index cb2b5a4aa3..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.2.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.3.png
deleted file mode 100644
index aa24805e0c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.3.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.4.png
deleted file mode 100644
index aa24805e0c..0000000000
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data/echoMode.4.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/echoMode.qml
index 5d11403232..83ec088a79 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 17e13fd31f..f36a752ff2 100644
--- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml
+++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/hAlign.qml
@@ -1,38 +1,40 @@
import QtQuick 1.0
+import "../shared" 1.0
Item{
width:600;
height:300;
- Column{
- TextInput{
- text: "Jackdaws love my big sphinx of quartz";
+ Column {
+ //Because they have auto width, these three should look the same
+ 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 318af0f7f9..758717ea2b 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/rect/GradientRect.qml b/tests/auto/declarative/qmlvisual/rect/GradientRect.qml
index dea53778a7..5ac7dcf239 100644
--- a/tests/auto/declarative/qmlvisual/rect/GradientRect.qml
+++ b/tests/auto/declarative/qmlvisual/rect/GradientRect.qml
@@ -9,11 +9,11 @@ Item {
property int borderWidth
property bool smooth: false
- width: 80; height: 80
+ width: 40; height: 40
Item {
anchors.centerIn: parent; rotation: rect.rotation;
Rectangle {
- anchors.centerIn: parent; width: 80; height: 80
+ anchors.centerIn: parent; width: 40; height: 40
border.color: rect.border; border.width: rect.border != Qt.rgba(0,0,0,0) ? 2 : 0
radius: rect.radius; smooth: rect.smooth
gradient: Gradient {
diff --git a/tests/auto/declarative/qmlvisual/rect/MyRect.qml b/tests/auto/declarative/qmlvisual/rect/MyRect.qml
index a595f7dbc0..99226d35d4 100644
--- a/tests/auto/declarative/qmlvisual/rect/MyRect.qml
+++ b/tests/auto/declarative/qmlvisual/rect/MyRect.qml
@@ -9,11 +9,11 @@ Item {
property int borderWidth
property bool smooth: false
- width: 80; height: 80
+ width: 40; height: 40
Item {
anchors.centerIn: parent; rotation: rect.rotation;
Rectangle {
- anchors.centerIn: parent; width: 80; height: 80
+ anchors.centerIn: parent; width: 40; height: 40
color: rect.color; border.color: rect.border; border.width: rect.border != Qt.rgba(0,0,0,0) ? 2 : 0
radius: rect.radius; smooth: rect.smooth
}
diff --git a/tests/auto/declarative/qmlvisual/rect/data/GradientRect.0.png b/tests/auto/declarative/qmlvisual/rect/data/GradientRect.0.png
new file mode 100644
index 0000000000..2ca5d2821d
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/rect/data/GradientRect.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/rect/data/GradientRect.qml b/tests/auto/declarative/qmlvisual/rect/data/GradientRect.qml
new file mode 100644
index 0000000000..116ab2ae35
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/rect/data/GradientRect.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "GradientRect.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/rect/data/MyRect.0.png b/tests/auto/declarative/qmlvisual/rect/data/MyRect.0.png
new file mode 100644
index 0000000000..3eb9a8d52f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/rect/data/MyRect.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/rect/data/MyRect.qml b/tests/auto/declarative/qmlvisual/rect/data/MyRect.qml
new file mode 100644
index 0000000000..72141c830c
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/rect/data/MyRect.qml
@@ -0,0 +1,11 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "MyRect.0.png"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/rect/data/rect-painting.0.png b/tests/auto/declarative/qmlvisual/rect/data/rect-painting.0.png
index 3b7970d24e..1dc9372dc1 100644
--- a/tests/auto/declarative/qmlvisual/rect/data/rect-painting.0.png
+++ b/tests/auto/declarative/qmlvisual/rect/data/rect-painting.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/rect/data/rect-painting.qml b/tests/auto/declarative/qmlvisual/rect/data/rect-painting.qml
index 7c42d1366a..9fc073caf7 100644
--- a/tests/auto/declarative/qmlvisual/rect/data/rect-painting.qml
+++ b/tests/auto/declarative/qmlvisual/rect/data/rect-painting.qml
@@ -6,282 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 32
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 48
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 64
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 80
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 96
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 112
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 128
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 144
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 160
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 176
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 192
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 208
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 224
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 240
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 256
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 272
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 288
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 304
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 320
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 336
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 352
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 368
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 384
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 400
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 416
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 432
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 448
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 464
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 480
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 496
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 512
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 528
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 544
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 560
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 576
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 592
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 608
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 624
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 640
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 656
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 672
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 688
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 704
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 720
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 736
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 752
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 768
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 784
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 800
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 816
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 832
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 848
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 864
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 880
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 896
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 912
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 928
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 944
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 960
image: "rect-painting.0.png"
}
- Frame {
- msec: 976
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 992
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 1008
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 1024
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 1040
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 1056
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 1072
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
- Frame {
- msec: 1088
- hash: "79998980caccd4eb479fbd9f2a13c860"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/rect/rect-painting.qml b/tests/auto/declarative/qmlvisual/rect/rect-painting.qml
index 3c5d90c266..2de414dbf8 100644
--- a/tests/auto/declarative/qmlvisual/rect/rect-painting.qml
+++ b/tests/auto/declarative/qmlvisual/rect/rect-painting.qml
@@ -1,7 +1,7 @@
import QtQuick 1.0
Rectangle {
- width: 900; height: 500
+ width: 450; height: 250
color: "white"
Rectangle {
@@ -14,7 +14,7 @@ Rectangle {
Grid {
anchors.centerIn: parent
- columns: 8; rows:4; spacing: 30
+ columns: 8; rows:4; spacing: 15
MyRect { color: "lightsteelblue" }
MyRect { color: "lightsteelblue"; border: "gray" }
diff --git a/tests/auto/declarative/qmlvisual/repeater/basic1.qml b/tests/auto/declarative/qmlvisual/repeater/basic1.qml
index 7f1ba84c26..5d994b96a0 100644
--- a/tests/auto/declarative/qmlvisual/repeater/basic1.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/basic1.qml
@@ -1,25 +1,29 @@
import QtQuick 1.0
Rectangle {
- color: "blue"
- width: 300
- height: 200
- Row {
- Repeater {
+ color: "white"
+ width: 120
+ height: 240
+ id: page
+ Column{
+ Repeater{
delegate: Rectangle {
- color: "red"
+ color: "thistle"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
model: ListModel {
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/basic2.qml b/tests/auto/declarative/qmlvisual/repeater/basic2.qml
index b10420cc7b..ea14e92e21 100644
--- a/tests/auto/declarative/qmlvisual/repeater/basic2.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/basic2.qml
@@ -1,29 +1,33 @@
import QtQuick 1.0
Rectangle {
- color: "blue"
- width: 300
- height: 200
+ color: "white"
+ width: 120
+ height: 240
+ id: page
Component {
id: delegate
Rectangle {
- color: "red"
+ color: "thistle"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
}
- Row {
- Repeater {
+ Column{
+ Repeater{
delegate: delegate
model: ListModel {
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/basic3.qml b/tests/auto/declarative/qmlvisual/repeater/basic3.qml
index a296801af3..0193db30c0 100644
--- a/tests/auto/declarative/qmlvisual/repeater/basic3.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/basic3.qml
@@ -1,27 +1,31 @@
import QtQuick 1.0
Rectangle {
- color: "blue"
- width: 300
- height: 200
+ color: "white"
+ width: 120
+ height: 240
+ id: page
ListModel {
- id: dataSource
+ id: model
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
- Row {
- Repeater {
- model: dataSource
+ Column{
+ Repeater{
+ model: model
delegate: Rectangle {
- color: "red"
+ color: "thistle"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/basic4.qml b/tests/auto/declarative/qmlvisual/repeater/basic4.qml
index fa858356cf..c7c0d29682 100644
--- a/tests/auto/declarative/qmlvisual/repeater/basic4.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/basic4.qml
@@ -1,32 +1,36 @@
import QtQuick 1.0
Rectangle {
- color: "blue"
- width: 300
- height: 200
+ color: "white"
+ width: 120
+ height: 240
+ id: page
ListModel {
- id: dataSource
+ id: model
ListElement {
- name: "January"
+ name: "palegoldenrod"
}
ListElement {
- name: "February"
+ name: "lightsteelblue"
}
}
Component {
id: delegate
Rectangle {
- color: "red"
+ color: "thistle"
width: 100
height: 100
- Text {
- text: name
+ Rectangle {
+ anchors.centerIn: parent
+ width: 60
+ height: 60
+ color: name
}
}
}
- Row {
- Repeater {
- model: dataSource
+ Column{
+ Repeater{
+ model: model
delegate: delegate
}
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.0.png b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.0.png
deleted file mode 100644
index 2658b6b6d7..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.qml b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.qml
deleted file mode 100644
index d11a9ddc64..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic1.qml
+++ /dev/null
@@ -1,323 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 32
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 48
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 64
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 80
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 96
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 112
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 128
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 144
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 160
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 176
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 192
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 208
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 224
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 240
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 256
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 272
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 288
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 304
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 320
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 336
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 352
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 368
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 384
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 400
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 416
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 432
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 448
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 464
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 480
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 496
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 512
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 528
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 544
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 560
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 576
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 592
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 608
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 624
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 640
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 656
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 672
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 688
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 704
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 720
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 736
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 752
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 768
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 784
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 800
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 816
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 832
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 848
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 864
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 880
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 896
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 912
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 928
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 944
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 960
- image: "basic1.0.png"
- }
- Frame {
- msec: 976
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 992
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1008
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1024
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1040
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1056
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1072
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1088
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1104
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1120
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1136
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1152
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1168
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1184
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1200
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1216
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1232
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.0.png b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.0.png
deleted file mode 100644
index 2658b6b6d7..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.qml b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.qml
deleted file mode 100644
index 9b36f60165..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic2.qml
+++ /dev/null
@@ -1,331 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 32
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 48
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 64
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 80
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 96
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 112
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 128
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 144
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 160
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 176
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 192
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 208
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 224
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 240
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 256
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 272
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 288
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 304
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 320
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 336
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 352
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 368
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 384
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 400
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 416
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 432
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 448
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 464
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 480
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 496
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 512
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 528
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 544
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 560
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 576
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 592
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 608
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 624
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 640
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 656
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 672
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 688
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 704
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 720
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 736
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 752
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 768
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 784
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 800
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 816
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 832
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 848
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 864
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 880
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 896
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 912
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 928
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 944
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 960
- image: "basic2.0.png"
- }
- Frame {
- msec: 976
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 992
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1008
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1024
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1040
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1056
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1072
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1088
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1104
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1120
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1136
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1152
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1168
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1184
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1200
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1216
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1232
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1248
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1264
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.0.png b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.0.png
deleted file mode 100644
index 2658b6b6d7..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.qml b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.qml
deleted file mode 100644
index 9752b72400..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic3.qml
+++ /dev/null
@@ -1,347 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 32
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 48
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 64
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 80
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 96
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 112
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 128
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 144
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 160
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 176
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 192
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 208
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 224
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 240
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 256
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 272
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 288
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 304
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 320
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 336
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 352
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 368
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 384
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 400
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 416
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 432
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 448
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 464
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 480
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 496
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 512
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 528
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 544
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 560
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 576
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 592
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 608
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 624
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 640
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 656
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 672
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 688
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 704
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 720
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 736
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 752
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 768
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 784
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 800
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 816
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 832
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 848
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 864
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 880
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 896
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 912
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 928
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 944
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 960
- image: "basic3.0.png"
- }
- Frame {
- msec: 976
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 992
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1008
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1024
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1040
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1056
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1072
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1088
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1104
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1120
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1136
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1152
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1168
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1184
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1200
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1216
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1232
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1248
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1264
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1280
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1296
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1312
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1328
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.0.png b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.0.png
deleted file mode 100644
index 2658b6b6d7..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.qml b/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.qml
deleted file mode 100644
index 8492621d27..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-MAC/basic4.qml
+++ /dev/null
@@ -1,419 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 32
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 48
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 64
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 80
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 96
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 112
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 128
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 144
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 160
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 176
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 192
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 208
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 224
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 240
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 256
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 272
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 288
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 304
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 320
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 336
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 352
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 368
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 384
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 400
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 416
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 432
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 448
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 464
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 480
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 496
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 512
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 528
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 544
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 560
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 576
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 592
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 608
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 624
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 640
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 656
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 672
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 688
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 704
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 720
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 736
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 752
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 768
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 784
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 800
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 816
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 832
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 848
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 864
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 880
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 896
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 912
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 928
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 944
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 960
- image: "basic4.0.png"
- }
- Frame {
- msec: 976
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 992
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1008
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1024
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1040
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1056
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1072
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1088
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1104
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1120
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1136
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1152
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1168
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1184
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1200
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1216
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1232
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1248
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1264
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1280
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1296
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1312
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1328
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1344
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1360
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1376
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1392
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1408
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1424
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1440
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1456
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1472
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1488
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1504
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1520
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1536
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1552
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1568
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1584
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1600
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
- Frame {
- msec: 1616
- hash: "2ab8ff9a9fb09111ac07d3966aac9d94"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.0.png b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.0.png
deleted file mode 100644
index 18ab54368f..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.qml b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.qml
deleted file mode 100644
index f9880f830f..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic1.qml
+++ /dev/null
@@ -1,323 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 32
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 48
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 64
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 80
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 96
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 112
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 128
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 144
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 160
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 176
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 192
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 208
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 224
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 240
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 256
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 272
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 288
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 304
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 320
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 336
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 352
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 368
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 384
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 400
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 416
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 432
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 448
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 464
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 480
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 496
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 512
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 528
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 544
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 560
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 576
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 592
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 608
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 624
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 640
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 656
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 672
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 688
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 704
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 720
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 736
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 752
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 768
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 784
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 800
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 816
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 832
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 848
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 864
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 880
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 896
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 912
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 928
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 944
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 960
- image: "basic1.0.png"
- }
- Frame {
- msec: 976
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 992
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1008
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1024
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1040
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1056
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1072
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1088
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1104
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1120
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1136
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1152
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1168
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1184
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1200
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1216
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1232
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.0.png b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.0.png
deleted file mode 100644
index 18ab54368f..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.qml b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.qml
deleted file mode 100644
index cc980e1ec0..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic2.qml
+++ /dev/null
@@ -1,331 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 32
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 48
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 64
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 80
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 96
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 112
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 128
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 144
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 160
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 176
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 192
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 208
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 224
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 240
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 256
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 272
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 288
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 304
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 320
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 336
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 352
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 368
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 384
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 400
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 416
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 432
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 448
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 464
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 480
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 496
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 512
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 528
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 544
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 560
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 576
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 592
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 608
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 624
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 640
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 656
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 672
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 688
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 704
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 720
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 736
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 752
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 768
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 784
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 800
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 816
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 832
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 848
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 864
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 880
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 896
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 912
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 928
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 944
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 960
- image: "basic2.0.png"
- }
- Frame {
- msec: 976
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 992
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1008
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1024
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1040
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1056
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1072
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1088
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1104
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1120
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1136
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1152
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1168
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1184
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1200
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1216
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1232
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1248
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1264
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.0.png b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.0.png
deleted file mode 100644
index 18ab54368f..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.qml b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.qml
deleted file mode 100644
index e395dde5ca..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic3.qml
+++ /dev/null
@@ -1,347 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 32
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 48
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 64
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 80
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 96
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 112
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 128
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 144
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 160
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 176
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 192
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 208
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 224
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 240
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 256
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 272
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 288
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 304
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 320
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 336
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 352
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 368
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 384
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 400
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 416
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 432
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 448
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 464
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 480
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 496
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 512
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 528
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 544
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 560
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 576
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 592
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 608
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 624
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 640
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 656
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 672
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 688
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 704
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 720
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 736
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 752
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 768
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 784
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 800
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 816
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 832
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 848
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 864
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 880
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 896
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 912
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 928
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 944
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 960
- image: "basic3.0.png"
- }
- Frame {
- msec: 976
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 992
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1008
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1024
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1040
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1056
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1072
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1088
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1104
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1120
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1136
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1152
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1168
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1184
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1200
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1216
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1232
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1248
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1264
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1280
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1296
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1312
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1328
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.0.png b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.0.png
deleted file mode 100644
index 18ab54368f..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.0.png
+++ /dev/null
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.qml b/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.qml
deleted file mode 100644
index b0dc6b80c8..0000000000
--- a/tests/auto/declarative/qmlvisual/repeater/data-X11/basic4.qml
+++ /dev/null
@@ -1,419 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 32
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 48
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 64
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 80
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 96
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 112
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 128
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 144
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 160
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 176
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 192
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 208
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 224
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 240
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 256
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 272
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 288
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 304
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 320
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 336
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 352
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 368
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 384
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 400
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 416
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 432
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 448
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 464
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 480
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 496
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 512
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 528
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 544
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 560
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 576
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 592
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 608
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 624
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 640
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 656
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 672
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 688
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 704
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 720
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 736
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 752
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 768
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 784
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 800
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 816
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 832
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 848
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 864
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 880
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 896
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 912
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 928
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 944
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 960
- image: "basic4.0.png"
- }
- Frame {
- msec: 976
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 992
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1008
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1024
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1040
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1056
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1072
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1088
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1104
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1120
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1136
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1152
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1168
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1184
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1200
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1216
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1232
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1248
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1264
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1280
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1296
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1312
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1328
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1344
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1360
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1376
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1392
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1408
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 0
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1424
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1440
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1456
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1472
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1488
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1504
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1520
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1536
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1552
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1568
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1584
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1600
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
- Frame {
- msec: 1616
- hash: "71dedc2f057c660fa5089de2dd6313a4"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic1.0.png b/tests/auto/declarative/qmlvisual/repeater/data/basic1.0.png
index aea0e98748..3e8043a685 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic1.0.png
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic1.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic1.qml b/tests/auto/declarative/qmlvisual/repeater/data/basic1.qml
index f0950d71af..aad4858ca4 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic1.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic1.qml
@@ -6,318 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 32
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 48
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 64
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 80
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 96
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 112
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 128
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 144
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 160
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 176
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 192
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 208
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 224
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 240
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 256
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 272
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 288
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 304
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 320
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 336
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 352
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 368
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 384
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 400
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 416
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 432
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 448
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 464
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 480
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 496
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 512
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 528
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 544
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 560
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 576
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 592
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 608
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 624
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 640
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 656
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 672
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 688
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 704
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 720
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 736
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 752
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 768
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 784
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 800
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 816
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 832
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 848
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 864
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 880
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 896
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 912
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 928
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 944
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 960
image: "basic1.0.png"
}
- Frame {
- msec: 976
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 992
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1008
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1024
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1040
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1056
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1072
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1088
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1104
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1120
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1136
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1152
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1168
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1184
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1200
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1216
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1232
- hash: "539de20cf149353d2677111ea3de5681"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic2.0.png b/tests/auto/declarative/qmlvisual/repeater/data/basic2.0.png
index aea0e98748..3e8043a685 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic2.0.png
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic2.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic2.qml b/tests/auto/declarative/qmlvisual/repeater/data/basic2.qml
index fcf3feebce..373ad27cb3 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic2.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic2.qml
@@ -6,326 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 32
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 48
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 64
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 80
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 96
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 112
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 128
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 144
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 160
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 176
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 192
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 208
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 224
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 240
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 256
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 272
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 288
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 304
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 320
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 336
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 352
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 368
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 384
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 400
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 416
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 432
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 448
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 464
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 480
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 496
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 512
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 528
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 544
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 560
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 576
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 592
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 608
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 624
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 640
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 656
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 672
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 688
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 704
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 720
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 736
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 752
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 768
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 784
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 800
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 816
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 832
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 848
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 864
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 880
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 896
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 912
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 928
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 944
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 960
image: "basic2.0.png"
}
- Frame {
- msec: 976
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 992
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1008
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1024
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1040
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1056
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1072
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1088
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1104
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1120
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1136
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1152
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1168
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1184
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1200
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1216
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1232
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1248
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1264
- hash: "539de20cf149353d2677111ea3de5681"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic3.0.png b/tests/auto/declarative/qmlvisual/repeater/data/basic3.0.png
index aea0e98748..3e8043a685 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic3.0.png
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic3.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic3.qml b/tests/auto/declarative/qmlvisual/repeater/data/basic3.qml
index 8447aca3b9..f5dbf65a43 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic3.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic3.qml
@@ -6,342 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 32
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 48
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 64
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 80
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 96
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 112
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 128
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 144
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 160
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 176
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 192
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 208
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 224
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 240
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 256
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 272
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 288
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 304
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 320
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 336
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 352
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 368
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 384
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 400
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 416
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 432
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 448
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 464
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 480
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 496
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 512
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 528
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 544
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 560
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 576
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 592
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 608
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 624
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 640
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 656
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 672
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 688
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 704
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 720
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 736
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 752
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 768
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 784
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 800
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 816
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 832
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 848
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 864
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 880
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 896
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 912
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 928
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 944
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 960
image: "basic3.0.png"
}
- Frame {
- msec: 976
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 992
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1008
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1024
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1040
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1056
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1072
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1088
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1104
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1120
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1136
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1152
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1168
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1184
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1200
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1216
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1232
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1248
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1264
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1280
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1296
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1312
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1328
- hash: "539de20cf149353d2677111ea3de5681"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic4.0.png b/tests/auto/declarative/qmlvisual/repeater/data/basic4.0.png
index aea0e98748..3e8043a685 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic4.0.png
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic4.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/repeater/data/basic4.qml b/tests/auto/declarative/qmlvisual/repeater/data/basic4.qml
index eeb60fa218..5e494d13a7 100644
--- a/tests/auto/declarative/qmlvisual/repeater/data/basic4.qml
+++ b/tests/auto/declarative/qmlvisual/repeater/data/basic4.qml
@@ -6,414 +6,6 @@ VisualTest {
}
Frame {
msec: 16
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 32
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 48
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 64
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 80
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 96
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 112
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 128
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 144
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 160
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 176
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 192
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 208
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 224
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 240
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 256
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 272
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 288
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 304
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 320
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 336
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 352
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 368
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 384
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 400
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 416
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 432
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 448
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 464
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 480
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 496
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 512
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 528
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 544
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 560
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 576
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 592
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 608
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 624
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 640
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 656
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 672
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 688
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 704
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 720
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 736
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 752
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 768
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 784
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 800
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 816
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 832
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 848
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 864
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 880
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 896
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 912
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 928
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 944
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 960
image: "basic4.0.png"
}
- Frame {
- msec: 976
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 992
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1008
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1024
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1040
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1056
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1072
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1088
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1104
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1120
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1136
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1152
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1168
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1184
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1200
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1216
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1232
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1248
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1264
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1280
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1296
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1312
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1328
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1344
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1360
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1376
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1392
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1408
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Key {
- type: 6
- key: 16777249
- modifiers: 67108864
- text: ""
- autorep: false
- count: 1
- }
- Frame {
- msec: 1424
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1440
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1456
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1472
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1488
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1504
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1520
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1536
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1552
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1568
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1584
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1600
- hash: "539de20cf149353d2677111ea3de5681"
- }
- Frame {
- msec: 1616
- hash: "539de20cf149353d2677111ea3de5681"
- }
}
diff --git a/tests/auto/declarative/qmlvisual/shared/DejaVuSansMono.ttf b/tests/auto/declarative/qmlvisual/shared/DejaVuSansMono.ttf
new file mode 100644
index 0000000000..029fcac35f
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/shared/DejaVuSansMono.ttf
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/shared/README b/tests/auto/declarative/qmlvisual/shared/README
new file mode 100644
index 0000000000..56a88ae57c
--- /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 0000000000..ab624c319e
--- /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: "DejaVuSansMono.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 0000000000..e7c5bc1b10
--- /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: "DejaVuSansMono.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 0000000000..64938e043c
--- /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: "DejaVuSansMono.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/qmldir b/tests/auto/declarative/qmlvisual/shared/qmldir
new file mode 100644
index 0000000000..4aebb393e4
--- /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 a2d32737df..ef0d4dca0b 100644
--- a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
+++ b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp
@@ -102,43 +102,25 @@ void tst_qmlvisual::visual_data()
QTest::addColumn<QString>("testdata");
QStringList files;
- if (qgetenv("QMLVISUAL_ALL") != "")
- 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)
- files << QT_TEST_SOURCE_DIR "/animation/qtbug10586/qtbug10586.qml";
- files << QT_TEST_SOURCE_DIR "/qdeclarativeborderimage/animated.qml";
- files << QT_TEST_SOURCE_DIR "/qdeclarativeflipable/test-flipable.qml";
- files << QT_TEST_SOURCE_DIR "/qdeclarativepositioners/usingRepeater.qml";
- files << QT_TEST_SOURCE_DIR "/animation/parentAnimation2/parentAnimation2.qml";
-
- //these are tests we think are stable and useful enough to be run by the CI system
- files << QT_TEST_SOURCE_DIR "/animation/bindinganimation/bindinganimation.qml";
- files << QT_TEST_SOURCE_DIR "/animation/loop/loop.qml";
- files << QT_TEST_SOURCE_DIR "/animation/parallelAnimation/parallelAnimation-visual.qml";
- files << QT_TEST_SOURCE_DIR "/animation/parentAnimation/parentAnimation-visual.qml";
- files << QT_TEST_SOURCE_DIR "/animation/reanchor/reanchor.qml";
- files << QT_TEST_SOURCE_DIR "/animation/scriptAction/scriptAction-visual.qml";
- files << QT_TEST_SOURCE_DIR "/qdeclarativemousearea/drag.qml";
- files << QT_TEST_SOURCE_DIR "/fillmode/fillmode.qml";
-
- // new tests
- files << QT_TEST_SOURCE_DIR "/qdeclarativemousearea/mousearea-flickable.qml";
-
- //these reliably fail in CI, for unknown reasons
- //files << QT_TEST_SOURCE_DIR "/animation/easing/easing.qml";
- //files << QT_TEST_SOURCE_DIR "/animation/pauseAnimation/pauseAnimation-visual.qml";
- //files << QT_TEST_SOURCE_DIR "/qdeclarativeborderimage/borders.qml";
- //files << QT_TEST_SOURCE_DIR "/qdeclarativeborderimage/animated-smooth.qml";
-
- //these reliably fail on Linux because of color interpolation (different float rounding)
-#if !defined(Q_WS_X11) && !defined(Q_WS_QWS)
- files << QT_TEST_SOURCE_DIR "/animation/colorAnimation/colorAnimation-visual.qml";
- files << QT_TEST_SOURCE_DIR "/animation/propertyAction/propertyAction-visual.qml";
+ files << findQmlFiles(QDir(QT_TEST_SOURCE_DIR));
+ if (qgetenv("QMLVISUAL_ALL") != "1") {
+#if defined(Q_WS_X11)
+ //Text on X11 varies per version - and the CI system is currently using something outdated.
+ foreach(const QString &str, files.filter(QRegExp(".*text.*")))
+ files.removeAll(str);
+#endif
+#if defined(Q_WS_MAC)
+ //Text on Mac also varies per version. Only check the text on 10.6
+ if(QSysInfo::MacintoshVersion != QSysInfo::MV_10_6)
+ foreach(const QString &str, files.filter(QRegExp(".*text.*")))
+ files.removeAll(str);
+#endif
+#if defined(Q_WS_QWS)
+ //We don't want QWS test results to mire down the CI system
+ files.clear();
+ //Needs at least one test data or it fails anyways
+ files << QT_TEST_SOURCE_DIR "/selftest_noimages/selftest_noimages.qml";
#endif
-
- //this is unstable because the MouseArea press-and-hold timer is not synchronized to the animation framework.
- //files << QT_TEST_SOURCE_DIR "/qdeclarativemousearea/mousearea-visual.qml";
}
foreach (const QString &file, files) {
@@ -157,7 +139,7 @@ void tst_qmlvisual::visual()
QStringList arguments;
arguments << "-script" << testdata
- << "-scriptopts" << "play,testimages,testerror,exitoncomplete,exitonfailure"
+ << "-scriptopts" << "play,testimages,testerror,testskip,exitoncomplete,exitonfailure"
<< file;
#ifdef Q_WS_QWS
arguments << "-qws";
@@ -165,9 +147,11 @@ void tst_qmlvisual::visual()
QProcess p;
p.start(qmlruntime, arguments);
- QVERIFY(p.waitForFinished());
+ bool finished = p.waitForFinished();
+ QByteArray output = p.readAllStandardOutput() + p.readAllStandardError();
+ QVERIFY2(finished, output.data());
if (p.exitCode() != 0)
- qDebug() << p.readAllStandardError();
+ qDebug() << output;
QCOMPARE(p.exitStatus(), QProcess::NormalExit);
QCOMPARE(p.exitCode(), 0);
}
@@ -278,7 +262,7 @@ void action(Mode mode, const QString &file)
break;
case Play:
arguments << "-script" << testdata
- << "-scriptopts" << "play,testimages,testerror,exitoncomplete"
+ << "-scriptopts" << "play,testimages,testerror,testskip,exitoncomplete"
<< file;
break;
case TestVisuals:
@@ -345,6 +329,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/declarative/qmlvisual/webview/autosize/autosize.qml b/tests/auto/declarative/qmlvisual/webview/autosize/autosize.qml
index b6280a6f17..1cd0c7b50e 100644
--- a/tests/auto/declarative/qmlvisual/webview/autosize/autosize.qml
+++ b/tests/auto/declarative/qmlvisual/webview/autosize/autosize.qml
@@ -1,9 +1,10 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
// The WebView size is determined by the width, height,
// preferredWidth, and preferredHeight properties.
Rectangle {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
id: rect
color: "white"
width: 200
diff --git a/tests/auto/declarative/qmlvisual/webview/autosize/data-X11/autosize.qml b/tests/auto/declarative/qmlvisual/webview/autosize/data-X11/autosize.qml
deleted file mode 100644
index 612213877f..0000000000
--- a/tests/auto/declarative/qmlvisual/webview/autosize/data-X11/autosize.qml
+++ /dev/null
@@ -1,115 +0,0 @@
-import Qt.VisualTest 4.7
-
-VisualTest {
- Frame {
- msec: 0
- }
- Frame {
- msec: 16
- hash: "b2d863e57dee2a297d038e18acc70f92"
- }
- Frame {
- msec: 32
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 48
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 64
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 80
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 96
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 112
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 128
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 144
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 160
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 176
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 192
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 208
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 224
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 240
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 256
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 272
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 288
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 304
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 320
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 336
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 352
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 368
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 384
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 400
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 416
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
- Frame {
- msec: 432
- hash: "903a4c7e619abba5342c8c827f26a722"
- }
-}
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.0.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.0.png
new file mode 100644
index 0000000000..513aab69ec
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.0.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.1.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.1.png
new file mode 100644
index 0000000000..513aab69ec
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.1.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.10.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.10.png
new file mode 100644
index 0000000000..bb22d01d17
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.10.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.2.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.2.png
new file mode 100644
index 0000000000..1357551f75
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.2.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.3.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.3.png
new file mode 100644
index 0000000000..513aab69ec
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.3.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.4.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.4.png
new file mode 100644
index 0000000000..bb22d01d17
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.4.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.5.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.5.png
new file mode 100644
index 0000000000..bb22d01d17
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.5.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.6.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.6.png
new file mode 100644
index 0000000000..c61ae3fda0
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.6.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.7.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.7.png
new file mode 100644
index 0000000000..bb22d01d17
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.7.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.8.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.8.png
new file mode 100644
index 0000000000..bb22d01d17
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.8.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.9.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.9.png
new file mode 100644
index 0000000000..bb22d01d17
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.9.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.qml b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.qml
new file mode 100644
index 0000000000..c248167fb0
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.qml
@@ -0,0 +1,6083 @@
+import Qt.VisualTest 4.7
+
+VisualTest {
+ Frame {
+ msec: 0
+ }
+ Frame {
+ msec: 16
+ image: "flickweb.0.png"
+ }
+ Frame {
+ msec: 32
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 48
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 64
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 80
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 96
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 112
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 128
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 144
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 160
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 176
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 192
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 208
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 224
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 240
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 256
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 272
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 288
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 304
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 320
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 336
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 352
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 368
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 384
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 400
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 416
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 432
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 448
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 464
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 480
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 496
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 512
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 528
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 544
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 0; y: 7
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 0; y: 7
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 560
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 12; y: 10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 576
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 15; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 592
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 608
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 624
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 640
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 12; y: 10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 11; y: 10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 656
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 9; y: 10
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 672
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 688
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 9; y: 11
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 704
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 9; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 9; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 720
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 9; y: 18
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 12; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 736
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 14; y: 28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 18; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 752
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 19; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 22; y: 43
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 768
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 22; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 23; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 784
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 800
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 23; y: 43
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 816
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 24; y: 45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 832
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 26; y: 47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 28; y: 49
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 848
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 29; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 32; y: 55
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 864
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 34; y: 57
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 36; y: 61
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 880
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 38; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 41; y: 66
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 896
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 43; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 48; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 912
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 50; y: 76
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 57; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 928
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 63; y: 85
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 66; y: 87
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 944
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 72; y: 91
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 74; y: 93
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 960
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 80; y: 97
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 82; y: 99
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 976
+ image: "flickweb.1.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 86; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 88; y: 103
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 992
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 91; y: 103
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 104
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1008
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 1024
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 1040
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 105
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1056
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 106
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1072
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 107
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 108
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1088
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 109
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1104
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 110
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 111
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1120
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 112
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1136
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 113
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 114
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1152
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 115
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 116
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1168
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 92; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1184
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 1200
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 92; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1216
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 92; y: 116
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 92; y: 115
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1232
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 91; y: 112
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 91; y: 111
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1248
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 90; y: 107
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 90; y: 104
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1264
+ hash: "e891b00cd44578b4a8e635ffe4c6d3fd"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 90; y: 101
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 89; y: 96
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1280
+ hash: "61a543282ffb5e751ea1d97f0c95b208"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 89; y: 93
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 89; y: 85
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1296
+ hash: "102e4b664bade46ab3bbb611acee22c9"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 89; y: 81
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 87; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1312
+ hash: "6bf42ac28a14db681442aeb7ed0c7610"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 85; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 85; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 56
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1328
+ hash: "ef531060d6b75cec8a6e3c01b3f69cc0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 49
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1344
+ hash: "e839af9d67f6214f0901977b3aa96d1a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 43
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1360
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 41
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 85; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1376
+ hash: "e4a562aa35aa532d15c9b129e22797bb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1392
+ hash: "029d347e9c99dd4a9cec5120ac7fc25e"
+ }
+ Frame {
+ msec: 1408
+ hash: "3c16a74e18a59630f35511ab5514c769"
+ }
+ Frame {
+ msec: 1424
+ hash: "5dc472d6c5198d5a628510bd45a61a11"
+ }
+ Frame {
+ msec: 1440
+ hash: "430d60127ed59dbc5904647424ead40d"
+ }
+ Frame {
+ msec: 1456
+ hash: "cb27cfcfbbb77b55c2a8bf7e51c0af07"
+ }
+ Frame {
+ msec: 1472
+ hash: "46f2eb33b0e8316c4123ddbee2f60ae2"
+ }
+ Frame {
+ msec: 1488
+ hash: "1df306111ca012c9f405018778c0a12b"
+ }
+ Frame {
+ msec: 1504
+ hash: "1eafab8fd457ad9acda068344178b4a8"
+ }
+ Frame {
+ msec: 1520
+ hash: "286656898100e53d6d7728b51ce93df5"
+ }
+ Frame {
+ msec: 1536
+ hash: "e2a88f0ba3030a430028147930989bbb"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1552
+ hash: "fb23cf265c4d253470c2515043bc5dd8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1568
+ hash: "1dba4f0e5e5948b7133725ea8bbef3e7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1584
+ hash: "8578965c5ad012284e4e0a14a42da25e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1600
+ hash: "3ef187decae08baa2ec92998c2cbb7f7"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1616
+ hash: "4e0491128eac0bbfa7a131b1f18f243c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1632
+ hash: "c2d0799526e908204efbd3aa980e086c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1648
+ hash: "cc87e09a6784d61680f8c6ab0d6a38fa"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 85; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1664
+ hash: "13dec7e835b4f26970f98b66533f84f1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 85; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1680
+ hash: "e5d2862bee024b64326b7d85e5e45399"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 85; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1696
+ hash: "0b1401ce4a91811ac9c3eec5f94b380d"
+ }
+ Frame {
+ msec: 1712
+ hash: "0de290542c9d3e03ed78f51423011c16"
+ }
+ Frame {
+ msec: 1728
+ hash: "4c9aa06ad1e246b4b026742fc8cf37bc"
+ }
+ Frame {
+ msec: 1744
+ hash: "c33003a8262c2ba25510ece181e61bc9"
+ }
+ Frame {
+ msec: 1760
+ hash: "c33003a8262c2ba25510ece181e61bc9"
+ }
+ Frame {
+ msec: 1776
+ hash: "ad184fa88c4299b8911c9b7ada5b3736"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 85; y: 12
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 85; y: 13
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 85; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1792
+ hash: "ad184fa88c4299b8911c9b7ada5b3736"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 85; y: 17
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 85; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1808
+ hash: "c2d0799526e908204efbd3aa980e086c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 85; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 85; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1824
+ hash: "b343a9ed7e9740ec1725837fad766745"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 85; y: 41
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 85; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1840
+ hash: "b33260ad955474452f204ed5d468ef78"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 85; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 86; y: 55
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1856
+ hash: "9a647c54e378bd0ee35ef4164892722c"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 87; y: 61
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 88; y: 67
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 88; y: 67
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 89; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1872
+ hash: "dc553d1a7b678dffea41147fc6b841f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 89; y: 74
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 89; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1888
+ hash: "2d61b4fb1e5a8beb6e3c3cb53c21db42"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 89; y: 79
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 89; y: 82
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1904
+ hash: "209faf0b20fd53d9a1c261c8cae9666f"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 90; y: 82
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 91; y: 83
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 1920
+ hash: "3497258aa07c76f0e31b5a492ee7e7cb"
+ }
+ Frame {
+ msec: 1936
+ image: "flickweb.2.png"
+ }
+ Frame {
+ msec: 1952
+ hash: "64c677ac4fea0e525279e86bf831d5d3"
+ }
+ Frame {
+ msec: 1968
+ hash: "76c6c887fea94288e9fd975655e5181c"
+ }
+ Frame {
+ msec: 1984
+ hash: "71b85e596c88b84a851a52aa3389e63a"
+ }
+ Frame {
+ msec: 2000
+ hash: "e4a562aa35aa532d15c9b129e22797bb"
+ }
+ Frame {
+ msec: 2016
+ hash: "148484dd95c88720cc5ef196334cb9a8"
+ }
+ Frame {
+ msec: 2032
+ hash: "924c6254ffa1707b69174f49e4e95213"
+ }
+ Frame {
+ msec: 2048
+ hash: "9e61907acedb27941d8be2befa364cfb"
+ }
+ Frame {
+ msec: 2064
+ hash: "9e61907acedb27941d8be2befa364cfb"
+ }
+ Frame {
+ msec: 2080
+ hash: "f2c4e99db1bb087a40b277ce8ce628f6"
+ }
+ Frame {
+ msec: 2096
+ hash: "f2c4e99db1bb087a40b277ce8ce628f6"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 91; y: 82
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2112
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 90; y: 82
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2128
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 89; y: 81
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 88; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2144
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 87; y: 79
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 86; y: 77
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2160
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 86; y: 76
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 86; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2176
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 85; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 71
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2192
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 82; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 81; y: 67
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2208
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 76; y: 61
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 75; y: 59
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2224
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 71; y: 54
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 70; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2240
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 70; y: 50
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 70; y: 49
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2256
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 70; y: 47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 69; y: 46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2272
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 68; y: 45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 67; y: 43
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2288
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 66; y: 43
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 65; y: 41
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2304
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 64; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 64; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2320
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 63; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 63; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2336
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 63; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 63; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2352
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 63; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2368
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 64; y: 32
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2384
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 65; y: 32
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 65; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2400
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 66; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 68; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2416
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 69; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 71; y: 29
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2432
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 73; y: 27
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 73; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2448
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 74; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 74; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2464
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 74; y: 21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 74; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2480
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 74; y: 18
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 74; y: 17
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2496
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 74; y: 16
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 73; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2512
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 73; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2528
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Frame {
+ msec: 2544
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Frame {
+ msec: 2560
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 73; y: 14
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2576
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 73; y: 15
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 72; y: 17
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2592
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 72; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 72; y: 29
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2608
+ hash: "b2d6b68f1f7229e8e65bb37e4c418a1b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 72; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 71; y: 47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2624
+ hash: "c4dd48fca556c2760c8f81db7fea6938"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2640
+ hash: "9dbad8cb2692807d67f74e7ac4a4a70e"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 70; y: 96
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 70; y: 96
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2656
+ hash: "152648affe4045a81f0d6ff9150889f1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 70; y: 99
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 70; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2672
+ hash: "152648affe4045a81f0d6ff9150889f1"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 73; y: 103
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 74; y: 103
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2688
+ hash: "152648affe4045a81f0d6ff9150889f1"
+ }
+ Frame {
+ msec: 2704
+ hash: "152648affe4045a81f0d6ff9150889f1"
+ }
+ Frame {
+ msec: 2720
+ hash: "152648affe4045a81f0d6ff9150889f1"
+ }
+ Frame {
+ msec: 2736
+ hash: "152648affe4045a81f0d6ff9150889f1"
+ }
+ Frame {
+ msec: 2752
+ hash: "152648affe4045a81f0d6ff9150889f1"
+ }
+ Frame {
+ msec: 2768
+ hash: "c9eee2b7529b07a17151e7140444c099"
+ }
+ Frame {
+ msec: 2784
+ hash: "c9eee2b7529b07a17151e7140444c099"
+ }
+ Frame {
+ msec: 2800
+ hash: "c9eee2b7529b07a17151e7140444c099"
+ }
+ Frame {
+ msec: 2816
+ hash: "c9eee2b7529b07a17151e7140444c099"
+ }
+ Frame {
+ msec: 2832
+ hash: "c9eee2b7529b07a17151e7140444c099"
+ }
+ Frame {
+ msec: 2848
+ hash: "c9eee2b7529b07a17151e7140444c099"
+ }
+ Frame {
+ msec: 2864
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 2880
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 2896
+ image: "flickweb.3.png"
+ }
+ Frame {
+ msec: 2912
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 2928
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 74; y: 102
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2944
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 74; y: 101
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 73; y: 98
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2960
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 69; y: 93
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 67; y: 91
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2976
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 62; y: 85
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 60; y: 83
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 2992
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 56; y: 77
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 55; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3008
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 52; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 49; y: 67
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3024
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 49; y: 65
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 48; y: 61
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3040
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 48; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 46; y: 56
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3056
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 45; y: 54
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 42; y: 50
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3072
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 39; y: 47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 38; y: 45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3088
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 37; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 36; y: 43
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3104
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 35; y: 41
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 35; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3120
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 33; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 33; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3136
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 32; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3152
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 32; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 31; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3168
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 31; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3184
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 30; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 30; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3200
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 28; y: 32
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 28; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3216
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 26; y: 29
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 26; y: 28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3232
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 25; y: 27
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3248
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 25; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3264
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 3280
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 3296
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 3312
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 25; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3328
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 3344
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 3360
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Frame {
+ msec: 3376
+ hash: "d045839439e4091210c745f0ea173e52"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 25; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3392
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 25; y: 27
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3408
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 26; y: 27
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 26; y: 28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3424
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 27; y: 28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 27; y: 29
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3440
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3456
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3472
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3488
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3504
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 27; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3520
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 28; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 29; y: 34
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3536
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 31; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 37; y: 43
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3552
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 40; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 50; y: 59
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3568
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 55; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 65; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3584
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 69; y: 77
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 75; y: 83
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3600
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 78; y: 85
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 80; y: 86
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3616
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 82; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 89
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3632
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 85; y: 90
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3648
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3664
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3680
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3696
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3712
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3728
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3744
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3760
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 85; y: 89
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3776
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3792
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 87
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3808
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 85; y: 85
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 83
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 3824
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3840
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3856
+ image: "flickweb.4.png"
+ }
+ Frame {
+ msec: 3872
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3888
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3904
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3920
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3936
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3952
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3968
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 3984
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4000
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4016
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 84
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4032
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 87
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4048
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4064
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4080
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4096
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4112
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4128
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 89
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4144
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 82; y: 90
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4160
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 82; y: 91
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 82; y: 92
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4176
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 82; y: 93
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 82; y: 95
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4192
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 82; y: 97
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 100
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4208
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 101
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 105
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4224
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 107
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 110
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4240
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 113
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 114
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4256
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 115
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 116
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4272
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4288
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4304
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4320
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4336
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4352
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4368
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4384
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4400
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4416
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4432
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4448
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4464
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4480
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 116
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4496
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4512
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4528
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4544
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4560
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4576
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4592
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4608
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 82; y: 116
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4624
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4640
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 82; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4656
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4672
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4688
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 82; y: 118
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4704
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4720
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4736
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4752
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4768
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4784
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4800
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4816
+ image: "flickweb.5.png"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 83; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4832
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 4848
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 84; y: 119
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4864
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 85; y: 118
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 85; y: 117
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4880
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 86; y: 113
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 87; y: 111
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4896
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 89; y: 107
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 90; y: 104
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4912
+ hash: "f10fa114e248809ed280788d03a3e234"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 92; y: 99
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 93; y: 95
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4928
+ hash: "442357340d9690811d582f548f933d92"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 95; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 98; y: 81
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 98; y: 81
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4944
+ hash: "188b8f78b2a2180a8e96a8a05bb20fe2"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 77
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 99; y: 69
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4960
+ hash: "2b8ee42c5660f4f938cf10507690abbe"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 100; y: 66
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 101; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4976
+ hash: "3d4aab388f62e64c5f72c631fb8584aa"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 103; y: 59
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 104; y: 56
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 4992
+ hash: "439364cea3330411f526093d58ece463"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 104; y: 55
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 104; y: 53
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5008
+ hash: "27653ec59651e6b3cb2ebf2bc81a975a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 104; y: 52
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 104; y: 51
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5024
+ hash: "d9c0fb2cbf968e0524291ae2570ca585"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 105; y: 50
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 105; y: 49
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5040
+ hash: "ef75df694a972985f410e21182dbb12b"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 105; y: 48
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5056
+ hash: "adda6aa851c1587c1bb2605809348725"
+ }
+ Frame {
+ msec: 5072
+ hash: "196c12052069f0f8c775aa38d3291bef"
+ }
+ Frame {
+ msec: 5088
+ hash: "eaa025b6aee87edf95643cc46880d0db"
+ }
+ Frame {
+ msec: 5104
+ hash: "edeab897b82df47ae6deb858eca3087e"
+ }
+ Frame {
+ msec: 5120
+ hash: "46e3b5da149cfc40036a860e74e0cd78"
+ }
+ Frame {
+ msec: 5136
+ hash: "46e3b5da149cfc40036a860e74e0cd78"
+ }
+ Frame {
+ msec: 5152
+ hash: "0fe9b13b9b0752ab4ad74f4e43f94d86"
+ }
+ Frame {
+ msec: 5168
+ hash: "0fe9b13b9b0752ab4ad74f4e43f94d86"
+ }
+ Frame {
+ msec: 5184
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5200
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5216
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5232
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5248
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5264
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5280
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5296
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5312
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5328
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5344
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 105; y: 47
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 104; y: 46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5360
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 103; y: 45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 102; y: 45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5376
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 102; y: 44
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5392
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 101; y: 43
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5408
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 101; y: 42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 100; y: 42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5424
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 99; y: 41
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 40
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5440
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5456
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 38
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5472
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5488
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 33
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5504
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 29
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5520
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 25
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5536
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5552
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 97; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 97; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5568
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5584
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5600
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5616
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5632
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 97; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5648
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Frame {
+ msec: 5664
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 97; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 97; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5680
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 97; y: 28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 97; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5696
+ hash: "695e9c7292475cad011ca76799452042"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 97; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 97; y: 42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5712
+ hash: "27653ec59651e6b3cb2ebf2bc81a975a"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 97; y: 50
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 97; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5728
+ hash: "f2a68c3a60002a796b0cd595ae89e477"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 97; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 97; y: 71
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5744
+ hash: "2628ffe66f06c997d9c9b66febc04ce8"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 97; y: 75
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 98; y: 83
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5760
+ hash: "9b68c76d622f7b883a13927a112179f0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 99; y: 86
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 1
+ x: 101; y: 91
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 101; y: 91
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5776
+ image: "flickweb.6.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 103; y: 95
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 104; y: 95
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5792
+ hash: "6d6d87355037ec4a15b2a81c8d48b74d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 107; y: 95
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 107; y: 94
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5808
+ hash: "6d6d87355037ec4a15b2a81c8d48b74d"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 107; y: 93
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5824
+ hash: "6d6d87355037ec4a15b2a81c8d48b74d"
+ }
+ Frame {
+ msec: 5840
+ hash: "6d6d87355037ec4a15b2a81c8d48b74d"
+ }
+ Frame {
+ msec: 5856
+ hash: "34c3edc4500a268a326b5c2156c12f09"
+ }
+ Frame {
+ msec: 5872
+ hash: "34c3edc4500a268a326b5c2156c12f09"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 106; y: 92
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 105; y: 91
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5888
+ hash: "34c3edc4500a268a326b5c2156c12f09"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 104; y: 91
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 103; y: 90
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5904
+ hash: "ac600900160ab37ec8a3e67eb82d0259"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 101; y: 89
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 100; y: 88
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5920
+ hash: "ac600900160ab37ec8a3e67eb82d0259"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 99; y: 86
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 98; y: 86
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5936
+ hash: "dc3cef419e3b7d59f450d3307aeebefa"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 97; y: 85
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 96; y: 85
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5952
+ hash: "dc3cef419e3b7d59f450d3307aeebefa"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 94; y: 84
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 93; y: 83
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5968
+ hash: "9b68c76d622f7b883a13927a112179f0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 90; y: 82
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 86; y: 81
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 5984
+ hash: "9b68c76d622f7b883a13927a112179f0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 85; y: 80
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 81; y: 79
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6000
+ hash: "9b68c76d622f7b883a13927a112179f0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 79; y: 78
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 76; y: 76
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6016
+ hash: "9b68c76d622f7b883a13927a112179f0"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 75; y: 76
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 72; y: 73
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6032
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 68; y: 70
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 66; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6048
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 63; y: 65
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 61; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6064
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 58; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 57; y: 59
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6080
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 54; y: 56
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 53; y: 54
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6096
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 51; y: 50
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 48; y: 46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6112
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 48; y: 45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 46; y: 41
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6128
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 45; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 43; y: 36
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6144
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 43; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 41; y: 32
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6160
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 40; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 38; y: 28
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6176
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 36; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 35; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6192
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 33; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 32; y: 21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6208
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 31; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 30; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6224
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 29; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 28; y: 18
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6240
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 27; y: 18
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 26; y: 17
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6256
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 25; y: 17
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6272
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 24; y: 17
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6288
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6304
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6320
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6336
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6352
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 2
+ button: 1
+ buttons: 1
+ x: 24; y: 17
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6368
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6384
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6400
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6416
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 3
+ button: 1
+ buttons: 0
+ x: 24; y: 17
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6432
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 24; y: 18
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6448
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 25; y: 18
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 25; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6464
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 26; y: 19
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 27; y: 20
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6480
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 28; y: 21
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6496
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6512
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6528
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 29; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6544
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 30; y: 23
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 31; y: 24
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6560
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 32; y: 25
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 33; y: 25
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6576
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 34; y: 26
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 34; y: 27
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6592
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 37; y: 30
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 38; y: 31
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6608
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 41; y: 35
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 42; y: 37
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6624
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 45; y: 42
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 50; y: 46
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6640
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 52; y: 49
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 57; y: 53
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6656
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 60; y: 55
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 65; y: 58
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6672
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 66; y: 59
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 71; y: 61
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6688
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 75; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 77; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6704
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 80; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 81; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6720
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 83; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 84; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6736
+ image: "flickweb.7.png"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 85; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 86; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6752
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 87; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 88; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6768
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 90; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 93; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6784
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 94; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 99; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6800
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 102; y: 63
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 106; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6816
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 110; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 116; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6832
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 122; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 124; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6848
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 125; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 6864
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6880
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6896
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6912
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6928
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6944
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6960
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6976
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 6992
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7008
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7024
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7040
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7056
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7072
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7088
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 126; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7104
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 127; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 129; y: 64
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7120
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 132; y: 65
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 134; y: 66
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7136
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 139; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 144; y: 69
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7152
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 148; y: 69
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 154; y: 69
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7168
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 158; y: 68
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 162; y: 66
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7184
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 164; y: 65
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 165; y: 62
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7200
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 165; y: 60
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 165; y: 54
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7216
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 162; y: 45
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 159; y: 39
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7232
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 151; y: 27
+ modifiers: 0
+ sendToViewport: true
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 146; y: 22
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7248
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Mouse {
+ type: 5
+ button: 0
+ buttons: 0
+ x: 129; y: 3
+ modifiers: 0
+ sendToViewport: true
+ }
+ Frame {
+ msec: 7264
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7280
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7296
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7312
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7328
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7344
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7360
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7376
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7392
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7408
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7424
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7440
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7456
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7472
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7488
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7504
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7520
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7536
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7552
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7568
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7584
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7600
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7616
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7632
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7648
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7664
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7680
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7696
+ image: "flickweb.8.png"
+ }
+ Frame {
+ msec: 7712
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7728
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7744
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7760
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7776
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7792
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7808
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7824
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7840
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7856
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7872
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7888
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7904
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7920
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7936
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7952
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7968
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 7984
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8000
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8016
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8032
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8048
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8064
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8080
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8096
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8112
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8128
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8144
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8160
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8176
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8192
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8208
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8224
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8240
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8256
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8272
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8288
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8304
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8320
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8336
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8352
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8368
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8384
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8400
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8416
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8432
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8448
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8464
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8480
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8496
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8512
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8528
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8544
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8560
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8576
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8592
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8608
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8624
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8640
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8656
+ image: "flickweb.9.png"
+ }
+ Frame {
+ msec: 8672
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8688
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8704
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8720
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8736
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8752
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8768
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8784
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8800
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8816
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8832
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8848
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8864
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8880
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8896
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8912
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8928
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8944
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8960
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8976
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 8992
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9008
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9024
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9040
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9056
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9072
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9088
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9104
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9120
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9136
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9152
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9168
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9184
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9200
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9216
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9232
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9248
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9264
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9280
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9296
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9312
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9328
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9344
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9360
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9376
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9392
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9408
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9424
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9440
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9456
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9472
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9488
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9504
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9520
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9536
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9552
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9568
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9584
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9600
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9616
+ image: "flickweb.10.png"
+ }
+ Frame {
+ msec: 9632
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9648
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9664
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9680
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9696
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+ Frame {
+ msec: 9712
+ hash: "98990f624351f88347b2eb010bb5cd13"
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/flickweb.qml b/tests/auto/declarative/qmlvisual/webview/flickable/flickweb.qml
new file mode 100644
index 0000000000..af09389f45
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/flickweb.qml
@@ -0,0 +1,35 @@
+import QtQuick 1.0
+import QtWebKit 1.0
+
+Flickable {
+ id: flickable
+ width: 320
+ height: 200
+ contentWidth: Math.max(flickable.width,webView.width)
+ contentHeight: Math.max(flickable.height,webView.height)
+ pressDelay: 100
+
+ WebView {
+ id: webView
+ transformOrigin: Item.TopLeft
+ smooth: false // We don't want smooth scaling, since we only scale during (fast) transitions
+ url: "test.html"
+ preferredWidth: flickable.width
+ preferredHeight: flickable.height
+ contentsScale: 1
+ onContentsSizeChanged: {
+ // zoom out
+ contentsScale = Math.min(1,flickable.width / contentsSize.width)
+ }
+ }
+
+ Rectangle {
+ id: button
+ width: 50; height: 50; color: "red"
+ MouseArea {
+ anchors.fill: parent
+ onPressed: button.color = "blue"
+ onReleased: button.color = "green"
+ }
+ }
+}
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/qtlogo.png b/tests/auto/declarative/qmlvisual/webview/flickable/qtlogo.png
new file mode 100644
index 0000000000..399bd0b1d9
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/qtlogo.png
Binary files differ
diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/test.html b/tests/auto/declarative/qmlvisual/webview/flickable/test.html
new file mode 100644
index 0000000000..35eb7184e8
--- /dev/null
+++ b/tests/auto/declarative/qmlvisual/webview/flickable/test.html
@@ -0,0 +1,3 @@
+<html>
+ <img width="400" height="400" src="qtlogo.png">
+</html>
diff --git a/tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml b/tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml
index bee261877a..9ea2b64b24 100644
--- a/tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml
+++ b/tests/auto/declarative/qmlvisual/webview/javascript/evaluateJavaScript.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
Column {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
WebView {
id: webview
width: 200
diff --git a/tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml b/tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml
index 9e22e20255..0b78539cda 100644
--- a/tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml
+++ b/tests/auto/declarative/qmlvisual/webview/javascript/windowObjects.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
Column {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
WebView {
width: 200
height: 200
diff --git a/tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml b/tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml
index 68accedd38..7c3270425e 100644
--- a/tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml
+++ b/tests/auto/declarative/qmlvisual/webview/settings/fontFamily.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
WebView {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
id: web
width: 200
height: 200
diff --git a/tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml b/tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml
index 4a0db01ac3..988ff6416b 100644
--- a/tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml
+++ b/tests/auto/declarative/qmlvisual/webview/settings/fontSize.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
Grid {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
columns: 3
Rectangle {
Text { color: "green"; text: "Normal" }
diff --git a/tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml b/tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml
index 3d50664de6..c465be8bca 100644
--- a/tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml
+++ b/tests/auto/declarative/qmlvisual/webview/settings/noAutoLoadImages.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
Grid {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
columns: 2
Rectangle {
Text { id: label; x:10; y:170; color: "green"; text: "No image" }
diff --git a/tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml b/tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml
index ae5ddd2ceb..11de161f55 100644
--- a/tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml
+++ b/tests/auto/declarative/qmlvisual/webview/settings/setFontFamily.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
WebView {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
url: "test.html"
width: 300
height: 300
diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml b/tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml
index 1617bdab40..a2b11ac295 100644
--- a/tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml
+++ b/tests/auto/declarative/qmlvisual/webview/zooming/pageWidth.qml
@@ -1,10 +1,11 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
WebView {
- width: 200
- height: 250
- url: "resolution.html"
- webPageWidth: 400
- preferredWidth: 200
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
+ //width: 200
+ //height: 250
+ //url: "resolution.html"
+ // webPageWidth: 400
+ // preferredWidth: 200
}
diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml b/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml
index e46f726c60..c07f1e1ac6 100644
--- a/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml
+++ b/tests/auto/declarative/qmlvisual/webview/zooming/renderControl.qml
@@ -1,7 +1,8 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
Rectangle {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
width: 200
height: 250
clip: true
diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/resolution.qml b/tests/auto/declarative/qmlvisual/webview/zooming/resolution.qml
index e9189dbd6f..cf5f50f9a8 100644
--- a/tests/auto/declarative/qmlvisual/webview/zooming/resolution.qml
+++ b/tests/auto/declarative/qmlvisual/webview/zooming/resolution.qml
@@ -1,7 +1,9 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
WebView {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
+ /*
width: 200 * zoomFactor
height: 250 * zoomFactor
scale: 1/zoomFactor
@@ -13,4 +15,5 @@ WebView {
NumberAnimation { from: 1; to: 5; duration: 2000 }
NumberAnimation { from: 5; to: 1; duration: 2000 }
}
+ */
}
diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.qml b/tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.qml
index 52222beb9f..03c925f82b 100644
--- a/tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.qml
+++ b/tests/auto/declarative/qmlvisual/webview/zooming/zoomTextOnly.qml
@@ -1,14 +1,17 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
WebView {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
width: 200
height: 250
url: "zoomTextOnly.html"
settings.zoomTextOnly: true
+ /*
SequentialAnimation on zoomFactor {
loops: Animation.Infinite
NumberAnimation { from: 2; to: 0.25; duration: 1000 }
NumberAnimation { from: 0.25; to: 2; duration: 1000 }
}
+ */
}
diff --git a/tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml b/tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml
index dc973c22c5..03fd7809f2 100644
--- a/tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml
+++ b/tests/auto/declarative/qmlvisual/webview/zooming/zooming.qml
@@ -1,10 +1,11 @@
import QtQuick 1.0
-import org.webkit 1.0
+import QtWebKit 1.0
// Note that zooming is better done using zoomFactor and careful
// control of rendering to avoid excessive re-rendering during
// zoom animations. This test is written for simplicity.
WebView {
+ property string skip: "WebView tests not counting until resources allocated to WebView maintenance"
width: 200
height: 250
Behavior on x { NumberAnimation { } }
diff --git a/tests/auto/gestures/tst_gestures.cpp b/tests/auto/gestures/tst_gestures.cpp
index 667cdd3726..ee19125971 100644
--- a/tests/auto/gestures/tst_gestures.cpp
+++ b/tests/auto/gestures/tst_gestures.cpp
@@ -1486,13 +1486,15 @@ void tst_Gestures::ungrabGesture() // a method on QWidget
QVERIFY(customGestureA.data() != customGestureB.data());
a->ungrabGesture(CustomGesture::GestureType);
- QVERIFY(customGestureA.isNull());
+ //We changed the deletion of Gestures to lazy during QT-4022, so we can't ensure the QGesture is deleted until now
QVERIFY(!customGestureB.isNull());
a->gestures.clear();
a->reset();
// send again to 'b' and make sure a never gets it.
sendCustomGesture(&event, b);
+ //After all Gestures are processed in the QGestureManager, we can ensure the QGesture is now deleted
+ QVERIFY(customGestureA.isNull());
QCOMPARE(a->gestureEventsReceived, 0);
QCOMPARE(a->gestureOverrideEventsReceived, 0);
}
diff --git a/tests/auto/mediaobject/tst_mediaobject.cpp b/tests/auto/mediaobject/tst_mediaobject.cpp
index 322e2e4586..d2c6f0f522 100644
--- a/tests/auto/mediaobject/tst_mediaobject.cpp
+++ b/tests/auto/mediaobject/tst_mediaobject.cpp
@@ -682,7 +682,7 @@ void tst_MediaObject::testPauseOnFinish()
}
void tst_MediaObject::testReconnectBetweenTwoMediaObjects(){
- // Purpose: Test that phonon can handle swithing the same sink
+ // Purpose: Test that phonon can handle switching the same sink
// between different media objects.
Phonon::MediaObject obj1;
diff --git a/tests/auto/modeltest/dynamictreemodel.cpp b/tests/auto/modeltest/dynamictreemodel.cpp
index b572eb16a1..fa634b6a5f 100644
--- a/tests/auto/modeltest/dynamictreemodel.cpp
+++ b/tests/auto/modeltest/dynamictreemodel.cpp
@@ -63,6 +63,13 @@ QModelIndex DynamicTreeModel::index(int row, int column, const QModelIndex &pare
QList<QList<qint64> > childIdColumns = m_childItems.value(parent.internalId());
+ const qint64 grandParent = findParentId(parent.internalId());
+ if (grandParent >= 0) {
+ QList<QList<qint64> > parentTable = m_childItems.value(grandParent);
+ Q_ASSERT(parent.column() < parentTable.size());
+ QList<qint64> parentSiblings = parentTable.at(parent.column());
+ Q_ASSERT(parent.row() < parentSiblings.size());
+ }
if (childIdColumns.size() == 0)
return QModelIndex();
diff --git a/tests/auto/platformquirks.h b/tests/auto/platformquirks.h
new file mode 100644
index 0000000000..06d23d726b
--- /dev/null
+++ b/tests/auto/platformquirks.h
@@ -0,0 +1,122 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef PLATFORMQUIRKS_H
+#define PLATFORMQUIRKS_H
+
+#include <qglobal.h>
+
+#ifdef QT_GUI_LIB
+#include <qapplication.h>
+#endif
+
+#ifdef Q_WS_X11
+#include <private/qt_x11_p.h>
+#endif
+
+struct PlatformQuirks
+{
+ enum MediaFileTypes
+ {
+ mp3,
+ wav,
+ ogg
+ };
+
+ /* On some platforms, libpng or libjpeg sacrifice precision for speed.
+ Esp. with NEON support, color values after decoding can be off by up
+ to three bytes.
+ */
+ static inline bool isImageLoaderImprecise()
+ {
+#ifdef Q_WS_MAEMO_5
+ return true;
+#elif defined(Q_WS_X11)
+ // ### this is a very bad assumption, we should really check the version of libjpeg
+ return X11->desktopEnvironment == DE_MEEGO_COMPOSITOR;
+#else
+ return false;
+#endif
+ }
+
+ /* Some windowing systems automatically maximize apps on startup (e.g. Maemo)
+ "Normal" fixed-sized windows do not work, the WM ignores their size settings.
+ */
+ static inline bool isAutoMaximizing()
+ {
+#ifdef Q_WS_MAEMO_5
+ return true;
+#elif defined(Q_WS_X11)
+ return X11->desktopEnvironment == DE_MEEGO_COMPOSITOR;
+#else
+ return false;
+#endif
+ }
+
+ static inline bool haveMouseCursor()
+ {
+#ifdef Q_WS_MAEMO_5
+ return false;
+#elif defined(Q_WS_X11)
+ return X11->desktopEnvironment != DE_MEEGO_COMPOSITOR;
+#else
+ return true;
+#endif
+ }
+
+ /* On some systems an ogg codec is not installed by default.
+ The autotests have to know which fileType is the default on the system*/
+ static inline MediaFileTypes defaultMediaFileType()
+ {
+#ifdef Q_WS_MAEMO_5
+ return PlatformQuirks::mp3;
+#endif
+#ifdef Q_WS_X11
+ // ### very bad assumption
+ if (X11->desktopEnvironment == DE_MEEGO_COMPOSITOR)
+ return PlatformQuirks::mp3;
+#endif
+ return PlatformQuirks::ogg;
+ }
+};
+
+#endif
+
diff --git a/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp b/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp
index dbcccc93c5..b723253c63 100644
--- a/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp
+++ b/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp
@@ -1167,6 +1167,7 @@ void tst_QAbstractItemModel::testMoveToGrandParent_data()
// Moving everything from one parent to another
QTest::newRow("move12") << 0 << 9 << 10;
+ QTest::newRow("move13") << 0 << 9 << 0;
}
void tst_QAbstractItemModel::testMoveToGrandParent()
@@ -1314,6 +1315,11 @@ void tst_QAbstractItemModel::testMoveToSibling_data()
QTest::newRow("move09") << 8 << 8 << 4;
QTest::newRow("move10") << 8 << 8 << 5;
QTest::newRow("move11") << 8 << 8 << 6;
+
+ // Move such that the destination parent no longer valid after the move.
+ // The destination parent is always QMI(5, 0), but after this move the
+ // row count is 5, so (5, 0) (used internally in QAIM) no longer refers to a valid index.
+ QTest::newRow("move12") << 0 << 4 << 0;
}
void tst_QAbstractItemModel::testMoveToSibling()
diff --git a/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp b/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp
index 04bd4329bc..fc8a126f5e 100644
--- a/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp
+++ b/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp
@@ -58,20 +58,29 @@ public:
private slots:
void expires_data();
void expires();
+ void expiresSynchronous_data();
+ void expiresSynchronous();
void lastModified_data();
void lastModified();
+ void lastModifiedSynchronous_data();
+ void lastModifiedSynchronous();
void etag_data();
void etag();
+ void etagSynchronous_data();
+ void etagSynchronous();
void cacheControl_data();
void cacheControl();
+ void cacheControlSynchronous_data();
+ void cacheControlSynchronous();
void deleteCache();
private:
void check();
+ void checkSynchronous();
};
class NetworkDiskCache : public QNetworkDiskCache
@@ -142,6 +151,16 @@ void tst_QAbstractNetworkCache::expires()
check();
}
+void tst_QAbstractNetworkCache::expiresSynchronous_data()
+{
+ expires_data();
+}
+
+void tst_QAbstractNetworkCache::expiresSynchronous()
+{
+ checkSynchronous();
+}
+
void tst_QAbstractNetworkCache::lastModified_data()
{
QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl");
@@ -164,6 +183,16 @@ void tst_QAbstractNetworkCache::lastModified()
check();
}
+void tst_QAbstractNetworkCache::lastModifiedSynchronous_data()
+{
+ tst_QAbstractNetworkCache::lastModified_data();
+}
+
+void tst_QAbstractNetworkCache::lastModifiedSynchronous()
+{
+ checkSynchronous();
+}
+
void tst_QAbstractNetworkCache::etag_data()
{
QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl");
@@ -186,6 +215,16 @@ void tst_QAbstractNetworkCache::etag()
check();
}
+void tst_QAbstractNetworkCache::etagSynchronous_data()
+{
+ tst_QAbstractNetworkCache::etag_data();
+}
+
+void tst_QAbstractNetworkCache::etagSynchronous()
+{
+ checkSynchronous();
+}
+
void tst_QAbstractNetworkCache::cacheControl_data()
{
QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl");
@@ -217,6 +256,16 @@ void tst_QAbstractNetworkCache::cacheControl()
check();
}
+void tst_QAbstractNetworkCache::cacheControlSynchronous_data()
+{
+ tst_QAbstractNetworkCache::cacheControl_data();
+}
+
+void tst_QAbstractNetworkCache::cacheControlSynchronous()
+{
+ checkSynchronous();
+}
+
void tst_QAbstractNetworkCache::check()
{
QFETCH(QNetworkRequest::CacheLoadControl, cacheLoadControl);
@@ -250,8 +299,6 @@ void tst_QAbstractNetworkCache::check()
QCOMPARE(reply2->error(), QNetworkReply::ContentNotFoundError);
QCOMPARE(secondData, QByteArray());
} else {
- if (reply2->error() != QNetworkReply::NoError)
- qDebug() << reply2->errorString();
QCOMPARE(reply2->error(), QNetworkReply::NoError);
QCOMPARE(QString(secondData), QString(goodData));
QCOMPARE(secondData, goodData);
@@ -263,16 +310,60 @@ void tst_QAbstractNetworkCache::check()
QList<QByteArray> rawHeaderList2 = reply2->rawHeaderList();
qSort(rawHeaderList);
qSort(rawHeaderList2);
+ }
+ QCOMPARE(diskCache->gotData, fetchFromCache);
+}
- // headers can change
- for (int i = 0; i < rawHeaderList.count(); ++i) {
- //qDebug() << i << rawHeaderList.value(i) << reply->rawHeader(rawHeaderList.value(i));
- //qDebug() << i << rawHeaderList2.value(i) << reply2->rawHeader(rawHeaderList2.value(i));
- //QCOMPARE(QString(rawHeaderList.value(i)), QString(rawHeaderList2.value(i)));
- //QCOMPARE(QString(reply->rawHeader(rawHeaderList.value(i))), QString(reply2->rawHeader(rawHeaderList2.value(i))));
- }
- //QCOMPARE(rawHeaderList.count(), rawHeaderList2.count());
+void tst_QAbstractNetworkCache::checkSynchronous()
+{
+ QSKIP("not working yet, see QTBUG-15221", SkipAll);
+ QFETCH(QNetworkRequest::CacheLoadControl, cacheLoadControl);
+ QFETCH(QString, url);
+ QFETCH(bool, fetchFromCache);
+
+ QNetworkAccessManager manager;
+ NetworkDiskCache *diskCache = new NetworkDiskCache(&manager);
+ manager.setCache(diskCache);
+ QCOMPARE(diskCache->gotData, false);
+
+ QUrl realUrl = url.contains("://") ? url : TESTFILE + url;
+ QNetworkRequest request(realUrl);
+
+ request.setAttribute(
+ static_cast<QNetworkRequest::Attribute>(QNetworkRequest::DownloadBufferAttribute + 1),
+ true);
+
+ // prime the cache
+ QNetworkReply *reply = manager.get(request);
+ QVERIFY(reply->isFinished()); // synchronous
+ QCOMPARE(diskCache->gotData, false);
+ QByteArray goodData = reply->readAll();
+
+ request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, cacheLoadControl);
+
+ // should be in the cache now
+ QNetworkReply *reply2 = manager.get(request);
+ QVERIFY(reply2->isFinished()); // synchronous
+
+ QByteArray secondData = reply2->readAll();
+ if (!fetchFromCache && cacheLoadControl == QNetworkRequest::AlwaysCache) {
+ QCOMPARE(reply2->error(), QNetworkReply::ContentNotFoundError);
+ QCOMPARE(secondData, QByteArray());
+ } else {
+ if (reply2->error() != QNetworkReply::NoError)
+ qDebug() << reply2->errorString();
+ QCOMPARE(reply2->error(), QNetworkReply::NoError);
+ QCOMPARE(QString(secondData), QString(goodData));
+ QCOMPARE(secondData, goodData);
+ QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ }
+
+ if (fetchFromCache) {
+ QList<QByteArray> rawHeaderList = reply->rawHeaderList();
+ QList<QByteArray> rawHeaderList2 = reply2->rawHeaderList();
+ qSort(rawHeaderList);
+ qSort(rawHeaderList2);
}
QCOMPARE(diskCache->gotData, fetchFromCache);
}
diff --git a/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp b/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp
index da8382605d..d6c4b53218 100644
--- a/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp
+++ b/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp
@@ -353,12 +353,13 @@ void tst_QAbstractScrollArea::task214488_layoutDirection()
void tst_QAbstractScrollArea::patternBackground()
{
- QScrollArea scrollArea;
+ QWidget topLevel;
+ QScrollArea scrollArea(&topLevel);
scrollArea.resize(200, 200);
QWidget widget;
widget.resize(600, 600);
scrollArea.setWidget(&widget);
- scrollArea.show();
+ topLevel.show();
QLinearGradient linearGrad(QPointF(250, 250), QPointF(300, 300));
linearGrad.setColorAt(0, Qt::yellow);
diff --git a/tests/auto/qabstractslider/tst_qabstractslider.cpp b/tests/auto/qabstractslider/tst_qabstractslider.cpp
index cf069db4fe..cd41d05b9c 100644
--- a/tests/auto/qabstractslider/tst_qabstractslider.cpp
+++ b/tests/auto/qabstractslider/tst_qabstractslider.cpp
@@ -55,6 +55,8 @@
class Slider : public QAbstractSlider
{
public:
+ Slider(QWidget *parent)
+ : QAbstractSlider(parent) {}
using QAbstractSlider::setRepeatAction;
using QAbstractSlider::repeatAction;
};
@@ -95,6 +97,7 @@ private slots:
private:
void waitUntilTimeElapsed(const QTime& t, int ms);
+ QWidget *topLevel;
Slider *slider;
int previousAction;
int reportedMinimum;
@@ -113,7 +116,8 @@ Q_DECLARE_METATYPE(QPoint)
void tst_QAbstractSlider::initTestCase()
{
- slider = new Slider;
+ topLevel = new QWidget;
+ slider = new Slider(topLevel);
slider->setObjectName("testWidget");
slider->resize(100,100);
slider->show();
@@ -129,7 +133,7 @@ void tst_QAbstractSlider::initTestCase()
void tst_QAbstractSlider::cleanupTestCase()
{
- delete slider;
+ delete topLevel;
}
void tst_QAbstractSlider::actionTriggered(int action)
@@ -735,7 +739,6 @@ void tst_QAbstractSlider::wheelEvent_data()
<< 100 // expected position after
#endif
<< QPoint(1,1);
-
QTest::newRow("Different orientation") << 0 // initial position
<< 0 // minimum
<< 100 // maximum
@@ -774,7 +777,6 @@ void tst_QAbstractSlider::wheelEvent_data()
#endif
<< QPoint(0,0);
-
QTest::newRow("Inverted controls") << 50 // initial position
<< 0 // minimum
<< 100 // maximum
@@ -924,6 +926,7 @@ void tst_QAbstractSlider::sliderPressedReleased()
QFETCH(uint, subControl);
QFETCH(int, expectedCount);
+ QWidget topLevel;
QAbstractSlider *slider;
switch (control) {
default:
@@ -931,11 +934,11 @@ void tst_QAbstractSlider::sliderPressedReleased()
return;
break;
case QStyle::CC_Slider:
- slider = new QSlider;
+ slider = new QSlider(&topLevel);
slider->setLayoutDirection(Qt::LeftToRight); // Makes "upside down" much easier to compute
break;
case QStyle::CC_ScrollBar:
- slider = new QScrollBar;
+ slider = new QScrollBar(&topLevel);
break;
}
@@ -949,7 +952,7 @@ void tst_QAbstractSlider::sliderPressedReleased()
QSignalSpy spy2(slider, SIGNAL(sliderReleased()));
// Mac Style requires the control to be active to get the correct values...
- slider->show();
+ topLevel.show();
slider->activateWindow();
QStyleOptionSlider option;
diff --git a/tests/auto/qaccessibility/tst_qaccessibility.cpp b/tests/auto/qaccessibility/tst_qaccessibility.cpp
index cea259c84a..21a530e44c 100644
--- a/tests/auto/qaccessibility/tst_qaccessibility.cpp
+++ b/tests/auto/qaccessibility/tst_qaccessibility.cpp
@@ -2269,6 +2269,7 @@ void tst_QAccessibility::scrollBarTest()
delete scrollBarInterface;
delete scrollBar;
+
// Test that the rects are ok.
{
QScrollBar *scrollBar = new QScrollBar(Qt::Horizontal);
@@ -2289,7 +2290,6 @@ void tst_QAccessibility::scrollBarTest()
const QRect scrollBarRect = scrollBarInterface->rect(0);
QVERIFY(scrollBarRect.isValid());
-
// Verify that the sub-control rects are valid and inside the scrollBar rect.
for (int i = LineUp; i <= LineDown; ++i) {
const QRect testRect = scrollBarInterface->rect(i);
@@ -3469,14 +3469,15 @@ void tst_QAccessibility::tableWidgetTest()
{
#ifdef QTEST_ACCESSIBILITY
{
- QTableWidget *w = new QTableWidget(8,4);
+ QWidget *topLevel = new QWidget;
+ QTableWidget *w = new QTableWidget(8,4,topLevel);
for (int r = 0; r < 8; ++r) {
for (int c = 0; c < 4; ++c) {
w->setItem(r, c, new QTableWidgetItem(tr("%1,%2").arg(c).arg(r)));
}
}
w->resize(100, 100);
- w->show();
+ topLevel->show();
#if defined(Q_WS_X11)
qt_x11_wait_for_window_manager(w);
QTest::qWait(100);
@@ -3503,6 +3504,7 @@ void tst_QAccessibility::tableWidgetTest()
delete view;
delete client;
delete w;
+ delete topLevel;
}
QTestAccessibility::clearEvents();
#else
diff --git a/tests/auto/qboxlayout/tst_qboxlayout.cpp b/tests/auto/qboxlayout/tst_qboxlayout.cpp
index c4acfdc56c..659f8a5391 100644
--- a/tests/auto/qboxlayout/tst_qboxlayout.cpp
+++ b/tests/auto/qboxlayout/tst_qboxlayout.cpp
@@ -198,7 +198,8 @@ void tst_QBoxLayout::sizeConstraints()
void tst_QBoxLayout::setGeometry()
{
- QWidget w;
+ QWidget toplevel;
+ QWidget w(&toplevel);
QVBoxLayout *lay = new QVBoxLayout;
lay->setMargin(0);
lay->setSpacing(0);
@@ -209,7 +210,7 @@ void tst_QBoxLayout::setGeometry()
lay2->setAlignment(Qt::AlignRight);
lay->addLayout(lay2);
w.setLayout(lay);
- w.show();
+ toplevel.show();
QRect newGeom(0, 0, 70, 70);
lay2->setGeometry(newGeom);
diff --git a/tests/auto/qbuttongroup/tst_qbuttongroup.cpp b/tests/auto/qbuttongroup/tst_qbuttongroup.cpp
index a610a7f917..1831e5d54f 100644
--- a/tests/auto/qbuttongroup/tst_qbuttongroup.cpp
+++ b/tests/auto/qbuttongroup/tst_qbuttongroup.cpp
@@ -396,19 +396,20 @@ void tst_QButtonGroup::task106609()
vbox->addWidget(radio2);
buttons->addButton(radio3, 3);
vbox->addWidget(radio3);
-
- radio1->setFocus();
- radio1->setChecked(true);
dlg.show();
+ QTest::qWaitForWindowShown(&dlg);
qRegisterMetaType<QAbstractButton*>("QAbstractButton*");
QSignalSpy spy1(buttons, SIGNAL(buttonClicked(QAbstractButton*)));
QSignalSpy spy2(buttons, SIGNAL(buttonClicked(int)));
- QTestEventLoop::instance().enterLoop(1);
QApplication::setActiveWindow(&dlg);
QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget*>(&dlg));
+ radio1->setFocus();
+ radio1->setChecked(true);
+ QTestEventLoop::instance().enterLoop(1);
+
//qDebug() << "int:" << spy2.count() << "QAbstractButton*:" << spy1.count();
QCOMPARE(spy2.count(), 2);
QCOMPARE(spy1.count(), 2);
diff --git a/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp b/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
index 042d8e027d..01473d83e1 100644
--- a/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
+++ b/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
@@ -82,7 +82,8 @@ private slots:
// Testing get/set functions
void tst_QCalendarWidget::getSetCheck()
{
- QCalendarWidget object;
+ QWidget topLevel;
+ QCalendarWidget object(&topLevel);
//horizontal header formats
object.setHorizontalHeaderFormat(QCalendarWidget::NoHorizontalHeader);
@@ -191,7 +192,7 @@ void tst_QCalendarWidget::buttonClickCheck()
QCOMPARE(month, object.monthShown());
button = qFindChild<QToolButton *>(&object, "qt_calendar_yearbutton");
- QTest::mouseClick(button, Qt::LeftButton);
+ QTest::mouseClick(button, Qt::LeftButton, Qt::NoModifier, button->rect().center(), 2);
QVERIFY(!button->isVisible());
QSpinBox *spinbox = qFindChild<QSpinBox *>(&object, "qt_calendar_yearedit");
QTest::qWait(500);
diff --git a/tests/auto/qclipboard/test/test.pro b/tests/auto/qclipboard/test/test.pro
index 0f8cad1792..97b0c9c320 100644
--- a/tests/auto/qclipboard/test/test.pro
+++ b/tests/auto/qclipboard/test/test.pro
@@ -17,6 +17,8 @@ wince*|symbian: {
paster.path = paster
symbian: {
+ LIBS += -lbafl -lestor -letext
+
load(data_caging_paths)
rsc.sources = $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/copier.rsc
rsc.sources += $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/paster.rsc
diff --git a/tests/auto/qclipboard/tst_qclipboard.cpp b/tests/auto/qclipboard/tst_qclipboard.cpp
index d1f3e86a9b..2e0362c1b8 100644
--- a/tests/auto/qclipboard/tst_qclipboard.cpp
+++ b/tests/auto/qclipboard/tst_qclipboard.cpp
@@ -47,6 +47,14 @@
#ifdef Q_WS_MAC
#include <Carbon/Carbon.h>
#endif
+#ifdef Q_OS_SYMBIAN
+#include "private/qcore_symbian_p.h"
+#include "txtetext.h"
+#include <baclipb.h>
+#endif
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include "txtclipboard.h"
+#endif
//TESTED_CLASS=
//TESTED_FILES=
@@ -62,6 +70,10 @@ private slots:
void testSignals();
void setMimeData();
void clearBeforeSetText();
+#ifdef Q_OS_SYMBIAN
+ void pasteCopySymbian();
+ void copyPasteSymbian();
+#endif
private:
bool nativeClipboardWorking();
@@ -335,6 +347,76 @@ void tst_QClipboard::clearBeforeSetText()
QCOMPARE(QApplication::clipboard()->text(), text);
}
+/*
+ Test that text copied from qt application
+ can be pasted with symbian clipboard
+*/
+#ifdef Q_OS_SYMBIAN
+// ### This test case only makes sense in symbian
+void tst_QClipboard::pasteCopySymbian()
+{
+ if (!nativeClipboardWorking())
+ QSKIP("Native clipboard not working in this setup", SkipAll);
+ const QString string("Test string symbian.");
+ QApplication::clipboard()->setText(string);
+
+ const TInt KPlainTextBegin = 0;
+ RFs fs = qt_s60GetRFs();
+ CClipboard* cb = CClipboard::NewForReadingLC(fs);
+
+ CPlainText* text = CPlainText::NewL();
+ CleanupStack::PushL(text);
+ TInt dataLength = text->PasteFromStoreL(cb->Store(), cb->StreamDictionary(),
+ KPlainTextBegin);
+ if (dataLength == 0) {
+ User::Leave(KErrNotFound);
+ }
+ HBufC* hBuf = HBufC::NewL(dataLength);
+ TPtr buf = hBuf->Des();
+ text->Extract(buf, KPlainTextBegin, dataLength);
+
+ QString storeString = qt_TDesC2QString(buf);
+ CleanupStack::PopAndDestroy(text);
+ CleanupStack::PopAndDestroy(cb);
+
+ QCOMPARE(string, storeString);
+}
+#endif
+
+/*
+ Test that text copied to symbian clipboard
+ can be pasted to qt clipboard
+*/
+#ifdef Q_OS_SYMBIAN
+// ### This test case only makes sense in symbian
+void tst_QClipboard::copyPasteSymbian()
+{
+ if (!nativeClipboardWorking())
+ QSKIP("Native clipboard not working in this setup", SkipAll);
+ const QString string("Test string symbian.");
+ const TInt KPlainTextBegin = 0;
+
+ RFs fs = qt_s60GetRFs();
+ CClipboard* cb = CClipboard::NewForWritingLC(fs);
+ CStreamStore& store = cb->Store();
+ CStreamDictionary& dict = cb->StreamDictionary();
+ RStoreWriteStream symbianStream;
+ TStreamId symbianStId = symbianStream.CreateLC(cb->Store());
+
+ CPlainText* text = CPlainText::NewL();
+ CleanupStack::PushL(text);
+ TPtrC textPtr(qt_QString2TPtrC(string));
+ text->InsertL(KPlainTextBegin, textPtr);
+ text->CopyToStoreL(store, dict, KPlainTextBegin, textPtr.Length());
+ CleanupStack::PopAndDestroy(text);
+ (cb->StreamDictionary()).AssignL(KClipboardUidTypePlainText, symbianStId);
+ cb->CommitL();
+ CleanupStack::PopAndDestroy(2, cb);
+
+ QCOMPARE(QApplication::clipboard()->text(), string);
+}
+#endif
+
QTEST_MAIN(tst_QClipboard)
#include "tst_qclipboard.moc"
diff --git a/tests/auto/qcolumnview/tst_qcolumnview.cpp b/tests/auto/qcolumnview/tst_qcolumnview.cpp
index 1da8c5dc16..d4caede87a 100644
--- a/tests/auto/qcolumnview/tst_qcolumnview.cpp
+++ b/tests/auto/qcolumnview/tst_qcolumnview.cpp
@@ -398,9 +398,10 @@ void tst_QColumnView::scrollTo()
QFETCH(bool, giveFocus);
if (reverse)
qApp->setLayoutDirection(Qt::RightToLeft);
- ColumnView view;
+ QWidget topLevel;
+ ColumnView view(&topLevel);
view.resize(200, 200);
- view.show();
+ topLevel.show();
view.scrollTo(QModelIndex(), QAbstractItemView::EnsureVisible);
QCOMPARE(view.HorizontalOffset(), 0);
@@ -428,6 +429,8 @@ void tst_QColumnView::scrollTo()
view.setFocus(Qt::OtherFocusReason);
else
view.clearFocus();
+
+ qApp->processEvents();
QTRY_COMPARE(view.hasFocus(), giveFocus);
// scroll to the right
int level = 0;
@@ -718,13 +721,14 @@ void tst_QColumnView::moveGrip()
QFETCH(bool, reverse);
if (reverse)
qApp->setLayoutDirection(Qt::RightToLeft);
- ColumnView view;
+ QWidget topLevel;
+ ColumnView view(&topLevel);
TreeModel model;
view.setModel(&model);
QModelIndex home = model.thirdLevel();
view.setCurrentIndex(home);
view.resize(640, 200);
- view.show();
+ topLevel.show();
QTest::qWait(ANIMATION_DELAY);
int columnNum = view.createdColumns.count() - 2;
@@ -741,9 +745,9 @@ void tst_QColumnView::moveGrip()
QAbstractItemView *column = qobject_cast<QAbstractItemView *>(grip->parent());
int oldX = column->width();
- QCOMPARE(view.columnWidths()[columnNum], oldX);
+ QCOMPARE(view.columnWidths().value(columnNum), oldX);
grip->moveGrip(10);
- QCOMPARE(view.columnWidths()[columnNum], (oldX + (reverse ? -10 : 10)));
+ QCOMPARE(view.columnWidths().value(columnNum), (oldX + (reverse ? -10 : 10)));
}
void tst_QColumnView::doubleClick()
@@ -889,12 +893,13 @@ void tst_QColumnView::rowDelegate()
void tst_QColumnView::resize()
{
- ColumnView view;
+ QWidget topLevel;
+ ColumnView view(&topLevel);
QDirModel model;
view.setModel(&model);
view.resize(200, 200);
- view.show();
+ topLevel.show();
QModelIndex home = model.index(QDir::homePath()).parent();
view.setCurrentIndex(home);
QTest::qWait(ANIMATION_DELAY);
diff --git a/tests/auto/qcombobox/tst_qcombobox.cpp b/tests/auto/qcombobox/tst_qcombobox.cpp
index 1fcea9e034..9614e1ea34 100644
--- a/tests/auto/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/qcombobox/tst_qcombobox.cpp
@@ -163,7 +163,7 @@ protected slots:
private:
QComboBox *testWidget;
- QDialog *parent;
+ QWidget *parent;
QPushButton* ok;
int editTextCount;
QString editText;
@@ -395,7 +395,7 @@ tst_QComboBox::~tst_QComboBox()
void tst_QComboBox::initTestCase()
{
// Create the test class
- parent = new QDialog(0);
+ parent = new QWidget(0, Qt::Window);
parent->setObjectName("parent");
parent->resize(400, 400);
testWidget = new QComboBox(parent);
@@ -1914,7 +1914,8 @@ void tst_QComboBox::itemListPosition()
//we test QFontComboBox because it has the specific behaviour to set a fixed size
//to the list view
- QFontComboBox combo;
+ QWidget topLevel;
+ QFontComboBox combo(&topLevel);
//the code to get the avaialbe screen space is copied from QComboBox code
const int scrNumber = QApplication::desktop()->screenNumber(&combo);
@@ -1932,7 +1933,7 @@ void tst_QComboBox::itemListPosition()
combo.move(screen.width()-combo.sizeHint().width(), 0); //puts the combo to the top-right corner
- combo.show();
+ topLevel.show();
//wait because the window manager can move the window if there is a right panel
QTRY_VERIFY(combo.isVisible());
combo.showPopup();
@@ -2254,9 +2255,10 @@ void tst_QComboBox::noScrollbar()
qApp->setStyleSheet(stylesheet);
{
- QComboBox comboBox;
+ QWidget topLevel;
+ QComboBox comboBox(&topLevel);
comboBox.addItems(initialContent);
- comboBox.show();
+ topLevel.show();
comboBox.resize(200, comboBox.height());
QTRY_VERIFY(comboBox.isVisible());
comboBox.showPopup();
diff --git a/tests/auto/qcompleter/tst_qcompleter.cpp b/tests/auto/qcompleter/tst_qcompleter.cpp
index 15905285c2..650c3289b6 100644
--- a/tests/auto/qcompleter/tst_qcompleter.cpp
+++ b/tests/auto/qcompleter/tst_qcompleter.cpp
@@ -119,6 +119,8 @@ private slots:
void directoryModel_data();
void directoryModel();
+ void fileSystemModel_data();
+ void fileSystemModel();
void changingModel_data();
void changingModel();
@@ -149,15 +151,17 @@ private slots:
void task253125_lineEditCompletion_data();
void task253125_lineEditCompletion();
void task247560_keyboardNavigation();
+ void QTBUG_14292_filesystem();
private:
- void filter();
+ void filter(bool assync = false);
void testRowCount();
enum ModelType {
CASE_SENSITIVELY_SORTED_MODEL,
CASE_INSENSITIVELY_SORTED_MODEL,
DIRECTORY_MODEL,
- HISTORY_MODEL
+ HISTORY_MODEL,
+ FILESYSTEM_MODEL
};
void setSourceModel(ModelType);
@@ -233,12 +237,21 @@ void tst_QCompleter::setSourceModel(ModelType type)
completer->setModel(new QDirModel(completer));
completer->setCompletionColumn(0);
break;
+ case FILESYSTEM_MODEL:
+ completer->setCsvCompletion(false);
+ {
+ QFileSystemModel *m = new QFileSystemModel(completer);
+ m->setRootPath("/");
+ completer->setModel(m);
+ }
+ completer->setCompletionColumn(0);
+ break;
default:
qDebug() << "Invalid type";
}
}
-void tst_QCompleter::filter()
+void tst_QCompleter::filter(bool assync)
{
QFETCH(QString, filterText);
QFETCH(QString, step);
@@ -250,6 +263,9 @@ void tst_QCompleter::filter()
return;
}
+ int times = 0;
+retry:
+
completer->setCompletionPrefix(filterText);
for (int i = 0; i < step.length(); i++) {
@@ -265,9 +281,13 @@ void tst_QCompleter::filter()
completer->setCurrentRow(row);
}
- //QModelIndex si = completer->currentIndex();
- //QCOMPARE(completer->model()->data(si).toString(), completion);
- QVERIFY(0 == QString::compare(completer->currentCompletion(), completionText, completer->caseSensitivity()));
+ int r = QString::compare(completer->currentCompletion(), completionText, completer->caseSensitivity());
+ if (assync && r && times < 10) {
+ times++;
+ QTest::qWait(50*times);
+ goto retry;
+ }
+ QVERIFY(!r);
}
// Testing get/set functions
@@ -552,6 +572,7 @@ void tst_QCompleter::csMatchingOnCiSortedModel()
void tst_QCompleter::directoryModel_data()
{
delete completer;
+
completer = new CsvCompleter;
completer->setModelSorting(QCompleter::CaseSensitivelySortedModel);
setSourceModel(DIRECTORY_MODEL);
@@ -598,6 +619,57 @@ void tst_QCompleter::directoryModel()
filter();
}
+void tst_QCompleter::fileSystemModel_data()
+{
+ delete completer;
+ completer = new CsvCompleter;
+ completer->setModelSorting(QCompleter::CaseSensitivelySortedModel);
+ setSourceModel(FILESYSTEM_MODEL);
+ completer->setCaseSensitivity(Qt::CaseInsensitive);
+
+ QTest::addColumn<QString>("filterText");
+ QTest::addColumn<QString>("step");
+ QTest::addColumn<QString>("completion");
+ QTest::addColumn<QString>("completionText");
+
+ // NOTE: Add tests carefully, ensurely the paths exist on all systems
+ // Output is the sourceText; currentCompletionText()
+
+ for (int i = 0; i < 2; i++) {
+ if (i == 1)
+ QTest::newRow("FILTERING_OFF") << "FILTERING_OFF" << "" << "" << "";
+
+#if defined(Q_OS_WINCE)
+ QTest::newRow("()") << "" << "" << "/" << "/";
+ QTest::newRow("()") << "\\Program" << "" << "Program Files" << "\\Program Files";
+#elif defined(Q_OS_WIN)
+ QTest::newRow("()") << "C" << "" << "C:" << "C:";
+ QTest::newRow("()") << "C:\\Program" << "" << "Program Files" << "C:\\Program Files";
+#elif defined(Q_OS_SYMBIAN)
+ QTest::newRow("()") << "C" << "" << "C:" << "C:";
+ QTest::newRow("()") << "C:\\re" << "" << "resource" << "C:\\resource";
+#elif defined (Q_OS_MAC)
+ QTest::newRow("()") << "" << "" << "/" << "/";
+ QTest::newRow("(/a)") << "/a" << "" << "Applications" << "/Applications";
+// QTest::newRow("(/d)") << "/d" << "" << "Developer" << "/Developer";
+#else
+ QTest::newRow("()") << "" << "" << "/" << "/";
+#if !defined(Q_OS_IRIX) && !defined(Q_OS_AIX) && !defined(Q_OS_HPUX)
+ QTest::newRow("(/h)") << "/h" << "" << "home" << "/home";
+#endif
+ QTest::newRow("(/et)") << "/et" << "" << "etc" << "/etc";
+ QTest::newRow("(/etc/passw)") << "/etc/passw" << "" << "passwd" << "/etc/passwd";
+#endif
+ }
+}
+
+void tst_QCompleter::fileSystemModel()
+{
+ //QFileSystemModel is assync.
+ filter(true);
+}
+
+
void tst_QCompleter::changingModel_data()
{
}
@@ -1381,5 +1453,80 @@ void tst_QCompleter::task247560_keyboardNavigation()
QCOMPARE(edit.text(), QString("row 3 column 1"));
}
+void tst_QCompleter::QTBUG_14292_filesystem()
+{
+ QDir tmpDir = QDir::temp();
+ qsrand(QTime::currentTime().msec());
+ QString d = "tst_QCompleter_" + QString::number(qrand());
+ QVERIFY(tmpDir.mkdir(d));
+
+#if 0
+ struct Cleanup {
+ QString dir;
+ ~Cleanup() {
+ qDebug() << dir <<
+ QFile::remove(dir); }
+ } cleanup;
+ cleanup.dir = tmpDir.absolutePath()+"/" +d;
+#endif
+
+ QVERIFY(tmpDir.cd(d));
+ QVERIFY(tmpDir.mkdir("hello"));
+ QVERIFY(tmpDir.mkdir("holla"));
+
+ QLineEdit edit;
+ QCompleter comp;
+ QFileSystemModel model;
+ model.setRootPath(tmpDir.path());
+ comp.setModel(&model);
+ edit.setCompleter(&comp);
+
+ edit.show();
+ QApplication::setActiveWindow(&edit);
+ QTest::qWaitForWindowShown(&edit);
+ QTRY_VERIFY(QApplication::activeWindow() == &edit);
+ edit.setFocus();
+ QTRY_VERIFY(edit.hasFocus());
+
+ QVERIFY(!comp.popup()->isVisible());
+ edit.setText(tmpDir.path());
+ QTest::keyClick(&edit, '/');
+ QTRY_VERIFY(comp.popup()->isVisible());
+ QCOMPARE(comp.popup()->model()->rowCount(), 2);
+ QApplication::processEvents();
+ QTest::keyClick(&edit, 'h');
+ QCOMPARE(comp.popup()->model()->rowCount(), 2);
+ QTest::keyClick(&edit, 'e');
+ QCOMPARE(comp.popup()->model()->rowCount(), 1);
+ QTest::keyClick(&edit, 'r');
+ QTRY_VERIFY(!comp.popup()->isVisible());
+ QVERIFY(tmpDir.mkdir("hero"));
+ QTRY_VERIFY(comp.popup()->isVisible());
+ QCOMPARE(comp.popup()->model()->rowCount(), 1);
+ QTest::keyClick(comp.popup(), Qt::Key_Escape);
+ QTRY_VERIFY(!comp.popup()->isVisible());
+ QVERIFY(tmpDir.mkdir("nothingThere"));
+ //there is no reason creating a file should open a popup, it did in Qt 4.7.0
+ QTest::qWait(60);
+ QVERIFY(!comp.popup()->isVisible());
+
+ QTest::keyClick(&edit, Qt::Key_Backspace);
+ QTRY_VERIFY(comp.popup()->isVisible());
+ QCOMPARE(comp.popup()->model()->rowCount(), 2);
+ QTest::keyClick(&edit, 'm');
+ QTRY_VERIFY(!comp.popup()->isVisible());
+
+ QWidget w;
+ w.show();
+ QApplication::setActiveWindow(&w);
+ QTest::qWaitForWindowShown(&w);
+ QTRY_VERIFY(!edit.hasFocus() && !comp.popup()->hasFocus());
+
+ QVERIFY(tmpDir.mkdir("hemo"));
+ //there is no reason creating a file should open a popup, it did in Qt 4.7.0
+ QTest::qWait(60);
+ QVERIFY(!comp.popup()->isVisible());
+}
+
QTEST_MAIN(tst_QCompleter)
#include "tst_qcompleter.moc"
diff --git a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/qdbusconnection/tst_qdbusconnection.cpp
index 96209b1ecc..4494d6fa44 100644
--- a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp
+++ b/tests/auto/qdbusconnection/tst_qdbusconnection.cpp
@@ -106,6 +106,8 @@ private slots:
void slotsWithLessParameters();
void nestedCallWithCallback();
+ void serviceRegistrationRaceCondition();
+
public:
QString serviceName() const { return "com.trolltech.Qt.Autotests.QDBusConnection"; }
bool callMethod(const QDBusConnection &conn, const QString &path);
@@ -298,7 +300,7 @@ void tst_QDBusConnection::registerObject()
// register one object at root:
MyObject obj;
QVERIFY(con.registerObject(path, &obj, QDBusConnection::ExportAllSlots));
- QCOMPARE(con.objectRegisteredAt(path), &obj);
+ QCOMPARE(con.objectRegisteredAt(path), static_cast<QObject *>(&obj));
QVERIFY(callMethod(con, path));
QCOMPARE(obj.path, path);
}
@@ -495,7 +497,7 @@ void tst_QDBusConnection::callSelf()
QDBusConnection connection = QDBusConnection::sessionBus();
QVERIFY(connection.registerObject("/test", &testObject,
QDBusConnection::ExportAllContents));
- QCOMPARE(connection.objectRegisteredAt("/test"), &testObject);
+ QCOMPARE(connection.objectRegisteredAt("/test"), static_cast<QObject *>(&testObject));
QVERIFY(connection.registerService(serviceName()));
QDBusInterface interface(serviceName(), "/test");
QVERIFY(interface.isValid());
@@ -647,6 +649,73 @@ void tst_QDBusConnection::nestedCallWithCallback()
QCOMPARE(signalsReceived, 1);
}
+class RaceConditionSignalWaiter : public QObject
+{
+ Q_OBJECT
+public:
+ int count;
+ RaceConditionSignalWaiter() : count (0) {}
+ virtual ~RaceConditionSignalWaiter() {}
+
+public slots:
+ void countUp() { ++count; emit done(); }
+signals:
+ void done();
+};
+
+void tst_QDBusConnection::serviceRegistrationRaceCondition()
+{
+ // There was a race condition in the updating of list of name owners in
+ // QtDBus. When the user connects to a signal coming from a given
+ // service, we must listen for NameOwnerChanged signals relevant to that
+ // name and update when the owner changes. However, it's possible that we
+ // receive in one chunk from the server both the NameOwnerChanged signal
+ // about the service and the signal we're interested in. Since QtDBus
+ // posts events in order to handle the incoming signals, the update
+ // happens too late.
+
+ const QString connectionName = "testConnectionName";
+ const QString serviceName = "org.example.SecondaryName";
+
+ QDBusConnection session = QDBusConnection::sessionBus();
+ QVERIFY(!session.interface()->isServiceRegistered(serviceName));
+
+ // connect to the signal:
+ RaceConditionSignalWaiter recv;
+ session.connect(serviceName, "/", "com.trolltech.TestCase", "oneSignal", &recv, SLOT(countUp()));
+
+ // create a secondary connection and register a name
+ QDBusConnection connection = QDBusConnection::connectToBus(QDBusConnection::SessionBus, connectionName);
+ QDBusConnection::disconnectFromBus(connectionName); // disconnection happens when "connection" goes out of scope
+ QVERIFY(connection.isConnected());
+ QVERIFY(connection.registerService(serviceName));
+
+ // send a signal
+ QDBusMessage msg = QDBusMessage::createSignal("/", "com.trolltech.TestCase", "oneSignal");
+ connection.send(msg);
+
+ // make a blocking call just to be sure that the buffer was flushed
+ msg = QDBusMessage::createMethodCall("org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus",
+ "NameHasOwner");
+ msg << connectionName;
+ connection.call(msg); // ignore result
+
+ // Now here's the race condition (more info on task QTBUG-15651):
+ // the bus has most likely queued three signals for us to work on:
+ // 1) NameOwnerChanged for the connection we created above
+ // 2) NameOwnerChanged for the service we registered above
+ // 3) The "oneSignal" signal we sent
+ //
+ // We'll most likely receive all three in one go from the server. We must
+ // update the owner of serviceName before we start processing the
+ // "oneSignal" signal.
+
+ QTestEventLoop::instance().connect(&recv, SIGNAL(done()), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(1);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(recv.count, 1);
+}
+
QString MyObject::path;
QTEST_MAIN(tst_QDBusConnection)
diff --git a/tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp b/tests/auto/qdoublevalidator/tst_qdoublevalidator.cpp
index 26890b3424..98c474010b 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/qeventloop/tst_qeventloop.cpp b/tests/auto/qeventloop/tst_qeventloop.cpp
index 8c2ffd93c7..8331a5f072 100644
--- a/tests/auto/qeventloop/tst_qeventloop.cpp
+++ b/tests/auto/qeventloop/tst_qeventloop.cpp
@@ -431,7 +431,7 @@ void tst_QEventLoop::exec()
QCOMPARE(executor.returnCode, -1);
}
-#if !defined(QT_NO_EXCEPTIONS) && !defined(Q_OS_WINCE_WM) && !defined(Q_OS_SYMBIAN)
+#if !defined(QT_NO_EXCEPTIONS) && !defined(Q_OS_WINCE_WM) && !defined(Q_OS_SYMBIAN) && !defined(NO_EVENTLOOP_EXCEPTIONS)
// Windows Mobile cannot handle cross library exceptions
// qobject.cpp will try to rethrow the exception after handling
// which causes gwes.exe to crash
diff --git a/tests/auto/qfileinfo/tst_qfileinfo.cpp b/tests/auto/qfileinfo/tst_qfileinfo.cpp
index 208110a9d4..c9bf17adc9 100644
--- a/tests/auto/qfileinfo/tst_qfileinfo.cpp
+++ b/tests/auto/qfileinfo/tst_qfileinfo.cpp
@@ -70,6 +70,10 @@
# define SRCDIR ""
#endif
+QT_BEGIN_NAMESPACE
+extern Q_AUTOTEST_EXPORT bool qIsLikelyToBeNfs(int /* handle */);
+QT_END_NAMESPACE
+
//TESTED_CLASS=
//TESTED_FILES=
@@ -939,6 +943,10 @@ void tst_QFileInfo::fileTimes()
QEXPECT_FAIL("longfile absolutepath", "Maximum total filepath cannot exceed 256 characters in Symbian", Abort);
#endif
QVERIFY(file.open(QFile::WriteOnly | QFile::Text));
+#ifdef Q_OS_UNIX
+ if (qIsLikelyToBeNfs(file.handle()))
+ QSKIP("This Test doesn't work on NFS", SkipAll);
+#endif
QTextStream ts(&file);
ts << fileName << endl;
}
diff --git a/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp b/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
index a26e34d79f..1feaceda8b 100644
--- a/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
+++ b/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
@@ -135,14 +135,11 @@ void tst_QFileSystemWatcher::basicTest()
// create watcher, forcing it to use a specific backend
QFileSystemWatcher watcher;
watcher.setObjectName(QLatin1String("_qt_autotest_force_engine_") + backend);
+ watcher.removePath(testFile.fileName());
watcher.addPath(testFile.fileName());
QSignalSpy changedSpy(&watcher, SIGNAL(fileChanged(const QString &)));
QEventLoop eventLoop;
- connect(&watcher,
- SIGNAL(fileChanged(const QString &)),
- &eventLoop,
- SLOT(quit()));
QTimer timer;
connect(&timer, SIGNAL(timeout()), &eventLoop, SLOT(quit()));
@@ -278,10 +275,6 @@ void tst_QFileSystemWatcher::watchDirectory()
QSignalSpy changedSpy(&watcher, SIGNAL(directoryChanged(const QString &)));
QEventLoop eventLoop;
- connect(&watcher,
- SIGNAL(directoryChanged(const QString &)),
- &eventLoop,
- SLOT(quit()));
QTimer timer;
connect(&timer, SIGNAL(timeout()), &eventLoop, SLOT(quit()));
diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp
index e411508f3a..cc2cac979a 100644
--- a/tests/auto/qgl/tst_qgl.cpp
+++ b/tests/auto/qgl/tst_qgl.cpp
@@ -96,6 +96,8 @@ private slots:
void shareRegister();
void qglContextDefaultBindTexture();
void textureCleanup();
+ void threadImages();
+ void nullRectCrash();
};
tst_QGL::tst_QGL()
@@ -2253,6 +2255,149 @@ 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;
+}
+
+void tst_QGL::nullRectCrash()
+{
+ if (!QGLFramebufferObject::hasOpenGLFramebufferObjects())
+ QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle);
+
+ QGLWidget glw;
+ glw.makeCurrent();
+
+ QGLFramebufferObjectFormat fboFormat;
+ fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
+
+ QGLFramebufferObject *fbo = new QGLFramebufferObject(128, 128, fboFormat);
+
+ QPainter fboPainter(fbo);
+
+ fboPainter.setPen(QPen(QColor(255, 127, 127, 127), 2));
+ fboPainter.setBrush(QColor(127, 255, 127, 127));
+ fboPainter.drawRect(QRectF());
+
+ fboPainter.end();
+}
+
class tst_QGLDummy : public QObject
{
Q_OBJECT
diff --git a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp
index 07fa630066..5315cd1cf6 100644
--- a/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp
+++ b/tests/auto/qgraphicseffect/tst_qgraphicseffect.cpp
@@ -51,6 +51,7 @@
#include "../../shared/util.h"
#include <private/qgraphicseffect_p.h>
+#include "../platformquirks.h"
//TESTED_CLASS=
//TESTED_FILES=
@@ -710,7 +711,10 @@ void tst_QGraphicsEffect::prepareGeometryChangeInvalidateCache()
scene.addItem(item);
QGraphicsView view(&scene);
- view.show();
+ if(PlatformQuirks::isAutoMaximizing())
+ view.showFullScreen();
+ else
+ view.show();
QTest::qWaitForWindowShown(&view);
QTRY_COMPARE(item->nbPaint, 1);
diff --git a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
index 5b03767c1b..35ea059864 100644
--- a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
+++ b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
@@ -61,13 +61,19 @@ private slots:
void qgraphicsgridlayout();
void addItem_data();
void addItem();
+ void alignment_data();
void alignment();
void alignment2();
void alignment2_data();
+ void columnAlignment_data();
void columnAlignment();
+ void columnCount_data();
void columnCount();
+ void columnMaximumWidth_data();
void columnMaximumWidth();
+ void columnMinimumWidth_data();
void columnMinimumWidth();
+ void columnPreferredWidth_data();
void columnPreferredWidth();
void setColumnFixedWidth();
void columnSpacing();
@@ -78,12 +84,18 @@ private slots:
void horizontalSpacing();
void itemAt();
void removeAt();
+ void rowAlignment_data();
void rowAlignment();
+ void rowCount_data();
void rowCount();
+ void rowMaximumHeight_data();
void rowMaximumHeight();
+ void rowMinimumHeight_data();
void rowMinimumHeight();
+ void rowPreferredHeight_data();
void rowPreferredHeight();
void rowSpacing();
+ void rowStretchFactor_data();
void rowStretchFactor();
void setColumnSpacing_data();
void setColumnSpacing();
@@ -98,6 +110,7 @@ private slots:
void sizeHint();
void verticalSpacing_data();
void verticalSpacing();
+ void layoutDirection_data();
void layoutDirection();
void removeLayout();
void defaultStretchFactors_data();
@@ -107,12 +120,16 @@ private slots:
void avoidRecursionInInsertItem();
void styleInfoLeak();
void task236367_maxSizeHint();
+ void heightForWidth();
+ void heightForWidthWithSpanning();
+ void stretchAndHeightForWidth();
+ void testDefaultAlignment();
};
class RectWidget : public QGraphicsWidget
{
public:
- RectWidget(QGraphicsItem *parent = 0) : QGraphicsWidget(parent){}
+ RectWidget(QGraphicsItem *parent = 0) : QGraphicsWidget(parent), m_fnConstraint(0) {}
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
@@ -125,9 +142,12 @@ public:
QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const
{
- if (m_sizeHints[which].isValid()) {
+ if (constraint.width() < 0 && constraint.height() < 0 && m_sizeHints[which].isValid()) {
return m_sizeHints[which];
}
+ if (m_fnConstraint) {
+ return m_fnConstraint(which, constraint);
+ }
return QGraphicsWidget::sizeHint(which, constraint);
}
@@ -136,7 +156,13 @@ public:
updateGeometry();
}
+ void setConstraintFunction(QSizeF (*fnConstraint)(Qt::SizeHint, const QSizeF &)) {
+ m_fnConstraint = fnConstraint;
+ }
+
QSizeF m_sizeHints[Qt::NSizeHints];
+ QSizeF (*m_fnConstraint)(Qt::SizeHint, const QSizeF &);
+
};
struct ItemDesc
@@ -146,7 +172,8 @@ struct ItemDesc
m_rowSpan(1),
m_colSpan(1),
m_sizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)),
- m_align(0)
+ m_align(0),
+ m_fnConstraint(0)
{
}
@@ -213,8 +240,20 @@ struct ItemDesc
return (*this);
}
+ ItemDesc &heightForWidth(QSizeF (*fnConstraint)(Qt::SizeHint, const QSizeF &)) {
+ m_fnConstraint = fnConstraint;
+ m_constraintOrientation = Qt::Vertical;
+ return (*this);
+ }
+
void apply(QGraphicsGridLayout *layout, QGraphicsWidget *item) {
- item->setSizePolicy(m_sizePolicy);
+ QSizePolicy sp = m_sizePolicy;
+ if (m_fnConstraint) {
+ sp.setHeightForWidth(m_constraintOrientation == Qt::Vertical);
+ //sp.setWidthForHeight(m_constraintOrientation == Qt::Horizontal);
+ }
+
+ item->setSizePolicy(sp);
for (int i = 0; i < Qt::NSizeHints; ++i) {
if (!m_sizes[i].isValid())
continue;
@@ -233,6 +272,7 @@ struct ItemDesc
break;
}
}
+
layout->addItem(item, m_pos.first, m_pos.second, m_rowSpan, m_colSpan);
layout->setAlignment(item, m_align);
}
@@ -240,6 +280,7 @@ struct ItemDesc
void apply(QGraphicsGridLayout *layout, RectWidget *item) {
for (int i = 0; i < Qt::NSizeHints; ++i)
item->setSizeHint((Qt::SizeHint)i, m_sizeHints[i]);
+ item->setConstraintFunction(m_fnConstraint);
apply(layout, static_cast<QGraphicsWidget*>(item));
}
@@ -251,6 +292,9 @@ struct ItemDesc
QSizeF m_sizeHints[Qt::NSizeHints];
QSizeF m_sizes[Qt::NSizeHints];
Qt::Alignment m_align;
+
+ Qt::Orientation m_constraintOrientation;
+ QSizeF (*m_fnConstraint)(Qt::SizeHint, const QSizeF &);
};
typedef QList<ItemDesc> ItemList;
@@ -342,7 +386,7 @@ void tst_QGraphicsGridLayout::qgraphicsgridlayout()
layout.verticalSpacing();
}
-static void populateLayout(QGraphicsGridLayout *gridLayout, int width, int height)
+static void populateLayout(QGraphicsGridLayout *gridLayout, int width, int height, bool hasHeightForWidth = false)
{
for (int y = 0; y < height; ++y) {
for (int x = 0; x < width; ++x) {
@@ -351,6 +395,9 @@ static void populateLayout(QGraphicsGridLayout *gridLayout, int width, int heigh
item->setPreferredSize(25, 25);
item->setMaximumSize(50, 50);
gridLayout->addItem(item, y, x);
+ QSizePolicy policy = item->sizePolicy();
+ policy.setHeightForWidth(hasHeightForWidth);
+ item->setSizePolicy(policy);
}
}
}
@@ -367,18 +414,22 @@ static void populateLayout(QGraphicsGridLayout *gridLayout, int width, int heigh
* |xxxx|+---|---+|
* +----+----+----+
*/
-static void populateLayoutWithSpansAndHoles(QGraphicsGridLayout *gridLayout)
+static void populateLayoutWithSpansAndHoles(QGraphicsGridLayout *gridLayout, bool hasHeightForWidth = false)
{
QGraphicsWidget *item = new RectWidget();
item->setMinimumSize(10, 10);
item->setPreferredSize(25, 25);
item->setMaximumSize(50, 50);
+ QSizePolicy sizepolicy = item->sizePolicy();
+ sizepolicy.setHeightForWidth(hasHeightForWidth);
+ item->setSizePolicy(sizepolicy);
gridLayout->addItem(item, 0, 0, 1, 2);
item = new RectWidget();
item->setMinimumSize(10, 10);
item->setPreferredSize(25, 25);
item->setMaximumSize(50, 50);
+ item->setSizePolicy(sizepolicy);
gridLayout->addItem(item, 1, 1, 1, 2);
}
@@ -431,19 +482,28 @@ void tst_QGraphicsGridLayout::addItem()
delete layout;
}
+void tst_QGraphicsGridLayout::alignment_data()
+{
+ QTest::addColumn<bool>("hasHeightForWidth");
+
+ QTest::newRow("") << false;
+ QTest::newRow("hasHeightForWidth") << true;
+}
+
// public Qt::Alignment alignment(QGraphicsLayoutItem* item) const
void tst_QGraphicsGridLayout::alignment()
{
#ifdef Q_WS_MAC
QSKIP("Resizing a QGraphicsWidget to effectiveSizeHint(Qt::MaximumSize) is currently not supported on mac", SkipAll);
#endif
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
QGraphicsGridLayout *layout = new QGraphicsGridLayout();
scene.addItem(widget);
widget->setLayout(layout);
- populateLayout(layout, 3, 2);
+ populateLayout(layout, 3, 2, hasHeightForWidth);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
@@ -495,6 +555,14 @@ void tst_QGraphicsGridLayout::alignment()
delete widget;
}
+void tst_QGraphicsGridLayout::columnAlignment_data()
+{
+ QTest::addColumn<bool>("hasHeightForWidth");
+
+ QTest::newRow("") << false;
+ QTest::newRow("hasHeightForWidth") << true;
+}
+
// public void setColumnAlignment(int column, Qt::Alignment alignment)
// public Qt::Alignment columnAlignment(int column) const
void tst_QGraphicsGridLayout::columnAlignment()
@@ -502,13 +570,14 @@ void tst_QGraphicsGridLayout::columnAlignment()
#ifdef Q_WS_MAC
QSKIP("Resizing a QGraphicsWidget to effectiveSizeHint(Qt::MaximumSize) is currently not supported on mac", SkipAll);
#endif
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
QGraphicsGridLayout *layout = new QGraphicsGridLayout();
scene.addItem(widget);
widget->setLayout(layout);
- populateLayout(layout, 3, 2);
+ populateLayout(layout, 3, 2, hasHeightForWidth);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(1);
widget->setContentsMargins(0, 0, 0, 0);
@@ -554,9 +623,17 @@ void tst_QGraphicsGridLayout::columnAlignment()
delete widget;
}
+void tst_QGraphicsGridLayout::columnCount_data()
+{
+ QTest::addColumn<bool>("hasHeightForWidth");
+
+ QTest::newRow("") << false;
+ QTest::newRow("hasHeightForWidth") << true;
+}
// public int columnCount() const
void tst_QGraphicsGridLayout::columnCount()
{
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
@@ -588,7 +665,7 @@ void tst_QGraphicsGridLayout::columnCount()
// ### Talk with Jasmin. Not sure if removeAt() should adjust columnCount().
widget->setLayout(0);
layout = new QGraphicsGridLayout();
- populateLayout(layout, 3, 2);
+ populateLayout(layout, 3, 2, hasHeightForWidth);
QCOMPARE(layout->columnCount(), 3);
layout->removeAt(5);
layout->removeAt(3);
@@ -603,19 +680,31 @@ void tst_QGraphicsGridLayout::columnCount()
delete widget;
}
+void tst_QGraphicsGridLayout::columnMaximumWidth_data()
+{
+ QTest::addColumn<bool>("hasHeightForWidth");
+
+ QTest::newRow("") << false;
+ QTest::newRow("hasHeightForWidth") << true;
+}
// public qreal columnMaximumWidth(int column) const
void tst_QGraphicsGridLayout::columnMaximumWidth()
{
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
QGraphicsGridLayout *layout = new QGraphicsGridLayout();
scene.addItem(widget);
widget->setLayout(layout);
- populateLayout(layout, 3, 2);
+ populateLayout(layout, 3, 2, hasHeightForWidth);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
+ QCOMPARE(layout->minimumSize(), QSizeF(10+10+10, 10+10));
+ QCOMPARE(layout->preferredSize(), QSizeF(25+25+25, 25+25));
+ QCOMPARE(layout->maximumSize(), QSizeF(50+50+50, 50+50));
+
// should at least be a very large number
QVERIFY(layout->columnMaximumWidth(0) >= 10000);
QCOMPARE(layout->columnMaximumWidth(0), layout->columnMaximumWidth(1));
@@ -623,31 +712,87 @@ void tst_QGraphicsGridLayout::columnMaximumWidth()
layout->setColumnMaximumWidth(0, 20);
layout->setColumnMaximumWidth(2, 60);
- view.show();
- widget->show();
+ QCOMPARE(layout->minimumSize(), QSizeF(10+10+10, 10+10));
+ QCOMPARE(layout->preferredSize(), QSizeF(20+25+25, 25+25));
+ QCOMPARE(layout->maximumSize(), QSizeF(20+50+60, 50+50));
+ QCOMPARE(layout->maximumSize(), widget->maximumSize());
+
widget->resize(widget->effectiveSizeHint(Qt::PreferredSize));
- QApplication::processEvents();
+ layout->activate();
- QCOMPARE(layout->itemAt(0,0)->geometry().width(), 20.0);
- QCOMPARE(layout->itemAt(1,0)->geometry().width(), 20.0);
- QCOMPARE(layout->itemAt(0,1)->geometry().width(), 25.0);
- QCOMPARE(layout->itemAt(1,1)->geometry().width(), 25.0);
- QCOMPARE(layout->itemAt(0,2)->geometry().width(), 25.0);
- QCOMPARE(layout->itemAt(1,2)->geometry().width(), 25.0);
+ QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 25));
+ QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 25, 20, 25));
+ QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 25, 25));
+ QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 25, 25, 25));
+ QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(45, 0, 25, 25));
+ QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(45, 25, 25, 25));
+
+ layout->setColumnAlignment(2, Qt::AlignCenter);
+ widget->resize(widget->effectiveSizeHint(Qt::MaximumSize));
+ layout->activate();
+ QCOMPARE(layout->geometry(), QRectF(0,0,20+50+60, 50+50));
+ QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 50));
+ QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 50, 20, 50));
+ QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 50, 50));
+ QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 50, 50, 50));
+ QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(75, 0, 50, 50));
+ QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(75, 50, 50, 50));
+
+ for (int i = 0; i < layout->count(); i++)
+ layout->setAlignment(layout->itemAt(i), Qt::AlignRight | Qt::AlignBottom);
+ layout->activate();
+ QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 50));
+ QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 50, 20, 50));
+ QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 50, 50));
+ QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 50, 50, 50));
+ QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(80, 0, 50, 50));
+ QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(80, 50, 50, 50));
+ for (int i = 0; i < layout->count(); i++)
+ layout->setAlignment(layout->itemAt(i), Qt::AlignCenter);
+
+ layout->setMaximumSize(layout->maximumSize() + QSizeF(60,60));
+ widget->resize(widget->effectiveSizeHint(Qt::MaximumSize));
+ layout->activate();
+
+ QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 15, 20, 50));
+ QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 95, 20, 50));
+ QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20+30, 15, 50, 50));
+ QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20+30, 95, 50, 50));
+ QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(20+60+50+5, 15, 50, 50));
+ QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(20+60+50+5, 95, 50, 50));
+
+ layout->setMaximumSize(layout->preferredSize() + QSizeF(20,20));
+ widget->resize(widget->effectiveSizeHint(Qt::MaximumSize));
+ layout->activate();
+
+ QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 35));
+ QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 35, 20, 35));
+ QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 35, 35));
+ QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 35, 35, 35));
+ QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(55, 0, 35, 35));
+ QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(55, 35, 35, 35));
delete widget;
}
+void tst_QGraphicsGridLayout::columnMinimumWidth_data()
+{
+ QTest::addColumn<bool>("hasHeightForWidth");
+
+ QTest::newRow("") << false;
+ QTest::newRow("hasHeightForWidth") << true;
+}
// public qreal columnMinimumWidth(int column) const
void tst_QGraphicsGridLayout::columnMinimumWidth()
{
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
QGraphicsGridLayout *layout = new QGraphicsGridLayout();
scene.addItem(widget);
widget->setLayout(layout);
- populateLayout(layout, 3, 2);
+ populateLayout(layout, 3, 2, hasHeightForWidth);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
@@ -673,16 +818,24 @@ void tst_QGraphicsGridLayout::columnMinimumWidth()
delete widget;
}
+void tst_QGraphicsGridLayout::columnPreferredWidth_data()
+{
+ QTest::addColumn<bool>("hasHeightForWidth");
+
+ QTest::newRow("") << false;
+ QTest::newRow("hasHeightForWidth") << true;
+}
// public qreal columnPreferredWidth(int column) const
void tst_QGraphicsGridLayout::columnPreferredWidth()
{
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
QGraphicsGridLayout *layout = new QGraphicsGridLayout();
scene.addItem(widget);
widget->setLayout(layout);
- populateLayout(layout, 3, 2);
+ populateLayout(layout, 3, 2, hasHeightForWidth);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
@@ -992,16 +1145,25 @@ void tst_QGraphicsGridLayout::removeAt()
delete widget;
}
+void tst_QGraphicsGridLayout::rowAlignment_data()
+{
+ QTest::addColumn<bool>("hasHeightForWidth");
+
+ QTest::newRow("") << false;
+ QTest::newRow("hasHeightForWidth") << true;
+}
+
// public Qt::Alignment rowAlignment(int row) const
void tst_QGraphicsGridLayout::rowAlignment()
{
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
QGraphicsGridLayout *layout = new QGraphicsGridLayout();
scene.addItem(widget);
widget->setLayout(layout);
- populateLayout(layout, 2, 3);
+ populateLayout(layout, 2, 3, hasHeightForWidth);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(1);
widget->setContentsMargins(0, 0, 0, 0);
@@ -1051,17 +1213,26 @@ void tst_QGraphicsGridLayout::rowAlignment()
delete widget;
}
+void tst_QGraphicsGridLayout::rowCount_data()
+{
+ QTest::addColumn<bool>("hasHeightForWidth");
+
+ QTest::newRow("") << false;
+ QTest::newRow("hasHeightForWidth") << true;
+}
+
// public int rowCount() const
// public int columnCount() const
void tst_QGraphicsGridLayout::rowCount()
{
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
QGraphicsGridLayout *layout = new QGraphicsGridLayout();
scene.addItem(widget);
widget->setLayout(layout);
- populateLayout(layout, 2, 3);
+ populateLayout(layout, 2, 3, hasHeightForWidth);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
widget->setContentsMargins(0, 0, 0, 0);
@@ -1071,23 +1242,32 @@ void tst_QGraphicsGridLayout::rowCount()
// with spans and holes...
widget->setLayout(0);
layout = new QGraphicsGridLayout();
- populateLayoutWithSpansAndHoles(layout);
+ populateLayoutWithSpansAndHoles(layout, hasHeightForWidth);
QCOMPARE(layout->rowCount(), 2);
QCOMPARE(layout->columnCount(), 3);
delete widget;
}
+void tst_QGraphicsGridLayout::rowMaximumHeight_data()
+{
+ QTest::addColumn<bool>("hasHeightForWidth");
+
+ QTest::newRow("") << false;
+ QTest::newRow("hasHeightForWidth") << true;
+}
+
// public qreal rowMaximumHeight(int row) const
void tst_QGraphicsGridLayout::rowMaximumHeight()
{
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
QGraphicsGridLayout *layout = new QGraphicsGridLayout;
scene.addItem(widget);
widget->setLayout(layout);
- populateLayout(layout, 2, 3);
+ populateLayout(layout, 2, 3, hasHeightForWidth);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
@@ -1113,16 +1293,24 @@ void tst_QGraphicsGridLayout::rowMaximumHeight()
delete widget;
}
+void tst_QGraphicsGridLayout::rowMinimumHeight_data()
+{
+ QTest::addColumn<bool>("hasHeightForWidth");
+
+ QTest::newRow("") << false;
+ QTest::newRow("hasHeightForWidth") << true;
+}
// public qreal rowMinimumHeight(int row) const
void tst_QGraphicsGridLayout::rowMinimumHeight()
{
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
QGraphicsGridLayout *layout = new QGraphicsGridLayout();
scene.addItem(widget);
widget->setLayout(layout);
- populateLayout(layout, 2, 3);
+ populateLayout(layout, 2, 3, hasHeightForWidth);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
@@ -1148,16 +1336,24 @@ void tst_QGraphicsGridLayout::rowMinimumHeight()
delete widget;
}
+void tst_QGraphicsGridLayout::rowPreferredHeight_data()
+{
+ QTest::addColumn<bool>("hasHeightForWidth");
+
+ QTest::newRow("") << false;
+ QTest::newRow("hasHeightForWidth") << true;
+}
// public qreal rowPreferredHeight(int row) const
void tst_QGraphicsGridLayout::rowPreferredHeight()
{
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
QGraphicsGridLayout *layout = new QGraphicsGridLayout();
scene.addItem(widget);
widget->setLayout(layout);
- populateLayout(layout, 2, 3);
+ populateLayout(layout, 2, 3, hasHeightForWidth);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
@@ -1246,16 +1442,25 @@ void tst_QGraphicsGridLayout::rowSpacing()
}
+void tst_QGraphicsGridLayout::rowStretchFactor_data()
+{
+ QTest::addColumn<bool>("hasHeightForWidth");
+
+ QTest::newRow("") << false;
+ QTest::newRow("hasHeightForWidth") << true;
+}
+
// public int rowStretchFactor(int row) const
void tst_QGraphicsGridLayout::rowStretchFactor()
{
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
QGraphicsGridLayout *layout = new QGraphicsGridLayout();
scene.addItem(widget);
widget->setLayout(layout);
- populateLayout(layout, 2, 3);
+ populateLayout(layout, 2, 3, hasHeightForWidth);
layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0);
@@ -1279,9 +1484,12 @@ void tst_QGraphicsGridLayout::setColumnSpacing_data()
{
QTest::addColumn<int>("column");
QTest::addColumn<qreal>("spacing");
- QTest::newRow("null") << 0 << qreal(0.0);
- QTest::newRow("10") << 0 << qreal(10.0);
+ QTest::addColumn<bool>("hasHeightForWidth");
+ QTest::newRow("null") << 0 << qreal(0.0) << false;
+ QTest::newRow("10") << 0 << qreal(10.0) << false;
+ QTest::newRow("null, hasHeightForWidth") << 0 << qreal(0.0) << true;
+ QTest::newRow("10, hasHeightForWidth") << 0 << qreal(10.0) << true;
}
// public void setColumnSpacing(int column, qreal spacing)
@@ -1289,6 +1497,7 @@ void tst_QGraphicsGridLayout::setColumnSpacing()
{
QFETCH(int, column);
QFETCH(qreal, spacing);
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
@@ -1296,7 +1505,7 @@ void tst_QGraphicsGridLayout::setColumnSpacing()
QGraphicsGridLayout *layout = new QGraphicsGridLayout();
scene.addItem(widget);
widget->setLayout(layout);
- populateLayout(layout, 3, 2);
+ populateLayout(layout, 3, 2, hasHeightForWidth);
layout->setSpacing(0);
layout->setContentsMargins(0, 0, 0, 0);
qreal oldSpacing = layout->columnSpacing(column);
@@ -1333,9 +1542,12 @@ void tst_QGraphicsGridLayout::setRowSpacing_data()
{
QTest::addColumn<int>("row");
QTest::addColumn<qreal>("spacing");
- QTest::newRow("null") << 0 << qreal(0.0);
- QTest::newRow("10") << 0 << qreal(10.0);
+ QTest::addColumn<bool>("hasHeightForWidth");
+ QTest::newRow("null") << 0 << qreal(0.0) << false;
+ QTest::newRow("10") << 0 << qreal(10.0) << false;
+ QTest::newRow("null, hasHeightForWidth") << 0 << qreal(0.0) << true;
+ QTest::newRow("10, hasHeightForWidth") << 0 << qreal(10.0) << true;
}
// public void setRowSpacing(int row, qreal spacing)
@@ -1343,6 +1555,7 @@ void tst_QGraphicsGridLayout::setRowSpacing()
{
QFETCH(int, row);
QFETCH(qreal, spacing);
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
@@ -1350,7 +1563,7 @@ void tst_QGraphicsGridLayout::setRowSpacing()
QGraphicsGridLayout *layout = new QGraphicsGridLayout();
scene.addItem(widget);
widget->setLayout(layout);
- populateLayout(layout, 3, 2);
+ populateLayout(layout, 3, 2, hasHeightForWidth);
layout->setSpacing(0);
layout->setContentsMargins(0, 0, 0, 0);
qreal oldSpacing = layout->rowSpacing(row);
@@ -1364,21 +1577,25 @@ void tst_QGraphicsGridLayout::setRowSpacing()
void tst_QGraphicsGridLayout::setSpacing_data()
{
QTest::addColumn<qreal>("spacing");
- QTest::newRow("zero") << qreal(0.0);
- QTest::newRow("17") << qreal(17.0);
+ QTest::addColumn<bool>("hasHeightForWidth");
+ QTest::newRow("zero") << qreal(0.0) << false;
+ QTest::newRow("17") << qreal(17.0) << false;
+ QTest::newRow("zero, hasHeightForWidth") << qreal(0.0) << true;
+ QTest::newRow("17, hasHeightForWidth") << qreal(17.0) << true;
}
// public void setSpacing(qreal spacing)
void tst_QGraphicsGridLayout::setSpacing()
{
QFETCH(qreal, spacing);
+ QFETCH(bool, hasHeightForWidth);
QGraphicsScene scene;
QGraphicsView view(&scene);
QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
QGraphicsGridLayout *layout = new QGraphicsGridLayout();
scene.addItem(widget);
widget->setLayout(layout);
- populateLayout(layout, 3, 2);
+ populateLayout(layout, 3, 2, hasHeightForWidth);
layout->setContentsMargins(0, 0, 0, 0);
QSizeF sh = layout->sizeHint(Qt::PreferredSize, QSizeF());
qreal oldVSpacing = layout->verticalSpacing();
@@ -1509,8 +1726,18 @@ void tst_QGraphicsGridLayout::verticalSpacing()
delete widget;
}
+void tst_QGraphicsGridLayout::layoutDirection_data()
+{
+ QTest::addColumn<bool>("hasHeightForWidth");
+
+ QTest::newRow("") << false;
+ QTest::newRow("hasHeightForWidth") << true;
+}
+
void tst_QGraphicsGridLayout::layoutDirection()
{
+ QFETCH(bool, hasHeightForWidth);
+
QGraphicsScene scene;
QGraphicsView view(&scene);
@@ -1533,6 +1760,12 @@ void tst_QGraphicsGridLayout::layoutDirection()
w4->setMinimumSize(30, 20);
layout->addItem(w4, 1, 1);
+ QSizePolicy policy = w1->sizePolicy();
+ policy.setHeightForWidth(hasHeightForWidth);
+ w1->setSizePolicy(policy);
+ w2->setSizePolicy(policy);
+ w4->setSizePolicy(policy);
+
layout->setAlignment(w2, Qt::AlignRight);
layout->setAlignment(w3, Qt::AlignLeft);
@@ -2116,6 +2349,22 @@ void tst_QGraphicsGridLayout::alignment2()
delete widget;
}
+static QSizeF hfw1(Qt::SizeHint, const QSizeF &constraint)
+{
+ QSizeF result(constraint);
+ if (constraint.width() < 0 && constraint.height() < 0) {
+ return QSizeF(50, 400);
+ } else if (constraint.width() >= 0) {
+ result.setHeight(20000./constraint.width());
+ }
+ return result;
+}
+
+static QSizeF hfw2(Qt::SizeHint /*which*/, const QSizeF &constraint)
+{
+ return QSizeF(constraint.width(), constraint.width());
+}
+
void tst_QGraphicsGridLayout::geometries_data()
{
@@ -2145,6 +2394,226 @@ void tst_QGraphicsGridLayout::geometries_data()
<< QRectF(0, 0, 60,10) << QRectF(0, 10, 60,10)
);
+ // change layout height and verify
+ QTest::newRow("hfw-h401") << (ItemList()
+ << ItemDesc(0,0)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(0,1)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(1,0)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(1,1)
+ .minSize(QSizeF(40,-1))
+ .preferredSize(QSizeF(50,-1))
+ .maxSize(QSizeF(500, -1))
+ .heightForWidth(hfw1)
+ )
+ << QSizeF(100, 401)
+ << (RectList()
+ << QRectF(0, 0, 50, 1) << QRectF(50, 0, 50, 1)
+ << QRectF(0, 1, 50,100) << QRectF(50, 1, 50,400)
+ );
+
+
+ QTest::newRow("hfw-h408") << (ItemList()
+ << ItemDesc(0,0)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(0,1)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(1,0)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(1,1)
+ .sizeHint(Qt::MinimumSize, QSizeF(40,40))
+ .sizeHint(Qt::PreferredSize, QSizeF(50,400))
+ .sizeHint(Qt::MaximumSize, QSizeF(500, 500))
+ .heightForWidth(hfw1)
+ )
+ << QSizeF(100, 408)
+ << (RectList()
+ << QRectF(0, 0, 50, 8) << QRectF(50, 0, 50, 8)
+ << QRectF(0, 8, 50,100) << QRectF(50, 8, 50,400)
+ );
+ QTest::newRow("hfw-h410") << (ItemList()
+ << ItemDesc(0,0)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(0,1)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(1,0)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(1,1)
+ .minSize(QSizeF(40,40))
+ .preferredSize(QSizeF(50,400))
+ .maxSize(QSizeF(500, 500))
+ .heightForWidth(hfw1)
+ )
+ << QSizeF(100, 410)
+ << (RectList()
+ << QRectF(0, 0, 50,10) << QRectF(50, 0, 50,10)
+ << QRectF(0, 10, 50,100) << QRectF(50, 10, 50,400)
+ );
+
+ QTest::newRow("hfw-h470") << (ItemList()
+ << ItemDesc(0,0)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(0,1)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(1,0)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(1,1)
+ .sizeHint(Qt::MinimumSize, QSizeF(40,40))
+ .sizeHint(Qt::PreferredSize, QSizeF(50,400))
+ .sizeHint(Qt::MaximumSize, QSizeF(500,500))
+ .heightForWidth(hfw1)
+ )
+ << QSizeF(100, 470)
+ << (RectList()
+ << QRectF(0, 0, 50,70) << QRectF(50, 0, 50,70)
+ << QRectF(0, 70, 50,100) << QRectF(50, 70, 50,400)
+ );
+
+
+ // change layout width and verify
+ QTest::newRow("hfw-w100") << (ItemList()
+ << ItemDesc(0,0)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(0,1)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(1,0)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(1,1)
+ .sizeHint(Qt::MinimumSize, QSizeF(40,40))
+ .sizeHint(Qt::PreferredSize, QSizeF(50,400))
+ .sizeHint(Qt::MaximumSize, QSizeF(5000,5000))
+ .heightForWidth(hfw1)
+ )
+ << QSizeF(100, 401)
+ << (RectList()
+ << QRectF( 0, 0, 50, 1) << QRectF( 50, 0, 50, 1)
+ << QRectF( 0, 1, 50, 100) << QRectF( 50, 1, 50, 400)
+ );
+
+ QTest::newRow("hfw-w160") << (ItemList()
+ << ItemDesc(0,0)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(0,1)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(1,0)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(1,1)
+ .sizeHint(Qt::MinimumSize, QSizeF(40,40))
+ .sizeHint(Qt::PreferredSize, QSizeF(50,400))
+ .sizeHint(Qt::MaximumSize, QSizeF(5000,5000))
+ .heightForWidth(hfw1)
+ )
+ << QSizeF(160, 350)
+ << (RectList()
+ << QRectF( 0, 0, 80, 100) << QRectF( 80, 0, 80, 100)
+ << QRectF( 0, 100, 80, 100) << QRectF( 80, 100, 80, 250)
+ );
+
+ QTest::newRow("hfw-w500") << (ItemList()
+ << ItemDesc(0,0)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(0,1)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(1,0)
+ .minSize(QSizeF(1,1))
+ .preferredSize(QSizeF(50,10))
+ .maxSize(QSizeF(100, 100))
+ << ItemDesc(1,1)
+ .sizeHint(Qt::MinimumSize, QSizeF(40,40))
+ .sizeHint(Qt::PreferredSize, QSizeF(50,400))
+ .sizeHint(Qt::MaximumSize, QSizeF(5000,5000))
+ .heightForWidth(hfw1)
+ )
+ << QSizeF(500, 200)
+ << (RectList()
+ << QRectF( 0, 0, 100, 100) << QRectF(100, 0, 100, 100)
+ << QRectF( 0, 100, 100, 100) << QRectF(100, 100, 400, 50)
+ );
+
+ QTest::newRow("hfw-alignment-defaults") << (ItemList()
+ << ItemDesc(0,0)
+ .minSize(QSizeF(100, 100))
+ .maxSize(QSizeF(100, 100))
+ .heightForWidth(hfw2)
+ << ItemDesc(1,0)
+ .minSize(QSizeF(200, 200))
+ .maxSize(QSizeF(200, 200))
+ .heightForWidth(hfw2)
+ << ItemDesc(2,0)
+ .minSize(QSizeF(300, 300))
+ .maxSize(QSizeF(300, 300))
+ )
+ << QSizeF(300, 600)
+ << (RectList()
+ << QRectF(0, 0, 100, 100)
+ << QRectF(0, 100, 200, 200)
+ << QRectF(0, 300, 300, 300)
+ );
+
+ QTest::newRow("hfw-alignment2") << (ItemList()
+ << ItemDesc(0,0)
+ .minSize(QSizeF(100, 100))
+ .maxSize(QSizeF(100, 100))
+ .heightForWidth(hfw2)
+ .alignment(Qt::AlignRight)
+ << ItemDesc(1,0)
+ .minSize(QSizeF(200, 200))
+ .maxSize(QSizeF(200, 200))
+ .heightForWidth(hfw2)
+ .alignment(Qt::AlignHCenter)
+ << ItemDesc(2,0)
+ .minSize(QSizeF(300, 300))
+ .maxSize(QSizeF(300, 300))
+ )
+ << QSizeF(300, 600)
+ << (RectList()
+ << QRectF(200, 0, 100, 100)
+ << QRectF( 50, 100, 200, 200)
+ << QRectF( 0, 300, 300, 300)
+ );
+
}
void tst_QGraphicsGridLayout::geometries()
@@ -2215,6 +2684,283 @@ void tst_QGraphicsGridLayout::task236367_maxSizeHint()
QCOMPARE(widget->size(), QSizeF(w, h));
}
+/*
+static qreal hfw(qreal w)
+{
+ if (w == 0)
+ return 20000;
+ return 20000/w;
+}
+*/
+static QSizeF hfw(Qt::SizeHint /*which*/, const QSizeF &constraint)
+{
+ QSizeF result(constraint);
+ const qreal cw = constraint.width();
+ const qreal ch = constraint.height();
+ if (cw < 0 && ch < 0) {
+ return QSizeF(200, 100);
+ } else if (cw >= 0) {
+ result.setHeight(20000./cw);
+ } else if (cw == 0) {
+ result.setHeight(20000);
+ } else if (ch >= 0) {
+ result.setWidth(20000./ch);
+ } else if (ch == 0) {
+ result.setWidth(20000);
+ }
+
+ return result;
+}
+
+static qreal growthFactorBelowPreferredSize(qreal desired, qreal sumAvailable, qreal sumDesired)
+{
+ Q_ASSERT(sumDesired != 0.0);
+ return desired * qPow(sumAvailable / sumDesired, desired / sumDesired);
+}
+
+static void expectedWidth(qreal minSize1, qreal prefSize1,
+ qreal minSize2, qreal prefSize2,
+ qreal targetSize, qreal *width1, qreal *width2)
+{
+ qreal sumAvail,factor1,factor2;
+ // stretch behaviour is different below and above preferred size...
+ if (targetSize < prefSize1 + prefSize2) {
+ sumAvail = targetSize - minSize1 - minSize2;
+ const qreal desired1 = prefSize1 - minSize1;
+ const qreal desired2 = prefSize2 - minSize2;
+ const qreal sumDesired = desired1 + desired2;
+ factor1 = growthFactorBelowPreferredSize(desired1, sumAvail, sumDesired);
+ factor2 = growthFactorBelowPreferredSize(desired2, sumAvail, sumDesired);
+ const qreal sumFactors = factor1 + factor2;
+ *width1 = sumAvail*factor1/sumFactors + minSize1;
+ *width2 = sumAvail*factor2/sumFactors + minSize2;
+ } else {
+ sumAvail = targetSize - prefSize1 - prefSize2;
+ factor1 = prefSize1;
+ factor2 = prefSize2;
+ const qreal sumFactors = factor1 + factor2;
+ *width1 = sumAvail*factor1/sumFactors + prefSize1;
+ *width2 = sumAvail*factor2/sumFactors + prefSize2;
+ }
+}
+
+
+bool qFuzzyCompare(const QSizeF &a, const QSizeF &b)
+{
+ return qFuzzyCompare(a.width(), b.width()) && qFuzzyCompare(a.height(), b.height());
+}
+
+void tst_QGraphicsGridLayout::heightForWidth()
+{
+ QGraphicsWidget *widget = new QGraphicsWidget;
+ QGraphicsGridLayout *layout = new QGraphicsGridLayout;
+ widget->setLayout(layout);
+ layout->setContentsMargins(0, 0, 0, 0);
+ layout->setSpacing(0);
+ RectWidget *w00 = new RectWidget;
+ w00->setSizeHint(Qt::MinimumSize, QSizeF(1,1));
+ w00->setSizeHint(Qt::PreferredSize, QSizeF(10,10));
+ w00->setSizeHint(Qt::MaximumSize, QSizeF(100,100));
+ layout->addItem(w00, 0, 0);
+
+ RectWidget *w01 = new RectWidget;
+ w01->setSizeHint(Qt::MinimumSize, QSizeF(1,1));
+ w01->setSizeHint(Qt::PreferredSize, QSizeF(10,10));
+ w01->setSizeHint(Qt::MaximumSize, QSizeF(100,100));
+ layout->addItem(w01, 0, 1);
+
+ RectWidget *w10 = new RectWidget;
+ w10->setSizeHint(Qt::MinimumSize, QSizeF(1,1));
+ w10->setSizeHint(Qt::PreferredSize, QSizeF(10,10));
+ w10->setSizeHint(Qt::MaximumSize, QSizeF(100,100));
+ layout->addItem(w10, 1, 0);
+
+ RectWidget *w11 = new RectWidget;
+ w11->setSizeHint(Qt::MinimumSize, QSizeF(1,1));
+ w11->setSizeHint(Qt::MaximumSize, QSizeF(30000,30000));
+ w11->setConstraintFunction(hfw);
+ QSizePolicy sp(QSizePolicy::Preferred, QSizePolicy::Preferred);
+ sp.setHeightForWidth(true);
+ w11->setSizePolicy(sp);
+ layout->addItem(w11, 1, 1);
+
+ QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(-1, -1)), QSizeF(2, 2));
+ QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(-1, -1)), QSizeF(210, 110));
+ QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(-1, -1)), QSizeF(30100, 30100));
+
+ QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(2, -1)), QSizeF(2, 20001));
+ QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(2, -1)), QSizeF(2, 20010));
+ QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(2, -1)), QSizeF(2, 20100));
+ qreal width1;
+ qreal width2;
+ expectedWidth(1, 10, 1, 200, 20, &width1, &width2);
+ QSizeF expectedSize = hfw(Qt::MinimumSize, QSizeF(width2, -1)) + QSizeF(width1, 1);
+ QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(20, -1)), expectedSize);
+ expectedSize.rheight()+=9;
+ QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(20, -1)), expectedSize);
+ expectedSize.rheight()+=90;
+ QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(20, -1)), expectedSize);
+
+ expectedWidth(1, 10, 1, 200, 300, &width1, &width2);
+ expectedSize = hfw(Qt::MinimumSize, QSizeF(width2, -1)) + QSizeF(width1, 1);
+ QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(300, -1)), expectedSize);
+ expectedSize.rheight()+=9;
+ QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(300, -1)), expectedSize);
+ // the height of the hfw widget is shorter than the one to the left, which is 100, so
+ // the total height of the last row is 100 (which leaves the layout height to be 200)
+ QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(300, -1)), QSizeF(300, 200));
+
+ // the hfw item is shorter than the item to the left
+ expectedWidth(1, 10, 1, 200, 500, &width1, &width2);
+ expectedSize = hfw(Qt::MinimumSize, QSizeF(width2, -1)) + QSizeF(width1, 1);
+ QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(500, -1)), expectedSize);
+ expectedSize.rheight()+=9;
+ QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(500, -1)), expectedSize);
+ // the height of the hfw widget is shorter than the one to the left, which is 100, so
+ // the total height of the last row is 100 (which leaves the layout height to be 200)
+ QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(500, -1)), QSizeF(500, 200));
+
+}
+
+void tst_QGraphicsGridLayout::heightForWidthWithSpanning()
+{
+ QGraphicsWidget *widget = new QGraphicsWidget;
+ QGraphicsGridLayout *layout = new QGraphicsGridLayout;
+ widget->setLayout(layout);
+ layout->setContentsMargins(0, 0, 0, 0);
+ layout->setSpacing(0);
+
+ RectWidget *w = new RectWidget;
+ w->setSizeHint(Qt::MinimumSize, QSizeF(1,1));
+ w->setSizeHint(Qt::MaximumSize, QSizeF(30000,30000));
+ w->setConstraintFunction(hfw);
+ QSizePolicy sp(QSizePolicy::Preferred, QSizePolicy::Preferred);
+ sp.setHeightForWidth(true);
+ w->setSizePolicy(sp);
+ layout->addItem(w, 0,0,2,2);
+
+ QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(-1, -1)), QSizeF(1, 1));
+ QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(-1, -1)), QSizeF(200, 100));
+ QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue);
+ QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(-1, -1)), QSizeF(30000, 30000));
+
+ QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(200, -1)), QSizeF(200, 100));
+ QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(200, -1)), QSizeF(200, 100));
+ QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue);
+ QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, 100));
+
+ QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(2, -1)), QSizeF(2, 10000));
+ QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(2, -1)), QSizeF(2, 10000));
+ QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue);
+ QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(2, -1)), QSizeF(2, 10000));
+
+ QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(200, -1)), QSizeF(200, 100));
+ QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(200, -1)), QSizeF(200, 100));
+ QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue);
+ QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, 10000));
+}
+
+void tst_QGraphicsGridLayout::stretchAndHeightForWidth()
+{
+ QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window);
+ QGraphicsGridLayout *layout = new QGraphicsGridLayout;
+ widget->setLayout(layout);
+ layout->setContentsMargins(0, 0, 0, 0);
+ layout->setSpacing(0);
+
+ RectWidget *w1 = new RectWidget;
+ w1->setSizeHint(Qt::MinimumSize, QSizeF(10, 10));
+ w1->setSizeHint(Qt::PreferredSize, QSizeF(100, 100));
+ w1->setSizeHint(Qt::MaximumSize, QSizeF(500, 500));
+ layout->addItem(w1, 0,0,1,1);
+
+ RectWidget *w2 = new RectWidget;
+ w2->setSizeHint(Qt::MinimumSize, QSizeF(10, 10));
+ w2->setSizeHint(Qt::PreferredSize, QSizeF(100, 100));
+ w2->setSizeHint(Qt::MaximumSize, QSizeF(500, 500));
+ layout->addItem(w2, 0,1,1,1);
+ layout->setColumnStretchFactor(1, 2);
+
+ QApplication::sendPostedEvents();
+ QGraphicsScene scene;
+ QGraphicsView *view = new QGraphicsView(&scene);
+
+ scene.addItem(widget);
+
+ view->show();
+
+ widget->resize(500, 100);
+ // w1 should stay at its preferred size
+ QCOMPARE(w1->geometry(), QRectF(0, 0, 100, 100));
+ QCOMPARE(w2->geometry(), QRectF(100, 0, 400, 100));
+
+
+ // only w1 has hfw
+ w1->setConstraintFunction(hfw);
+ QSizePolicy sp(QSizePolicy::Preferred, QSizePolicy::Preferred);
+ sp.setHeightForWidth(true);
+ w1->setSizePolicy(sp);
+ QApplication::sendPostedEvents();
+
+ QCOMPARE(w1->geometry(), QRectF(0, 0, 100, 200));
+ QCOMPARE(w2->geometry(), QRectF(100, 0, 400, 200));
+
+ // only w2 has hfw
+ w2->setConstraintFunction(hfw);
+ w2->setSizePolicy(sp);
+
+ w1->setConstraintFunction(0);
+ sp.setHeightForWidth(false);
+ w1->setSizePolicy(sp);
+ QApplication::sendPostedEvents();
+
+ QCOMPARE(w1->geometry(), QRectF(0, 0, 100, 100));
+ QCOMPARE(w2->geometry(), QRectF(100, 0, 400, 50));
+
+}
+
+void tst_QGraphicsGridLayout::testDefaultAlignment()
+{
+ QGraphicsWidget *widget = new QGraphicsWidget;
+ QGraphicsGridLayout *layout = new QGraphicsGridLayout(widget);
+ layout->setContentsMargins(0, 0, 0, 0);
+ layout->setSpacing(0);
+
+ QGraphicsWidget *w = new QGraphicsWidget;
+ w->setMinimumSize(50,50);
+ w->setMaximumSize(50,50);
+ layout->addItem(w,0,0);
+
+ //Default alignment should be to the top-left
+
+ //First, check by forcing the layout to be bigger
+ layout->setMinimumSize(100,100);
+ layout->activate();
+ QCOMPARE(layout->geometry(), QRectF(0,0,100,100));
+ QCOMPARE(w->geometry(), QRectF(0,0,50,50));
+ layout->setMinimumSize(-1,-1);
+
+ //Second, check by forcing the column and row to be bigger instead
+ layout->setColumnMinimumWidth(0, 100);
+ layout->setRowMinimumHeight(0, 100);
+ layout->activate();
+ QCOMPARE(layout->geometry(), QRectF(0,0,100,100));
+ QCOMPARE(w->geometry(), QRectF(0,0,50,50));
+ layout->setMinimumSize(-1,-1);
+ layout->setColumnMinimumWidth(0, 0);
+ layout->setRowMinimumHeight(0, 0);
+
+
+ //Third, check by adding a larger item in the column
+ QGraphicsWidget *w2 = new QGraphicsWidget;
+ w2->setMinimumSize(100,100);
+ w2->setMaximumSize(100,100);
+ layout->addItem(w2,1,0);
+ layout->activate();
+ QCOMPARE(layout->geometry(), QRectF(0,0,100,150));
+ QCOMPARE(w->geometry(), QRectF(0,0,50,50));
+ QCOMPARE(w2->geometry(), QRectF(0,50,100,100));
+}
QTEST_MAIN(tst_QGraphicsGridLayout)
#include "tst_qgraphicsgridlayout.moc"
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index 2ddccd212f..0b294105d9 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -94,6 +94,8 @@ Q_DECLARE_METATYPE(QRectF)
#define COMPARE_REGIONS QTRY_COMPARE
#endif
+#include "../platformquirks.h"
+
static QGraphicsRectItem staticItem; //QTBUG-7629, we should not crash at exit.
static void sendMousePress(QGraphicsScene *scene, const QPointF &point, Qt::MouseButton button = Qt::LeftButton)
@@ -272,7 +274,7 @@ class MyGraphicsView : public QGraphicsView
public:
int repaints;
QRegion paintedRegion;
- MyGraphicsView(QGraphicsScene *scene) : QGraphicsView(scene), repaints(0) {}
+ MyGraphicsView(QGraphicsScene *scene, QWidget *parent=0) : QGraphicsView(scene,parent), repaints(0) {}
void paintEvent(QPaintEvent *e)
{
paintedRegion += e->region();
@@ -466,6 +468,7 @@ private slots:
void doNotMarkFullUpdateIfNotInScene();
void itemDiesDuringDraggingOperation();
void QTBUG_12112_focusItem();
+ void QTBUG_13473_sceneposchange();
private:
QList<QGraphicsItem *> paintedItems;
@@ -4069,9 +4072,10 @@ void tst_QGraphicsItem::cursor()
item1->setCursor(Qt::IBeamCursor);
item2->setCursor(Qt::PointingHandCursor);
- QGraphicsView view(&scene);
+ QWidget topLevel;
+ QGraphicsView view(&scene,&topLevel);
view.setFixedSize(200, 100);
- view.show();
+ topLevel.show();
QTest::mouseMove(&view, view.rect().center());
QTest::qWait(25);
@@ -4093,6 +4097,8 @@ void tst_QGraphicsItem::cursor()
QApplication::sendEvent(view.viewport(), &event);
}
+ if (!PlatformQuirks::haveMouseCursor())
+ return;
#if !defined(Q_OS_WINCE)
QTest::qWait(250);
#else
@@ -4958,7 +4964,10 @@ void tst_QGraphicsItem::paint()
QGraphicsView view(&scene);
- view.show();
+ if(PlatformQuirks::isAutoMaximizing())
+ view.showFullScreen();
+ else
+ view.show();
QTest::qWaitForWindowShown(&view);
QApplication::processEvents();
#ifdef Q_OS_WIN32
@@ -5974,9 +5983,10 @@ void tst_QGraphicsItem::untransformable()
QGraphicsScene scene(-500, -500, 1000, 1000);
scene.addItem(item1);
- QGraphicsView view(&scene);
+ QWidget topLevel;
+ QGraphicsView view(&scene,&topLevel);
view.resize(300, 300);
- view.show();
+ topLevel.show();
view.scale(8, 8);
view.centerOn(0, 0);
@@ -6615,7 +6625,10 @@ void tst_QGraphicsItem::opacity2()
scene.addItem(parent);
MyGraphicsView view(&scene);
- view.show();
+ if(PlatformQuirks::isAutoMaximizing())
+ view.showFullScreen();
+ else
+ view.show();
QTest::qWaitForWindowShown(&view);
QTRY_VERIFY(view.repaints >= 1);
@@ -7049,6 +7062,7 @@ void tst_QGraphicsItem::tabChangesFocus()
widget.setLayout(layout);
widget.show();
QTest::qWaitForWindowShown(&widget);
+ QTest::qWait(2000);
QTRY_VERIFY(scene.isActive());
@@ -7494,9 +7508,11 @@ void tst_QGraphicsItem::update()
{
QGraphicsScene scene;
scene.setSceneRect(-100, -100, 200, 200);
- MyGraphicsView view(&scene);
+ QWidget topLevel;
+ MyGraphicsView view(&scene,&topLevel);
- view.show();
+ topLevel.resize(300, 300);
+ topLevel.show();
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&view);
#endif
@@ -7775,10 +7791,11 @@ void tst_QGraphicsItem::itemUsesExtendedStyleOption()
MyStyleOptionTester *rect = new MyStyleOptionTester(QRect(0, 0, 100, 100));
scene.addItem(rect);
rect->setPos(200, 200);
- QGraphicsView view(&scene);
- view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ QWidget topLevel;
+ QGraphicsView view(&scene, &topLevel);
+ topLevel.setWindowFlags(Qt::X11BypassWindowManagerHint);
rect->startTrack = false;
- view.show();
+ topLevel.show();
QTest::qWaitForWindowShown(&view);
QTest::qWait(60);
rect->startTrack = true;
@@ -7979,6 +7996,9 @@ void tst_QGraphicsItem::sorting_data()
void tst_QGraphicsItem::sorting()
{
+ if (PlatformQuirks::isAutoMaximizing())
+ QSKIP("Skipped because Platform is auto maximizing", SkipAll);
+
_paintedItems.clear();
QGraphicsScene scene;
@@ -8014,7 +8034,7 @@ void tst_QGraphicsItem::sorting()
_paintedItems.clear();
view.viewport()->repaint();
-#ifdef Q_WS_MAC
+#if defined(Q_WS_MAC)
// There's no difference between repaint and update on the Mac,
// so we have to process events here to make sure we get the event.
QTest::qWait(100);
@@ -8113,10 +8133,13 @@ void tst_QGraphicsItem::hitTestGraphicsEffectItem()
QGraphicsScene scene;
scene.setSceneRect(-100, -100, 200, 200);
- QGraphicsView view(&scene);
- view.show();
+ QWidget toplevel;
+
+ QGraphicsView view(&scene, &toplevel);
+ toplevel.resize(300, 300);
+ toplevel.show();
#ifdef Q_WS_X11
- qt_x11_wait_for_window_manager(&view);
+ qt_x11_wait_for_window_manager(&toplevel);
#endif
QTest::qWait(100);
@@ -9067,6 +9090,7 @@ void tst_QGraphicsItem::focusScope()
QVERIFY(!scope2->hasFocus());
QVERIFY(scope1->hasFocus());
scope2->setFocus();
+ QVERIFY(scope2->hasFocus());
scope3->setFocus();
QVERIFY(scope3->hasFocus());
@@ -10719,7 +10743,10 @@ void tst_QGraphicsItem::QTBUG_6738_missingUpdateWithSetParent()
scene.addItem(parent);
MyGraphicsView view(&scene);
- view.show();
+ if(PlatformQuirks::isAutoMaximizing())
+ view.showFullScreen();
+ else
+ view.show();
QTest::qWaitForWindowShown(&view);
QTRY_VERIFY(view.repaints > 0);
@@ -10767,7 +10794,10 @@ void tst_QGraphicsItem::QT_2653_fullUpdateDiscardingOpacityUpdate()
// ItemIgnoresTransformations, ItemClipsChildrenToShape, ItemIsSelectable
parentGreen->setFlag(QGraphicsItem::ItemIgnoresTransformations);
- view.show();
+ if (PlatformQuirks::isAutoMaximizing())
+ view.showFullScreen();
+ else
+ view.show();
QTest::qWaitForWindowShown(&view);
view.reset();
@@ -10952,7 +10982,10 @@ void tst_QGraphicsItem::doNotMarkFullUpdateIfNotInScene()
item3->setParentItem(item2);
item2->setParentItem(item);
scene.addItem(item);
- view.show();
+ if(PlatformQuirks::isAutoMaximizing())
+ view.showFullScreen();
+ else
+ view.show();
QTest::qWaitForWindowShown(&view);
QTRY_COMPARE(view.repaints, 1);
QTRY_COMPARE(item->painted, 1);
@@ -11018,5 +11051,31 @@ void tst_QGraphicsItem::QTBUG_12112_focusItem()
QVERIFY(item2->focusItem());
}
+void tst_QGraphicsItem::QTBUG_13473_sceneposchange()
+{
+ ScenePosChangeTester* parent = new ScenePosChangeTester;
+ ScenePosChangeTester* child = new ScenePosChangeTester(parent);
+
+ // parent's disabled ItemSendsGeometryChanges flag must not affect
+ // child's scene pos change notifications
+ parent->setFlag(QGraphicsItem::ItemSendsGeometryChanges, false);
+ child->setFlag(QGraphicsItem::ItemSendsScenePositionChanges, true);
+
+ QGraphicsScene scene;
+ scene.addItem(parent);
+
+ // ignore uninteresting changes
+ parent->clear();
+ child->clear();
+
+ // move
+ parent->moveBy(1.0, 1.0);
+ QCOMPARE(child->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 1);
+
+ // transform
+ parent->setTransform(QTransform::fromScale(0.5, 0.5));
+ QCOMPARE(child->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 2);
+}
+
QTEST_MAIN(tst_QGraphicsItem)
#include "tst_qgraphicsitem.moc"
diff --git a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
index 6107fa11e7..965e340e75 100644
--- a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
+++ b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
@@ -103,6 +103,9 @@ private slots:
void removeLayout();
void avoidRecursionInInsertItem();
void styleInfoLeak();
+ void testAlignmentInLargerLayout();
+ void testOffByOneInLargerLayout();
+ void testDefaultAlignment();
// Task specific tests
void task218400_insertStretchCrash();
@@ -1465,6 +1468,121 @@ void tst_QGraphicsLinearLayout::task218400_insertStretchCrash()
form->setLayout(layout); // crash
}
+void tst_QGraphicsLinearLayout::testAlignmentInLargerLayout()
+{
+ QGraphicsScene *scene = new QGraphicsScene;
+ QGraphicsWidget *form = new QGraphicsWidget;
+ scene->addItem(form);
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, form);
+ layout->setSpacing(0);
+ layout->setContentsMargins(0,0,0,0);
+
+ QGraphicsWidget *a = new QGraphicsWidget;
+ a->setMaximumSize(100,100);
+ layout->addItem(a);
+
+ QCOMPARE(form->maximumSize(), QSizeF(100,100));
+ QCOMPARE(layout->maximumSize(), QSizeF(100,100));
+ layout->setMinimumSize(QSizeF(200,200));
+ layout->setMaximumSize(QSizeF(200,200));
+
+ layout->setAlignment(a, Qt::AlignCenter);
+ layout->activate();
+ QCOMPARE(a->geometry(), QRectF(50,50,100,100));
+
+ layout->setAlignment(a, Qt::AlignRight | Qt::AlignBottom);
+ layout->activate();
+ QCOMPARE(a->geometry(), QRectF(100,100,100,100));
+
+ layout->setAlignment(a, Qt::AlignHCenter | Qt::AlignTop);
+ layout->activate();
+ QCOMPARE(a->geometry(), QRectF(50,0,100,100));
+
+ QGraphicsWidget *b = new QGraphicsWidget;
+ b->setMaximumSize(100,100);
+ layout->addItem(b);
+
+ layout->setAlignment(a, Qt::AlignCenter);
+ layout->setAlignment(b, Qt::AlignCenter);
+ layout->activate();
+ QCOMPARE(a->geometry(), QRectF(50,0,100,100));
+ QCOMPARE(b->geometry(), QRectF(50,100,100,100));
+
+ layout->setAlignment(a, Qt::AlignRight | Qt::AlignBottom);
+ layout->setAlignment(b, Qt::AlignLeft | Qt::AlignTop);
+ layout->activate();
+ QCOMPARE(a->geometry(), QRectF(100,0,100,100));
+ QCOMPARE(b->geometry(), QRectF(0,100,100,100));
+}
+
+void tst_QGraphicsLinearLayout::testOffByOneInLargerLayout() {
+ QGraphicsScene *scene = new QGraphicsScene;
+ QGraphicsWidget *form = new QGraphicsWidget;
+ scene->addItem(form);
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, form);
+ layout->setSpacing(0);
+ layout->setContentsMargins(0,0,0,0);
+
+ QGraphicsWidget *a = new QGraphicsWidget;
+ QGraphicsWidget *b = new QGraphicsWidget;
+ a->setMaximumSize(100,100);
+ b->setMaximumSize(100,100);
+ layout->addItem(a);
+ layout->addItem(b);
+
+ layout->setAlignment(a, Qt::AlignRight | Qt::AlignBottom);
+ layout->setAlignment(b, Qt::AlignLeft | Qt::AlignTop);
+ layout->setMinimumSize(QSizeF(101,201));
+ layout->setMaximumSize(QSizeF(101,201));
+ layout->activate();
+ QCOMPARE(a->geometry(), QRectF(1,0.5,100,100));
+ QCOMPARE(b->geometry(), QRectF(0,100.5,100,100));
+
+ layout->setMinimumSize(QSizeF(100,200));
+ layout->setMaximumSize(QSizeF(100,200));
+ layout->activate();
+ QCOMPARE(a->geometry(), QRectF(0,0,100,100));
+ QCOMPARE(b->geometry(), QRectF(0,100,100,100));
+
+ layout->setMinimumSize(QSizeF(99,199));
+ layout->setMaximumSize(QSizeF(99,199));
+ layout->activate();
+ QCOMPARE(a->geometry(), QRectF(0,0,99,99.5));
+ QCOMPARE(b->geometry(), QRectF(0,99.5,99,99.5));
+}
+void tst_QGraphicsLinearLayout::testDefaultAlignment()
+{
+ QGraphicsWidget *widget = new QGraphicsWidget;
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, widget);
+ layout->setContentsMargins(0, 0, 0, 0);
+ layout->setSpacing(0);
+
+ QGraphicsWidget *w = new QGraphicsWidget;
+ w->setMinimumSize(50,50);
+ w->setMaximumSize(50,50);
+ layout->addItem(w);
+
+ //Default alignment should be to the top-left
+ QCOMPARE(layout->alignment(w), 0);
+
+ //First, check by forcing the layout to be bigger
+ layout->setMinimumSize(100,100);
+ layout->activate();
+ QCOMPARE(layout->geometry(), QRectF(0,0,100,100));
+ QCOMPARE(w->geometry(), QRectF(0,0,50,50));
+ layout->setMinimumSize(-1,-1);
+
+ //Second, check by adding a larger item in the column
+ QGraphicsWidget *w2 = new QGraphicsWidget;
+ w2->setMinimumSize(100,100);
+ w2->setMaximumSize(100,100);
+ layout->addItem(w2);
+ layout->activate();
+ QCOMPARE(layout->geometry(), QRectF(0,0,100,150));
+ QCOMPARE(w->geometry(), QRectF(0,0,50,50));
+ QCOMPARE(w2->geometry(), QRectF(0,50,100,100));
+}
+
QTEST_MAIN(tst_QGraphicsLinearLayout)
#include "tst_qgraphicslinearlayout.moc"
diff --git a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
index 09cf4e2d53..6a2f8490c9 100644
--- a/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -2694,12 +2694,14 @@ void tst_QGraphicsScene::render()
QPixmap pix(30, 30);
pix.fill(Qt::blue);
- QGraphicsScene scene;
+ QGraphicsView view;
+ QGraphicsScene scene(&view);
scene.addEllipse(QRectF(-10, -10, 20, 20), QPen(Qt::black), QBrush(Qt::white));
scene.addEllipse(QRectF(-2, -7, 4, 4), QPen(Qt::black), QBrush(Qt::yellow))->setZValue(1);
QGraphicsPixmapItem *item = scene.addPixmap(pix);
item->setZValue(2);
item->setOffset(QPointF(3, 3));
+ view.show();
scene.setSceneRect(scene.itemsBoundingRect());
@@ -2820,6 +2822,8 @@ void tst_QGraphicsScene::contextMenuEvent()
QGraphicsView view(&scene);
view.show();
+ QTest::qWaitForWindowShown(&view);
+ view.activateWindow();
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&view);
#endif
@@ -2851,12 +2855,14 @@ void tst_QGraphicsScene::contextMenuEvent_ItemIgnoresTransformations()
item->setFlag(QGraphicsItem::ItemIgnoresTransformations);
scene.addItem(item);
- QGraphicsView view(&scene);
+ QWidget topLevel;
+ QGraphicsView view(&scene, &topLevel);
view.resize(200, 200);
- view.show();
+ topLevel.show();
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&view);
#endif
+ QTest::qWaitForWindowShown(&topLevel);
{
QPoint pos(50, 50);
diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
index af02c554a7..0a9633fb94 100644
--- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
@@ -69,8 +69,10 @@
#include <QtGui/QStyle>
#include <QtGui/QPushButton>
#include <QtGui/QInputContext>
+#include <QtGui/QDesktopWidget>
#include <private/qgraphicsview_p.h>
#include "../../shared/util.h"
+#include "../platformquirks.h"
//TESTED_CLASS=
//TESTED_FILES=
@@ -400,10 +402,13 @@ void tst_QGraphicsView::interactive()
scene.addItem(item);
QGraphicsView view(&scene);
+ if (PlatformQuirks::isAutoMaximizing())
+ view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint);
view.setFixedSize(300, 300);
QCOMPARE(item->events.size(), 0);
view.show();
QTest::qWaitForWindowShown(&view);
+ view.activateWindow();
QApplication::processEvents();
QTRY_COMPARE(item->events.size(), 1); // activate
@@ -531,13 +536,15 @@ void tst_QGraphicsView::sceneRect()
void tst_QGraphicsView::sceneRect_growing()
{
+ QWidget toplevel;
+
QGraphicsScene scene;
for (int i = 0; i < 100; ++i)
scene.addText(QString("(0, %1)").arg((i - 50) * 20))->setPos(0, (i - 50) * 20);
- QGraphicsView view(&scene);
+ QGraphicsView view(&scene, &toplevel);
view.setFixedSize(200, 200);
- view.show();
+ toplevel.show();
int size = 200;
scene.setSceneRect(-size, -size, size * 2, size * 2);
@@ -854,15 +861,17 @@ void tst_QGraphicsView::dragMode_rubberBand()
void tst_QGraphicsView::rubberBandSelectionMode()
{
+ QWidget toplevel;
+
QGraphicsScene scene;
QGraphicsRectItem *rect = scene.addRect(QRectF(10, 10, 80, 80));
rect->setFlag(QGraphicsItem::ItemIsSelectable);
- QGraphicsView view(&scene);
+ QGraphicsView view(&scene, &toplevel);
QCOMPARE(view.rubberBandSelectionMode(), Qt::IntersectsItemShape);
view.setDragMode(QGraphicsView::RubberBandDrag);
view.resize(120, 120);
- view.show();
+ toplevel.show();
// Disable mouse tracking to prevent the window system from sending mouse
// move events to the viewport while we are synthesizing events. If
@@ -1071,16 +1080,18 @@ void tst_QGraphicsView::matrix_combine()
void tst_QGraphicsView::centerOnPoint()
{
+ QWidget toplevel;
+
QGraphicsScene scene;
scene.addEllipse(QRectF(-100, -100, 50, 50));
scene.addEllipse(QRectF(50, -100, 50, 50));
scene.addEllipse(QRectF(-100, 50, 50, 50));
scene.addEllipse(QRectF(50, 50, 50, 50));
- QGraphicsView view(&scene);
+ QGraphicsView view(&scene, &toplevel);
view.setSceneRect(-400, -400, 800, 800);
view.setFixedSize(100, 100);
- view.show();
+ toplevel.show();
int tolerance = 5;
@@ -1155,6 +1166,8 @@ void tst_QGraphicsView::centerOnItem()
void tst_QGraphicsView::ensureVisibleRect()
{
+ QWidget toplevel;
+
QGraphicsScene scene;
QGraphicsItem *items[4];
items[0] = scene.addEllipse(QRectF(-25, -25, 50, 50), QPen(Qt::black), QBrush(Qt::green));
@@ -1170,11 +1183,11 @@ void tst_QGraphicsView::ensureVisibleRect()
QGraphicsItem *icon = scene.addEllipse(QRectF(-10, -10, 20, 20), QPen(Qt::black), QBrush(Qt::gray));
- QGraphicsView view(&scene);
+ QGraphicsView view(&scene, &toplevel);
view.setSceneRect(-500, -500, 1000, 1000);
view.setFixedSize(250, 250);
- view.show();
- QTest::qWaitForWindowShown(&view);
+ toplevel.show();
+ QTest::qWaitForWindowShown(&toplevel);
for (int y = -100; y < 100; y += 25) {
for (int x = -100; x < 100; x += 13) {
@@ -1253,6 +1266,9 @@ void tst_QGraphicsView::fitInView()
view.setFixedSize(400, 200);
#endif
+ if (PlatformQuirks::isAutoMaximizing())
+ view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint);
+
view.show();
view.fitInView(scene.itemsBoundingRect(), Qt::IgnoreAspectRatio);
qApp->processEvents();
@@ -1432,10 +1448,12 @@ void tst_QGraphicsView::itemsInRect_cosmeticAdjust()
QGraphicsView view(&scene);
view.setOptimizationFlag(QGraphicsView::DontAdjustForAntialiasing, !adjustForAntialiasing);
view.setRenderHint(QPainter::Antialiasing, adjustForAntialiasing);
+ if (PlatformQuirks::isAutoMaximizing())
+ view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint);
view.setFrameStyle(0);
view.resize(300, 300);
view.show();
- QTest::qWaitForWindowShown(&view) ;
+ QTest::qWaitForWindowShown(&view);
QTRY_VERIFY(rect->numPaints > 0);
rect->numPaints = 0;
@@ -1614,7 +1632,8 @@ void tst_QGraphicsView::mapToScene()
QGraphicsScene scene;
scene.addPixmap(QPixmap("3D-Qt-1-2.png"));
- QGraphicsView view;
+ QWidget topLevel;
+ QGraphicsView view(&topLevel);
view.setScene(&scene);
view.setSceneRect(-500, -500, 1000, 1000);
#if defined(Q_OS_WINCE)
@@ -1624,7 +1643,7 @@ void tst_QGraphicsView::mapToScene()
#endif
view.setFixedSize(viewSize);
- view.show();
+ topLevel.show();
QApplication::processEvents();
QVERIFY(view.isVisible());
QCOMPARE(view.size(), viewSize);
@@ -1804,11 +1823,14 @@ void tst_QGraphicsView::mapFromScenePoint()
}
}
{
+ QWidget toplevel;
+
QGraphicsScene scene(0, 0, 200, 200);
scene.addRect(QRectF(0, 0, 200, 200), QPen(Qt::black, 1));
- QGraphicsView view(&scene);
+ QGraphicsView view(&scene, &toplevel);
+ view.ensurePolished();
view.resize(view.sizeHint());
- view.show();
+ toplevel.show();
QCOMPARE(view.mapFromScene(0, 0), QPoint(0, 0));
QCOMPARE(view.mapFromScene(0.4, 0.4), QPoint(0, 0));
@@ -1826,12 +1848,13 @@ void tst_QGraphicsView::mapFromScenePoint()
void tst_QGraphicsView::mapFromSceneRect()
{
QGraphicsScene scene;
- QGraphicsView view(&scene);
+ QWidget topLevel;
+ QGraphicsView view(&scene,&topLevel);
view.rotate(90);
view.setFixedSize(200, 200);
view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
- view.show();
+ topLevel.show();
QTest::qWait(25);
QPolygon polygon;
@@ -2030,6 +2053,9 @@ void tst_QGraphicsView::cursor()
#if defined(Q_OS_WINCE)
QSKIP("Qt/CE does not have regular cursor support", SkipAll);
#endif
+ if (PlatformQuirks::haveMouseCursor())
+ QSKIP("The Platform does not have regular cursor support", SkipAll);
+
QGraphicsScene scene;
QGraphicsItem *item = scene.addRect(QRectF(-10, -10, 20, 20));
item->setCursor(Qt::IBeamCursor);
@@ -2057,6 +2083,9 @@ void tst_QGraphicsView::cursor2()
#if defined(Q_OS_WINCE)
QSKIP("Qt/CE does not have regular cursor support", SkipAll);
#endif
+ if (PlatformQuirks::haveMouseCursor())
+ QSKIP("The Platform does not have regular cursor support", SkipAll);
+
QGraphicsScene scene;
QGraphicsItem *item = scene.addRect(QRectF(-10, -10, 20, 20));
item->setCursor(Qt::IBeamCursor);
@@ -2209,6 +2238,8 @@ class CustomView : public QGraphicsView
Q_OBJECT
public:
CustomView(QGraphicsScene *s = 0) : QGraphicsView(s) {}
+ CustomView(QGraphicsScene *s, QWidget *parent)
+ : QGraphicsView(s, parent) {}
QList<QRegion> lastUpdateRegions;
bool painted;
@@ -2227,8 +2258,11 @@ void tst_QGraphicsView::viewportUpdateMode()
scene.setBackgroundBrush(Qt::red);
CustomView view;
- view.setFixedSize(500, 500);
+ QDesktopWidget desktop;
+ view.setFixedSize(QSize(500, 500).boundedTo(desktop.availableGeometry().size())); // 500 is too big for all common smartphones
view.setScene(&scene);
+ if(PlatformQuirks::isAutoMaximizing())
+ view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint);
QCOMPARE(view.viewportUpdateMode(), QGraphicsView::MinimalViewportUpdate);
// Show the view, and initialize our test.
@@ -2303,17 +2337,20 @@ void tst_QGraphicsView::viewportUpdateMode()
void tst_QGraphicsView::viewportUpdateMode2()
{
+ QWidget toplevel;
+
// Create a view with viewport rect equal to QRect(0, 0, 200, 200).
QGraphicsScene dummyScene;
- CustomView view;
+ CustomView view(0, &toplevel);
view.painted = false;
view.setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);
view.setScene(&dummyScene);
+ view.ensurePolished(); // make sure we get the right content margins
int left, top, right, bottom;
view.getContentsMargins(&left, &top, &right, &bottom);
view.resize(200 + left + right, 200 + top + bottom);
- view.show();
- QTest::qWaitForWindowShown(&view);
+ toplevel.show();
+ QTest::qWaitForWindowShown(&toplevel);
QTest::qWait(50);
QTRY_VERIFY(view.painted);
const QRect viewportRect = view.viewport()->rect();
@@ -3222,15 +3259,17 @@ void tst_QGraphicsView::scrollAfterResize()
#else
QCommonStyle style;
#endif
- QGraphicsView view;
+ QWidget toplevel;
+
+ QGraphicsView view(&toplevel);
view.setStyle(&style);
if (reverse)
view.setLayoutDirection(Qt::RightToLeft);
view.setSceneRect(-1000, -1000, 2000, 2000);
view.resize(300, 300);
- view.show();
- QTest::qWaitForWindowShown(&view);
+ toplevel.show();
+ QTest::qWaitForWindowShown(&toplevel);
view.horizontalScrollBar()->setValue(0);
view.verticalScrollBar()->setValue(0);
QCOMPARE(view.viewportTransform(), x1);
@@ -3321,8 +3360,10 @@ void tst_QGraphicsView::moveItemWhileScrolling()
void tst_QGraphicsView::centerOnDirtyItem()
{
- QGraphicsView view;
- view.setWindowFlags(view.windowFlags() | Qt::WindowStaysOnTopHint);
+ QWidget toplevel;
+
+ QGraphicsView view(&toplevel);
+ toplevel.setWindowFlags(view.windowFlags() | Qt::WindowStaysOnTopHint);
view.resize(200, 200);
QGraphicsScene *scene = new QGraphicsScene;
@@ -3334,8 +3375,9 @@ void tst_QGraphicsView::centerOnDirtyItem()
scene->addItem(item);
view.centerOn(item);
- view.show();
- QTest::qWaitForWindowShown(&view);
+ toplevel.show();
+ QTest::qWaitForWindowShown(&toplevel);
+ QTest::qWait(50);
QImage before(view.viewport()->size(), QImage::Format_ARGB32);
view.viewport()->render(&before);
@@ -3697,19 +3739,26 @@ void tst_QGraphicsView::update()
{
QFETCH(QRect, updateRect);
+ // some window manager resize the toplevel to max screen size
+ // so we must make our view a child (no layout!) of a dummy toplevel
+ // to ensure that it's really 200x200 pixels
+ QWidget toplevel;
+
// Create a view with viewport rect equal to QRect(0, 0, 200, 200).
QGraphicsScene dummyScene;
- CustomView view;
+ CustomView view(0, &toplevel);
view.setScene(&dummyScene);
+ view.ensurePolished(); // must ensure polished to get content margins right
int left, top, right, bottom;
view.getContentsMargins(&left, &top, &right, &bottom);
view.resize(200 + left + right, 200 + top + bottom);
- view.show();
- QTest::qWaitForWindowShown(&view);
+ toplevel.show();
+ QTest::qWaitForWindowShown(&toplevel);
- QApplication::setActiveWindow(&view);
+
+ QApplication::setActiveWindow(&toplevel);
QApplication::processEvents();
- QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view));
+ QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&toplevel));
const QRect viewportRect = view.viewport()->rect();
QCOMPARE(viewportRect, QRect(0, 0, 200, 200));
@@ -3718,6 +3767,7 @@ void tst_QGraphicsView::update()
const bool intersects = updateRect.intersects(viewportRect);
QGraphicsViewPrivate *viewPrivate = static_cast<QGraphicsViewPrivate *>(qt_widget_private(&view));
QTRY_COMPARE(viewPrivate->updateRect(updateRect), intersects);
+ QApplication::processEvents();
view.lastUpdateRegions.clear();
viewPrivate->processPendingUpdates();
@@ -3741,22 +3791,22 @@ void tst_QGraphicsView::update2_data()
QTest::addColumn<bool>("changedConnected");
// Anti-aliased.
- QTest::newRow("pen width: 0.0, antialiasing: true") << 0.0 << true << false;
- QTest::newRow("pen width: 1.5, antialiasing: true") << 1.5 << true << false;
- QTest::newRow("pen width: 2.0, antialiasing: true") << 2.0 << true << false;
- QTest::newRow("pen width: 3.0, antialiasing: true") << 3.0 << true << false;
+ QTest::newRow("pen width: 0.0, antialiasing: true") << qreal(0.0) << true << false;
+ QTest::newRow("pen width: 1.5, antialiasing: true") << qreal(1.5) << true << false;
+ QTest::newRow("pen width: 2.0, antialiasing: true") << qreal(2.0) << true << false;
+ QTest::newRow("pen width: 3.0, antialiasing: true") << qreal(3.0) << true << false;
// Aliased.
- QTest::newRow("pen width: 0.0, antialiasing: false") << 0.0 << false << false;
- QTest::newRow("pen width: 1.5, antialiasing: false") << 1.5 << false << false;
- QTest::newRow("pen width: 2.0, antialiasing: false") << 2.0 << false << false;
- QTest::newRow("pen width: 3.0, antialiasing: false") << 3.0 << false << false;
+ QTest::newRow("pen width: 0.0, antialiasing: false") << qreal(0.0) << false << false;
+ QTest::newRow("pen width: 1.5, antialiasing: false") << qreal(1.5) << false << false;
+ QTest::newRow("pen width: 2.0, antialiasing: false") << qreal(2.0) << false << false;
+ QTest::newRow("pen width: 3.0, antialiasing: false") << qreal(3.0) << false << false;
// changed() connected
- QTest::newRow("pen width: 0.0, antialiasing: false, changed") << 0.0 << false << true;
- QTest::newRow("pen width: 1.5, antialiasing: true, changed") << 1.5 << true << true;
- QTest::newRow("pen width: 2.0, antialiasing: false, changed") << 2.0 << false << true;
- QTest::newRow("pen width: 3.0, antialiasing: true, changed") << 3.0 << true << true;
+ QTest::newRow("pen width: 0.0, antialiasing: false, changed") << qreal(0.0) << false << true;
+ QTest::newRow("pen width: 1.5, antialiasing: true, changed") << qreal(1.5) << true << true;
+ QTest::newRow("pen width: 2.0, antialiasing: false, changed") << qreal(2.0) << false << true;
+ QTest::newRow("pen width: 3.0, antialiasing: true, changed") << qreal(3.0) << true << true;
}
void tst_QGraphicsView::update2()
@@ -4198,8 +4248,8 @@ void tst_QGraphicsView::task255529_transformationAnchorMouseAndViewportMargins()
class VpGraphicsView: public QGraphicsView
{
public:
- VpGraphicsView(QGraphicsScene *scene)
- : QGraphicsView(scene)
+ VpGraphicsView(QGraphicsScene *scene, QWidget *parent=0)
+ : QGraphicsView(scene, parent)
{
setViewportMargins(8, 16, 12, 20);
setTransformationAnchor(QGraphicsView::AnchorUnderMouse);
@@ -4210,6 +4260,7 @@ void tst_QGraphicsView::task255529_transformationAnchorMouseAndViewportMargins()
VpGraphicsView view(&scene);
view.setWindowFlags(Qt::X11BypassWindowManagerHint);
view.show();
+
QTest::qWaitForWindowShown(&view);
QTest::qWait(50);
QPoint mouseViewPos(20, 20);
@@ -4324,6 +4375,9 @@ void tst_QGraphicsView::QTBUG_4151_clipAndIgnore()
view.setFrameStyle(0);
view.resize(75, 75);
view.show();
+ QTest::qWaitForWindowShown(&view);
+ view.activateWindow();
+
QTRY_COMPARE(QApplication::activeWindow(), (QWidget *)&view);
QCOMPARE(view.items(view.rect()).size(), numItems);
@@ -4357,6 +4411,8 @@ void tst_QGraphicsView::QTBUG_5859_exposedRect()
scene.addItem(&item);
QGraphicsView view(&scene);
+ if (PlatformQuirks::isAutoMaximizing())
+ view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint);
view.scale(4.15, 4.15);
view.show();
QTest::qWaitForWindowShown(&view);
diff --git a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
index 9d6def84ec..2368d5978a 100644
--- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -53,6 +53,7 @@
#include <qaction.h>
#include <qwidgetaction.h>
#include "../../shared/util.h"
+#include "../platformquirks.h"
class EventSpy : public QObject
@@ -1111,6 +1112,10 @@ void tst_QGraphicsWidget::initStyleOption_data()
// void initStyleOption(QStyleOption* option) const public
void tst_QGraphicsWidget::initStyleOption()
{
+#ifdef Q_WS_MAEMO_5
+ QSKIP("The test passes, but it doesn't work when the display is in energy saving mode", SkipAll);
+#endif
+
QGraphicsScene scene;
QGraphicsView view(&scene);
view.show();
@@ -1773,6 +1778,9 @@ void tst_QGraphicsWidget::verifyFocusChain()
void tst_QGraphicsWidget::updateFocusChainWhenChildDie()
{
+#ifdef Q_WS_MAEMO_5
+ QSKIP("On Maemo 5 the Display Manager is shown on Window change, so the test won't work", SkipAll);
+#endif
QGraphicsScene scene;
QGraphicsView view(&scene);
view.show();
@@ -3144,7 +3152,10 @@ void tst_QGraphicsWidget::initialShow()
MyGraphicsWidget *widget = new MyGraphicsWidget;
QGraphicsView view(&scene);
- view.show();
+ if(PlatformQuirks::isAutoMaximizing())
+ view.showFullScreen();
+ else
+ view.show();
QTest::qWaitForWindowShown(&view);
scene.addItem(widget);
@@ -3186,7 +3197,7 @@ void tst_QGraphicsWidget::initialShow2()
scene.addItem(widget);
QGraphicsView view(&scene);
- view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+ view.setWindowFlags(view.windowFlags()|Qt::X11BypassWindowManagerHint);
view.show();
QTest::qWaitForWindowShown(&view);
diff --git a/tests/auto/qgridlayout/tst_qgridlayout.cpp b/tests/auto/qgridlayout/tst_qgridlayout.cpp
index e0924deaf5..ed6d635f42 100644
--- a/tests/auto/qgridlayout/tst_qgridlayout.cpp
+++ b/tests/auto/qgridlayout/tst_qgridlayout.cpp
@@ -52,6 +52,7 @@
#include <QStyleFactory>
#include "../../shared/util.h"
+#include "../platformquirks.h"
//TESTED_CLASS=
//TESTED_FILES=gui/kernel/qlayout.cpp gui/kernel/qlayout.h
@@ -678,6 +679,8 @@ void tst_QGridLayout::spacingsAndMargins()
QApplication::setStyle(new Qt42Style);
QWidget toplevel;
+ if(PlatformQuirks::isAutoMaximizing())
+ toplevel.setWindowFlags(Qt::X11BypassWindowManagerHint);
QVBoxLayout vbox(&toplevel);
QGridLayout grid1;
vbox.addLayout(&grid1);
@@ -713,11 +716,12 @@ void tst_QGridLayout::spacingsAndMargins()
toplevel.show();
toplevel.adjustSize();
QApplication::processEvents();
+ QTest::qWaitForWindowShown(&toplevel);
QSize topsize = toplevel.size();
QSize minimumsize = vbox.totalMinimumSize();
-#ifdef Q_WS_QWS
+#if defined(Q_WS_QWS)
if (topsize.width() < minimumsize.width() || topsize.height() < minimumsize.height())
QSKIP("The screen is too small to run this test case", SkipSingle);
#endif
@@ -1463,15 +1467,18 @@ void tst_QGridLayout::layoutSpacingImplementation()
QFETCH(int, vSpacing);
QFETCH(bool, customSubElementRect);
+ QWidget toplevel;
+
CustomLayoutStyle *style = new CustomLayoutStyle();
style->hspacing = hSpacing;
style->vspacing = vSpacing;
style->reimplementSubelementRect = customSubElementRect;
QApplication::setStyle(style);
+ widget->setParent(&toplevel);
widget->resize(widget->sizeHint());
- widget->show();
-#if defined(Q_WS_X11)
- qt_x11_wait_for_window_manager(widget); // wait for the show
+ toplevel.show();
+#ifdef Q_WS_X11
+ qt_x11_wait_for_window_manager(&toplevel); // wait for the show
#endif
QLayout *layout = widget->layout();
@@ -1482,8 +1489,6 @@ void tst_QGridLayout::layoutSpacingImplementation()
//qDebug() << item->widget()->pos();
QCOMPARE(item->widget()->pos(), expectedpositions.at(pi));
}
- delete widget;
-
}
void tst_QGridLayout::spacing()
diff --git a/tests/auto/qheaderview/tst_qheaderview.cpp b/tests/auto/qheaderview/tst_qheaderview.cpp
index da0a0bbeed..5252ec64ab 100644
--- a/tests/auto/qheaderview/tst_qheaderview.cpp
+++ b/tests/auto/qheaderview/tst_qheaderview.cpp
@@ -196,6 +196,7 @@ private slots:
void QTBUG12268_hiddenMovedSectionSorting();
protected:
+ QWidget *topLevel;
QHeaderView *view;
QStandardItemModel *model;
};
@@ -345,7 +346,8 @@ void tst_QHeaderView::cleanupTestCase()
void tst_QHeaderView::init()
{
- view = new QHeaderView(Qt::Vertical);
+ topLevel = new QWidget();
+ view = new QHeaderView(Qt::Vertical,topLevel);
// Some initial value tests before a model is added
QCOMPARE(view->length(), 0);
QVERIFY(view->sizeHint() == QSize(0,0));
@@ -373,7 +375,8 @@ void tst_QHeaderView::init()
QSignalSpy spy(view, SIGNAL(sectionCountChanged(int, int)));
view->setModel(model);
QCOMPARE(spy.count(), 1);
- view->show();
+ view->resize(200,200);
+ topLevel->show();
}
void tst_QHeaderView::cleanup()
@@ -508,7 +511,7 @@ void tst_QHeaderView::stretch()
view->resize(viewSize);
view->setStretchLastSection(true);
QCOMPARE(view->stretchLastSection(), true);
- view->show();
+ topLevel->show();
QCOMPARE(view->width(), viewSize.width());
QCOMPARE(view->visualIndexAt(view->viewport()->height() - 5), 3);
@@ -674,7 +677,7 @@ void tst_QHeaderView::visualIndexAt()
QFETCH(QList<int>, visual);
view->setStretchLastSection(true);
- view->show();
+ topLevel->show();
for (int i = 0; i < hidden.count(); ++i)
view->setSectionHidden(hidden.at(i), true);
@@ -682,6 +685,8 @@ void tst_QHeaderView::visualIndexAt()
for (int j = 0; j < from.count(); ++j)
view->moveSection(from.at(j), to.at(j));
+ QTest::qWait(100);
+
for (int k = 0; k < coordinate.count(); ++k)
QCOMPARE(view->visualIndexAt(coordinate.at(k)), visual.at(k));
}
@@ -696,7 +701,7 @@ void tst_QHeaderView::length()
view->setFont(font);
#endif
view->setStretchLastSection(true);
- view->show();
+ topLevel->show();
//minimumSectionSize should be the size of the last section of the widget is not tall enough
int length = view->minimumSectionSize();
@@ -708,7 +713,7 @@ void tst_QHeaderView::length()
QCOMPARE(length, view->length());
view->setStretchLastSection(false);
- view->show();
+ topLevel->show();
QVERIFY(length != view->length());
@@ -759,7 +764,7 @@ void tst_QHeaderView::logicalIndexAt()
QCOMPARE(view->logicalIndexAt(0), 0);
QCOMPARE(view->logicalIndexAt(1), 0);
- view->show();
+ topLevel->show();
view->setStretchLastSection(true);
// First item
QCOMPARE(view->logicalIndexAt(0), 0);
@@ -1062,7 +1067,7 @@ void tst_QHeaderView::resizeWithResizeModes()
view->resizeSection(i, sections.at(i));
view->setResizeMode(i, (QHeaderView::ResizeMode)modes.at(i));
}
- view->show();
+ topLevel->show();
view->resize(size, size);
for (int j = 0; j < expected.count(); ++j)
QCOMPARE(view->sectionSize(j), expected.at(j));
@@ -1160,7 +1165,7 @@ void tst_QHeaderView::resizeSection()
view->resize(400, 400);
- view->show();
+ topLevel->show();
view->setMovable(true);
view->setStretchLastSection(false);
@@ -2035,14 +2040,14 @@ void tst_QHeaderView::QTBUG7833_sectionClicked()
QTest::mouseClick(tv.horizontalHeader()->viewport(), Qt::LeftButton, Qt::NoModifier,
- QPoint(tv.horizontalHeader()->sectionViewportPosition(11) + 5, 5));
+ QPoint(tv.horizontalHeader()->sectionViewportPosition(11) + tv.horizontalHeader()->sectionSize(11)/2, 5));
QCOMPARE(clickedSpy.count(), 1);
QCOMPARE(pressedSpy.count(), 1);
QCOMPARE(clickedSpy.at(0).at(0).toInt(), 11);
QCOMPARE(pressedSpy.at(0).at(0).toInt(), 11);
QTest::mouseClick(tv.horizontalHeader()->viewport(), Qt::LeftButton, Qt::NoModifier,
- QPoint(tv.horizontalHeader()->sectionViewportPosition(8) + 5, 5));
+ QPoint(tv.horizontalHeader()->sectionViewportPosition(8) + tv.horizontalHeader()->sectionSize(0)/2, 5));
QCOMPARE(clickedSpy.count(), 2);
QCOMPARE(pressedSpy.count(), 2);
@@ -2050,7 +2055,7 @@ void tst_QHeaderView::QTBUG7833_sectionClicked()
QCOMPARE(pressedSpy.at(1).at(0).toInt(), 8);
QTest::mouseClick(tv.horizontalHeader()->viewport(), Qt::LeftButton, Qt::NoModifier,
- QPoint(tv.horizontalHeader()->sectionViewportPosition(0) + 5, 5));
+ QPoint(tv.horizontalHeader()->sectionViewportPosition(0) + tv.horizontalHeader()->sectionSize(0)/2, 5));
QCOMPARE(clickedSpy.count(), 3);
QCOMPARE(pressedSpy.count(), 3);
diff --git a/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp b/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
index 89f608edcb..4a32a5adf9 100644
--- a/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
+++ b/tests/auto/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
@@ -57,7 +57,7 @@ public:
public Q_SLOTS:
void finishedReply();
void finishedWithError(QNetworkReply::NetworkError errorCode, const QString &detail);
- void challenge401(const QHttpNetworkRequest &request, QAuthenticator *authenticator, const QHttpNetworkConnection *connection);
+ void challenge401(const QHttpNetworkRequest &request, QAuthenticator *authenticator);
#ifndef QT_NO_OPENSSL
void sslErrors(const QList<QSslError> &errors);
#endif
@@ -175,11 +175,9 @@ void tst_QHttpNetworkConnection::head()
QFETCH(QString, statusString);
QFETCH(int, contentLength);
- QHttpNetworkConnection connection(host);
+ QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
QCOMPARE(connection.isEncrypted(), encrypt);
QHttpNetworkRequest request(protocol + host + path, QHttpNetworkRequest::Head);
@@ -235,11 +233,9 @@ void tst_QHttpNetworkConnection::get()
QFETCH(int, contentLength);
QFETCH(int, downloadSize);
- QHttpNetworkConnection connection(host);
+ QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
QCOMPARE(connection.isEncrypted(), encrypt);
QHttpNetworkRequest request(protocol + host + path);
@@ -315,11 +311,9 @@ void tst_QHttpNetworkConnection::put()
QFETCH(QString, data);
QFETCH(bool, succeed);
- QHttpNetworkConnection connection(host);
+ QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
QCOMPARE(connection.isEncrypted(), encrypt);
QHttpNetworkRequest request(protocol + host + path, QHttpNetworkRequest::Put);
@@ -336,8 +330,6 @@ void tst_QHttpNetworkConnection::put()
connect(reply, SIGNAL(finished()), SLOT(finishedReply()));
connect(reply, SIGNAL(finishedWithError(QNetworkReply::NetworkError, const QString &)),
SLOT(finishedWithError(QNetworkReply::NetworkError, const QString &)));
- connect(&connection, SIGNAL(error(QNetworkReply::NetworkError, const QString &)),
- SLOT(finishedWithError(QNetworkReply::NetworkError, const QString &)));
QTime stopWatch;
stopWatch.start();
@@ -407,11 +399,9 @@ void tst_QHttpNetworkConnection::post()
QFETCH(int, contentLength);
QFETCH(int, downloadSize);
- QHttpNetworkConnection connection(host);
+ QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
QCOMPARE(connection.isEncrypted(), encrypt);
QHttpNetworkRequest request(protocol + host + path, QHttpNetworkRequest::Post);
@@ -496,14 +486,14 @@ void tst_QHttpNetworkConnection::_connect()
}
void tst_QHttpNetworkConnection::challenge401(const QHttpNetworkRequest &request,
- QAuthenticator *authenticator,
- const QHttpNetworkConnection *connection)
+ QAuthenticator *authenticator)
{
Q_UNUSED(request)
- Q_UNUSED(connection)
- QHttpNetworkConnection *c = qobject_cast<QHttpNetworkConnection*>(sender());
- if (connection) {
+ QHttpNetworkReply *reply = qobject_cast<QHttpNetworkReply*>(sender());
+ if (reply) {
+ QHttpNetworkConnection *c = reply->connection();
+
QVariant val = c->property("setCredentials");
if (val.toBool()) {
QVariant user = c->property("username");
@@ -549,17 +539,15 @@ void tst_QHttpNetworkConnection::get401()
QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
QCOMPARE(connection.isEncrypted(), encrypt);
- connect(&connection, SIGNAL(authenticationRequired(const QHttpNetworkRequest&, QAuthenticator *, const QHttpNetworkConnection*)),
- SLOT(challenge401(const QHttpNetworkRequest&, QAuthenticator *, const QHttpNetworkConnection*)));
connection.setProperty("setCredentials", setCredentials);
connection.setProperty("username", username);
connection.setProperty("password", password);
QHttpNetworkRequest request(protocol + host + path);
QHttpNetworkReply *reply = connection.sendRequest(request);
+ connect(reply, SIGNAL(authenticationRequired(const QHttpNetworkRequest&, QAuthenticator *)),
+ SLOT(challenge401(const QHttpNetworkRequest&, QAuthenticator *)));
finishedCalled = false;
finishedWithErrorCalled = false;
@@ -618,11 +606,9 @@ void tst_QHttpNetworkConnection::compression()
QFETCH(bool, autoCompress);
QFETCH(QString, contentCoding);
- QHttpNetworkConnection connection(host);
+ QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
QCOMPARE(connection.isEncrypted(), encrypt);
QHttpNetworkRequest request(protocol + host + path);
@@ -668,8 +654,10 @@ void tst_QHttpNetworkConnection::sslErrors(const QList<QSslError> &errors)
{
Q_UNUSED(errors)
- QHttpNetworkConnection *connection = qobject_cast<QHttpNetworkConnection*>(sender());
- if (connection) {
+ QHttpNetworkReply *reply = qobject_cast<QHttpNetworkReply*>(sender());
+ if (reply) {
+ QHttpNetworkConnection *connection = reply->connection();
+
QVariant val = connection->property("ignoreFromSignal");
if (val.toBool())
connection->ignoreSslErrors();
@@ -711,17 +699,15 @@ void tst_QHttpNetworkConnection::ignoresslerror()
QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
if (ignoreInit)
connection.ignoreSslErrors();
QCOMPARE(connection.isEncrypted(), encrypt);
- connect(&connection, SIGNAL(sslErrors(const QList<QSslError>&)),
- SLOT(sslErrors(const QList<QSslError>&)));
connection.setProperty("ignoreFromSignal", ignoreFromSignal);
QHttpNetworkRequest request(protocol + host + path);
QHttpNetworkReply *reply = connection.sendRequest(request);
+ connect(reply, SIGNAL(sslErrors(const QList<QSslError>&)),
+ SLOT(sslErrors(const QList<QSslError>&)));
finishedWithErrorCalled = false;
@@ -769,8 +755,6 @@ void tst_QHttpNetworkConnection::nossl()
QHttpNetworkConnection connection(host, port, encrypt);
QCOMPARE(connection.port(), port);
QCOMPARE(connection.hostName(), host);
- if (encrypt)
- connection.enableEncryption();
QHttpNetworkRequest request(protocol + host + path);
QHttpNetworkReply *reply = connection.sendRequest(request);
diff --git a/tests/auto/qimagereader/tst_qimagereader.cpp b/tests/auto/qimagereader/tst_qimagereader.cpp
index 4b4bdd6a3b..d213e8e5db 100644
--- a/tests/auto/qimagereader/tst_qimagereader.cpp
+++ b/tests/auto/qimagereader/tst_qimagereader.cpp
@@ -55,6 +55,8 @@
#include <QTcpServer>
#include <QTimer>
+#include "../platformquirks.h"
+
#if defined(Q_OS_SYMBIAN)
# define SRCDIR "."
#endif
@@ -315,23 +317,27 @@ void tst_QImageReader::jpegRgbCmyk()
QImage image1(prefix + QLatin1String("YCbCr_cmyk.jpg"));
QImage image2(prefix + QLatin1String("YCbCr_cmyk.png"));
- // first, do some obvious tests
- QCOMPARE(image1.height(), image2.height());
- QCOMPARE(image1.width(), image2.width());
- QCOMPARE(image1.format(), image2.format());
- QCOMPARE(image1.format(), QImage::Format_RGB32);
-
- // compare all the pixels with a slack of 3. This ignores rounding errors in libjpeg/libpng
- for (int h = 0; h < image1.height(); ++h) {
- const uchar *s1 = image1.constScanLine(h);
- const uchar *s2 = image2.constScanLine(h);
- for (int w = 0; w < image1.width() * 4; ++w) {
- if (*s1 != *s2) {
- QVERIFY2(qAbs(*s1 - *s2) <= 3, qPrintable(QString("images differ in line %1, col %2 (image1: %3, image2: %4)").arg(h).arg(w).arg(*s1, 0, 16).arg(*s2, 0, 16)));
+ if (PlatformQuirks::isImageLoaderImprecise()) {
+ // first, do some obvious tests
+ QCOMPARE(image1.height(), image2.height());
+ QCOMPARE(image1.width(), image2.width());
+ QCOMPARE(image1.format(), image2.format());
+ QCOMPARE(image1.format(), QImage::Format_RGB32);
+
+ // compare all the pixels with a slack of 3. This ignores rounding errors in libjpeg/libpng
+ for (int h = 0; h < image1.height(); ++h) {
+ const uchar *s1 = image1.constScanLine(h);
+ const uchar *s2 = image2.constScanLine(h);
+ for (int w = 0; w < image1.width() * 4; ++w) {
+ if (*s1 != *s2) {
+ QVERIFY2(qAbs(*s1 - *s2) <= 3, qPrintable(QString("images differ in line %1, col %2 (image1: %3, image2: %4)").arg(h).arg(w).arg(*s1, 0, 16).arg(*s2, 0, 16)));
+ }
+ s1++;
+ s2++;
}
- s1++;
- s2++;
}
+ } else {
+ QCOMPARE(image1, image2);
}
}
diff --git a/tests/auto/qinputcontext/tst_qinputcontext.cpp b/tests/auto/qinputcontext/tst_qinputcontext.cpp
index 7811a53355..5a258a9872 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/qinputdialog/tst_qinputdialog.cpp b/tests/auto/qinputdialog/tst_qinputdialog.cpp
index 5d031421c6..580c6442ab 100644
--- a/tests/auto/qinputdialog/tst_qinputdialog.cpp
+++ b/tests/auto/qinputdialog/tst_qinputdialog.cpp
@@ -147,9 +147,10 @@ void testInvalidateAndRestore(
QVERIFY(sbox->hasAcceptableInput());
QVERIFY(okButton->isEnabled());
QCOMPARE(sbox->value(), lastValidValue);
+ QLocale loc;
QCOMPARE(
normalizeNumericString(ledit->text()),
- normalizeNumericString(QString("%1").arg(sbox->value())));
+ normalizeNumericString(loc.toString(sbox->value())));
}
template <typename SpinBoxType, typename ValueType>
@@ -169,9 +170,10 @@ void testGetNumeric(QInputDialog *dialog, SpinBoxType * = 0, ValueType * = 0)
QVERIFY(sbox->value() >= sbox->minimum());
QVERIFY(sbox->value() <= sbox->maximum());
QVERIFY(sbox->hasAcceptableInput());
+ QLocale loc;
QCOMPARE(
normalizeNumericString(ledit->selectedText()),
- normalizeNumericString(QString("%1").arg(sbox->value())));
+ normalizeNumericString(loc.toString(sbox->value())));
QVERIFY(okButton->isEnabled());
const ValueType origValue = sbox->value();
@@ -185,7 +187,7 @@ void testGetNumeric(QInputDialog *dialog, SpinBoxType * = 0, ValueType * = 0)
testTypingValue<SpinBoxType>(sbox, okButton, "0.0");
testTypingValue<SpinBoxType>(sbox, okButton, "foobar");
- testTypingValue<SpinBoxType>(sbox, okButton, QString("%1").arg(origValue));
+ testTypingValue<SpinBoxType>(sbox, okButton, loc.toString(origValue));
}
void testGetText(QInputDialog *dialog)
diff --git a/tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp b/tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp
index 3b2a7167c0..8058294c16 100644
--- a/tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp
+++ b/tests/auto/qitemselectionmodel/tst_qitemselectionmodel.cpp
@@ -95,6 +95,8 @@ private slots:
void QTBUG5671_layoutChangedWithAllSelected();
void QTBUG2804_layoutChangedTreeSelection();
+ void testValidRangesInSelectionsAfterReset();
+
private:
QAbstractItemModel *model;
QItemSelectionModel *selection;
@@ -2353,6 +2355,70 @@ void tst_QItemSelectionModel::QTBUG2804_layoutChangedTreeSelection()
QCOMPARE(selModel.selectedIndexes().count(), 4);
}
+class SelectionObserver : public QObject
+{
+ Q_OBJECT
+public:
+ SelectionObserver(QAbstractItemModel *model, QObject *parent = 0)
+ : QObject(parent), m_model(model), m_selectionModel(0)
+ {
+ connect(model, SIGNAL(modelReset()), SLOT(modelReset()));
+ }
+
+ void setSelectionModel(QItemSelectionModel *selectionModel)
+ {
+ m_selectionModel = selectionModel;
+ connect(m_selectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(selectionChanged(QItemSelection,QItemSelection)));
+ }
+
+ private slots:
+ void modelReset()
+ {
+ const QModelIndex idx = m_model->index(2, 0);
+ QVERIFY(idx.isValid());
+ m_selectionModel->select(QItemSelection(idx, idx), QItemSelectionModel::Clear);
+ }
+
+ void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
+ {
+ foreach(const QItemSelectionRange &range, selected)
+ QVERIFY(range.isValid());
+ foreach(const QItemSelectionRange &range, deselected)
+ QVERIFY(range.isValid());
+ }
+
+private:
+ QAbstractItemModel *m_model;
+ QItemSelectionModel *m_selectionModel;
+};
+
+void tst_QItemSelectionModel::testValidRangesInSelectionsAfterReset()
+{
+ QStringListModel model;
+
+ QStringList strings;
+ strings << "one"
+ << "two"
+ << "three"
+ << "four"
+ << "five";
+
+ model.setStringList(strings);
+
+ SelectionObserver observer(&model);
+
+ QItemSelectionModel selectionModel(&model);
+
+ selectionModel.select(QItemSelection(model.index(1, 0), model.index(3, 0)), QItemSelectionModel::Select);
+
+ // Cause d->ranges to contain something.
+ model.insertRows(2, 1);
+
+ observer.setSelectionModel(&selectionModel);
+
+ model.setStringList(strings);
+
+}
QTEST_MAIN(tst_QItemSelectionModel)
#include "tst_qitemselectionmodel.moc"
diff --git a/tests/auto/qkeysequence/tst_qkeysequence.cpp b/tests/auto/qkeysequence/tst_qkeysequence.cpp
index 60f022fc46..55c7edf191 100644
--- a/tests/auto/qkeysequence/tst_qkeysequence.cpp
+++ b/tests/auto/qkeysequence/tst_qkeysequence.cpp
@@ -405,7 +405,7 @@ void tst_QKeySequence::mnemonic()
#ifndef QT_NO_DEBUG
if (warning) {
- QString str = QString::fromLatin1("QKeySequence::mnemonic: \"%1\" contains multiple occurences of '&'").arg(string);
+ QString str = QString::fromLatin1("QKeySequence::mnemonic: \"%1\" contains multiple occurrences of '&'").arg(string);
QTest::ignoreMessage(QtWarningMsg, qPrintable(str));
// qWarning(qPrintable(str));
}
diff --git a/tests/auto/qlayout/tst_qlayout.cpp b/tests/auto/qlayout/tst_qlayout.cpp
index c6fe3f0400..a974a42a04 100644
--- a/tests/auto/qlayout/tst_qlayout.cpp
+++ b/tests/auto/qlayout/tst_qlayout.cpp
@@ -133,12 +133,13 @@ void tst_QLayout::geometry()
// For QWindowsStyle we know that QWidgetItem::geometry() and QWidget::geometry()
// should be the same.
QApplication::setStyle(new QWindowsStyle);
- QWidget w;
+ QWidget topLevel;
+ QWidget w(&topLevel);
QVBoxLayout layout(&w);
SizeHinterFrame widget(QSize(100,100));
layout.addWidget(&widget);
QLayoutItem *item = layout.itemAt(0);
- w.show();
+ topLevel.show();
QApplication::processEvents();
QCOMPARE(item->geometry().size(), QSize(100,100));
diff --git a/tests/auto/qlistview/tst_qlistview.cpp b/tests/auto/qlistview/tst_qlistview.cpp
index 425ac8984f..523a3abc7a 100644
--- a/tests/auto/qlistview/tst_qlistview.cpp
+++ b/tests/auto/qlistview/tst_qlistview.cpp
@@ -334,7 +334,8 @@ void tst_QListView::cursorMove()
int columns = 6;
QStandardItemModel model(rows, columns);
- QListView view;
+ QWidget topLevel;
+ QListView view(&topLevel);
view.setModel(&model);
for (int j = 0; j < columns; ++j) {
@@ -358,7 +359,7 @@ void tst_QListView::cursorMove()
view.setGridSize(cellsize);
view.setViewMode(QListView::IconMode);
view.doItemsLayout();
- view.show();
+ topLevel.show();
QVector<Qt::Key> keymoves;
keymoves << Qt::Key_Up << Qt::Key_Up << Qt::Key_Right << Qt::Key_Right << Qt::Key_Up
@@ -1108,7 +1109,8 @@ void tst_QListView::selection()
QFETCH(QRect, selectionRect);
QFETCH(IntList, expectedItems);
- PublicListView v;
+ QWidget topLevel;
+ PublicListView v(&topLevel);
QtTestModel model;
model.colCount = 1;
model.rCount = itemCount;
@@ -1142,7 +1144,7 @@ void tst_QListView::selection()
v.resize(525,525);
#endif
- v.show();
+ topLevel.show();
QTest::qWaitForWindowShown(&v);
QApplication::processEvents();
@@ -1158,7 +1160,8 @@ void tst_QListView::selection()
void tst_QListView::scrollTo()
{
- QListView lv;
+ QWidget topLevel;
+ QListView lv(&topLevel);
QStringListModel model(&lv);
QStringList list;
list << "Short item 1";
@@ -1194,8 +1197,8 @@ void tst_QListView::scrollTo()
model.setStringList(list);
lv.setModel(&model);
lv.setFixedSize(100, 200);
- lv.show();
- QTest::qWaitForWindowShown(&lv);
+ topLevel.show();
+ QTest::qWaitForWindowShown(&topLevel);
//by default, the list view scrolls per item and has no wrapping
QModelIndex index = model.index(6,0);
@@ -1266,7 +1269,8 @@ void tst_QListView::scrollBarRanges()
const int rowCount = 10;
const int rowHeight = 20;
- QListView lv;
+ QWidget topLevel;
+ QListView lv(&topLevel);
QStringListModel model(&lv);
QStringList list;
for (int i = 0; i < rowCount; ++i)
@@ -1278,7 +1282,7 @@ void tst_QListView::scrollBarRanges()
TestDelegate *delegate = new TestDelegate(&lv);
delegate->m_sizeHint = QSize(100, rowHeight);
lv.setItemDelegate(delegate);
- lv.show();
+ topLevel.show();
for (int h = 30; h <= 210; ++h) {
lv.resize(250, h);
@@ -1354,14 +1358,15 @@ void tst_QListView::scrollBarAsNeeded()
const int rowCounts[3] = {0, 1, 20};
- QListView lv;
+ QWidget topLevel;
+ QListView lv(&topLevel);
lv.setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
lv.setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded);
lv.setFlow((QListView::Flow)flow);
QStringListModel model(&lv);
lv.setModel(&model);
lv.resize(size);
- lv.show();
+ topLevel.show();
for (uint r = 0; r < sizeof(rowCounts)/sizeof(int); ++r) {
QStringList list;
@@ -1631,6 +1636,7 @@ void tst_QListView::task254449_draggingItemToNegativeCoordinates()
list.setViewMode(QListView::IconMode);
list.show();
QTest::qWaitForWindowShown(&list);
+ list.activateWindow();
class MyItemDelegate : public QStyledItemDelegate
{
@@ -1815,7 +1821,8 @@ void tst_QListView::taskQTBUG_2233_scrollHiddenItems()
QFETCH(int, flow);
const int rowCount = 200;
- QListView view;
+ QWidget topLevel;
+ QListView view(&topLevel);
QStringListModel model(&view);
QStringList list;
for (int i = 0; i < rowCount; ++i)
@@ -1839,8 +1846,8 @@ void tst_QListView::taskQTBUG_2233_scrollHiddenItems()
}
//QTBUG-7929 should not crash
- view.show();
- QTest::qWaitForWindowShown(&view);
+ topLevel.show();
+ QTest::qWaitForWindowShown(&topLevel);
QScrollBar *bar = view.flow() == QListView::TopToBottom
? view.verticalScrollBar() : view.horizontalScrollBar();
diff --git a/tests/auto/qlistwidget/tst_qlistwidget.cpp b/tests/auto/qlistwidget/tst_qlistwidget.cpp
index eb3fb6b96f..6cfd6c5dd9 100644
--- a/tests/auto/qlistwidget/tst_qlistwidget.cpp
+++ b/tests/auto/qlistwidget/tst_qlistwidget.cpp
@@ -1499,6 +1499,11 @@ void tst_QListWidget::itemWidget()
class MyListWidget : public QListWidget
{
public:
+ MyListWidget(QWidget *parent=0)
+ : QListWidget(parent)
+ {
+ }
+
void paintEvent(QPaintEvent *e) {
painted += e->region();
QListWidget::paintEvent(e);
@@ -1513,14 +1518,17 @@ void tst_QListWidget::fastScroll()
QSKIP("S60 style doesn't support fast scrolling", SkipAll);
}
- MyListWidget widget;
+ QWidget topLevel;
+ MyListWidget widget(&topLevel);
for (int i = 0; i < 50; ++i)
widget.addItem(QString("Item %1").arg(i));
- widget.show();
+ topLevel.resize(300, 300); // toplevel needs to be wide enough for the item
+ topLevel.show();
// Make sure the widget gets the first full repaint. On
// some WMs, we'll get two (first inactive exposure, then
// active exposure.
+ QTest::qWaitForWindowShown(&widget);
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&widget);
#endif
@@ -1531,6 +1539,7 @@ void tst_QListWidget::fastScroll()
QVERIFY(!itemSize.isEmpty());
QScrollBar *sbar = widget.verticalScrollBar();
+ widget.setVerticalScrollMode(QAbstractItemView::ScrollPerItem);
widget.painted = QRegion();
sbar->setValue(sbar->value() + sbar->singleStep());
QApplication::processEvents();
diff --git a/tests/auto/qmainwindow/tst_qmainwindow.cpp b/tests/auto/qmainwindow/tst_qmainwindow.cpp
index e427863632..e3122c4c66 100644
--- a/tests/auto/qmainwindow/tst_qmainwindow.cpp
+++ b/tests/auto/qmainwindow/tst_qmainwindow.cpp
@@ -55,6 +55,7 @@
#include <qtextedit.h>
#include <private/qmainwindowlayout_p.h>
#include <private/qdockarealayout_p.h>
+#include "../platformquirks.h"
//TESTED_FILES=
@@ -701,10 +702,12 @@ void tst_QMainWindow::statusBar()
// deleting the status bar should remove it from the main window
QMainWindow mw;
QStatusBar *sb = mw.statusBar();
- int indexOfSb = mw.layout()->indexOf(sb);
+ QMainWindowLayout *l = qFindChild<QMainWindowLayout *>(&mw);
+ QVERIFY(l);
+ int indexOfSb = l->indexOf(sb);
QVERIFY(indexOfSb != -1);
delete sb;
- indexOfSb = mw.layout()->indexOf(sb);
+ indexOfSb = l->indexOf(sb);
QVERIFY(indexOfSb == -1);
}
}
@@ -1677,6 +1680,9 @@ void tst_QMainWindow::addToolbarAfterShow()
void tst_QMainWindow::centralWidgetSize()
{
+ if(PlatformQuirks::isAutoMaximizing())
+ QSKIP("The platform is auto maximizing, so the test makes no sense", SkipAll);;
+
QMainWindow mainWindow;
mainWindow.menuBar()->addMenu("menu");
diff --git a/tests/auto/qmdiarea/tst_qmdiarea.cpp b/tests/auto/qmdiarea/tst_qmdiarea.cpp
index f865738141..6483f75908 100644
--- a/tests/auto/qmdiarea/tst_qmdiarea.cpp
+++ b/tests/auto/qmdiarea/tst_qmdiarea.cpp
@@ -63,6 +63,7 @@
#include <QMacStyle>
#include "../../shared/util.h"
+#include "../platformquirks.h"
static const Qt::WindowFlags DefaultWindowFlags
= Qt::SubWindow | Qt::WindowSystemMenuHint
@@ -468,6 +469,8 @@ void tst_QMdiArea::subWindowActivated2()
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&mdiArea);
#endif
+ QTest::qWaitForWindowShown(&mdiArea);
+ mdiArea.activateWindow();
QTest::qWait(100);
QTRY_COMPARE(spy.count(), 5);
@@ -510,6 +513,9 @@ void tst_QMdiArea::subWindowActivated2()
QCOMPARE(mdiArea.activeSubWindow(), activeSubWindow);
spy.clear();
+ if (PlatformQuirks::isAutoMaximizing())
+ QSKIP("Platform is auto maximizing, so no showMinimized()", SkipAll);
+
// Check that we only emit _one_ signal and the active window
// is unchanged after showMinimized/showNormal.
mdiArea.showMinimized();
@@ -1119,9 +1125,10 @@ void tst_QMdiArea::currentSubWindow()
void tst_QMdiArea::addAndRemoveWindows()
{
- QMdiArea workspace;
+ QWidget topLevel;
+ QMdiArea workspace(&topLevel);
workspace.resize(800, 600);
- workspace.show();
+ topLevel.show();
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&workspace);
#endif
@@ -1594,6 +1601,8 @@ void tst_QMdiArea::tileSubWindows()
{
QMdiArea workspace;
workspace.resize(600,480);
+ if (PlatformQuirks::isAutoMaximizing())
+ workspace.setWindowFlags(workspace.windowFlags() | Qt::X11BypassWindowManagerHint);
workspace.show();
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&workspace);
@@ -1848,8 +1857,9 @@ void tst_QMdiArea::resizeMaximizedChildWindows()
QFETCH(int, increment);
QFETCH(int, windowCount);
- QMdiArea workspace;
- workspace.show();
+ QWidget topLevel;
+ QMdiArea workspace(&topLevel);
+ topLevel.show();
#if defined(Q_WS_X11)
qt_x11_wait_for_window_manager(&workspace);
#endif
@@ -2094,6 +2104,7 @@ void tst_QMdiArea::resizeTimer()
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&mdiArea);
#endif
+ QTest::qWaitForWindowShown(&mdiArea);
#ifndef Q_OS_WINCE
int time = 250;
diff --git a/tests/auto/qmenu/tst_qmenu.cpp b/tests/auto/qmenu/tst_qmenu.cpp
index 7065b13254..84f1b94f9b 100644
--- a/tests/auto/qmenu/tst_qmenu.cpp
+++ b/tests/auto/qmenu/tst_qmenu.cpp
@@ -298,15 +298,17 @@ void tst_QMenu::mouseActivation()
#ifdef Q_OS_WINCE_WM
QSKIP("We have a separate mouseActivation test for Windows mobile.", SkipAll);
#endif
- QMenu menu;
+ QWidget topLevel;
+ QMenu menu(&topLevel);
+ topLevel.show();
menu.addAction("Menu Action");
menu.show();
- QTest::mouseClick(&menu, Qt::LeftButton, 0, QPoint(5, 5), 300);
+ QTest::mouseClick(&menu, Qt::LeftButton, 0, menu.rect().center(), 300);
QVERIFY(!menu.isVisible());
//context menus can allways be accessed with right click except on windows
menu.show();
- QTest::mouseClick(&menu, Qt::RightButton, 0, QPoint(5, 5), 300);
+ QTest::mouseClick(&menu, Qt::RightButton, 0, menu.rect().center(), 300);
QVERIFY(!menu.isVisible());
#ifdef Q_OS_WIN
@@ -466,9 +468,9 @@ void tst_QMenu::overrideMenuAction()
m->addAction(aQuit);
w.show();
+ QTest::qWaitForWindowShown(&w);
QApplication::setActiveWindow(&w);
w.setFocus();
- QTest::qWaitForWindowShown(&w);
QTRY_VERIFY(w.hasFocus());
//test of the action inside the menu
@@ -504,6 +506,7 @@ void tst_QMenu::statusTip()
w.addToolBar(&tb);
w.show();
+ QTest::qWaitForWindowShown(&w);
QRect rect1 = tb.actionGeometry(&a);
QToolButton *btn = qobject_cast<QToolButton*>(tb.childAt(rect1.center()));
@@ -589,6 +592,8 @@ void tst_QMenu::tearOff()
QVERIFY(menu->isTearOffEnabled());
widget.show();
+ QTest::qWaitForWindowShown(&widget);
+ widget.activateWindow();
menu->popup(QPoint(0,0));
QTest::qWait(50);
QVERIFY(!menu->isTearOffMenuVisible());
diff --git a/tests/auto/qmenubar/tst_qmenubar.cpp b/tests/auto/qmenubar/tst_qmenubar.cpp
index cc9fb0c41e..8dfb976943 100644
--- a/tests/auto/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/qmenubar/tst_qmenubar.cpp
@@ -338,6 +338,8 @@ void tst_QMenuBar::initTestCase_noQt3()
initSimpleMenubar_noQt3();
mw->show();
+ QTest::qWaitForWindowShown(mw);
+ mw->activateWindow();
menu1 = new QtTestSlot( mw );
menu2 = new QtTestSlot( mw );
@@ -1700,8 +1702,8 @@ void tst_QMenuBar::taskQTBUG11823_crashwithInvisibleActions()
QAction * a = menubar.addAction( "&a" );
menubar.show();
- QApplication::setActiveWindow(&menubar);
QTest::qWaitForWindowShown(&menubar);
+ QApplication::setActiveWindow(&menubar);
menubar.setActiveAction(m);
QCOMPARE(menubar.activeAction(), m);
QTest::keyClick(0, Qt::Key_Right);
diff --git a/tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp b/tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp
index 99a8913944..694d65de6c 100644
--- a/tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp
+++ b/tests/auto/qmouseevent_modal/tst_qmouseevent_modal.cpp
@@ -147,12 +147,14 @@ void tst_qmouseevent_modal::mousePressRelease()
QVERIFY( w->d->count() == 0 );
QTest::mousePress( w->pb, Qt::LeftButton );
+ QTest::qWait(200);
QVERIFY( !w->d->isVisible() );
QVERIFY( w->d->count() == 1 );
QVERIFY( !w->pb->isDown() );
QTest::mousePress( w->pb, Qt::LeftButton );
+ QTest::qWait(200);
QVERIFY( !w->d->isVisible() );
QVERIFY( w->d->count() == 2 );
@@ -161,12 +163,14 @@ void tst_qmouseevent_modal::mousePressRelease()
// With the current QWS mouse handling, the 3rd press would fail...
QTest::mousePress( w->pb, Qt::LeftButton );
+ QTest::qWait(200);
QVERIFY( !w->d->isVisible() );
QVERIFY( w->d->count() == 3 );
QVERIFY( !w->pb->isDown() );
QTest::mousePress( w->pb, Qt::LeftButton );
+ QTest::qWait(200);
QVERIFY( !w->d->isVisible() );
QVERIFY( w->d->count() == 4 );
diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
index 306b5f84b1..9cf61f94d6 100644
--- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp
@@ -75,7 +75,6 @@
#include "../network-settings.h"
-
Q_DECLARE_METATYPE(QNetworkReply*)
Q_DECLARE_METATYPE(QAuthenticator*)
Q_DECLARE_METATYPE(QNetworkProxy)
@@ -84,6 +83,8 @@ Q_DECLARE_METATYPE(QList<QNetworkProxy>)
Q_DECLARE_METATYPE(QNetworkReply::NetworkError)
Q_DECLARE_METATYPE(QBuffer*)
+const int SynchronousRequestAttribute = QNetworkRequest::DownloadBufferAttribute + 1;
+
class QNetworkReplyPtr: public QSharedPointer<QNetworkReply>
{
public:
@@ -108,6 +109,16 @@ class tst_QNetworkReply: public QObject
bool requiresAuthentication;
};
+ static bool seedCreated;
+ static QString createUniqueExtension() {
+ if (!seedCreated) {
+ qsrand(QTime(0,0,0).msecsTo(QTime::currentTime()) + QCoreApplication::applicationPid());
+ seedCreated = true; // not thread-safe, but who cares
+ }
+ QString s = QString("%1-%2-%3").arg(QTime(0,0,0).msecsTo(QTime::currentTime())).arg(QCoreApplication::applicationPid()).arg(qrand());
+ return s;
+ };
+
QEventLoop *loop;
enum RunSimpleRequestReturn { Timeout = 0, Success, Failure };
int returnCode;
@@ -173,8 +184,12 @@ private Q_SLOTS:
void putToFtp();
void putToHttp_data();
void putToHttp();
+ void putToHttpSynchronous_data();
+ void putToHttpSynchronous();
void postToHttp_data();
void postToHttp();
+ void postToHttpSynchronous_data();
+ void postToHttpSynchronous();
void deleteFromHttp_data();
void deleteFromHttp();
void putGetDeleteGetFromHttp_data();
@@ -193,10 +208,14 @@ private Q_SLOTS:
void ioGetFromFtpWithReuse();
void ioGetFromHttp();
+ void ioGetFromBuiltinHttp_data();
+ void ioGetFromBuiltinHttp();
void ioGetFromHttpWithReuseParallel();
void ioGetFromHttpWithReuseSequential();
void ioGetFromHttpWithAuth();
+ void ioGetFromHttpWithAuthSynchronous();
void ioGetFromHttpWithProxyAuth();
+ void ioGetFromHttpWithProxyAuthSynchronous();
void ioGetFromHttpWithSocksProxy();
#ifndef QT_NO_OPENSSL
void ioGetFromHttpsWithSslErrors();
@@ -231,6 +250,8 @@ private Q_SLOTS:
void ioPostToHttpFromFile();
void ioPostToHttpFromSocket_data();
void ioPostToHttpFromSocket();
+ void ioPostToHttpFromSocketSynchronous();
+ void ioPostToHttpFromSocketSynchronous_data();
void ioPostToHttpFromMiddleOfFileToEnd();
void ioPostToHttpFromMiddleOfFileFiveBytes();
void ioPostToHttpFromMiddleOfQBufferFiveBytes();
@@ -256,13 +277,19 @@ private Q_SLOTS:
void receiveCookiesFromHttp_data();
void receiveCookiesFromHttp();
+ void receiveCookiesFromHttpSynchronous_data();
+ void receiveCookiesFromHttpSynchronous();
void sendCookies_data();
void sendCookies();
+ void sendCookiesSynchronous_data();
+ void sendCookiesSynchronous();
void nestedEventLoops();
void httpProxyCommands_data();
void httpProxyCommands();
+ void httpProxyCommandsSynchronous_data();
+ void httpProxyCommandsSynchronous();
void proxyChange();
void authorizationError_data();
void authorizationError();
@@ -291,12 +318,28 @@ private Q_SLOTS:
void qtbug12908compressedHttpReply();
+ void getFromUnreachableIp();
+
+ void qtbug4121unknownAuthentication();
+
+ void qtbug13431replyThrottling();
+
+ void httpWithNoCredentialUsage();
+
+ void qtbug15311doubleContentLength();
+
+ void synchronousRequest_data();
+ void synchronousRequest();
+ void synchronousRequestSslFailure();
+
// NOTE: This test must be last!
void parentingRepliesToTheApp();
};
QT_BEGIN_NAMESPACE
+bool tst_QNetworkReply::seedCreated = false;
+
namespace QTest {
template<>
char *toString(const QNetworkReply::NetworkError& code)
@@ -341,6 +384,14 @@ QT_END_NAMESPACE
QFAIL(qPrintable(errorMsg)); \
} while (0);
+#ifndef QT_NO_OPENSSL
+static void setupSslServer(QSslSocket* serverSocket)
+{
+ serverSocket->setProtocol(QSsl::AnyProtocol);
+ serverSocket->setLocalCertificate(SRCDIR "/certs/server.pem");
+ serverSocket->setPrivateKey(SRCDIR "/certs/server.key");
+}
+#endif
// Does not work for POST/PUT!
class MiniHttpServer: public QTcpServer
@@ -351,24 +402,66 @@ public:
QByteArray dataToTransmit;
QByteArray receivedData;
bool doClose;
+ bool doSsl;
bool multiple;
int totalConnections;
- MiniHttpServer(const QByteArray &data) : client(0), dataToTransmit(data), doClose(true), multiple(false), totalConnections(0)
+ MiniHttpServer(const QByteArray &data, bool ssl = false)
+ : client(0), dataToTransmit(data), doClose(true), doSsl(ssl),
+ multiple(false), totalConnections(0)
{
listen();
- connect(this, SIGNAL(newConnection()), this, SLOT(doAccept()));
}
-public slots:
- void doAccept()
+protected:
+ void incomingConnection(int socketDescriptor)
{
- client = nextPendingConnection();
+ //qDebug() << "incomingConnection" << socketDescriptor;
+ if (!doSsl) {
+ client = new QTcpSocket;
+ client->setSocketDescriptor(socketDescriptor);
+ connectSocketSignals();
+ } else {
+#ifndef QT_NO_OPENSSL
+ QSslSocket *serverSocket = new QSslSocket;
+ serverSocket->setParent(this);
+ if (serverSocket->setSocketDescriptor(socketDescriptor)) {
+ connect(serverSocket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(slotSslErrors(QList<QSslError>)));
+ setupSslServer(serverSocket);
+ serverSocket->startServerEncryption();
+ client = serverSocket;
+ connectSocketSignals();
+ } else {
+ delete serverSocket;
+ return;
+ }
+#endif
+ }
client->setParent(this);
++totalConnections;
+ }
+private:
+ void connectSocketSignals()
+ {
+ //qDebug() << "connectSocketSignals" << client;
connect(client, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
+ connect(client, SIGNAL(error(QAbstractSocket::SocketError)),
+ this, SLOT(slotError(QAbstractSocket::SocketError)));
+ }
+
+private slots:
+#ifndef QT_NO_OPENSSL
+ void slotSslErrors(const QList<QSslError>& errors)
+ {
+ qDebug() << "slotSslErrors" << client->errorString() << errors;
+ }
+#endif
+ void slotError(QAbstractSocket::SocketError err)
+ {
+ qDebug() << "slotError" << err << client->errorString();
}
+public slots:
void readyReadSlot()
{
receivedData += client->readAll();
@@ -380,6 +473,9 @@ public slots:
receivedData.remove(0, doubleEndlPos+4);
client->write(dataToTransmit);
+ while (client->bytesToWrite() > 0)
+ client->waitForBytesWritten();
+
if (doClose) {
client->disconnectFromHost();
disconnect(client, 0, this, 0);
@@ -552,17 +648,89 @@ public:
}
};
+// A blocking tcp server (must be used in a thread) which supports SSL.
+class BlockingTcpServer : public QTcpServer
+{
+ Q_OBJECT
+public:
+ BlockingTcpServer(bool ssl) : doSsl(ssl), sslSocket(0) {}
+
+ QTcpSocket* waitForNextConnectionSocket() {
+ waitForNewConnection(-1);
+ if (doSsl) {
+ Q_ASSERT(sslSocket);
+ return sslSocket;
+ } else {
+ //qDebug() << "returning nextPendingConnection";
+ return nextPendingConnection();
+ }
+ }
+ virtual void incomingConnection(int socketDescriptor)
+ {
+#ifndef QT_NO_OPENSSL
+ if (doSsl) {
+ QSslSocket *serverSocket = new QSslSocket;
+ serverSocket->setParent(this);
+ serverSocket->setSocketDescriptor(socketDescriptor);
+ connect(serverSocket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(slotSslErrors(QList<QSslError>)));
+ setupSslServer(serverSocket);
+ serverSocket->startServerEncryption();
+ sslSocket = serverSocket;
+ } else
+#endif
+ {
+ QTcpServer::incomingConnection(socketDescriptor);
+ }
+ }
+private slots:
+
+#ifndef QT_NO_OPENSSL
+ void slotSslErrors(const QList<QSslError>& errors)
+ {
+ qDebug() << "slotSslErrors" << sslSocket->errorString() << errors;
+ }
+#endif
+
+private:
+ const bool doSsl;
+ QTcpSocket* sslSocket;
+};
+
+// This server tries to send data as fast as possible (like most servers)
+// but it measures how fast it was able to send it, which shows at which
+// rate the reader is processing the data.
class FastSender: public QThread
{
Q_OBJECT
QSemaphore ready;
qint64 wantedSize;
int port;
+ enum Protocol { DebugPipe, ProvidedData };
+ const Protocol protocol;
+ const bool doSsl;
+ const bool fillKernelBuffer;
public:
int transferRate;
QWaitCondition cond;
+
+ QByteArray dataToTransmit;
+ int dataIndex;
+
+ // a server that sends debugpipe data
FastSender(qint64 size)
- : wantedSize(size), port(-1), transferRate(-1)
+ : wantedSize(size), port(-1), protocol(DebugPipe),
+ doSsl(false), fillKernelBuffer(true), transferRate(-1),
+ dataIndex(0)
+ {
+ start();
+ ready.acquire();
+ }
+
+ // a server that sends the data provided at construction time, useful for HTTP
+ FastSender(const QByteArray& data, bool https, bool fillBuffer)
+ : wantedSize(data.size()), port(-1), protocol(ProvidedData),
+ doSsl(https), fillKernelBuffer(fillBuffer), transferRate(-1),
+ dataToTransmit(data), dataIndex(0)
{
start();
ready.acquire();
@@ -570,90 +738,121 @@ public:
inline int serverPort() const { return port; }
+ int writeNextData(QTcpSocket* socket, qint32 size)
+ {
+ if (protocol == DebugPipe) {
+ QByteArray data;
+ QDataStream stream(&data, QIODevice::WriteOnly);
+ stream << QVariantMap() << QByteArray(size, 'a');
+ socket->write((char*)&size, sizeof size);
+ socket->write(data);
+ dataIndex += size;
+ return size;
+ } else {
+ const QByteArray data = dataToTransmit.mid(dataIndex, size);
+ socket->write(data);
+ dataIndex += data.size();
+ //qDebug() << "wrote" << dataIndex << "/" << dataToTransmit.size();
+ return data.size();
+ }
+ }
+ void writeLastData(QTcpSocket* socket)
+ {
+ if (protocol == DebugPipe) {
+ QByteArray data;
+ QDataStream stream(&data, QIODevice::WriteOnly);
+ stream << QVariantMap() << QByteArray();
+ const qint32 size = data.size();
+ socket->write((char*)&size, sizeof size);
+ socket->write(data);
+ }
+ }
+
protected:
void run()
{
- QTcpServer server;
+ BlockingTcpServer server(doSsl);
server.listen();
port = server.serverPort();
ready.release();
- server.waitForNewConnection(-1);
- QTcpSocket *client = server.nextPendingConnection();
+ QTcpSocket *client = server.waitForNextConnectionSocket();
// get the "request" packet
if (!client->waitForReadyRead(2000)) {
- qDebug() << client->error() << "waiting for \"request\" packet";
+ qDebug() << "FastSender:" << client->error() << "waiting for \"request\" packet";
return;
}
- client->readAll(); // we're not interested in the actual contents
+ client->readAll(); // we're not interested in the actual contents (e.g. HTTP request)
- enum { BlockSize = 256 };
- QByteArray data;
- {
- QDataStream stream(&data, QIODevice::WriteOnly);
- stream << QVariantMap() << QByteArray(BlockSize, 'a');
+ enum { BlockSize = 1024 };
+
+ if (fillKernelBuffer) {
+
+ // write a bunch of bytes to fill up the buffers
+ bool done = false;
+ do {
+ if (writeNextData(client, BlockSize) < BlockSize) {
+ qDebug() << "ERROR: FastSender: not enough data to write in order to fill buffers; or client is reading too fast";
+ return;
+ }
+ while (client->bytesToWrite() > 0) {
+ if (!client->waitForBytesWritten(0)) {
+ done = true;
+ break;
+ }
+ }
+ //qDebug() << "Filling kernel buffer: wrote" << dataIndex << "bytes";
+ } while (!done);
+
+ qDebug() << "FastSender: ok, kernel buffer is full after writing" << dataIndex << "bytes";
}
- qint32 size = data.size();
- // write a bunch of bytes to fill up the buffers
- do {
- client->write((char*)&size, sizeof size);
- client->write(data);
- while (client->bytesToWrite() > 0)
- if (!client->waitForBytesWritten(0))
- break;
- } while (client->bytesToWrite() == 0);
+ // Tell the client to start reading
+ emit dataReady();
// the kernel buffer is full
// clean up QAbstractSocket's residue:
- while (client->bytesToWrite() > 0)
+ while (client->bytesToWrite() > 0) {
+ qDebug() << "Still having" << client->bytesToWrite() << "bytes to write, doing that now";
if (!client->waitForBytesWritten(2000)) {
- qDebug() << client->error() << "cleaning up residue";
+ qDebug() << "ERROR: FastSender:" << client->error() << "cleaning up residue";
return;
}
+ }
- // now write in "blocking mode"
+ // now write in "blocking mode", this is where the rate measuring starts
QTime timer;
timer.start();
- qint64 totalBytes = 0;
- while (totalBytes < wantedSize) {
- int bytesToWrite = wantedSize - totalBytes;
+ //const qint64 writtenBefore = dataIndex;
+ //qint64 measuredTotalBytes = wantedSize - writtenBefore;
+ qint64 measuredSentBytes = 0;
+ while (dataIndex < wantedSize) {
+ const int remainingBytes = wantedSize - measuredSentBytes;
+ const int bytesToWrite = qMin(remainingBytes, static_cast<int>(BlockSize));
Q_ASSERT(bytesToWrite);
- if (bytesToWrite > BlockSize) {
- bytesToWrite = BlockSize;
- } else {
- QDataStream stream(&data, QIODevice::WriteOnly);
- stream << QVariantMap() << QByteArray(bytesToWrite, 'b');
- }
- size = data.size();
- client->write((char*)&size, sizeof size);
- client->write(data);
- totalBytes += bytesToWrite;
+ measuredSentBytes += writeNextData(client, bytesToWrite);
- while (client->bytesToWrite() > 0)
+ while (client->bytesToWrite() > 0) {
if (!client->waitForBytesWritten(2000)) {
- qDebug() << client->error() << "blocking write";
+ qDebug() << "ERROR: FastSender:" << client->error() << "during blocking write";
return;
}
-// qDebug() << bytesToWrite << "bytes written now;"
-// << totalBytes << "total ("
-// << totalBytes*100/wantedSize << "% complete);"
-// << timer.elapsed() << "ms elapsed";
+ }
+ /*qDebug() << "FastSender:" << bytesToWrite << "bytes written now;"
+ << measuredSentBytes << "measured bytes" << measuredSentBytes + writtenBefore << "total ("
+ << measuredSentBytes*100/measuredTotalBytes << "% complete);"
+ << timer.elapsed() << "ms elapsed";*/
}
- transferRate = totalBytes * 1000 / timer.elapsed();
- qDebug() << "flushed" << totalBytes << "bytes in" << timer.elapsed() << "ms: rate =" << transferRate;
+ transferRate = measuredSentBytes * 1000 / timer.elapsed();
+ qDebug() << "FastSender: flushed" << measuredSentBytes << "bytes in" << timer.elapsed() << "ms: rate =" << transferRate << "B/s";
- // write a "close connection" packet
- {
- QDataStream stream(&data, QIODevice::WriteOnly);
- stream << QVariantMap() << QByteArray();
- }
- size = data.size();
- client->write((char*)&size, sizeof size);
- client->write(data);
+ // write a "close connection" packet, if the protocol needs it
+ writeLastData(client);
}
+signals:
+ void dataReady();
};
class RateControlledReader: public QObject
@@ -662,54 +861,100 @@ class RateControlledReader: public QObject
QIODevice *device;
int bytesToRead;
int interval;
+ int readBufferSize;
public:
+ QByteArray data;
qint64 totalBytesRead;
- RateControlledReader(QIODevice *dev, int kbPerSec)
- : device(dev), totalBytesRead(0)
+ RateControlledReader(QObject& senderObj, QIODevice *dev, int kbPerSec, int maxBufferSize = 0)
+ : device(dev), readBufferSize(maxBufferSize), totalBytesRead(0)
{
// determine how often we have to wake up
- bytesToRead = kbPerSec * 1024 / 20;
- interval = 50;
+ int timesPerSecond;
+ if (readBufferSize == 0) {
+ // The requirement is simply "N KB per seconds"
+ timesPerSecond = 20;
+ bytesToRead = kbPerSec * 1024 / timesPerSecond;
+ } else {
+ // The requirement also includes "<readBufferSize> bytes at a time"
+ bytesToRead = readBufferSize;
+ timesPerSecond = kbPerSec * 1024 / readBufferSize;
+ }
+ interval = 1000 / timesPerSecond; // in ms
qDebug() << "RateControlledReader: going to read" << bytesToRead
<< "bytes every" << interval << "ms";
- qDebug() << "actual rate will be"
+ qDebug() << "actual read rate will be"
<< (bytesToRead * 1000 / interval) << "bytes/sec (wanted"
<< kbPerSec * 1024 << "bytes/sec)";
+
+ // Wait for data to be readyRead
+ bool ok = connect(&senderObj, SIGNAL(dataReady()), this, SLOT(slotDataReady()));
+ Q_ASSERT(ok);
+ }
+
+ void wrapUp()
+ {
+ QByteArray someData = device->read(device->bytesAvailable());
+ data += someData;
+ totalBytesRead += someData.size();
+ qDebug() << "wrapUp: found" << someData.size() << "bytes left. progress" << data.size();
+ //qDebug() << "wrapUp: now bytesAvailable=" << device->bytesAvailable();
+ }
+
+private slots:
+ void slotDataReady()
+ {
+ //qDebug() << "RateControlledReader: ready to go";
startTimer(interval);
}
protected:
void timerEvent(QTimerEvent *)
{
+ //qDebug() << "RateControlledReader: timerEvent bytesAvailable=" << device->bytesAvailable();
+ if (readBufferSize > 0) {
+ // This asserts passes all the time, except in the final flush.
+ //Q_ASSERT(device->bytesAvailable() <= readBufferSize);
+ }
+
qint64 bytesRead = 0;
QTime stopWatch;
stopWatch.start();
do {
- if (device->bytesAvailable() == 0)
- if (stopWatch.elapsed() > 10 || !device->waitForReadyRead(5))
+ if (device->bytesAvailable() == 0) {
+ if (stopWatch.elapsed() > 20) {
+ qDebug() << "RateControlledReader: Not enough data available for reading, waited too much, timing out";
+ break;
+ }
+ if (!device->waitForReadyRead(5)) {
+ qDebug() << "RateControlledReader: Not enough data available for reading, even after waiting 5ms, bailing out";
break;
- QByteArray data = device->read(bytesToRead - bytesRead);
- bytesRead += data.size();
- } while (bytesRead < bytesToRead);// && stopWatch.elapsed() < interval/4);
+ }
+ }
+ QByteArray someData = device->read(bytesToRead - bytesRead);
+ data += someData;
+ bytesRead += someData.size();
+ //qDebug() << "RateControlledReader: successfully read" << someData.size() << "progress:" << data.size();
+ } while (bytesRead < bytesToRead);
totalBytesRead += bytesRead;
if (bytesRead < bytesToRead)
- qWarning() << bytesToRead - bytesRead << "bytes not read";
+ qWarning() << "RateControlledReader: WARNING:" << bytesToRead - bytesRead << "bytes not read";
}
};
tst_QNetworkReply::tst_QNetworkReply()
{
+ qRegisterMetaType<QNetworkReply *>(); // for QSignalSpy
+ qRegisterMetaType<QAuthenticator *>();
+ qRegisterMetaType<QNetworkProxy>();
+ qRegisterMetaType<QList<QSslError> >();
+
Q_SET_DEFAULT_IAP
testFileName = QDir::currentPath() + "/testfile";
-#ifndef Q_OS_WINCE
- uniqueExtension = QString("%1%2%3").arg((qulonglong)this).arg(rand()).arg((qulonglong)time(0));
-#else
- uniqueExtension = QString("%1%2").arg((qulonglong)this).arg(rand());
-#endif
+ uniqueExtension = createUniqueExtension();
cookieJar = new MyCookieJar;
manager.setCookieJar(cookieJar);
@@ -796,15 +1041,25 @@ QString tst_QNetworkReply::runSimpleRequest(QNetworkAccessManager::Operation op,
Q_ASSERT_X(false, "tst_QNetworkReply", "Invalid/unknown operation requested");
}
reply->setParent(this);
- connect(reply, SIGNAL(finished()), SLOT(finished()));
- connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError()));
returnCode = Timeout;
- loop = new QEventLoop;
- QTimer::singleShot(20000, loop, SLOT(quit()));
- int code = returnCode == Timeout ? loop->exec() : returnCode;
- delete loop;
- loop = 0;
+ int code = Success;
+
+ if (request.attribute(static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute)).toBool()) {
+ if (reply->isFinished())
+ code = reply->error() != QNetworkReply::NoError ? Failure : Success;
+ else
+ code = Failure;
+ } else {
+ connect(reply, SIGNAL(finished()), SLOT(finished()));
+ connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError()));
+
+ loop = new QEventLoop;
+ QTimer::singleShot(20000, loop, SLOT(quit()));
+ code = returnCode == Timeout ? loop->exec() : returnCode;
+ delete loop;
+ loop = 0;
+ }
switch (code) {
case Failure:
@@ -1279,6 +1534,9 @@ void tst_QNetworkReply::putToFile_data()
data = QByteArray(128*1024+1, '\177');
QTest::newRow("128k+1") << data << md5sum(data);
+
+ data = QByteArray(2*1024*1024+1, '\177');
+ QTest::newRow("2MB+1") << data << md5sum(data);
}
void tst_QNetworkReply::putToFile()
@@ -1385,6 +1643,47 @@ void tst_QNetworkReply::putToHttp()
QCOMPARE(uploadedData, data);
}
+void tst_QNetworkReply::putToHttpSynchronous_data()
+{
+ uniqueExtension = createUniqueExtension();
+ putToFile_data();
+}
+
+void tst_QNetworkReply::putToHttpSynchronous()
+{
+ QUrl url("http://" + QtNetworkSettings::serverName());
+ url.setPath(QString("/dav/qnetworkaccess-putToHttp-%1-%2")
+ .arg(QTest::currentDataTag())
+ .arg(uniqueExtension));
+
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply;
+
+ QFETCH(QByteArray, data);
+
+ request.setAttribute(
+ static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute),
+ true);
+
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 201); // 201 Created
+
+ // download the file again from HTTP to make sure it was uploaded
+ // correctly. HTTP/0.9 is enough
+ QTcpSocket socket;
+ socket.connectToHost(QtNetworkSettings::serverName(), 80);
+ socket.write("GET " + url.toEncoded(QUrl::RemoveScheme | QUrl::RemoveAuthority) + "\r\n");
+ if (!socket.waitForDisconnected(10000))
+ QFAIL("Network timeout");
+
+ QByteArray uploadedData = socket.readAll();
+ QCOMPARE(uploadedData, data);
+}
+
void tst_QNetworkReply::postToHttp_data()
{
putToFile_data();
@@ -1411,6 +1710,37 @@ void tst_QNetworkReply::postToHttp()
QCOMPARE(uploadedData, md5sum.toHex());
}
+void tst_QNetworkReply::postToHttpSynchronous_data()
+{
+ putToFile_data();
+}
+
+void tst_QNetworkReply::postToHttpSynchronous()
+{
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi");
+
+ QNetworkRequest request(url);
+
+ request.setAttribute(
+ static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute),
+ true);
+
+ QNetworkReplyPtr reply;
+
+ QFETCH(QByteArray, data);
+
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
+
+ QFETCH(QByteArray, md5sum);
+ QByteArray uploadedData = reply->readAll().trimmed();
+ QCOMPARE(uploadedData, md5sum.toHex());
+}
+
void tst_QNetworkReply::deleteFromHttp_data()
{
QTest::addColumn<QUrl>("url");
@@ -1835,9 +2165,6 @@ void tst_QNetworkReply::ioGetFromHttpWithReuseSequential()
void tst_QNetworkReply::ioGetFromHttpWithAuth()
{
- qRegisterMetaType<QNetworkReply *>(); // for QSignalSpy
- qRegisterMetaType<QAuthenticator *>();
-
// This test sends three requests
// The first two in parallel
// The third after the first two finished
@@ -1896,6 +2223,44 @@ void tst_QNetworkReply::ioGetFromHttpWithAuth()
QCOMPARE(authspy.count(), 0);
}
+
+ // now check with synchronous calls:
+ reference.seek(0);
+ {
+ request.setAttribute(
+ static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute),
+ true);
+
+ QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QNetworkReplyPtr replySync = manager.get(request);
+ QVERIFY(replySync->isFinished()); // synchronous
+ QCOMPARE(authspy.count(), 0);
+
+ // we cannot use a data reader here, since that connects to the readyRead signal,
+ // just use readAll()
+
+ // the only thing we check here is that the auth cache was used when using synchronous requests
+ QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QCOMPARE(replySync->readAll(), reference.readAll());
+ }
+}
+
+void tst_QNetworkReply::ioGetFromHttpWithAuthSynchronous()
+{
+ // verify that we do not enter an endless loop with synchronous calls and wrong credentials
+ // the case when we succed with the login is tested in ioGetFromHttpWithAuth()
+
+ QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfcs-auth/rfc3252.txt"));
+ request.setAttribute(
+ static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute),
+ true);
+
+ QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QNetworkReplyPtr replySync = manager.get(request);
+ QVERIFY(replySync->isFinished()); // synchronous
+ QCOMPARE(replySync->error(), QNetworkReply::AuthenticationRequiredError);
+ QCOMPARE(authspy.count(), 0);
+ QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 401);
}
void tst_QNetworkReply::ioGetFromHttpWithProxyAuth()
@@ -1967,6 +2332,47 @@ void tst_QNetworkReply::ioGetFromHttpWithProxyAuth()
QCOMPARE(authspy.count(), 0);
}
+
+ // now check with synchronous calls:
+ reference.seek(0);
+ {
+ request.setAttribute(
+ static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute),
+ true);
+
+ QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ QNetworkReplyPtr replySync = manager.get(request);
+ QVERIFY(replySync->isFinished()); // synchronous
+ QCOMPARE(authspy.count(), 0);
+
+ // we cannot use a data reader here, since that connects to the readyRead signal,
+ // just use readAll()
+
+ // the only thing we check here is that the proxy auth cache was used when using synchronous requests
+ QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+ QCOMPARE(replySync->readAll(), reference.readAll());
+ }
+}
+
+void tst_QNetworkReply::ioGetFromHttpWithProxyAuthSynchronous()
+{
+ // verify that we do not enter an endless loop with synchronous calls and wrong credentials
+ // the case when we succed with the login is tested in ioGetFromHttpWithAuth()
+
+ QNetworkProxy proxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129);
+ QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"));
+ manager.setProxy(proxy);
+ request.setAttribute(
+ static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute),
+ true);
+
+ QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ QNetworkReplyPtr replySync = manager.get(request);
+ manager.setProxy(QNetworkProxy()); // reset
+ QVERIFY(replySync->isFinished()); // synchronous
+ QCOMPARE(replySync->error(), QNetworkReply::ProxyAuthenticationRequiredError);
+ QCOMPARE(authspy.count(), 0);
+ QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 407);
}
void tst_QNetworkReply::ioGetFromHttpWithSocksProxy()
@@ -3025,7 +3431,67 @@ void tst_QNetworkReply::ioPostToHttpFromSocket()
QTEST(authenticationRequiredSpy.count(), "authenticationRequiredCount");
QTEST(proxyAuthenticationRequiredSpy.count(), "proxyAuthenticationRequiredCount");
- }
+}
+
+void tst_QNetworkReply::ioPostToHttpFromSocketSynchronous_data()
+{
+ QTest::addColumn<QByteArray>("data");
+ QTest::addColumn<QByteArray>("md5sum");
+
+ QByteArray data;
+ data = "";
+ QTest::newRow("empty") << data << md5sum(data);
+
+ data = "This is a normal message.";
+ QTest::newRow("generic") << data << md5sum(data);
+
+ data = "This is a message to show that Qt rocks!\r\n\n";
+ QTest::newRow("small") << data << md5sum(data);
+
+ data = QByteArray("abcd\0\1\2\abcd",12);
+ QTest::newRow("with-nul") << data << md5sum(data);
+
+ data = QByteArray(4097, '\4');
+ QTest::newRow("4k+1") << data << md5sum(data);
+
+ data = QByteArray(128*1024+1, '\177');
+ QTest::newRow("128k+1") << data << md5sum(data);
+
+ data = QByteArray(2*1024*1024+1, '\177');
+ QTest::newRow("2MB+1") << data << md5sum(data);
+}
+
+void tst_QNetworkReply::ioPostToHttpFromSocketSynchronous()
+{
+ QFETCH(QByteArray, data);
+
+ SocketPair socketpair;
+ QVERIFY(socketpair.create());
+ QVERIFY(socketpair.endPoints[0] && socketpair.endPoints[1]);
+ socketpair.endPoints[0]->write(data);
+ socketpair.endPoints[0]->waitForBytesWritten(5000);
+ // ### for 4.8: make the socket pair unbuffered, to not read everything in one go in QNetworkReplyImplPrivate::setup()
+ QTestEventLoop::instance().enterLoop(3);
+
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi");
+ QNetworkRequest request(url);
+ request.setAttribute(
+ static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute),
+ true);
+
+ QNetworkReplyPtr reply = manager.post(request, socketpair.endPoints[1]);
+ QVERIFY(reply->isFinished());
+ socketpair.endPoints[0]->close();
+
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ // verify that the HTTP status code is 200 Ok
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+
+ QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex());
+}
// this tests checks if rewinding the POST-data to some place in the middle
// worked.
@@ -3155,8 +3621,8 @@ public:
connect(serverSocket, SIGNAL(encrypted()), this, SLOT(encryptedSlot()));
serverSocket->setProtocol(QSsl::AnyProtocol);
connect(serverSocket, SIGNAL(sslErrors(const QList<QSslError>&)), serverSocket, SLOT(ignoreSslErrors()));
- serverSocket->setLocalCertificate (SRCDIR "/certs/server.pem");
- serverSocket->setPrivateKey (SRCDIR "/certs/server.key");
+ serverSocket->setLocalCertificate(SRCDIR "/certs/server.pem");
+ serverSocket->setPrivateKey(SRCDIR "/certs/server.key");
serverSocket->startServerEncryption();
} else {
delete serverSocket;
@@ -3246,6 +3712,93 @@ void tst_QNetworkReply::ioPostToHttpsUploadProgress()
}
#endif
+void tst_QNetworkReply::ioGetFromBuiltinHttp_data()
+{
+ QTest::addColumn<bool>("https");
+ QTest::addColumn<int>("bufferSize");
+ QTest::newRow("http+unlimited") << false << 0;
+ QTest::newRow("http+limited") << false << 4096;
+#ifndef QT_NO_OPENSSL
+ QTest::newRow("https+unlimited") << true << 0;
+ QTest::newRow("https+limited") << true << 4096;
+#endif
+}
+
+void tst_QNetworkReply::ioGetFromBuiltinHttp()
+{
+ QFETCH(bool, https);
+ QFETCH(int, bufferSize);
+
+ QByteArray testData;
+ // Make the data big enough so that it can fill the kernel buffer
+ // (which seems to hold 202 KB here)
+ const int wantedSize = 1200 * 1000;
+ testData.reserve(wantedSize);
+ // And in the case of SSL, the compression can fool us and let the
+ // server send the data much faster than expected.
+ // So better provide random data that cannot be compressed.
+ for (int i = 0; i < wantedSize; ++i)
+ testData += (char)qrand();
+
+ QByteArray httpResponse = QByteArray("HTTP/1.0 200 OK\r\nContent-Length: ");
+ httpResponse += QByteArray::number(testData.size());
+ httpResponse += "\r\n\r\n";
+ httpResponse += testData;
+
+ qDebug() << "Server will send" << (httpResponse.size()-testData.size()) << "bytes of header and"
+ << testData.size() << "bytes of data";
+
+ const bool fillKernelBuffer = bufferSize > 0;
+ FastSender server(httpResponse, https, fillKernelBuffer);
+
+ QUrl url(QString("%1://127.0.0.1:%2/qtest/rfc3252.txt")
+ .arg(https?"https":"http")
+ .arg(server.serverPort()));
+ QNetworkRequest request(url);
+ QNetworkReplyPtr reply = manager.get(request);
+ reply->setReadBufferSize(bufferSize);
+ reply->ignoreSslErrors();
+ const int rate = 200; // in kB per sec
+ RateControlledReader reader(server, reply, rate, bufferSize);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTime loopTime;
+ loopTime.start();
+ QTestEventLoop::instance().enterLoop(11);
+ const int elapsedTime = loopTime.elapsed();
+ server.wait();
+ reader.wrapUp();
+
+ qDebug() << "send rate:" << server.transferRate << "B/s";
+ qDebug() << "receive rate:" << reader.totalBytesRead * 1000 / elapsedTime
+ << "(it received" << reader.totalBytesRead << "bytes in" << elapsedTime << "ms)";
+
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(reply->url(), request.url());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), (qint64)testData.size());
+ if (reader.data.size() < testData.size()) { // oops?
+ QCOMPARE(reader.data, testData.mid(0, reader.data.size()));
+ qDebug() << "The data is incomplete, the last" << testData.size() - reader.data.size() << "bytes are missing";
+ }
+ QCOMPARE(reader.data.size(), testData.size());
+ QCOMPARE(reader.data, testData);
+
+ // OK we got the file alright, but did setReadBufferSize work?
+ QVERIFY(server.transferRate != -1);
+ if (bufferSize > 0) {
+ const int allowedDeviation = 16; // TODO find out why the send rate is 13% faster currently
+ const int minRate = rate * 1024 * (100-allowedDeviation) / 100;
+ const int maxRate = rate * 1024 * (100+allowedDeviation) / 100;
+ qDebug() << minRate << "<="<< server.transferRate << "<=" << maxRate << "?";
+ QVERIFY(server.transferRate >= minRate);
+ QVERIFY(server.transferRate <= maxRate);
+ }
+}
+
void tst_QNetworkReply::ioPostToHttpUploadProgress()
{
QFile sourceFile(SRCDIR "/bigfile");
@@ -3430,8 +3983,10 @@ void tst_QNetworkReply::rateControl()
QNetworkReplyPtr reply = manager.get(request);
reply->setReadBufferSize(32768);
connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
+ QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
- RateControlledReader reader(reply, rate);
+ RateControlledReader reader(sender, reply, rate, 20);
// this test is designed to run for 25 seconds at most
QTime loopTime;
@@ -3439,6 +3994,10 @@ void tst_QNetworkReply::rateControl()
QTestEventLoop::instance().enterLoop(40);
int elapsedTime = loopTime.elapsed();
+ if (!errorSpy.isEmpty()) {
+ qDebug() << "ERROR!" << errorSpy[0][0] << reply->errorString();
+ }
+
qDebug() << "tst_QNetworkReply::rateControl" << "send rate:" << sender.transferRate;
qDebug() << "tst_QNetworkReply::rateControl" << "receive rate:" << reader.totalBytesRead * 1000 / elapsedTime
<< "(it received" << reader.totalBytesRead << "bytes in" << elapsedTime << "ms)";
@@ -3675,6 +4234,38 @@ void tst_QNetworkReply::receiveCookiesFromHttp()
QTEST(cookieJar->allCookies(), "expectedCookiesInJar");
}
+void tst_QNetworkReply::receiveCookiesFromHttpSynchronous_data()
+{
+ tst_QNetworkReply::receiveCookiesFromHttp_data();
+}
+
+void tst_QNetworkReply::receiveCookiesFromHttpSynchronous()
+{
+ QFETCH(QString, cookieString);
+
+ QByteArray data = cookieString.toLatin1() + '\n';
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/set-cookie.cgi");
+
+ QNetworkRequest request(url);
+
+ request.setAttribute(
+ static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute),
+ true);
+
+ QNetworkReplyPtr reply;
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
+
+ QList<QNetworkCookie> setCookies =
+ qvariant_cast<QList<QNetworkCookie> >(reply->header(QNetworkRequest::SetCookieHeader));
+ QTEST(setCookies, "expectedCookiesFromHttp");
+ QTEST(cookieJar->allCookies(), "expectedCookiesInJar");
+}
+
void tst_QNetworkReply::sendCookies_data()
{
QTest::addColumn<QList<QNetworkCookie> >("cookiesToSet");
@@ -3735,6 +4326,35 @@ void tst_QNetworkReply::sendCookies()
QCOMPARE(QString::fromLatin1(reply->readAll()).trimmed(), expectedCookieString);
}
+void tst_QNetworkReply::sendCookiesSynchronous_data()
+{
+ tst_QNetworkReply::sendCookies_data();
+}
+
+void tst_QNetworkReply::sendCookiesSynchronous()
+{
+ QFETCH(QString, expectedCookieString);
+ QFETCH(QList<QNetworkCookie>, cookiesToSet);
+ cookieJar->setAllCookies(cookiesToSet);
+
+ QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/get-cookie.cgi");
+ QNetworkRequest request(url);
+
+ request.setAttribute(
+ static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute),
+ true);
+
+ QNetworkReplyPtr reply;
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply));
+
+ QCOMPARE(reply->url(), url);
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+
+ QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok
+
+ QCOMPARE(QString::fromLatin1(reply->readAll()).trimmed(), expectedCookieString);
+}
+
void tst_QNetworkReply::nestedEventLoops_slot()
{
QEventLoop subloop;
@@ -3824,8 +4444,67 @@ void tst_QNetworkReply::httpProxyCommands()
QCOMPARE(receivedHeader, expectedCommand);
}
+class ProxyChangeHelper : public QObject {
+ Q_OBJECT
+public:
+ ProxyChangeHelper() : QObject(), signalCount(0) {};
+public slots:
+ void finishedSlot() {
+ signalCount++;
+ if (signalCount == 2)
+ QMetaObject::invokeMethod(&QTestEventLoop::instance(), "exitLoop", Qt::QueuedConnection);
+ }
+private:
+ int signalCount;
+};
+
+void tst_QNetworkReply::httpProxyCommandsSynchronous_data()
+{
+ httpProxyCommands_data();
+}
+
+void tst_QNetworkReply::httpProxyCommandsSynchronous()
+{
+ QFETCH(QUrl, url);
+ QFETCH(QByteArray, responseToSend);
+ QFETCH(QString, expectedCommand);
+
+ // when using synchronous commands, we need a different event loop for
+ // the server thread, because the client is never returning to the
+ // event loop
+ MiniHttpServer proxyServer(responseToSend);
+ QThread serverThread;
+ proxyServer.moveToThread(&serverThread);
+ serverThread.start();
+ QNetworkProxy proxy(QNetworkProxy::HttpProxy, "127.0.0.1", proxyServer.serverPort());
+
+ manager.setProxy(proxy);
+ QNetworkRequest request(url);
+
+ // send synchronous request
+ request.setAttribute(
+ static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute),
+ true);
+
+ QNetworkReplyPtr reply = manager.get(request);
+ QVERIFY(reply->isFinished()); // synchronous
+ manager.setProxy(QNetworkProxy());
+ serverThread.quit();
+ serverThread.wait(3000);
+
+ //qDebug() << reply->error() << reply->errorString();
+
+ // we don't really care if the request succeeded
+ // especially since it won't succeed in the HTTPS case
+ // so just check that the command was correct
+
+ QString receivedHeader = proxyServer.receivedData.left(expectedCommand.length());
+ QCOMPARE(receivedHeader, expectedCommand);
+}
+
void tst_QNetworkReply::proxyChange()
{
+ ProxyChangeHelper helper;
MiniHttpServer proxyServer(
"HTTP/1.0 200 OK\r\nProxy-Connection: keep-alive\r\n"
"Content-Length: 1\r\n\r\n1");
@@ -3835,30 +4514,15 @@ void tst_QNetworkReply::proxyChange()
manager.setProxy(dummyProxy);
QNetworkReplyPtr reply1 = manager.get(req);
- QSignalSpy finishedspy(reply1, SIGNAL(finished()));
+ connect(reply1, SIGNAL(finished()), &helper, SLOT(finishedSlot()));
manager.setProxy(QNetworkProxy());
QNetworkReplyPtr reply2 = manager.get(req);
+ connect(reply2, SIGNAL(finished()), &helper, SLOT(finishedSlot()));
- connect(reply2, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-#ifdef Q_OS_SYMBIAN
- // we need more time as:
- // 1. running from the emulator
- // 2. not perfect POSIX implementation
- // 3. embedded device
QTestEventLoop::instance().enterLoop(20);
-#else
- QTestEventLoop::instance().enterLoop(10);
-#endif
QVERIFY(!QTestEventLoop::instance().timeout());
- if (finishedspy.count() == 0) {
- // wait for the second reply as well
- connect(reply1, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QTestEventLoop::instance().enterLoop(1);
- QVERIFY(!QTestEventLoop::instance().timeout());
- }
-
// verify that the replies succeeded
QCOMPARE(reply1->error(), QNetworkReply::NoError);
QCOMPARE(reply1->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200);
@@ -4301,6 +4965,261 @@ void tst_QNetworkReply::qtbug12908compressedHttpReply()
QCOMPARE(reply->error(), QNetworkReply::NoError);
}
+// TODO add similar test for FTP
+void tst_QNetworkReply::getFromUnreachableIp()
+{
+ QNetworkAccessManager manager;
+
+ QNetworkRequest request(QUrl("http://255.255.255.255/42/23/narf/narf/narf"));
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QVERIFY(reply->error() != QNetworkReply::NoError);
+}
+
+void tst_QNetworkReply::qtbug4121unknownAuthentication()
+{
+ MiniHttpServer server(QByteArray("HTTP/1.1 401 bla\r\nWWW-Authenticate: crap\r\nContent-Length: 0\r\n\r\n"));
+ server.doClose = false;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ QNetworkAccessManager manager;
+ QNetworkReplyPtr reply = manager.get(request);
+
+ qRegisterMetaType<QNetworkReply*>("QNetworkReply*");
+ qRegisterMetaType<QAuthenticator*>("QAuthenticator*");
+ QSignalSpy authSpy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QSignalSpy finishedSpy(&manager, SIGNAL(finished(QNetworkReply*)));
+ qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
+ QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(authSpy.count(), 0);
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(errorSpy.count(), 1);
+
+ QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError);
+}
+
+class QtBug13431Helper : public QObject {
+ Q_OBJECT
+public:
+ QNetworkReply* m_reply;
+ QTimer m_dlTimer;
+public slots:
+ void replyFinished(QNetworkReply*) {
+ QTestEventLoop::instance().exitLoop();
+ }
+
+ void onReadAndReschedule() {
+ const qint64 bytesReceived = m_reply->bytesAvailable();
+ if (bytesReceived) {
+ QByteArray data = m_reply->read(bytesReceived);
+ // reschedule read
+ const int millisecDelay = static_cast<int>(bytesReceived * 1000 / m_reply->readBufferSize());
+ m_dlTimer.start(millisecDelay);
+ }
+ else {
+ // reschedule read
+ m_dlTimer.start(200);
+ }
+ }
+};
+
+void tst_QNetworkReply::qtbug13431replyThrottling()
+{
+ QtBug13431Helper helper;
+
+ QNetworkAccessManager nam;
+ connect(&nam, SIGNAL(finished(QNetworkReply*)), &helper, SLOT(replyFinished(QNetworkReply*)));
+
+ // Download a bigger file
+ QNetworkRequest netRequest(QUrl("http://qt-test-server/qtest/bigfile"));
+ helper.m_reply = nam.get(netRequest);
+ // Set the throttle
+ helper.m_reply->setReadBufferSize(36000);
+
+ // Schedule a timer that tries to read
+
+ connect(&helper.m_dlTimer, SIGNAL(timeout()), &helper, SLOT(onReadAndReschedule()));
+ helper.m_dlTimer.setSingleShot(true);
+ helper.m_dlTimer.start(0);
+
+ QTestEventLoop::instance().enterLoop(30);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(helper.m_reply->isFinished());
+ QCOMPARE(helper.m_reply->error(), QNetworkReply::NoError);
+}
+
+void tst_QNetworkReply::httpWithNoCredentialUsage()
+{
+ QNetworkRequest request(QUrl("http://httptest:httptest@" + QtNetworkSettings::serverName() + "/qtest/protected/cgi-bin/md5sum.cgi"));
+ // Do not use credentials
+ request.setAttribute(QNetworkRequest::AuthenticationReuseAttribute, QNetworkRequest::Manual);
+ QNetworkAccessManager manager;
+ QNetworkReplyPtr reply = manager.get(request);
+
+ qRegisterMetaType<QNetworkReply*>("QNetworkReply*");
+ qRegisterMetaType<QAuthenticator*>("QAuthenticator*");
+ QSignalSpy authSpy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)));
+ QSignalSpy finishedSpy(&manager, SIGNAL(finished(QNetworkReply*)));
+ qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
+ QSignalSpy errorSpy(reply, SIGNAL(error(QNetworkReply::NetworkError)));
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ // We check if authenticationRequired was emitted, however we do not anything in it so it should be 401
+ QCOMPARE(authSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(errorSpy.count(), 1);
+
+ QCOMPARE(reply->error(), QNetworkReply::AuthenticationRequiredError);
+}
+
+void tst_QNetworkReply::qtbug15311doubleContentLength()
+{
+ QByteArray response("HTTP/1.0 200 OK\r\nContent-Length: 3\r\nServer: bogus\r\nContent-Length: 3\r\n\r\nABC");
+ MiniHttpServer server(response);
+ server.doClose = true;
+
+ QNetworkRequest request(QUrl("http://localhost:" + QString::number(server.serverPort())));
+ QNetworkReplyPtr reply = manager.get(request);
+
+ connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(reply->isFinished());
+ QCOMPARE(reply->error(), QNetworkReply::NoError);
+ QCOMPARE(reply->size(), qint64(3));
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(3));
+ QCOMPARE(reply->rawHeader("Content-length"), QByteArray("3, 3"));
+ QCOMPARE(reply->readAll(), QByteArray("ABC"));
+}
+
+void tst_QNetworkReply::synchronousRequest_data()
+{
+ QTest::addColumn<QUrl>("url");
+ QTest::addColumn<QString>("expected");
+ QTest::addColumn<bool>("checkContentLength");
+ QTest::addColumn<QString>("mimeType");
+
+ // ### cache, auth, proxies
+
+ QTest::newRow("http")
+ << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")
+ << QString("file:" SRCDIR "/rfc3252.txt")
+ << true
+ << QString("text/plain");
+
+ QTest::newRow("http-gzip")
+ << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/deflate/rfc3252.txt")
+ << QString("file:" SRCDIR "/rfc3252.txt")
+ << false // don't check content length, because it's gzip encoded
+ // ### we would need to enflate (un-deflate) the file content and compare the sizes
+ << QString("text/plain");
+
+#ifndef QT_NO_OPENSSL
+ QTest::newRow("https")
+ << QUrl("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")
+ << QString("file:" SRCDIR "/rfc3252.txt")
+ << true
+ << QString("text/plain");
+#endif
+
+ QTest::newRow("data")
+ << QUrl(QString::fromLatin1("data:text/plain,hello world"))
+ << QString("data:hello world")
+ << true // check content length
+ << QString("text/plain");
+
+ QTest::newRow("simple-file")
+ << QUrl(QString::fromLatin1("file:///" SRCDIR "/rfc3252.txt"))
+ << QString("file:" SRCDIR "/rfc3252.txt")
+ << true
+ << QString();
+}
+
+// FIXME add testcase for failing network etc
+void tst_QNetworkReply::synchronousRequest()
+{
+ QFETCH(QUrl, url);
+ QFETCH(QString, expected);
+ QFETCH(bool, checkContentLength);
+ QFETCH(QString, mimeType);
+
+ QNetworkRequest request(url);
+
+#ifndef QT_NO_OPENSSL
+ // workaround for HTTPS requests: add self-signed server cert to list of CA certs,
+ // since we cannot react to the sslErrors() signal
+ // to fix this properly we would need to have an ignoreSslErrors() method in the
+ // QNetworkRequest, see http://bugreports.qt.nokia.com/browse/QTBUG-14774
+ if (url.scheme() == "https") {
+ QSslConfiguration sslConf;
+ QList<QSslCertificate> certs = QSslCertificate::fromPath(SRCDIR "/certs/qt-test-server-cacert.pem");
+ sslConf.setCaCertificates(certs);
+ request.setSslConfiguration(sslConf);
+ }
+#endif
+
+ request.setAttribute(
+ static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute),
+ true);
+
+ QNetworkReplyPtr reply;
+ QSignalSpy finishedSpy(&manager, SIGNAL(finished(QNetworkReply*)));
+ QSignalSpy sslErrorsSpy(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)));
+ RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply, 0));
+ QVERIFY(reply->isFinished());
+ QCOMPARE(finishedSpy.count(), 0);
+ QCOMPARE(sslErrorsSpy.count(), 0);
+
+ QCOMPARE(reply->header(QNetworkRequest::ContentTypeHeader).toString(), mimeType);
+
+ QByteArray expectedContent;
+
+ if (expected.startsWith("file:")) {
+ QString path = expected.mid(5);
+ QFile file(path);
+ file.open(QIODevice::ReadOnly);
+ expectedContent = file.readAll();
+ } else if (expected.startsWith("data:")) {
+ expectedContent = expected.mid(5).toUtf8();
+ }
+
+ if (checkContentLength)
+ QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(expectedContent.size()));
+ QCOMPARE(reply->readAll(), expectedContent);
+
+ reply->deleteLater();
+}
+
+void tst_QNetworkReply::synchronousRequestSslFailure()
+{
+ // test that SSL won't be accepted with self-signed certificate,
+ // and that we do not emit the sslError signal (in the manager that is,
+ // in the reply we don't care)
+
+ QUrl url("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt");
+ QNetworkRequest request(url);
+ request.setAttribute(
+ static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute),
+ true);
+ QNetworkReplyPtr reply;
+ QSignalSpy sslErrorsSpy(&manager, SIGNAL(sslErrors(QNetworkReply *, const QList<QSslError> &)));
+ runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply, 0);
+ QVERIFY(reply->isFinished());
+ QCOMPARE(reply->error(), QNetworkReply::SslHandshakeFailedError);
+ QCOMPARE(sslErrorsSpy.count(), 0);
+}
// NOTE: This test must be last testcase in tst_qnetworkreply!
void tst_QNetworkReply::parentingRepliesToTheApp()
diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp
index 45f5c3e9b8..83ff9a9d93 100644
--- a/tests/auto/qpainter/tst_qpainter.cpp
+++ b/tests/auto/qpainter/tst_qpainter.cpp
@@ -49,6 +49,7 @@
#include <qfontmetrics.h>
#include <qbitmap.h>
#include <qimage.h>
+#include <qthread.h>
#include <limits.h>
#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN)
#include <qprinter.h>
@@ -254,6 +255,9 @@ private slots:
void drawPointScaled();
+ void QTBUG14614_gradientCacheRaceCondition();
+ void drawTextOpacity();
+
private:
void fillData();
void setPenColor(QPainter& p);
@@ -4543,6 +4547,60 @@ void tst_QPainter::drawPointScaled()
QCOMPARE(image.pixel(16, 16), 0xffff0000);
}
+class GradientProducer : public QThread
+{
+protected:
+ void run();
+};
+
+void GradientProducer::run()
+{
+ QImage image(1, 1, QImage::Format_RGB32);
+ QPainter p(&image);
+
+ for (int i = 0; i < 1000; ++i) {
+ QLinearGradient g;
+ g.setColorAt(0, QColor(i % 256, 0, 0));
+ g.setColorAt(1, Qt::white);
+
+ p.fillRect(image.rect(), g);
+ }
+}
+
+void tst_QPainter::QTBUG14614_gradientCacheRaceCondition()
+{
+ const int threadCount = 16;
+ GradientProducer producers[threadCount];
+ for (int i = 0; i < threadCount; ++i)
+ producers[i].start();
+ for (int i = 0; i < threadCount; ++i)
+ 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/qpathclipper/tst_qpathclipper.cpp b/tests/auto/qpathclipper/tst_qpathclipper.cpp
index 4dc12cb403..98c67d017e 100644
--- a/tests/auto/qpathclipper/tst_qpathclipper.cpp
+++ b/tests/auto/qpathclipper/tst_qpathclipper.cpp
@@ -1300,6 +1300,9 @@ void tst_QPathClipper::task251909()
void tst_QPathClipper::qtbug3778()
{
+ if (sizeof(double) != sizeof(qreal)) {
+ QSKIP("This test only works for qreal=double, otherwise ends in rounding errors", SkipAll);
+ }
QPainterPath path1;
path1.moveTo(200, 3.22409e-5);
// e-5 and higher leads to a bug
diff --git a/tests/auto/qpixmap/tst_qpixmap.cpp b/tests/auto/qpixmap/tst_qpixmap.cpp
index fdf83118a4..51e6cf5f00 100644
--- a/tests/auto/qpixmap/tst_qpixmap.cpp
+++ b/tests/auto/qpixmap/tst_qpixmap.cpp
@@ -812,33 +812,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/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/qplaintextedit/tst_qplaintextedit.cpp
index a6dd8be8ec..99d11ccd4a 100644
--- a/tests/auto/qplaintextedit/tst_qplaintextedit.cpp
+++ b/tests/auto/qplaintextedit/tst_qplaintextedit.cpp
@@ -880,6 +880,7 @@ void tst_QPlainTextEdit::lineWrapModes()
// We thus need to make it wide enough to show something visible.
int minimumWidth = 2 * ed->document()->documentMargin();
minimumWidth += ed->fontMetrics().width(QLatin1Char('a'));
+ minimumWidth += ed->frameWidth();
ed->resize(minimumWidth, 1000);
QCOMPARE(lineCount(), 26);
ed->setParent(0);
diff --git a/tests/auto/qprinter/tst_qprinter.cpp b/tests/auto/qprinter/tst_qprinter.cpp
index e908961fc9..fb9f8f0861 100644
--- a/tests/auto/qprinter/tst_qprinter.cpp
+++ b/tests/auto/qprinter/tst_qprinter.cpp
@@ -596,12 +596,12 @@ void tst_QPrinter::testPageMargins_data()
QTest::addColumn<qreal>("bottom");
QTest::addColumn<int>("unit");
- QTest::newRow("data0") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast<int>(QPrinter::Millimeter);
- QTest::newRow("data1") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast<int>(QPrinter::Point);
- QTest::newRow("data2") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast<int>(QPrinter::Inch);
- QTest::newRow("data3") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast<int>(QPrinter::Pica);
- QTest::newRow("data4") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast<int>(QPrinter::Didot);
- QTest::newRow("data5") << 5.5 << 6.5 << 7.5 << 8.5 << static_cast<int>(QPrinter::Cicero);
+ QTest::newRow("data0") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Millimeter);
+ QTest::newRow("data1") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Point);
+ QTest::newRow("data2") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Inch);
+ QTest::newRow("data3") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Pica);
+ QTest::newRow("data4") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Didot);
+ QTest::newRow("data5") << qreal(5.5) << qreal(6.5) << qreal(7.5) << qreal(8.5) << static_cast<int>(QPrinter::Cicero);
}
void tst_QPrinter::testPageMargins()
diff --git a/tests/auto/qscriptclass/tst_qscriptclass.cpp b/tests/auto/qscriptclass/tst_qscriptclass.cpp
index b4dbe73dc8..da6c76fcc2 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();
};
@@ -741,6 +742,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/qscriptvalue/tst_qscriptvalue.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
index 83a3388fd6..53e26993a8 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.cpp
@@ -2253,6 +2253,19 @@ void tst_QScriptValue::getSetData()
QVERIFY(!object.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:
@@ -2739,6 +2752,31 @@ void tst_QScriptValue::construct()
QVERIFY(!QScriptValue(QScriptValue::NullValue).construct().isValid());
}
+void tst_QScriptValue::construct_constructorThrowsPrimitive()
+{
+ QScriptEngine eng;
+ QScriptValue fun = eng.evaluate("(function() { throw 123; })");
+ QVERIFY(fun.isFunction());
+ // construct(QScriptValueList)
+ {
+ QScriptValue ret = fun.construct();
+ QVERIFY(ret.isNumber());
+ QCOMPARE(ret.toNumber(), 123.0);
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(ret.strictlyEquals(eng.uncaughtException()));
+ eng.clearExceptions();
+ }
+ // construct(QScriptValue)
+ {
+ QScriptValue ret = fun.construct(eng.newArray());
+ QVERIFY(ret.isNumber());
+ QCOMPARE(ret.toNumber(), 123.0);
+ QVERIFY(eng.hasUncaughtException());
+ QVERIFY(ret.strictlyEquals(eng.uncaughtException()));
+ eng.clearExceptions();
+ }
+}
+
void tst_QScriptValue::lessThan_old()
{
QScriptEngine eng;
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue.h b/tests/auto/qscriptvalue/tst_qscriptvalue.h
index 8bfaa6a944..aa6bc6ce29 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue.h
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.h
@@ -216,9 +216,11 @@ private slots:
void getSetProperty();
void arrayElementGetterSetter();
void getSetData();
+ void setData_QTBUG15144();
void getSetScriptClass();
void call();
void construct();
+ void construct_constructorThrowsPrimitive();
void castToPointer();
void prettyPrinter_data();
void prettyPrinter();
diff --git a/tests/auto/qsettings/tst_qsettings.cpp b/tests/auto/qsettings/tst_qsettings.cpp
index 0395eff4a8..0813e28667 100644
--- a/tests/auto/qsettings/tst_qsettings.cpp
+++ b/tests/auto/qsettings/tst_qsettings.cpp
@@ -51,6 +51,7 @@
#include <QtCore/QMetaType>
#include <QtCore/QtDebug>
#include <QtCore/QString>
+#include "../../shared/util.h"
#if !defined(Q_OS_SYMBIAN)
# include <cctype>
@@ -1726,26 +1727,22 @@ void tst_QSettings::testUpdateRequestEvent()
settings1.setValue("key1", 1);
QVERIFY(QFileInfo("foo").size() == 0);
- qApp->processEvents();
- QVERIFY(QFileInfo("foo").size() > 0);
+ QTRY_VERIFY(QFileInfo("foo").size() > 0);
settings1.remove("key1");
QVERIFY(QFileInfo("foo").size() > 0);
- qApp->processEvents();
- QVERIFY(QFileInfo("foo").size() == 0);
+ QTRY_VERIFY(QFileInfo("foo").size() == 0);
settings1.setValue("key2", 2);
QVERIFY(QFileInfo("foo").size() == 0);
- qApp->processEvents();
- QVERIFY(QFileInfo("foo").size() > 0);
+ QTRY_VERIFY(QFileInfo("foo").size() > 0);
settings1.clear();
QVERIFY(QFileInfo("foo").size() > 0);
- qApp->processEvents();
- QVERIFY(QFileInfo("foo").size() == 0);
+ QTRY_VERIFY(QFileInfo("foo").size() == 0);
}
const int NumIterations = 5;
diff --git a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
index 6b4904f964..a05aa97a57 100644
--- a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
+++ b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp
@@ -283,8 +283,8 @@ void tst_QSharedPointer::operators()
QSharedPointer<char> p1;
QSharedPointer<char> p2(new char);
qptrdiff diff = p2.data() - p1.data();
- Q_ASSERT(p1.data() < p2.data());
- Q_ASSERT(diff > 0);
+ Q_ASSERT(p1.data() != p2.data());
+ Q_ASSERT(diff != 0);
// operator-
QCOMPARE(p2 - p1.data(), diff);
diff --git a/tests/auto/qsplitter/tst_qsplitter.cpp b/tests/auto/qsplitter/tst_qsplitter.cpp
index e7b5dc7c22..7cb2b65ff1 100644
--- a/tests/auto/qsplitter/tst_qsplitter.cpp
+++ b/tests/auto/qsplitter/tst_qsplitter.cpp
@@ -1230,7 +1230,8 @@ void tst_QSplitter::testShowHide()
QSplitter *split = new QSplitter(Qt::Horizontal);
- QWidget widget;
+ QWidget topLevel;
+ QWidget widget(&topLevel);
widget.resize(400 + split->handleWidth(), 200);
QVBoxLayout *lay=new QVBoxLayout(&widget);
lay->setMargin(0);
@@ -1240,7 +1241,7 @@ void tst_QSplitter::testShowHide()
split->setSizes(QList<int>() << 200 << 200);
lay->addWidget(split);
widget.setLayout(lay);
- widget.show();
+ topLevel.show();
QTest::qWait(100);
@@ -1378,8 +1379,9 @@ class MyTextEdit : public QTextEdit
void tst_QSplitter::task169702_sizes()
{
+ QWidget topLevel;
// Create two nested (non-collapsible) splitters
- QSplitter* outerSplitter = new QSplitter(Qt::Vertical);
+ QSplitter* outerSplitter = new QSplitter(Qt::Vertical, &topLevel);
outerSplitter->setChildrenCollapsible(false);
QSplitter* splitter = new QSplitter(Qt::Horizontal, outerSplitter);
splitter->setChildrenCollapsible(false);
@@ -1396,12 +1398,12 @@ void tst_QSplitter::task169702_sizes()
splitter->addWidget(new QTextEdit("Bar"));
outerSplitter->setGeometry(100, 100, 500, 500);
- outerSplitter->show();
+ topLevel.show();
QTest::qWait(100);
testW->m_iFactor++;
testW->updateGeometry();
- QTest::qWait(100);
+ QTest::qWait(500);//100 is too fast for Maemo
//Make sure the minimimSizeHint is respected
QCOMPARE(testW->size().height(), testW->minimumSizeHint().height());
diff --git a/tests/auto/qsqldatabase/tst_databases.h b/tests/auto/qsqldatabase/tst_databases.h
index 5837719ca9..80535df8cb 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 c7a61a5fdd..b4a3e08748 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 d7671ea23e..b04dde3a99 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/qstring/tst_qstring.cpp b/tests/auto/qstring/tst_qstring.cpp
index ef82769d05..16cf872493 100644
--- a/tests/auto/qstring/tst_qstring.cpp
+++ b/tests/auto/qstring/tst_qstring.cpp
@@ -76,6 +76,7 @@ private slots:
void check_QTextStream();
void check_QDataStream();
void fromRawData();
+ void setRawData();
void endsWith();
void startsWith();
void setNum();
@@ -2999,7 +3000,9 @@ void tst_QString::fromRawData()
{
const QChar ptr[] = { 0x1234, 0x0000 };
QString cstr = QString::fromRawData(ptr, 1);
+ QVERIFY(cstr.isDetached());
QVERIFY(cstr.constData() == ptr);
+ QVERIFY(cstr == QString(ptr, 1));
cstr.squeeze();
QVERIFY(cstr.constData() == ptr);
cstr.detach();
@@ -3010,6 +3013,41 @@ void tst_QString::fromRawData()
QVERIFY(cstr.constData()[1] == QChar(0x0000));
}
+void tst_QString::setRawData()
+{
+ const QChar ptr[] = { 0x1234, 0x0000 };
+ const QChar ptr2[] = { 0x4321, 0x0000 };
+ QString cstr;
+
+ // This just tests the fromRawData() fallback
+ QVERIFY(!cstr.isDetached());
+ cstr.setRawData(ptr, 1);
+ QVERIFY(cstr.isDetached());
+ QVERIFY(cstr.constData() == ptr);
+ QVERIFY(cstr == QString(ptr, 1));
+
+ // This actually tests the recycling of the shared data object
+ QString::DataPtr csd = cstr.data_ptr();
+ cstr.setRawData(ptr2, 1);
+ QVERIFY(cstr.isDetached());
+ QVERIFY(cstr.constData() == ptr2);
+ QVERIFY(cstr == QString(ptr2, 1));
+ QVERIFY(cstr.data_ptr() == csd);
+
+ // This tests the discarding of the shared data object
+ cstr = "foo";
+ QVERIFY(cstr.isDetached());
+ QVERIFY(cstr.constData() != ptr2);
+
+ // Another test of the fallback
+ csd = cstr.data_ptr();
+ cstr.setRawData(ptr2, 1);
+ QVERIFY(cstr.isDetached());
+ QVERIFY(cstr.constData() == ptr2);
+ QVERIFY(cstr == QString(ptr2, 1));
+ QVERIFY(cstr.data_ptr() != csd);
+}
+
void tst_QString::fromStdString()
{
#ifdef Q_CC_HPACC
@@ -4395,8 +4433,10 @@ void tst_QString::nanAndInf()
CHECK_NAN("nan ", true, true)
CHECK_NAN("\t NAN", true, true)
CHECK_NAN("\t NAN ", true, true)
+#ifndef QT_QLOCALE_USES_FCVT //In case we use glibc this tests will fail
CHECK_NAN("-nan", false, false)
CHECK_NAN("+NAN", false, false)
+#endif
CHECK_NAN("NaN", true, true)
CHECK_NAN("nAn", true, true)
CHECK_NAN("NANe-10", false, false)
diff --git a/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp b/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
index 04b1e79f09..039640896c 100644
--- a/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
+++ b/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
@@ -48,6 +48,7 @@
#endif
#include <private/qstylesheetstyle_p.h>
+#include "../platformquirks.h"
//TESTED_CLASS=
//TESTED_FILES=
@@ -822,6 +823,8 @@ void tst_QStyleSheetStyle::focusColors()
void tst_QStyleSheetStyle::hoverColors()
{
+ if (!PlatformQuirks::haveMouseCursor())
+ QSKIP("No mouse Cursor on this platform",SkipAll);
QList<QWidget *> widgets;
widgets << new QPushButton("TESTING");
widgets << new QLineEdit("TESTING");
@@ -979,10 +982,11 @@ void tst_QStyleSheetStyle::background()
void tst_QStyleSheetStyle::tabAlignement()
{
- QTabWidget tabWidget;
+ QWidget topLevel;
+ QTabWidget tabWidget(&topLevel);
tabWidget.addTab(new QLabel("tab1"),"tab1");
tabWidget.resize(QSize(400,400));
- tabWidget.show();
+ topLevel.show();
QTest::qWaitForWindowShown(&tabWidget);
QTest::qWait(50);
QTabBar *bar = qFindChild<QTabBar*>(&tabWidget);
diff --git a/tests/auto/qtableview/tst_qtableview.cpp b/tests/auto/qtableview/tst_qtableview.cpp
index 3e5d077a85..6c920c97c9 100644
--- a/tests/auto/qtableview/tst_qtableview.cpp
+++ b/tests/auto/qtableview/tst_qtableview.cpp
@@ -2591,9 +2591,10 @@ void tst_QTableView::scrollTo()
QFETCH(int, expectedVerticalScroll);
QtTestTableModel model(rowCount, columnCount);
- QtTestTableView view;
+ QWidget toplevel;
+ QtTestTableView view(&toplevel);
- view.show();
+ toplevel.show();
// resizing to this size will ensure that there can ONLY_BE_ONE_CELL inside the view.
QSize forcedSize(columnWidth * 2, rowHeight * 2);
view.resize(forcedSize);
@@ -2748,10 +2749,11 @@ void tst_QTableView::indexAt()
QFETCH(int, expectedColumn);
QtTestTableModel model(rowCount, columnCount);
- QtTestTableView view;
+ QWidget toplevel;
+ QtTestTableView view(&toplevel);
- view.show();
- QTest::qWaitForWindowShown(&view);
+ toplevel.show();
+ QTest::qWaitForWindowShown(&toplevel);
//some styles change the scroll mode in their polish
view.setHorizontalScrollMode(QAbstractItemView::ScrollPerItem);
@@ -3657,20 +3659,23 @@ void tst_QTableView::mouseWheel()
#ifdef Q_OS_WINCE
QSKIP("Since different Windows CE versions sport different taskbars, we skip this test", SkipAll);
#endif
+
QFETCH(int, scrollMode);
QFETCH(int, delta);
QFETCH(int, horizontalPositon);
QFETCH(int, verticalPosition);
QtTestTableModel model(100, 100);
- QtTestTableView view;
+ QWidget topLevel;
+ QtTestTableView view(&topLevel);
view.resize(500, 500);
for (int r = 0; r < 100; ++r)
view.setRowHeight(r, 50);
for (int c = 0; c < 100; ++c)
view.setColumnWidth(c, 100);
- view.show();
- QTest::qWaitForWindowShown(&view);
+ topLevel.show();
+
+ QTest::qWaitForWindowShown(&topLevel);
view.setModel(&model);
@@ -3772,7 +3777,7 @@ void tst_QTableView::task191545_dragSelectRows()
QRect cellRect = table.visualRect(model.index(3, 0));
QHeaderView *vHeader = table.verticalHeader();
QWidget *vHeaderVp = vHeader->viewport();
- QPoint rowPos(5, (cellRect.top() + cellRect.bottom()) / 2);
+ QPoint rowPos(cellRect.center());
QMouseEvent rowPressEvent(QEvent::MouseButtonPress, rowPos, Qt::LeftButton, Qt::NoButton, Qt::ControlModifier);
qApp->sendEvent(vHeaderVp, &rowPressEvent);
@@ -3851,6 +3856,7 @@ void tst_QTableView::task191545_dragSelectRows()
QMouseEvent cellReleaseEvent(QEvent::MouseButtonRelease, cellPos, Qt::LeftButton, Qt::NoButton, Qt::ControlModifier);
qApp->sendEvent(tableVp, &cellReleaseEvent);
+ QTest::qWait(200);
for (int i = 0; i < 6; ++i)
for (int j = 0; j < 6; ++j) {
QModelIndex index = model.index(3 + i, 3 + j, table.rootIndex());
diff --git a/tests/auto/qtextdocument/tst_qtextdocument.cpp b/tests/auto/qtextdocument/tst_qtextdocument.cpp
index 808299b805..23f6a6c96e 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/qtextedit/tst_qtextedit.cpp b/tests/auto/qtextedit/tst_qtextedit.cpp
index 101baa53b5..d1832d8cb5 100644
--- a/tests/auto/qtextedit/tst_qtextedit.cpp
+++ b/tests/auto/qtextedit/tst_qtextedit.cpp
@@ -58,6 +58,7 @@
#include <qimagereader.h>
#include <qimagewriter.h>
#include <qcommonstyle.h>
+#include <qlayout.h>
#include <qabstracttextdocumentlayout.h>
#include <qtextdocumentfragment.h>
@@ -2111,6 +2112,7 @@ void tst_QTextEdit::setDocumentPreservesPalette()
QPalette whitePal = ed->palette();
whitePal.setColor(QPalette::Active, QPalette::Text, "white");
+
QVERIFY(whitePal != ed->palette());
ed->setPalette(whitePal);
QVERIFY(whitePal.color(QPalette::Active, QPalette::Text)
@@ -2155,9 +2157,15 @@ void tst_QTextEdit::pasteFromQt3RichText()
void tst_QTextEdit::noWrapBackgrounds()
{
+ QWidget topLevel;
+ QVBoxLayout *layout = new QVBoxLayout(&topLevel);
+
QTextEdit edit;
edit.setLineWrapMode(QTextEdit::NoWrap);
+ // hide the cursor in order to make the image comparison below reliable
+ edit.setCursorWidth(0);
+
QTextFrame *root = edit.document()->rootFrame();
QTextFrameFormat frameFormat = root->frameFormat();
frameFormat.setLeftMargin(2);
@@ -2170,6 +2178,9 @@ void tst_QTextEdit::noWrapBackgrounds()
edit.insertPlainText(QLatin1String(" \n \n \n \n"));
edit.setFixedSize(100, 200);
+ layout->addWidget(&edit);
+ topLevel.show();
+
QImage img = QPixmap::grabWidget(edit.viewport()).toImage();
QCOMPARE(img, img.mirrored(true, false));
}
diff --git a/tests/auto/qthread/tst_qthread.cpp b/tests/auto/qthread/tst_qthread.cpp
index 843749a31b..b0efb5a869 100644
--- a/tests/auto/qthread/tst_qthread.cpp
+++ b/tests/auto/qthread/tst_qthread.cpp
@@ -106,6 +106,7 @@ private slots:
void adoptMultipleThreads();
void QTBUG13810_exitAndStart();
+ void QTBUG15378_exitAndExec();
void stressTest();
};
@@ -976,5 +977,45 @@ void tst_QThread::QTBUG13810_exitAndStart()
}
+void tst_QThread::QTBUG15378_exitAndExec()
+{
+ class Thread : public QThread {
+ public:
+ QSemaphore sem1;
+ QSemaphore sem2;
+ volatile int value;
+ void run() {
+ sem1.acquire();
+ value = exec(); //First entrence
+ sem2.release();
+ value = exec(); // Second loop
+ }
+ };
+ Thread thread;
+ thread.value = 0;
+ thread.start();
+ thread.exit(556);
+ thread.sem1.release(); //should exit the first loop
+ thread.sem2.acquire();
+ int v = thread.value;
+ QCOMPARE(v, 556);
+
+ //test that the thread is running by executing queued connected signal there
+ Syncronizer sync1;
+ sync1.moveToThread(&thread);
+ Syncronizer sync2;
+ sync2.moveToThread(&thread);
+ connect(&sync2, SIGNAL(propChanged(int)), &sync1, SLOT(setProp(int)), Qt::QueuedConnection);
+ connect(&sync1, SIGNAL(propChanged(int)), &thread, SLOT(quit()), Qt::QueuedConnection);
+ QMetaObject::invokeMethod(&sync2, "setProp", Qt::QueuedConnection , Q_ARG(int, 89));
+ QTest::qWait(50);
+ while(!thread.wait(10))
+ QTest::qWait(10);
+ QCOMPARE(sync2.m_prop, 89);
+ QCOMPARE(sync1.m_prop, 89);
+}
+
+
+
QTEST_MAIN(tst_QThread)
#include "tst_qthread.moc"
diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp
index c7b53e96a2..3c2bf15925 100644
--- a/tests/auto/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/qtreeview/tst_qtreeview.cpp
@@ -2379,11 +2379,12 @@ void tst_QTreeView::extendedSelection()
QFETCH(int, selectedCount);
QStandardItemModel model(5, 2);
- QTreeView view;
+ QWidget topLevel;
+ QTreeView view(&topLevel);
view.resize(qMax(mousePressPos.x() * 2, 200), qMax(mousePressPos.y() * 2, 200));
view.setModel(&model);
view.setSelectionMode(QAbstractItemView::ExtendedSelection);
- view.show();
+ topLevel.show();
QTest::mousePress(view.viewport(), Qt::LeftButton, 0, mousePressPos);
QCOMPARE(view.selectionModel()->selectedIndexes().count(), selectedCount);
}
@@ -3280,9 +3281,10 @@ void tst_QTreeView::task220298_selectColumns()
void tst_QTreeView::task224091_appendColumns()
{
QStandardItemModel *model = new QStandardItemModel();
- QTreeView *treeView = new QTreeView();
+ QWidget* topLevel= new QWidget;
+ QTreeView *treeView = new QTreeView(topLevel);
treeView->setModel(model);
- treeView->show();
+ topLevel->show();
treeView->resize(50,50);
QTest::qWaitForWindowShown(treeView);
@@ -3299,7 +3301,7 @@ void tst_QTreeView::task224091_appendColumns()
QTRY_VERIFY(treeView->verticalScrollBar()->isVisible());
- delete treeView;
+ delete topLevel;
delete model;
}
@@ -3758,7 +3760,8 @@ void tst_QTreeView::taskQTBUG_9216_setSizeAndUniformRowHeightsWrongRepaint()
void tst_QTreeView::keyboardNavigationWithDisabled()
{
- QTreeView view;
+ QWidget topLevel;
+ QTreeView view(&topLevel);
QStandardItemModel model(90, 0);
for (int i = 0; i < 90; i ++) {
model.setItem(i, new QStandardItem(QString::number(i)));
@@ -3767,10 +3770,10 @@ void tst_QTreeView::keyboardNavigationWithDisabled()
view.setModel(&model);
view.resize(200, view.visualRect(model.index(0,0)).height()*10);
- view.show();
- QApplication::setActiveWindow(&view);
- QTest::qWaitForWindowShown(&view);
- QTRY_VERIFY(view.isActiveWindow());
+ topLevel.show();
+ QApplication::setActiveWindow(&topLevel);
+ QTest::qWaitForWindowShown(&topLevel);
+ QTRY_VERIFY(topLevel.isActiveWindow());
view.setCurrentIndex(model.index(1, 0));
QTest::keyClick(view.viewport(), Qt::Key_Up);
diff --git a/tests/auto/qtreewidget/tst_qtreewidget.cpp b/tests/auto/qtreewidget/tst_qtreewidget.cpp
index 1e373841f4..32bf5579ce 100644
--- a/tests/auto/qtreewidget/tst_qtreewidget.cpp
+++ b/tests/auto/qtreewidget/tst_qtreewidget.cpp
@@ -464,6 +464,7 @@ void tst_QTreeWidget::editItem()
QTreeWidget tree;
populate(&tree, topLevelItems, new TreeItem(QStringList() << "1" << "2"));
tree.show();
+ QTest::qWaitForWindowShown(&tree);
QSignalSpy itemChangedSpy(
&tree, SIGNAL(itemChanged(QTreeWidgetItem*,int)));
@@ -3098,8 +3099,9 @@ void tst_QTreeWidget::task253109_itemHeight()
void tst_QTreeWidget::task206367_duplication()
{
- QTreeWidget treeWidget;
- treeWidget.show();
+ QWidget topLevel;
+ QTreeWidget treeWidget(&topLevel);
+ topLevel.show();
treeWidget.resize(200, 200);
treeWidget.setSortingEnabled(true);
diff --git a/tests/auto/qwaitcondition/tst_qwaitcondition.cpp b/tests/auto/qwaitcondition/tst_qwaitcondition.cpp
index 539159184a..ffc473056a 100644
--- a/tests/auto/qwaitcondition/tst_qwaitcondition.cpp
+++ b/tests/auto/qwaitcondition/tst_qwaitcondition.cpp
@@ -76,7 +76,7 @@ private slots:
static const int iterations = 10;
// Note: some tests rely on ThreadCount being multiple of 2
-#ifdef Q_OS_SOLARIS
+#if defined(Q_OS_SOLARIS) || ( defined(Q_OS_LINUX) && defined(QT_ARCH_ARMV6) )
static const int ThreadCount = 4;
#else
static const int ThreadCount = 10;
diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp
index 2f221d22b6..5521873e67 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -4389,7 +4389,6 @@ class WinIdChangeWidget : public QWidget {
public:
WinIdChangeWidget(QWidget *p = 0)
: QWidget(p)
- , m_winIdChangeEventCount(0)
{
}
@@ -4397,13 +4396,14 @@ protected:
bool event(QEvent *e)
{
if (e->type() == QEvent::WinIdChange) {
- ++m_winIdChangeEventCount;
+ m_winIdList.append(internalWinId());
return true;
}
return QWidget::event(e);
}
public:
- int m_winIdChangeEventCount;
+ QList<WId> m_winIdList;
+ int winIdChangeEventCount() const { return m_winIdList.count(); }
};
void tst_QWidget::winIdChangeEvent()
@@ -4414,7 +4414,7 @@ void tst_QWidget::winIdChangeEvent()
const WId winIdBefore = widget.internalWinId();
const WId winIdAfter = widget.winId();
QVERIFY(winIdBefore != winIdAfter);
- QCOMPARE(widget.m_winIdChangeEventCount, 1);
+ QCOMPARE(widget.winIdChangeEventCount(), 1);
}
{
@@ -4423,11 +4423,13 @@ void tst_QWidget::winIdChangeEvent()
QWidget parent1, parent2;
WinIdChangeWidget child(&parent1);
const WId winIdBefore = child.winId();
- QCOMPARE(child.m_winIdChangeEventCount, 1);
+ QCOMPARE(child.winIdChangeEventCount(), 1);
child.setParent(&parent2);
const WId winIdAfter = child.internalWinId();
QVERIFY(winIdBefore != winIdAfter);
- QCOMPARE(child.m_winIdChangeEventCount, 2);
+ QCOMPARE(child.winIdChangeEventCount(), 3);
+ // winId is set to zero during reparenting
+ QVERIFY(0 == child.m_winIdList[1]);
}
{
@@ -4437,15 +4439,16 @@ void tst_QWidget::winIdChangeEvent()
QWidget parent(&grandparent1);
WinIdChangeWidget child(&parent);
const WId winIdBefore = child.winId();
- QCOMPARE(child.m_winIdChangeEventCount, 1);
+ QCOMPARE(child.winIdChangeEventCount(), 1);
parent.setParent(&grandparent2);
const WId winIdAfter = child.internalWinId();
#ifdef Q_OS_SYMBIAN
QVERIFY(winIdBefore != winIdAfter);
- QCOMPARE(child.m_winIdChangeEventCount, 2);
+ QVERIFY(winIdAfter != 0);
+ QCOMPARE(child.winIdChangeEventCount(), 2);
#else
QCOMPARE(winIdBefore, winIdAfter);
- QCOMPARE(child.m_winIdChangeEventCount, 1);
+ QCOMPARE(child.winIdChangeEventCount(), 1);
#endif
}
@@ -4457,7 +4460,7 @@ void tst_QWidget::winIdChangeEvent()
child.setParent(&parent2);
const WId winIdAfter = child.internalWinId();
QCOMPARE(winIdBefore, winIdAfter);
- QCOMPARE(child.m_winIdChangeEventCount, 0);
+ QCOMPARE(child.winIdChangeEventCount(), 0);
}
{
@@ -4466,12 +4469,14 @@ void tst_QWidget::winIdChangeEvent()
WinIdChangeWidget child(&parent);
child.winId();
const WId winIdBefore = child.internalWinId();
- QCOMPARE(child.m_winIdChangeEventCount, 1);
+ QCOMPARE(child.winIdChangeEventCount(), 1);
const Qt::WindowFlags flags = child.windowFlags();
child.setWindowFlags(flags | Qt::Window);
const WId winIdAfter = child.internalWinId();
QVERIFY(winIdBefore != winIdAfter);
- QCOMPARE(child.m_winIdChangeEventCount, 2);
+ QCOMPARE(child.winIdChangeEventCount(), 3);
+ // winId is set to zero during reparenting
+ QVERIFY(0 == child.m_winIdList[1]);
}
}
@@ -9718,14 +9723,25 @@ void tst_QWidget::destroyBackingStoreWhenHidden()
child.setAutoFillBackground(true);
child.setPalette(Qt::blue);
+ QWidget grandChild(&child);
+ grandChild.setAutoFillBackground(true);
+ grandChild.setPalette(Qt::yellow);
+
QVBoxLayout layout(&parent);
layout.setContentsMargins(10, 10, 10, 10);
layout.addWidget(&child);
parent.setLayout(&layout);
- child.winId();
+ QVBoxLayout childLayout(&child);
+ childLayout.setContentsMargins(10, 10, 10, 10);
+ childLayout.addWidget(&grandChild);
+ child.setLayout(&childLayout);
+
+ // Ensure that this widget and all its ancestors are native
+ grandChild.winId();
parent.show();
+
QTest::qWaitForWindowShown(&parent);
// Check that child window does not obscure parent window
@@ -9734,18 +9750,24 @@ void tst_QWidget::destroyBackingStoreWhenHidden()
// Native child widget should share parent's backing store
QVERIFY(0 != backingStore(parent));
QVERIFY(0 == backingStore(child));
+ QVERIFY(0 == backingStore(grandChild));
// Make child widget full screen
child.setWindowFlags((child.windowFlags() | Qt::Window) ^ Qt::SubWindow);
child.setWindowState(child.windowState() | Qt::WindowFullScreen);
child.show();
+
+ // Paint into the child to ensure that it gets a backing store
+ QPainter painter(&child);
+ painter.fillRect(QRect(0, 0, 90, 90), Qt::white);
+
QTest::qWaitForWindowShown(&child);
// Ensure that 'window hidden' event is received by parent
qApp->processEvents();
// Check that child window obscures parent window
- QVERIFY(parent.visibleRegion().subtracted(child.visibleRegion()).isEmpty());
+ QVERIFY(parent.visibleRegion().subtracted(child.visibleRegion() + grandChild.visibleRegion()).isEmpty());
// Now that extent of child widget goes beyond parent's extent,
// a new backing store should be created for the child widget.
@@ -9761,11 +9783,12 @@ void tst_QWidget::destroyBackingStoreWhenHidden()
QTest::qWaitForWindowShown(&child);
// Check that parent is now visible again
- QVERIFY(!parent.visibleRegion().subtracted(child.visibleRegion()).isEmpty());
+ QVERIFY(!parent.visibleRegion().subtracted(child.visibleRegion() + grandChild.visibleRegion()).isEmpty());
// Native child widget should once again share parent's backing store
QVERIFY(0 != backingStore(parent));
QVERIFY(0 == backingStore(child));
+ QVERIFY(0 == backingStore(grandChild));
}
// 6. Partial reveal followed by full reveal
diff --git a/tests/auto/qxmlquery/tst_qxmlquery.cpp b/tests/auto/qxmlquery/tst_qxmlquery.cpp
index 2187aeb3a4..e6c40b80f0 100644
--- a/tests/auto/qxmlquery/tst_qxmlquery.cpp
+++ b/tests/auto/qxmlquery/tst_qxmlquery.cpp
@@ -1197,9 +1197,15 @@ void tst_QXmlQuery::basicXQueryToQtTypeCheck() const
expectedValues.append(QVariant()); /* xs:dayTimeDuration */
expectedValues.append(QVariant()); /* xs:yearMonthDuration */
- expectedValues.append(QVariant(double(3e3))); /* xs:float */
- expectedValues.append(QVariant(double(4e4))); /* xs:double */
- expectedValues.append(QVariant(double(2))); /* xs:decimal */
+ if(sizeof(qreal) == sizeof(float)) {//ARM casts to Float not to double
+ expectedValues.append(QVariant(float(3e3))); /* xs:float */
+ expectedValues.append(QVariant(float(4e4))); /* xs:double */
+ expectedValues.append(QVariant(float(2))); /* xs:decimal */
+ } else {
+ expectedValues.append(QVariant(double(3e3))); /* xs:float */
+ expectedValues.append(QVariant(double(4e4))); /* xs:double */
+ expectedValues.append(QVariant(double(2))); /* xs:decimal */
+ }
/* xs:integer and its sub-types. */
expectedValues.append(QVariant(qlonglong(16)));
@@ -1347,10 +1353,17 @@ void tst_QXmlQuery::basicQtToXQueryTypeCheck() const
QVERIFY(!item.isNull());
QVERIFY(item.isAtomicValue());
- QCOMPARE(item.toAtomicValue().toString(),
- QLatin1String("4 true 3 654 7 41414141 C 2000-10-11Z 2001-09-10T01:02:03 "
- "A QString http://example.com/ 5 6 true true true true true true true true true true "
- "true true true"));
+ if(sizeof(qreal) == sizeof(float)) //ARM casts to Float not to double
+ QCOMPARE(item.toAtomicValue().toString(),
+ QLatin1String("4 true 3 654 7 41414141 C 2000-10-11Z 2001-09-10T01:02:03 "
+ "A QString http://example.com/ 5 6 true false false true true true true true true true "
+ "true true true"));
+ else
+ QCOMPARE(item.toAtomicValue().toString(),
+ QLatin1String("4 true 3 654 7 41414141 C 2000-10-11Z 2001-09-10T01:02:03 "
+ "A QString http://example.com/ 5 6 true true true true true true true true true true "
+ "true true true"));
+
}
void tst_QXmlQuery::bindNode() const
diff --git a/tests/auto/selftests/expected_cmptest.txt b/tests/auto/selftests/expected_cmptest.txt
index 7f3aa9a635..fccaca36d3 100644
--- a/tests/auto/selftests/expected_cmptest.txt
+++ b/tests/auto/selftests/expected_cmptest.txt
@@ -1,5 +1,5 @@
********* Start testing of tst_Cmptest *********
-Config: Using QTest library 4.7.1, Qt 4.7.1
+Config: Using QTest library 4.7.2, Qt 4.7.2
PASS : tst_Cmptest::initTestCase()
PASS : tst_Cmptest::compare_boolfuncs()
PASS : tst_Cmptest::compare_pointerfuncs()
diff --git a/tests/auto/selftests/expected_crashes_3.txt b/tests/auto/selftests/expected_crashes_3.txt
index 7ded52520a..2558f680d2 100644
--- a/tests/auto/selftests/expected_crashes_3.txt
+++ b/tests/auto/selftests/expected_crashes_3.txt
@@ -1,5 +1,5 @@
********* Start testing of tst_Crashes *********
-Config: Using QTest library 4.7.1, Qt 4.7.1
+Config: Using QTest library 4.7.2, Qt 4.7.2
PASS : tst_Crashes::initTestCase()
QFATAL : tst_Crashes::crash() Received signal 11
FAIL! : tst_Crashes::crash() Received a fatal error.
diff --git a/tests/auto/selftests/expected_longstring.txt b/tests/auto/selftests/expected_longstring.txt
index 9ad6f5660f..c56244b1ef 100644
--- a/tests/auto/selftests/expected_longstring.txt
+++ b/tests/auto/selftests/expected_longstring.txt
@@ -1,5 +1,5 @@
********* Start testing of tst_LongString *********
-Config: Using QTest library 4.7.1, Qt 4.7.1
+Config: Using QTest library 4.7.2, Qt 4.7.2
PASS : tst_LongString::initTestCase()
FAIL! : tst_LongString::failWithLongString() Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui.
diff --git a/tests/auto/selftests/expected_maxwarnings.txt b/tests/auto/selftests/expected_maxwarnings.txt
index 949da1306f..7846435bb3 100644
--- a/tests/auto/selftests/expected_maxwarnings.txt
+++ b/tests/auto/selftests/expected_maxwarnings.txt
@@ -1,5 +1,5 @@
********* Start testing of MaxWarnings *********
-Config: Using QTest library 4.7.1, Qt 4.7.1
+Config: Using QTest library 4.7.2, Qt 4.7.2
PASS : MaxWarnings::initTestCase()
QWARN : MaxWarnings::warn() 0
QWARN : MaxWarnings::warn() 1
diff --git a/tests/auto/selftests/expected_skip.txt b/tests/auto/selftests/expected_skip.txt
index 1f5bf7bc3c..5c9e497c39 100644
--- a/tests/auto/selftests/expected_skip.txt
+++ b/tests/auto/selftests/expected_skip.txt
@@ -1,5 +1,5 @@
********* Start testing of tst_Skip *********
-Config: Using QTest library 4.7.1, Qt 4.7.1
+Config: Using QTest library 4.7.2, Qt 4.7.2
PASS : tst_Skip::initTestCase()
SKIP : tst_Skip::test() skipping all
Loc: [/home/user/depot/qt-git/mainline/tests/auto/selftests/skip/tst_skip.cpp(68)]
diff --git a/tests/auto/symbols/tst_symbols.cpp b/tests/auto/symbols/tst_symbols.cpp
index 28970eba41..1572a5f893 100644
--- a/tests/auto/symbols/tst_symbols.cpp
+++ b/tests/auto/symbols/tst_symbols.cpp
@@ -443,7 +443,7 @@ void tst_Symbols::prefix()
# if defined(Q_OS_LINUX) && defined(Q_CC_INTEL)
QEXPECT_FAIL("", "linux-icc* incorrectly exports some QtWebkit symbols, waiting for a fix from Intel.", Continue);
# endif
- QVERIFY2(!isFailed, "Libraries contain non-prefixed symbols. See Debug output :)");
+ QVERIFY2(!isFailed, "Libraries contain non-prefixed symbols. See Debug output above.");
#else
QSKIP("Linux-specific test", SkipAll);
#endif
diff --git a/tests/benchmarks/corelib/tools/qstring/data.cpp b/tests/benchmarks/corelib/tools/qstring/data.cpp
index 6d1a069ec7..d44a796e52 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 c7a7467309..ce733fb25f 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 d027adb3ac..48a8518086 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/declarative/creation/tst_creation.cpp b/tests/benchmarks/declarative/creation/tst_creation.cpp
index 6bf7943b65..7026c40b7f 100644
--- a/tests/benchmarks/declarative/creation/tst_creation.cpp
+++ b/tests/benchmarks/declarative/creation/tst_creation.cpp
@@ -243,7 +243,7 @@ void tst_creation::qobject_alloc()
}
}
-struct QDeclarativeGraphics_DerivedObject : public QObject
+struct QDeclarativeGraphics_Derived : public QObject
{
void setParent_noEvent(QObject *parent) {
bool sce = d_ptr->sendChildEvents;
@@ -255,7 +255,7 @@ struct QDeclarativeGraphics_DerivedObject : public QObject
inline void QDeclarativeGraphics_setParent_noEvent(QObject *object, QObject *parent)
{
- static_cast<QDeclarativeGraphics_DerivedObject *>(object)->setParent_noEvent(parent);
+ static_cast<QDeclarativeGraphics_Derived *>(object)->setParent_noEvent(parent);
}
void tst_creation::itemtree_notree_cpp()
diff --git a/tests/benchmarks/declarative/qmltime/qmltime.cpp b/tests/benchmarks/declarative/qmltime/qmltime.cpp
index e1b73ca84b..f0a24f6c40 100644
--- a/tests/benchmarks/declarative/qmltime/qmltime.cpp
+++ b/tests/benchmarks/declarative/qmltime/qmltime.cpp
@@ -148,7 +148,68 @@ void Timer::runTest(QDeclarativeContext *context, uint iterations)
void usage(const char *name)
{
- qWarning("Usage: %s [-iterations <count>] [-parent] <qml file>", name);
+ qWarning("Usage: %s [-iterations <count>] [-parent] <qml file>\n", name);
+
+ qWarning("qmltime is a tool for benchmarking the runtime cost of instantiating\n"
+ "a QML component. It is typically run as follows:\n"
+ "\n"
+ "%s path/to/benchmark.qml\n"
+ "\n"
+ "If the -parent option is specified, the component being measured will also\n"
+ "be parented to an item already in the scene.\n"
+ "\n"
+ "If the -iterations option is specified, the benchmark will run the specified\n"
+ "number of iterations. If -iterations is not specified, 1024 iterations\n"
+ "are performed.\n"
+ "\n"
+ "qmltime expects the file to be benchmarked to contain a certain structure.\n"
+ "Specifically, it requires the presence of a QmlTime.Timer element. For example,\n"
+ "say we wanted to benchmark the following list delegate:\n"
+ "\n"
+ "Rectangle {\n"
+ " color: \"green\"\n"
+ " width: 400; height: 100\n"
+ " Text {\n"
+ " anchors.centerIn: parent\n"
+ " text: name\n"
+ " }\n"
+ "}\n"
+ "\n"
+ "we would create a benchmark file that looks like this:\n"
+ "\n"
+ "import QtQuick 1.0\n"
+ "import QmlTime 1.0 as QmlTime\n"
+ "\n"
+ "Item {\n"
+ "\n"
+ " property string name: \"Bob Smith\"\n"
+ "\n"
+ " QmlTime.Timer {\n"
+ " component: Rectangle {\n"
+ " color: \"green\"\n"
+ " width: 400; height: 100\n"
+ " Text {\n"
+ " anchors.centerIn: parent\n"
+ " text: name\n"
+ " }\n"
+ " }\n"
+ " }\n"
+ "}\n"
+ "\n"
+ "The outer Item functions as a dummy data provider for any additional\n"
+ "data required by the bindings in the component being benchmarked (in the\n"
+ "example above we provide a \"name\" property).\n"
+ "\n"
+ "When started, the component is instantiated once before running\n"
+ "the benchmark, which means that the reported time does not include\n"
+ "compile time (as the results of compilation are cached internally).\n"
+ "In this sense the times reported by qmltime best correspond to the\n"
+ "costs associated with delegate creation in the view classes, where the\n"
+ "same delegate is instantiated over and over. Conversely, it is not a\n"
+ "good approximation for e.g. Loader, which typically only instantiates\n"
+ "an element once (and so for Loader the compile time is very relevant\n"
+ "to the overall cost).", name);
+
exit(-1);
}
@@ -178,6 +239,8 @@ int main(int argc, char ** argv)
}
} else if (arg == "-parent") {
willParent = true;
+ } else if (arg == "-help") {
+ usage(argv[0]);
} else {
filename = QLatin1String(argv[ii]);
}
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro
new file mode 100644
index 0000000000..ff85fe8e00
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_bench_qgraphicslinearlayout
+
+SOURCES += tst_qgraphicslinearlayout.cpp
+
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
new file mode 100644
index 0000000000..dc415fb5d1
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
@@ -0,0 +1,133 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtGui/qgraphicslinearlayout.h>
+#include <QtGui/qgraphicswidget.h>
+#include <QtGui/qgraphicsview.h>
+
+class tst_QGraphicsLinearLayout : public QObject
+{
+ Q_OBJECT
+public:
+ tst_QGraphicsLinearLayout() {}
+ ~tst_QGraphicsLinearLayout() {}
+
+private slots:
+ void heightForWidth_data();
+ void heightForWidth();
+};
+
+
+struct MySquareWidget : public QGraphicsWidget
+{
+ MySquareWidget() {}
+ virtual QSizeF sizeHint ( Qt::SizeHint which, const QSizeF & constraint = QSizeF() ) const
+ {
+ if (which != Qt::PreferredSize)
+ return QGraphicsWidget::sizeHint(which, constraint);
+ if (constraint.width() < 0)
+ return QGraphicsWidget::sizeHint(which, constraint);
+ return QSizeF(constraint.width(), constraint.width());
+ }
+};
+
+void tst_QGraphicsLinearLayout::heightForWidth_data()
+{
+ QTest::addColumn<bool>("hfw");
+ QTest::addColumn<bool>("nested");
+
+ QTest::newRow("hfw") << true << false;
+ QTest::newRow("hfw, nested") << true << true;
+ QTest::newRow("not hfw") << false << false;
+ QTest::newRow("not hfw, nested") << false << true;
+}
+
+void tst_QGraphicsLinearLayout::heightForWidth()
+{
+ QFETCH(bool, hfw);
+ QFETCH(bool, nested);
+
+ QGraphicsScene scene;
+ QGraphicsWidget *form = new QGraphicsWidget;
+ scene.addItem(form);
+
+ QGraphicsLinearLayout *outerlayout = 0;
+ if (nested) {
+ outerlayout = new QGraphicsLinearLayout(form);
+ for (int i = 0; i < 8; i++) {
+ QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical);
+ outerlayout->addItem(layout);
+ outerlayout = layout;
+ }
+ }
+
+ QGraphicsLinearLayout *qlayout = 0;
+ qlayout = new QGraphicsLinearLayout(Qt::Vertical);
+ if (nested)
+ outerlayout->addItem(qlayout);
+ else
+ form->setLayout(qlayout);
+
+ MySquareWidget *widget = new MySquareWidget;
+ for (int i = 0; i < 1; i++) {
+ widget = new MySquareWidget;
+ QSizePolicy sizepolicy = widget->sizePolicy();
+ sizepolicy.setHeightForWidth(hfw);
+ widget->setSizePolicy(sizepolicy);
+ qlayout->addItem(widget);
+ }
+ // make sure only one iteration is done.
+ // run with tst_QGraphicsLinearLayout.exe "heightForWidth" -tickcounter -iterations 6
+ // this will iterate 6 times the whole test, (not only the benchmark)
+ // which should reduce warmup time and give a realistic picture of the performance of
+ // effectiveSizeHint()
+ QSizeF constraint(hfw ? 100 : -1, -1);
+ QBENCHMARK {
+ (void)form->effectiveSizeHint(Qt::PreferredSize, constraint);
+ }
+
+}
+
+
+QTEST_MAIN(tst_QGraphicsLinearLayout)
+
+#include "tst_qgraphicslinearlayout.moc"
diff --git a/tests/manual/bearerex/datatransferer.cpp b/tests/manual/bearerex/datatransferer.cpp
index c3c13a8c30..c449bb1df1 100644
--- a/tests/manual/bearerex/datatransferer.cpp
+++ b/tests/manual/bearerex/datatransferer.cpp
@@ -121,7 +121,7 @@ void DataTransfererQTcp::readyRead()
qDebug() << "BearerEx DataTransferQTcp data received: " << data;
m_dataTransferOngoing = false;
- // m_qsocket.error() returns uninitialized value in case no error has occured,
+ // m_qsocket.error() returns uninitialized value in case no error has occurred,
// so emit '0'
emit finished(0, bytesAvailable, "QAbstractSocket::SocketError");
}
diff --git a/tests/manual/qtouchevent/multitouch.pro b/tests/manual/qtouchevent/qtouchevent.pro
index de1ee06f9e..de1ee06f9e 100644
--- a/tests/manual/qtouchevent/multitouch.pro
+++ b/tests/manual/qtouchevent/qtouchevent.pro
diff --git a/tools/assistant/lib/qhelpgenerator.cpp b/tools/assistant/lib/qhelpgenerator.cpp
index 85bdd75e4f..f94031bece 100644
--- a/tools/assistant/lib/qhelpgenerator.cpp
+++ b/tools/assistant/lib/qhelpgenerator.cpp
@@ -712,14 +712,15 @@ bool QHelpGenerator::insertKeywords(const QList<QHelpDataIndexItem> &keywords,
d->query->exec(QLatin1String("BEGIN"));
QSet<QString> indices;
foreach (const QHelpDataIndexItem &itm, keywords) {
-
- /*
- * Identical ids make no sense and just confuse the Assistant user,
- * so we ignore all repetitions.
- */
+ // Identical ids make no sense and just confuse the Assistant user,
+ // so we ignore all repetitions.
if (indices.contains(itm.identifier))
continue;
- indices.insert(itm.identifier);
+
+ // Still empty ids should be ignored, as otherwise we will include only
+ // the first keyword with an empty id.
+ if (!itm.identifier.isEmpty())
+ indices.insert(itm.identifier);
pos = itm.reference.indexOf(QLatin1Char('#'));
fileName = itm.reference.left(pos);
diff --git a/tools/assistant/tools/assistant/doc/assistant.qdocconf b/tools/assistant/tools/assistant/doc/assistant.qdocconf
index 26cdafbdf1..57abeae1de 100644
--- a/tools/assistant/tools/assistant/doc/assistant.qdocconf
+++ b/tools/assistant/tools/assistant/doc/assistant.qdocconf
@@ -12,5 +12,5 @@ HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
"<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
"<td width=\"30%\" align=\"left\">Copyright &copy; 2010 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
"<td width=\"40%\" align=\"center\">Trademarks</td>\n" \
- "<td width=\"30%\" align=\"right\"><div align=\"right\">Qt 4.7.1</div></td>\n" \
+ "<td width=\"30%\" align=\"right\"><div align=\"right\">Qt 4.7.2</div></td>\n" \
"</tr></table></div></address>"
diff --git a/tools/assistant/tools/assistant/helpenginewrapper.cpp b/tools/assistant/tools/assistant/helpenginewrapper.cpp
index a53a9eeaac..748ad2c29d 100644
--- a/tools/assistant/tools/assistant/helpenginewrapper.cpp
+++ b/tools/assistant/tools/assistant/helpenginewrapper.cpp
@@ -144,7 +144,7 @@ HelpEngineWrapper::HelpEngineWrapper(const QString &collectionFile)
/*
* Otherwise we will waste time if several new docs are found,
- * because we will start to index them, only to be interupted
+ * because we will start to index them, only to be interrupted
* by the next request. Also, there is a nasty SQLITE bug that will
* cause the application to hang for minutes in that case.
* This call is reverted by initalDocSetupDone(), which must be
diff --git a/tools/configure/configure.pro b/tools/configure/configure.pro
index 810f00603d..0a49fbecc7 100644
--- a/tools/configure/configure.pro
+++ b/tools/configure/configure.pro
@@ -63,8 +63,8 @@ HEADERS = configureapp.h environment.h tools.h\
$$QT_SOURCE_TREE/src/corelib/tools/qunicodetables_p.h \
$$QT_SOURCE_TREE/src/corelib/xml/qxmlstream.h \
$$QT_SOURCE_TREE/src/corelib/xml/qxmlutils_p.h \
- $$QT_SOURCE_TREE/tools/shared/symbian/epocroot.h \
- $$QT_SOURCE_TREE/tools/shared/windows/registry.h
+ $$QT_SOURCE_TREE/tools/shared/symbian/epocroot_p.h \
+ $$QT_SOURCE_TREE/tools/shared/windows/registry_p.h
SOURCES = main.cpp configureapp.cpp environment.cpp tools.cpp \
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 3808c4e2ee..f4fd7c636b 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -3227,7 +3227,8 @@ void Configure::generateConfigfiles()
}
// Copy configured mkspec to default directory, but remove the old one first, if there is any
- QString defSpec = buildPath + "/mkspecs/default";
+ QString mkspecsPath = buildPath + "/mkspecs";
+ QString defSpec = mkspecsPath + "/default";
QFileInfo defSpecInfo(defSpec);
if (defSpecInfo.exists()) {
if (!Environment::rmdir(defSpec)) {
@@ -3237,21 +3238,22 @@ void Configure::generateConfigfiles()
}
}
- QString spec = dictionary.contains("XQMAKESPEC") ? dictionary["XQMAKESPEC"] : dictionary["QMAKESPEC"];
- QString pltSpec = sourcePath + "/mkspecs/" + spec;
- if (!Environment::cpdir(pltSpec, defSpec)) {
- cout << "Couldn't update default mkspec! Does " << qPrintable(pltSpec) << " exist?" << endl;
+ QDir mkspecsDir(mkspecsPath);
+ if (!mkspecsDir.mkdir("default")) {
+ cout << "Couldn't create default mkspec dir!" << endl;
dictionary["DONE"] = "error";
return;
}
+ QString spec = dictionary.contains("XQMAKESPEC") ? dictionary["XQMAKESPEC"] : dictionary["QMAKESPEC"];
+ QString pltSpec = sourcePath + "/mkspecs/" + spec;
outName = defSpec + "/qmake.conf";
- ::SetFileAttributes((wchar_t*)outName.utf16(), FILE_ATTRIBUTE_NORMAL);
QFile qmakeConfFile(outName);
- if (qmakeConfFile.open(QFile::Append | QFile::WriteOnly | QFile::Text)) {
+ if (qmakeConfFile.open(QFile::WriteOnly | QFile::Text)) {
QTextStream qmakeConfStream;
qmakeConfStream.setDevice(&qmakeConfFile);
- qmakeConfStream << endl << "QMAKESPEC_ORIGINAL=" << pltSpec << endl;
+ qmakeConfStream << "QMAKESPEC_ORIGINAL=" << pltSpec << endl << endl;
+ qmakeConfStream << "include(" << pltSpec << "/qmake.conf)" << endl;
qmakeConfStream.flush();
qmakeConfFile.close();
}
@@ -3331,7 +3333,7 @@ void Configure::generateConfigfiles()
if (tmpFile3.open()) {
tmpStream.setDevice(&tmpFile3);
tmpStream << "/* Evaluation license key */" << endl
- << "static const char qt_eval_key_data [512 + 12] = \"qt_qevalkey=" << licenseInfo["LICENSEKEYEXT"] << "\";" << endl;
+ << "static const volatile char qt_eval_key_data [512 + 12] = \"qt_qevalkey=" << licenseInfo["LICENSEKEYEXT"] << "\";" << endl;
tmpStream.flush();
tmpFile3.flush();
@@ -3415,7 +3417,7 @@ void Configure::displayConfig()
QString webkit = dictionary[ "WEBKIT" ];
if (webkit == "debug")
webkit = "yes (debug)";
- cout << "WebKit support.............." << webkit;
+ cout << "WebKit support.............." << webkit << endl;
}
cout << "Declarative support........." << dictionary[ "DECLARATIVE" ] << endl;
cout << "Declarative debugging......." << dictionary[ "DECLARATIVE_DEBUG" ] << endl;
diff --git a/tools/configure/environment.cpp b/tools/configure/environment.cpp
index 03fd0cc120..1866ef4123 100644
--- a/tools/configure/environment.cpp
+++ b/tools/configure/environment.cpp
@@ -60,8 +60,8 @@ using namespace std;
#include <qt_windows.h>
#endif
-#include <symbian/epocroot.h> // from tools/shared
-#include <windows/registry.h> // from tools/shared
+#include <symbian/epocroot_p.h> // from tools/shared
+#include <windows/registry_p.h> // from tools/shared
QT_BEGIN_NAMESPACE
@@ -163,7 +163,7 @@ Compiler Environment::detectCompiler()
QString paths = qgetenv("PATH");
QStringList pathlist = paths.toLower().split(";");
for(int i = 0; compiler_info[i].compiler; ++i) {
- QString productPath = readRegistryKey(HKEY_LOCAL_MACHINE, compiler_info[i].regKey).toLower();
+ QString productPath = qt_readRegistryKey(HKEY_LOCAL_MACHINE, compiler_info[i].regKey).toLower();
if (productPath.length()) {
QStringList::iterator it;
for(it = pathlist.begin(); it != pathlist.end(); ++it) {
@@ -466,8 +466,8 @@ bool Environment::rmdir(const QString &name)
QString Environment::symbianEpocRoot()
{
- // Call function defined in tools/shared/symbian/epocroot.h
- return ::epocRoot();
+ // Call function defined in tools/shared/symbian/epocroot_p.h
+ return ::qt_epocRoot();
}
QT_END_NAMESPACE
diff --git a/tools/designer/src/lib/shared/qtresourcemodel.cpp b/tools/designer/src/lib/shared/qtresourcemodel.cpp
index 709f3899f3..e3fc80505c 100644
--- a/tools/designer/src/lib/shared/qtresourcemodel.cpp
+++ b/tools/designer/src/lib/shared/qtresourcemodel.cpp
@@ -428,10 +428,10 @@ void QtResourceModelPrivate::removeOldPaths(QtResourceSet *resourceSet, const QS
void QtResourceModelPrivate::setWatcherEnabled(const QString &path, bool enable)
{
- m_fileWatcher->removePath(path);
-
- if (!enable)
+ if (!enable) {
+ m_fileWatcher->removePath(path);
return;
+ }
QFileInfo fi(path);
if (fi.exists())
diff --git a/tools/linguist/linguist/mainwindow.cpp b/tools/linguist/linguist/mainwindow.cpp
index 18baa2474b..1189b99234 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 581dc0022b..7ec6875dab 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/linguist/lrelease/lrelease.pro b/tools/linguist/lrelease/lrelease.pro
index 6beafa3a18..89694be6e6 100644
--- a/tools/linguist/lrelease/lrelease.pro
+++ b/tools/linguist/lrelease/lrelease.pro
@@ -15,6 +15,7 @@ macx:SOURCES += $$QT_SOURCE_TREE/src/corelib/io/qsettings_mac.cpp
include(../../../src/tools/bootstrap/bootstrap.pri)
include(../shared/formats.pri)
include(../shared/proparser.pri)
+include(../../shared/symbian/epocroot.pri)
win32:LIBS += -ladvapi32 # for qsettings_win.cpp
diff --git a/tools/linguist/lupdate/main.cpp b/tools/linguist/lupdate/main.cpp
index 49906e0356..76a875631b 100644
--- a/tools/linguist/lupdate/main.cpp
+++ b/tools/linguist/lupdate/main.cpp
@@ -350,6 +350,10 @@ static void processProjects(
ProFileEvaluator visitor;
visitor.setVerbose(options & Verbose);
+ QHash<QString, QStringList> lupdateConfig;
+ lupdateConfig.insert(QLatin1String("CONFIG"), QStringList(QLatin1String("lupdate_run")));
+ visitor.addVariables(lupdateConfig);
+
QFileInfo pfi(proFile);
ProFile pro(pfi.absoluteFilePath());
if (!visitor.queryProFile(&pro) || !visitor.accept(&pro)) {
diff --git a/tools/linguist/shared/ts.dtd b/tools/linguist/shared/ts.dtd
index 4d2cdeb0b5..12d3562014 100644
--- a/tools/linguist/shared/ts.dtd
+++ b/tools/linguist/shared/ts.dtd
@@ -4,8 +4,6 @@
!
! The location element is set as optional since it was introduced first in Qt 4.2.
! The userdata element is set as optional since it was introduced first in Qt 4.4.
- ! The source and translation elements are optional starting with version 3.0
- ! (Qt 4.6) to support S60 blank messages.
!
-->
<!--
@@ -36,13 +34,10 @@
language CDATA #IMPLIED>
<!-- The encoding to use in the QM file by default. Default is ISO-8859-1. -->
<!ELEMENT defaultcodec (#PCDATA) >
-<!ELEMENT context (name?, comment?, (context|message)+) >
+<!ELEMENT context (name, comment?, (context|message)+) >
<!ATTLIST context
encoding CDATA #IMPLIED>
<!ELEMENT name %evilstring; >
-<!-- If "no", then the context nesting is for informational puposes only -->
-<!ATTLIST name
- nest (yes|no) "yes">
<!-- This is "disambiguation" in the (new) API, or "msgctxt" in gettext speak -->
<!ELEMENT comment %evilstring; >
<!-- Previous content of comment (result of merge) -->
@@ -53,12 +48,13 @@
<!ELEMENT translatorcomment %evilstring; >
<!ELEMENT message (location*, source?, oldsource?, comment?, oldcomment?, extracomment?, translatorcomment?, translation?, userdata?, extra-**) >
<!--
- ! If utf8 is true, the defaultcodec is overridden and the message is encoded
- ! in UTF-8 in the QM file.
+ ! If utf8 is "true", the defaultcodec is overridden and the message is encoded
+ ! in UTF-8 in the QM file. If it is "both", both source encodings are stored
+ ! in the QM file.
-->
<!ATTLIST message
id CDATA #IMPLIED
- utf8 (true|false) "false"
+ utf8 (true|false|both) "false"
numerus (yes|no) "no">
<!ELEMENT location EMPTY>
<!--
@@ -100,14 +96,5 @@
-->
<!ELEMENT numerusform (#PCDATA|byte|lengthvariant)* >
<!ATTLIST numerusform
- plurality (nullar|singular|dual|trial|paucal|greaterpaucal|plural|greaterplural) #IMPLIED>
variants (yes|no) "no">
<!ELEMENT lengthvariant %evilstring; >
-<!--
- ! The translation variants have a priority between 1 ("highest") and 9 ("lowest")
- ! Typically longer translations get a higher priority.
- ! If omitted, the order of appearance of the variants in the TS files is used.
- -->
-<!ATTLIST lengthvariant
- priority (1|2|3|4|5|6|7|8|9) #IMPLIED>
-
diff --git a/tools/macdeployqt/shared/shared.cpp b/tools/macdeployqt/shared/shared.cpp
index 52cf04b162..c7d23c011f 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 673ed08009..31adc32ca1 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 f90fb82bd9..f3515525a6 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 efbfcf2de1..171924fa49 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/JAVATODO.txt b/tools/qdoc3/JAVATODO.txt
deleted file mode 100644
index 911b7a571f..0000000000
--- a/tools/qdoc3/JAVATODO.txt
+++ /dev/null
@@ -1,28 +0,0 @@
- * index page on "O" and downwards?
- * flag types, e.g. QTextStream::NumberFlags
- * example references qt.nokia.com/doc etc.
-
- * fix enum value table (e.g. QCoreApplication.Encoding.html)
- * check reimplementation of interface functions (e.g. QWidget::widthMM())
- * handle '::' in doc, e.g. in QAbstractEventDispatcher's detailed desc
- * make sure default constructor logic doesn't interfere with default params (e.g. QAbstractEventDispatcher ctors)
- * document default constructor provided for Java (e.g.?)
- * document "protected QAbstractEventDispatcher(QtObject.QPrivateConstructor p)" and the like
- * memory-managed, type
-
- * replace QString with String, etc.
- * nested classes
- * enum_1
-
- * fix stylesheet
- * no link to class itself
- * support \ifjava
- * add // C++
- * support Java-only /*! ... */ comments
-
- * links to property names have to be fixed
- * example: version 1 in QStyleOptionFrame
- * example: foo -> isFoo()
-
- * lowercase, and remove final stop, in \brief texts for variables and properties
- * omit "see alsos" that don't work instead of showing them as broken links
diff --git a/tools/qdoc3/TODO.txt b/tools/qdoc3/TODO.txt
index 6deeb06398..9bf4a2864f 100644
--- a/tools/qdoc3/TODO.txt
+++ b/tools/qdoc3/TODO.txt
@@ -10,8 +10,6 @@
* Don't turn X11 and similar names into links.
* Added automatic links from getters to setters and vice versa.
* Support \module and show which module each class is from.
- * Use bullet list for the list of all functions, now that
- Assistant handles these gracefully.
* Fix occasional crash caused by misuse of const_cast().
* Provide clearer error messages when resolves fail.
@@ -55,12 +53,9 @@ MUST HAVES:
* Provide a "List of all properties" page.
* expand QObjectList -> QList<QObject *>
- * make \macro work (?)
* warning for unnamed parameters in property access functions
* \center...\endcenter
- * warning for undocumented enum values
-
LINKS:
* explanation following nonstandard wording warning
@@ -74,8 +69,6 @@ LINKS:
* implement \sidebar
- * implement qbook
-
* implement \legalesefile
* show in which module each class is
@@ -92,5 +85,3 @@ NICE FEATURES:
OTHER:
* make qdoc run faster
* make sure \headerfile works even if specified after \relates
-
- * use qtstyle.css instead of inline style for each page
diff --git a/tools/qdoc3/apigenerator.cpp b/tools/qdoc3/apigenerator.cpp
deleted file mode 100644
index 41c89c766d..0000000000
--- a/tools/qdoc3/apigenerator.cpp
+++ /dev/null
@@ -1,150 +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 tools applications 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 <QFile>
-
-#include "apigenerator.h"
-#include "codemarker.h"
-#include "tree.h"
-
-QT_BEGIN_NAMESPACE
-
-static QString indentStr(int indent)
-{
- QString str;
- str.fill(QLatin1Char(' '), indent * 4);
- return str;
-}
-
-static bool lessThanName(Node *node1, Node *node2)
-{
- return node1->name() < node2->name();
-}
-
-QString ApiGenerator::format()
-{
- return QLatin1String("API");
-}
-
-void ApiGenerator::generateTree(const Tree *tree, CodeMarker *marker)
-{
- QFile outFile(QLatin1String("api"));
- outFile.open(QIODevice::WriteOnly);
-
- out.setDevice(&outFile);
- generateNode(tree->root(), marker);
- out.flush();
-}
-
-void ApiGenerator::generateNode(const Node *node, CodeMarker *marker, int indent)
-{
- if (node->access() == Node::Private)
- return;
-
- switch (node->type()) {
- case Node::Namespace:
- if (!node->name().isEmpty()) {
- out << indentStr(indent) << "Namespace: " << node->name() << "\n";
- ++indent;
- }
- break;
- case Node::Class:
- {
- const ClassNode *classe = static_cast<const ClassNode *>(node);
- out << indentStr(indent) << "Class: " << node->name();
- foreach (const RelatedClass &baseClass, classe->baseClasses()) {
- if (baseClass.access == Node::Public)
- out << " inherits " << baseClass.dataTypeWithTemplateArgs;
- }
- out << "\n";
- ++indent;
- }
- break;
- case Node::Enum:
- {
- const EnumNode *enume = static_cast<const EnumNode *>(node);
- out << indentStr(indent) << "Enum: " << node->name() << "\n";
- ++indent;
-
- QStringList enumNames;
- foreach (const EnumItem &item, enume->items())
- enumNames << item.name();
- qSort(enumNames);
-
- foreach (const QString &name, enumNames)
- out << indentStr(indent) << "Enum value: " << name << "\n";
- }
- break;
- case Node::Typedef:
- out << indentStr(indent) << "Typedef: " << node->name() << "\n";
- ++indent;
- break;
- case Node::Function:
- {
- out << indentStr(indent) << "Function: "
- << plainCode(marker->markedUpSynopsis(node, 0, CodeMarker::Detailed)) << "\n";
- ++indent;
- }
- break;
- case Node::Property:
- {
- const PropertyNode *property = static_cast<const PropertyNode *>(node);
- out << indentStr(indent) << "Property: " << property->name()
- << " type " << property->dataType() << "\n";
- ++indent;
- }
- break;
- default:
- ;
- }
-
- if (node->isInnerNode()) {
- const InnerNode *inner = static_cast<const InnerNode *>(node);
- NodeList nodes = inner->childNodes();
- qSort(nodes.begin(), nodes.end(), lessThanName);
- foreach (const Node *child, nodes)
- generateNode(child, marker, indent);
- }
-
- out.flush();
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/archiveextractor.cpp b/tools/qdoc3/archiveextractor.cpp
deleted file mode 100644
index 6d3d7368fb..0000000000
--- a/tools/qdoc3/archiveextractor.cpp
+++ /dev/null
@@ -1,108 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- archiveextractor.cpp
-*/
-
-#include "archiveextractor.h"
-
-QT_BEGIN_NAMESPACE
-
-QList<ArchiveExtractor *> ArchiveExtractor::extractors;
-
-/*!
- \class ArchiveExtractor
-
- \brief The ArchiveExtractor class is a base class for classes that
- know how to unpack a certain kind of archive file.
-
- The archive extractor contains a list of the filename extensions
- of the files that the archive extractor knows how to unpack.
-
- It maintains a static list of all the instances of ArchiveExtractor
- that have been created. It also has a static function for searching
- that list to find the archive extracter for a file with a certain
- extension.
- */
-
-/*!
- The constructor takes a list of filename extensions, which it
- copies and saves internally. This archive extractor is prepended
- to the static list.
- */
-ArchiveExtractor::ArchiveExtractor( const QStringList& extensions )
- : fileExts( extensions )
-{
- extractors.prepend( this );
-}
-
-/*!
- The destructor deletes all the filename extensions.
- */
-ArchiveExtractor::~ArchiveExtractor()
-{
- extractors.removeAll( this );
-}
-
-/*!
- This function searches the static list of archive extractors
- to find the first one that can handle \a fileName. If it finds
- an acceptable extractor, it returns a pointer to it. Otherwise
- it returns null.
- */
-ArchiveExtractor*
-ArchiveExtractor::extractorForFileName( const QString& fileName )
-{
- int dot = -1;
- while ( (dot = fileName.indexOf(QLatin1Char('.'), dot + 1)) != -1 ) {
- QString ext = fileName.mid( dot + 1 );
- QList<ArchiveExtractor *>::ConstIterator e = extractors.begin();
- while ( e != extractors.end() ) {
- if ( (*e)->fileExtensions().contains(ext) )
- return *e;
- ++e;
- }
- }
- return 0;
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/codemarker.cpp b/tools/qdoc3/codemarker.cpp
index ec86ae3f0d..f1b63466dd 100644
--- a/tools/qdoc3/codemarker.cpp
+++ b/tools/qdoc3/codemarker.cpp
@@ -40,7 +40,6 @@
****************************************************************************/
#include <QMetaObject>
-#include <QDebug>
#include "codemarker.h"
#include "config.h"
#include "node.h"
diff --git a/tools/qdoc3/codemarker.h b/tools/qdoc3/codemarker.h
index f17b28e885..029ddb92e1 100644
--- a/tools/qdoc3/codemarker.h
+++ b/tools/qdoc3/codemarker.h
@@ -107,13 +107,6 @@ struct FastSection
};
-#if 0
- const QString& name0 = "",
- const QString& divClass0 = "",
- const QString& singularMember0 = "member",
- const QString& pluralMember0 = "members")
-#endif
-
class CodeMarker
{
public:
diff --git a/tools/qdoc3/codeparser.cpp b/tools/qdoc3/codeparser.cpp
index 65d9572732..36527580b3 100644
--- a/tools/qdoc3/codeparser.cpp
+++ b/tools/qdoc3/codeparser.cpp
@@ -47,7 +47,6 @@
#include "node.h"
#include "tree.h"
#include "config.h"
-#include <QDebug>
QT_BEGIN_NAMESPACE
@@ -99,14 +98,14 @@ void CodeParser::initializeParser(const Config& config)
}
/*!
- Teerminating a code parser is trivial.
+ Terminating a code parser is trivial.
*/
void CodeParser::terminateParser()
{
// nothing.
}
-QString CodeParser::headerFileNameFilter()
+QStringList CodeParser::headerFileNameFilter()
{
return sourceFileNameFilter();
}
@@ -159,6 +158,42 @@ CodeParser *CodeParser::parserForLanguage(const QString& language)
return 0;
}
+CodeParser *CodeParser::parserForHeaderFile(const QString &filePath)
+{
+ QString fileName = QFileInfo(filePath).fileName();
+
+ QList<CodeParser *>::ConstIterator p = parsers.begin();
+ while (p != parsers.end()) {
+
+ QStringList headerPatterns = (*p)->headerFileNameFilter();
+ foreach (QString pattern, headerPatterns) {
+ QRegExp re(pattern, Qt::CaseInsensitive, QRegExp::Wildcard);
+ if (re.exactMatch(fileName))
+ return *p;
+ }
+ ++p;
+ }
+ return 0;
+}
+
+CodeParser *CodeParser::parserForSourceFile(const QString &filePath)
+{
+ QString fileName = QFileInfo(filePath).fileName();
+
+ QList<CodeParser *>::ConstIterator p = parsers.begin();
+ while (p != parsers.end()) {
+
+ QStringList sourcePatterns = (*p)->sourceFileNameFilter();
+ foreach (QString pattern, sourcePatterns) {
+ QRegExp re(pattern, Qt::CaseInsensitive, QRegExp::Wildcard);
+ if (re.exactMatch(fileName))
+ return *p;
+ }
+ ++p;
+ }
+ return 0;
+}
+
/*!
Returns the set of strings representing the common metacommands.
*/
diff --git a/tools/qdoc3/codeparser.h b/tools/qdoc3/codeparser.h
index ebba601a93..2d11ee0f69 100644
--- a/tools/qdoc3/codeparser.h
+++ b/tools/qdoc3/codeparser.h
@@ -66,8 +66,8 @@ class CodeParser
virtual void initializeParser(const Config& config);
virtual void terminateParser();
virtual QString language() = 0;
- virtual QString headerFileNameFilter();
- virtual QString sourceFileNameFilter() = 0;
+ virtual QStringList headerFileNameFilter();
+ virtual QStringList sourceFileNameFilter() = 0;
virtual void parseHeaderFile(const Location& location,
const QString& filePath, Tree *tree);
virtual void parseSourceFile(const Location& location,
@@ -78,6 +78,8 @@ class CodeParser
static void initialize(const Config& config);
static void terminate();
static CodeParser *parserForLanguage(const QString& language);
+ static CodeParser *parserForHeaderFile(const QString &filePath);
+ static CodeParser *parserForSourceFile(const QString &filePath);
static const QString titleFromName(const QString& name);
protected:
diff --git a/tools/qdoc3/command.cpp b/tools/qdoc3/command.cpp
deleted file mode 100644
index b78ad07037..0000000000
--- a/tools/qdoc3/command.cpp
+++ /dev/null
@@ -1,103 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- command.cpp
-*/
-
-#include <QProcess>
-
-#include "command.h"
-
-#include <stdlib.h>
-
-QT_BEGIN_NAMESPACE
-
-void executeCommand(const Location& location,
- const QString& format,
- const QStringList& args)
-{
- QString actualCommand;
- for (int i = 0; i < (int) format.length(); i++) {
- int ch = format[i].unicode();
- if (ch > 0 && ch < 8) {
- actualCommand += args[ch - 1];
- }
- else {
- actualCommand += format[i];
- }
- }
-
- QString toolName = actualCommand;
- int space = toolName.indexOf(QLatin1Char(' '));
- if (space != -1)
- toolName.truncate(space);
-
-#ifdef QT_BOOTSTRAPPED
- int status = system(qPrintable(actualCommand));
- int exitCode = WEXITSTATUS(status);
- if (status == -1 || exitCode != EXIT_SUCCESS)
- location.fatal(QString("Error executing '$1': $2").arg(toolName).arg(exitCode));
-#else
- QProcess process;
- process.start(QLatin1String("sh"),
- QStringList() << QLatin1String("-c") << actualCommand);
- process.waitForFinished();
-
- if (process.exitCode() == 127)
- location.fatal(tr("Couldn't launch the '%1' tool")
- .arg(toolName),
- tr("Make sure the tool is installed and in the"
- " path."));
-
- QString errors = QString::fromLocal8Bit(process.readAllStandardError());
- while (errors.endsWith(QLatin1Char('\n')))
- errors.truncate(errors.length() - 1);
- if (!errors.isEmpty())
- location.fatal(tr("The '%1' tool encountered some problems")
- .arg(toolName),
- tr("The tool was invoked like this:\n%1\n"
- "It emitted these errors:\n%2")
- .arg(actualCommand).arg(errors));
-#endif
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/config.cpp b/tools/qdoc3/config.cpp
index 4d1c3783fd..c2ab5592f8 100644
--- a/tools/qdoc3/config.cpp
+++ b/tools/qdoc3/config.cpp
@@ -49,9 +49,7 @@
#include <QTemporaryFile>
#include <QTextStream>
-#include "archiveextractor.h"
#include "config.h"
-#include "uncompressor.h"
#include <stdlib.h>
QT_BEGIN_NAMESPACE
@@ -150,7 +148,6 @@ QStringList MetaStack::getExpanded(const Location& location)
}
QT_STATIC_CONST_IMPL QString Config::dot = QLatin1String(".");
-QMap<QString, QString> Config::uncompressedFiles;
QMap<QString, QString> Config::extractedDirs;
int Config::numInstances;
@@ -178,30 +175,9 @@ Config::Config(const QString& programName)
}
/*!
- The destructor deletes all the temporary files and
- directories it built.
*/
Config::~Config()
{
- if (--numInstances == 0) {
- QMap<QString, QString>::ConstIterator f = uncompressedFiles.begin();
- while (f != uncompressedFiles.end()) {
- QDir().remove(*f);
- ++f;
- }
- uncompressedFiles.clear();
-
- QMap<QString, QString>::ConstIterator d = extractedDirs.begin();
- while (d != extractedDirs.end()) {
- removeDirContents(*d);
- QDir dir(*d);
- QString name = dir.dirName();
- dir.cdUp();
- dir.rmdir(name);
- ++d;
- }
- extractedDirs.clear();
- }
}
/*!
@@ -383,16 +359,12 @@ QSet<QString> Config::subVars(const QString& var) const
*/
QStringList Config::getAllFiles(const QString &filesVar,
const QString &dirsVar,
- const QString &defaultNameFilter,
const QSet<QString> &excludedDirs)
{
QStringList result = getStringList(filesVar);
QStringList dirs = getStringList(dirsVar);
- QString nameFilter = getString(filesVar + dot +
- QLatin1String(CONFIG_FILEEXTENSIONS));
- if (nameFilter.isEmpty())
- nameFilter = defaultNameFilter;
+ QString nameFilter = getString(filesVar + dot + QLatin1String(CONFIG_FILEEXTENSIONS));
QStringList::ConstIterator d = dirs.begin();
while (d != dirs.end()) {
@@ -456,62 +428,18 @@ QString Config::findFile(const Location& location,
QStringList::ConstIterator c = components.begin();
for (;;) {
bool isArchive = (c != components.end() - 1);
- ArchiveExtractor *extractor = 0;
QString userFriendly = *c;
- if (isArchive) {
- extractor = ArchiveExtractor::extractorForFileName(userFriendly);
- }
-
- if (extractor == 0) {
- Uncompressor *uncompressor =
- Uncompressor::uncompressorForFileName(userFriendly);
- if (uncompressor != 0) {
- QString fileNameWithCorrectExtension =
- uncompressor->uncompressedFilePath(
- fileInfo.filePath());
- QString uncompressed = uncompressedFiles[fileInfo.filePath()];
- if (uncompressed.isEmpty()) {
- uncompressed =
- QTemporaryFile(fileInfo.filePath()).fileName();
- uncompressor->uncompressFile(location,
- fileInfo.filePath(),
- uncompressed);
- uncompressedFiles[fileInfo.filePath()] = uncompressed;
- }
- fileInfo.setFile(uncompressed);
-
- if (isArchive) {
- extractor = ArchiveExtractor::extractorForFileName(
- fileNameWithCorrectExtension);
- }
- else {
- userFriendly = fileNameWithCorrectExtension;
- }
- }
- }
userFriendlyFilePath += userFriendly;
if (isArchive) {
- if (extractor == 0)
- location.fatal(tr("Unknown archive type '%1'")
- .arg(userFriendlyFilePath));
QString extracted = extractedDirs[fileInfo.filePath()];
- if (extracted.isEmpty()) {
- extracted = QTemporaryFile(fileInfo.filePath()).fileName();
- if (!QDir().mkdir(extracted))
- location.fatal(tr("Cannot create temporary directory '%1'")
- .arg(extracted));
- extractor->extractArchive(location, fileInfo.filePath(),
- extracted);
- extractedDirs[fileInfo.filePath()] = extracted;
- }
++c;
fileInfo.setFile(QDir(extracted), *c);
}
- else {
+ else
break;
- }
+
userFriendlyFilePath += "?";
}
return fileInfo.filePath();
diff --git a/tools/qdoc3/config.h b/tools/qdoc3/config.h
index 335a0d6de7..bc36f3df25 100644
--- a/tools/qdoc3/config.h
+++ b/tools/qdoc3/config.h
@@ -76,7 +76,6 @@ class Config
QSet<QString> subVars(const QString& var) const;
QStringList getAllFiles(const QString& filesVar,
const QString& dirsVar,
- const QString& defaultNameFilter,
const QSet<QString> &excludedDirs = QSet<QString>());
static QStringList getFilesHere(const QString& dir,
@@ -119,12 +118,12 @@ class Config
};
#define CONFIG_ALIAS "alias"
-#define CONFIG_APPLICATION "application"
#define CONFIG_BASE "base" // ### don't document for now
#define CONFIG_CODEINDENT "codeindent"
#define CONFIG_DEFINES "defines"
#define CONFIG_DESCRIPTION "description"
#define CONFIG_EDITION "edition"
+#define CONFIG_ENDHEADER "endheader"
#define CONFIG_EXAMPLEDIRS "exampledirs"
#define CONFIG_EXAMPLES "examples"
#define CONFIG_EXCLUDEDIRS "excludedirs"
@@ -134,6 +133,8 @@ class Config
#define CONFIG_GENERATEINDEX "generateindex"
#define CONFIG_HEADERDIRS "headerdirs"
#define CONFIG_HEADERS "headers"
+#define CONFIG_HEADERSCRIPTS "headerscripts"
+#define CONFIG_HEADERSTYLES "headerstyles"
#define CONFIG_IGNOREDIRECTIVES "ignoredirectives"
#define CONFIG_IGNORETOKENS "ignoretokens"
#define CONFIG_IMAGEDIRS "imagedirs"
@@ -143,7 +144,6 @@ class Config
#define CONFIG_MACRO "macro"
#define CONFIG_NATURALLANGUAGE "naturallanguage"
#define CONFIG_OBSOLETELINKS "obsoletelinks"
-#define CONFIG_APPLICATION "application"
#define CONFIG_OUTPUTDIR "outputdir"
#define CONFIG_OUTPUTENCODING "outputencoding"
#define CONFIG_OUTPUTLANGUAGE "outputlanguage"
@@ -160,8 +160,10 @@ class Config
#define CONFIG_SOURCES "sources"
#define CONFIG_SPURIOUS "spurious"
#define CONFIG_STYLEDIRS "styledirs"
+#define CONFIG_STYLE "style"
#define CONFIG_STYLES "styles"
#define CONFIG_STYLESHEETS "stylesheets"
+#define CONFIG_TEMPLATEDIR "templatedir"
#define CONFIG_TABSIZE "tabsize"
#define CONFIG_TAGFILE "tagfile"
#define CONFIG_TRANSLATORS "translators" // ### don't document for now
diff --git a/tools/qdoc3/cppcodemarker.cpp b/tools/qdoc3/cppcodemarker.cpp
index 3615a84add..55a455fc1c 100644
--- a/tools/qdoc3/cppcodemarker.cpp
+++ b/tools/qdoc3/cppcodemarker.cpp
@@ -43,7 +43,6 @@
cppcodemarker.cpp
*/
-#include <qdebug.h>
#include "atom.h"
#include "cppcodemarker.h"
#include "node.h"
@@ -455,21 +454,6 @@ QString CppCodeMarker::functionEndRegExp(const QString& /* funcName */)
return "^\\}$";
}
-#if 0
- FastSection privateReimpFuncs(classe,
- "Private Reimplemented Functions",
- "private reimplemented function",
- "private reimplemented functions");
- FastSection protectedReimpFuncs(classe,
- "Protected Reimplemented Functions",
- "protected reimplemented function",
- "protected reimplemented functions");
- FastSection publicReimpFuncs(classe,
- "Public Reimplemented Functions",
- "public reimplemented function",
- "public reimplemented functions");
-#endif
-
QList<Section> CppCodeMarker::sections(const InnerNode *inner,
SynopsisStyle style,
Status status)
diff --git a/tools/qdoc3/cppcodemarker.h b/tools/qdoc3/cppcodemarker.h
index 804a302a17..40695c585d 100644
--- a/tools/qdoc3/cppcodemarker.h
+++ b/tools/qdoc3/cppcodemarker.h
@@ -56,36 +56,36 @@ class CppCodeMarker : public CodeMarker
CppCodeMarker();
~CppCodeMarker();
- bool recognizeCode(const QString& code);
- bool recognizeExtension(const QString& ext);
- bool recognizeLanguage(const QString& lang);
- QString plainName(const Node *node);
- QString plainFullName(const Node *node, const Node *relative);
- QString markedUpCode(const QString& code,
- const Node *relative,
- const QString& dirPath);
- QString markedUpSynopsis(const Node *node,
- const Node *relative,
- SynopsisStyle style);
+ virtual bool recognizeCode(const QString& code);
+ virtual bool recognizeExtension(const QString& ext);
+ virtual bool recognizeLanguage(const QString& lang);
+ virtual QString plainName(const Node *node);
+ virtual QString plainFullName(const Node *node, const Node *relative);
+ virtual QString markedUpCode(const QString& code,
+ const Node *relative,
+ const QString& dirPath);
+ virtual QString markedUpSynopsis(const Node *node,
+ const Node *relative,
+ SynopsisStyle style);
#ifdef QDOC_QML
- QString markedUpQmlItem(const Node *node, bool summary);
+ virtual QString markedUpQmlItem(const Node *node, bool summary);
#endif
- QString markedUpName(const Node *node);
- QString markedUpFullName(const Node *node, const Node *relative);
- QString markedUpEnumValue(const QString &enumValue, const Node *relative);
- QString markedUpIncludes(const QStringList& includes);
- QString functionBeginRegExp(const QString& funcName);
- QString functionEndRegExp(const QString& funcName);
- QList<Section> sections(const InnerNode *innerNode,
- SynopsisStyle style,
- Status status);
- QList<Section> qmlSections(const QmlClassNode* qmlClassNode,
- SynopsisStyle style,
- const Tree* tree);
- const Node* resolveTarget(const QString& target,
- const Tree* tree,
- const Node* relative,
- const Node* self = 0);
+ virtual QString markedUpName(const Node *node);
+ virtual QString markedUpFullName(const Node *node, const Node *relative);
+ virtual QString markedUpEnumValue(const QString &enumValue, const Node *relative);
+ virtual QString markedUpIncludes(const QStringList& includes);
+ virtual QString functionBeginRegExp(const QString& funcName);
+ virtual QString functionEndRegExp(const QString& funcName);
+ virtual QList<Section> sections(const InnerNode *innerNode,
+ SynopsisStyle style,
+ Status status);
+ virtual QList<Section> qmlSections(const QmlClassNode* qmlClassNode,
+ SynopsisStyle style,
+ const Tree* tree);
+ virtual const Node* resolveTarget(const QString& target,
+ const Tree* tree,
+ const Node* relative,
+ const Node* self = 0);
private:
QString addMarkUp(const QString& protectedCode,
diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp
index a120e4566b..fce2553236 100644
--- a/tools/qdoc3/cppcodeparser.cpp
+++ b/tools/qdoc3/cppcodeparser.cpp
@@ -47,7 +47,6 @@
#include <stdio.h>
#include <errno.h>
-#include <qdebug.h>
#include "codechunk.h"
#include "config.h"
@@ -258,18 +257,18 @@ QString CppCodeParser::language()
/*!
Returns a list of extensions for header files.
*/
-QString CppCodeParser::headerFileNameFilter()
+QStringList CppCodeParser::headerFileNameFilter()
{
- return "*.ch *.h *.h++ *.hh *.hpp *.hxx";
+ return QStringList() << "*.ch" << "*.h" << "*.h++" << "*.hh" << "*.hpp" << "*.hxx";
}
/*!
Returns a list of extensions for source files, i.e. not
header files.
*/
-QString CppCodeParser::sourceFileNameFilter()
+QStringList CppCodeParser::sourceFileNameFilter()
{
- return "*.c++ *.cc *.cpp *.cxx";
+ return QStringList() << "*.c++" << "*.cc" << "*.cpp" << "*.cxx" << "*.mm";
}
/*!
@@ -966,16 +965,6 @@ void CppCodeParser::processOtherMetaCommand(const Doc& doc,
.arg(COMMAND_REIMP).arg(node->name()));
}
-#if 0
- // Reimplemented functions now reported in separate sections.
- /*
- Note: Setting the access to Private hides the documentation,
- but setting the status to Internal makes the node available
- in the XML output when the WebXMLGenerator is used.
- */
- func->setAccess(Node::Private);
- func->setStatus(Node::Internal);
-#endif
func->setReimp(true);
}
else {
diff --git a/tools/qdoc3/cppcodeparser.h b/tools/qdoc3/cppcodeparser.h
index 55d9ddf552..64e9119440 100644
--- a/tools/qdoc3/cppcodeparser.h
+++ b/tools/qdoc3/cppcodeparser.h
@@ -69,8 +69,8 @@ class CppCodeParser : public CodeParser
virtual void initializeParser(const Config& config);
virtual void terminateParser();
virtual QString language();
- virtual QString headerFileNameFilter();
- virtual QString sourceFileNameFilter();
+ virtual QStringList headerFileNameFilter();
+ virtual QStringList sourceFileNameFilter();
virtual void parseHeaderFile(const Location& location,
const QString& filePath,
Tree *tree);
diff --git a/tools/qdoc3/cpptoqsconverter.cpp b/tools/qdoc3/cpptoqsconverter.cpp
deleted file mode 100644
index 1a44c160f8..0000000000
--- a/tools/qdoc3/cpptoqsconverter.cpp
+++ /dev/null
@@ -1,415 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- cpptoqsconverter.cpp
-*/
-
-#include "config.h"
-#include "cpptoqsconverter.h"
-
-QT_BEGIN_NAMESPACE
-
-#define CONFIG_QUICK "quick"
-#define CONFIG_INDENTSIZE "indentsize"
-
-void setTabSize( int size );
-void setIndentSize( int size );
-int columnForIndex( const QString& t, int index );
-int indentForBottomLine( const QStringList& program, QChar typedIn );
-
-static QString balancedParens = "(?:[^()]+|\\([^()]*\\))*";
-
-QRegExp CppToQsConverter::qClassRegExp;
-QRegExp CppToQsConverter::addressOperatorRegExp;
-QRegExp CppToQsConverter::gulbrandsenRegExp;
-int CppToQsConverter::tabSize;
-
-ClassNode *CppToQsConverter::findClassNode( Tree *qsTree,
- const QString& qtName )
-{
- ClassNode *classe = (ClassNode *) qsTree->findNode( QStringList(qtName), Node::Class );
- if ( classe == 0 )
- classe = (ClassNode *) qsTree->findNode( QStringList(qtName.mid(1)), Node::Class );
- return classe;
-}
-
-QString CppToQsConverter::convertedDataType( Tree *qsTree,
- const QString& leftType,
- const QString& /* rightType */ )
-{
- QString s = leftType;
-
- if ( s.startsWith("const ") )
- s = s.mid( 6 );
- while ( s.endsWith("*") || s.endsWith("&") || s.endsWith(" ") )
- s.truncate( s.length() - 1 );
-
- switch ( s[0].unicode() ) {
- case 'Q':
- if ( s == "QCString" ) {
- return "String";
- } else {
- Node *node = findClassNode( qsTree, s );
- if ( node == 0 ) {
- return "";
- } else {
- return node->name();
- }
- }
- break;
- case 'b':
- if ( s == "bool" )
- return "Boolean";
- break;
- case 'c':
- if ( s == "char" ) {
- if ( leftType == "const char *" ) {
- return "String";
- } else {
- return "Number";
- }
- }
- break;
- case 'd':
- if ( s == "double" )
- return "Number";
- break;
- case 'f':
- if ( s == "float" )
- return "Number";
- case 'i':
- if ( s == "int" )
- return "Number";
- break;
- case 'l':
- if ( s == "long" || s == "long int" || s == "long long" ||
- s == "long long int" || s == "long double" )
- return "Number";
- break;
- case 's':
- if ( s == "short" || s == "short int" || s == "signed char" ||
- s == "signed short" || s == "signed short int" || s == "signed" ||
- s == "signed int" || s == "signed long" || s == "signed long int" )
- return "Number";
- break;
- case 'u':
- if ( s == "uchar" || s == "unsigned" || s == "unsigned char" ||
- s == "ushort" || s == "unsigned short" ||
- s == "unsigned short int" || s == "uint" || s == "unsigned int" ||
- s == "ulong" || s == "unsigned long" || s == "unsigned long int" )
- return "Number";
- break;
- case 'v':
- if ( s == "void" )
- return "";
- }
- return s;
-}
-
-QString CppToQsConverter::convertedCode( Tree *qsTree, const QString& code,
- const QSet<QString>& classesWithNoQ )
-{
- QString result;
- QStringList program;
- QStringList comments;
- int programWidth = 0;
-
- QStringList originalLines = code.split("\n");
- QStringList::ConstIterator ol = originalLines.begin();
- while ( ol != originalLines.end() ) {
- QString code = (*ol).trimmed();
- QString comment;
-
- int slashSlash = code.indexOf( "//" );
- if ( slashSlash != -1 ) {
- comment = code.mid( slashSlash );
- code.truncate( slashSlash );
- code = code.trimmed();
- }
-
- code = convertCodeLine( qsTree, program, code, classesWithNoQ );
- program.append( code );
-
- comment = convertComment( qsTree, comment, classesWithNoQ );
- comments.append( comment );
-
- int n = indentForBottomLine( program, QChar::Null );
- for ( int i = 0; i < n; i++ )
- program.last().prepend( " " );
-
- int width = columnForIndex( program.last(), program.last().length() );
- if ( !comment.isEmpty() && width > programWidth )
- programWidth = width;
- ++ol;
- }
-
- programWidth = ( (programWidth + (tabSize - 1) + 2) / tabSize ) * tabSize;
-
- QStringList::ConstIterator p = program.begin();
- QStringList::ConstIterator c = comments.begin();
- while ( c != comments.end() ) {
- if ( c != comments.begin() )
- result += "\n";
-
- if ( (*p).trimmed().isEmpty() ) {
- if ( !(*c).isEmpty() )
- result += *p;
- } else {
- result += *p;
- if ( !(*c).isEmpty() ) {
- int i = columnForIndex( *p, (*p).length() );
- while ( i++ < programWidth )
- result += " ";
- }
- }
- result += *c;
- ++p;
- ++c;
- }
- return result;
-}
-
-void CppToQsConverter::initialize( const Config& config )
-{
- qClassRegExp.setPattern( "\\bQ([A-Z][A-Za-z]+)\\b" );
- addressOperatorRegExp.setPattern( "([(\\s])[*&]([a-zA-Z])" );
- gulbrandsenRegExp.setPattern( "\\b::\\b|->" );
-
- tabSize = config.getInt( CONFIG_TABSIZE );
- setTabSize( tabSize );
-
- int size = config.getInt( CONFIG_QUICK + Config::dot + CONFIG_INDENTSIZE );
- if ( size > 0 )
- setIndentSize( size );
-}
-
-void CppToQsConverter::terminate()
-{
-}
-
-QString CppToQsConverter::convertCodeLine( Tree *qsTree,
- const QStringList& program,
- const QString& code,
- const QSet<QString>& classesWithNoQ )
-{
- static QString dataTypeFmt =
- "(?!return)(?:const\\b\\s*)?[A-Za-z_]+(?:\\s*[*&])?";
- static QRegExp funcPrototypeRegExp(
- "(" + dataTypeFmt + ")\\s*\\b([A-Z][a-zA-Z_0-9]*::)?"
- "([a-z][a-zA-Z_0-9]*)\\(([^);]*)(\\)?)(?:\\s*const)?" );
- static QRegExp paramRegExp(
- "^\\s*(" + dataTypeFmt + ")\\s*\\b([a-z][a-zA-Z_0-9]*)\\s*(,)?\\s*" );
- static QRegExp uninitVarRegExp(
- "(" + dataTypeFmt + ")\\s*\\b([a-z][a-zA-Z_0-9]*);" );
- static QRegExp eqVarRegExp(
- dataTypeFmt + "\\s*\\b([a-z][a-zA-Z_0-9]*)\\s*=(\\s*)(.*)" );
- static QRegExp ctorVarRegExp(
- "(" + dataTypeFmt + ")\\s*\\b([a-z][a-zA-Z_0-9]*)\\((.*)\\);" );
- static QRegExp qdebugRegExp(
- "q(?:Debug|Warning|Fatal)\\(\\s*(\"(?:\\\\.|[^\"])*\")\\s*"
- "(?:,\\s*(\\S(?:[^,]*\\S)?))?\\s*\\);" );
- static QRegExp coutRegExp( "c(?:out|err)\\b(.*);" );
- static QRegExp lshiftRegExp( "\\s*<<\\s*" );
- static QRegExp endlRegExp( "^endl$" );
-
- if ( code.isEmpty() || code == "{" || code == "}" )
- return code;
-
- QString result;
-
- if ( funcPrototypeRegExp.exactMatch(code) ) {
- QString returnType = funcPrototypeRegExp.cap( 1 );
- QString className = funcPrototypeRegExp.cap( 2 );
- QString funcName = funcPrototypeRegExp.cap( 3 );
- QString params = funcPrototypeRegExp.cap( 4 ).trimmed();
- bool toBeContinued = funcPrototypeRegExp.cap( 5 ).isEmpty();
- // ### unused
- Q_UNUSED(toBeContinued);
-
- className.replace( "::", "." );
-
- result = "function " + className + funcName + "(";
-
- if ( !params.isEmpty() && params != "void" ) {
- result += " ";
- int i = funcPrototypeRegExp.pos( 4 );
- while ( (i = paramRegExp.indexIn(code, i,
- QRegExp::CaretAtOffset)) != -1 ) {
- QString dataType = paramRegExp.cap( 1 );
- QString paramName = paramRegExp.cap( 2 );
- QString comma = paramRegExp.cap( 3 );
-
- result += paramName + " : " +
- convertedDataType( qsTree, dataType );
- if ( comma.isEmpty() )
- break;
- result += ", ";
- i += paramRegExp.matchedLength();
- }
- result += " ";
- }
-
- result += ")";
- returnType = convertedDataType( qsTree, returnType );
- if ( !returnType.isEmpty() )
- result += " : " + returnType;
- } else if ( uninitVarRegExp.exactMatch(code) ) {
- QString dataType = uninitVarRegExp.cap( 1 );
- QString varName = uninitVarRegExp.cap( 2 );
-
- result = "var " + varName;
- dataType = convertedDataType( qsTree, dataType );
- if ( !dataType.isEmpty() )
- result += " : " + dataType;
- result += ";";
- } else if ( eqVarRegExp.exactMatch(code) ) {
- QString varName = eqVarRegExp.cap( 1 );
- QString value = eqVarRegExp.cap( 3 );
-
- value = convertExpr( qsTree, value, classesWithNoQ );
- result += "var " + varName + " = " + value;
- } else if ( ctorVarRegExp.exactMatch(code) ) {
- QString dataType = ctorVarRegExp.cap( 1 );
- QString varName = ctorVarRegExp.cap( 2 );
- QString value = ctorVarRegExp.cap( 3 ).trimmed();
-
- result += "var " + varName + " = ";
-
- dataType = convertedDataType( qsTree, dataType );
- value = convertExpr( qsTree, value, classesWithNoQ );
-
- if ( dataType.isEmpty() || dataType == "String" ) {
- if ( value.contains(",") ) {
- result += "...";
- } else {
- result += value;
- }
- } else {
- result += "new " + dataType;
- if ( !value.isEmpty() )
- result += "( " + value + " )";
- }
- result += ";";
- } else if ( qdebugRegExp.exactMatch(code) ) {
- QString fmt = qdebugRegExp.cap( 1 );
- QString arg1 = qdebugRegExp.cap( 2 );
-
- result += "println ";
- int i = 0;
- while ( i < (int) fmt.length() ) {
- if ( fmt[i] == '%' ) {
- int percent = i;
- i++;
- while ( i < (int) fmt.length() &&
- QString("diouxXeEfFgGaAcsCSpn%\"").indexOf(fmt[i]) == -1 )
- i++;
- if ( fmt[i] == '%' ) {
- result += fmt[i++];
- } else if ( fmt[i] != '"' ) {
- if ( percent == 1 ) {
- result.truncate( result.length() - 1 );
- } else {
- result += "\" + ";
- }
- i++;
- if ( arg1.endsWith(".latin1()") )
- arg1.truncate( arg1.length() - 9 );
- result += arg1;
- if ( i == (int) fmt.length() - 1 ) {
- i++;
- } else {
- result += " + \"";
- }
- }
- } else {
- result += fmt[i++];
- }
- }
- result += ";";
- } else if ( coutRegExp.exactMatch(code) &&
- program.filter("var cout").isEmpty() ) {
- QStringList args = coutRegExp.cap(1).split(lshiftRegExp);
- args.replaceInStrings( endlRegExp, "\"\\n\"" );
- if ( args.last() == "\"\\n\"" ) {
- args.erase( args.end() - 1 );
- if ( args.isEmpty() )
- args << "\"\"";
- result += "println ";
- } else {
- result += "print ";
- }
- result += args.join( " + " ) + ";";
- } else {
- result = convertExpr( qsTree, code, classesWithNoQ );
- }
- return result;
-}
-
-QString CppToQsConverter::convertComment( Tree * /* qsTree */,
- const QString& comment,
- const QSet<QString>& classesWithNoQ )
-
-{
- QString result = comment;
-
- result.replace( "TRUE", "true" );
- result.replace( "FALSE", "false" );
- result.replace( addressOperatorRegExp, "\\1\\2" );
- result.replace( gulbrandsenRegExp, "." );
-
- int i = 0;
- while ( (i = result.indexOf(qClassRegExp, i)) != -1 ) {
- if ( classesWithNoQ.contains(qClassRegExp.cap(1)) )
- result.remove( i, 1 );
- i++;
- }
- return result;
-}
-
-QString CppToQsConverter::convertExpr( Tree *qsTree, const QString& expr,
- const QSet<QString>& classesWithNoQ )
-{
- // suboptimal
- return convertComment( qsTree, expr, classesWithNoQ );
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/dcfsection.cpp b/tools/qdoc3/dcfsection.cpp
deleted file mode 100644
index ea10dbf006..0000000000
--- a/tools/qdoc3/dcfsection.cpp
+++ /dev/null
@@ -1,111 +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 tools applications 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 <qfile.h>
-#include <qfileinfo.h>
-#include <qtextstream.h>
-
-#include "dcfsection.h"
-#include "htmlgenerator.h"
-
-QT_BEGIN_NAMESPACE
-
-void appendDcfSubSection( DcfSection *dcfSect, const DcfSection& sub )
-{
- dcfSect->subsections.append( sub );
-}
-
-void appendDcfSubSections( DcfSection *dcfSect, const QList<DcfSection>& subs )
-{
- dcfSect->subsections += subs;
-}
-
-void generateDcfSubSections( QString indent, QTextStream& out, const DcfSection& sect )
-{
- QList<DcfSection>::const_iterator ss = sect.subsections.constBegin();
- while ( ss != sect.subsections.constEnd() ) {
- out << indent << "<section ref=\"" << HtmlGenerator::cleanRef(HtmlGenerator::protect((*ss).ref))
- << "\" title=\"" << HtmlGenerator::protect((*ss).title) << "\"";
- if ((*ss).keywords.isEmpty() && (*ss).subsections.isEmpty()) {
- out << "/>\n";
- } else {
- out << ">\n";
- QString indentIndent = indent + " ";
- QList<QPair<QString, QString> >::const_iterator k = (*ss).keywords.constBegin();
- while ( k != (*ss).keywords.constEnd() ) {
- out << indentIndent << "<keyword ref=\"" << HtmlGenerator::cleanRef((*k).second) << "\">"
- << HtmlGenerator::protect((*k).first) << "</keyword>\n";
- ++k;
- }
-
- generateDcfSubSections( indentIndent, out, *ss );
- out << indent << "</section>\n";
- }
- ++ss;
- }
- out.flush();
-}
-
-void generateDcfSections( const DcfSection& rootSect, const QString& fileName,
- const QString& /* category */ )
-{
- QFile file(fileName);
- if (!file.open(QFile::WriteOnly | QFile::Text))
- return ;
-
- QTextStream out(&file);
-
- QString icon = QFileInfo(fileName).baseName() + ".png";
-
- out << "<!DOCTYPE DCF>\n";
- out << "<DCF ref=\"" << HtmlGenerator::cleanRef(HtmlGenerator::protect(rootSect.ref));
- if (icon != "qmake.png")
- out << "\" icon=\"" << HtmlGenerator::protect(icon);
- out << "\" imagedir=\"../../gif\" title=\"" << HtmlGenerator::protect(rootSect.title) +
- "\">\n";
-
- generateDcfSubSections( "", out, rootSect );
-
- out << "</DCF>\n";
- out.flush();
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/dcfsection.h b/tools/qdoc3/dcfsection.h
deleted file mode 100644
index 0318511e3c..0000000000
--- a/tools/qdoc3/dcfsection.h
+++ /dev/null
@@ -1,94 +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 tools applications 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 DCFSECTION_H
-#define DCFSECTION_H
-
-#include <qlist.h>
-#include <qpair.h>
-#include <qstring.h>
-
-QT_BEGIN_NAMESPACE
-
-class QTextStream;
-
-struct DcfSection
-{
- QString title;
- QString ref;
- QList<QPair<QString, QString> > keywords;
- QList<DcfSection> subsections;
-};
-
-inline bool operator<( const DcfSection& s1, const DcfSection& s2 ) {
- QString title1 = s1.title;
- QString title2 = s2.title;
-
- // cheat with Q3 classes
- if (title1.startsWith("Q3"))
- title1.insert(1, '~');
- if (title2.startsWith("Q3"))
- title2.insert(1, '~');
-
- int delta = title1.toLower().compare( title2.toLower() );
- if ( delta == 0 ) {
- delta = title1.compare( title2 );
- if ( delta == 0 )
- delta = s1.ref.localeAwareCompare( s2.ref );
- }
- return delta < 0;
-}
-
-inline bool operator>( const DcfSection& s1, const DcfSection& s2 ) { return s2 < s1; }
-inline bool operator<=( const DcfSection& s1, const DcfSection& s2 ) { return !( s2 < s1 ); }
-inline bool operator>=( const DcfSection& s1, const DcfSection& s2 ) { return !( s1 < s2 ); }
-inline bool operator==( const DcfSection& s1, const DcfSection& s2 ) { return &s1 == &s2; }
-inline bool operator!=( const DcfSection& s1, const DcfSection& s2 ) { return !( s1 == s2 ); }
-
-void appendDcfSubSection(DcfSection *dcfSect, const DcfSection &sub);
-void appendDcfSubSections(DcfSection *dcfSect, const QList<DcfSection> &subs);
-void generateDcfSubSections(QString indent, QTextStream &out, const DcfSection &sect);
-void generateDcfSections(const DcfSection &rootSect, const QString& fileName,
- const QString& category );
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/tools/qdoc3/ditaxmlgenerator.cpp b/tools/qdoc3/ditaxmlgenerator.cpp
index b4a42abab3..c7fc2a9285 100644
--- a/tools/qdoc3/ditaxmlgenerator.cpp
+++ b/tools/qdoc3/ditaxmlgenerator.cpp
@@ -554,7 +554,7 @@ GuidMap* DitaXmlGenerator::lookupGuidMap(const QString& fileName)
\note The file generation is done in the base class,
PageGenerator::generateTree().
*/
-void DitaXmlGenerator::generateTree(const Tree *tree, CodeMarker *marker)
+void DitaXmlGenerator::generateTree(const Tree *tree)
{
myTree = tree;
nonCompatClasses.clear();
@@ -2355,7 +2355,7 @@ void DitaXmlGenerator::generateTableOfContents(const Node* node,
/*!
zzz
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/ditaxmlgenerator.h b/tools/qdoc3/ditaxmlgenerator.h
index b13fa49834..322f792996 100644
--- a/tools/qdoc3/ditaxmlgenerator.h
+++ b/tools/qdoc3/ditaxmlgenerator.h
@@ -89,7 +89,7 @@ class DitaXmlGenerator : public PageGenerator
virtual void terminateGenerator();
virtual QString format();
virtual bool canHandleFormat(const QString& format);
- virtual void generateTree(const Tree* tree, CodeMarker* marker);
+ virtual void generateTree(const Tree *tree);
QString protectEnc(const QString& string);
static QString protect(const QString& string, const QString& encoding = "ISO-8859-1");
@@ -223,19 +223,19 @@ class DitaXmlGenerator : public PageGenerator
void generateStatus(const Node* node, CodeMarker* marker);
QString registerRef(const QString& ref);
- QString fileBase(const Node* node) const;
- QString fileName(const Node* node);
- void findAllClasses(const InnerNode* node);
- void findAllFunctions(const InnerNode* node);
- void findAllLegaleseTexts(const InnerNode* node);
- void findAllNamespaces(const InnerNode* node);
- void findAllSince(const InnerNode* node);
- static int hOffset(const Node* node);
- static bool isThreeColumnEnumValueTable(const Atom* atom);
- virtual QString getLink(const Atom* atom,
- const Node* relative,
- CodeMarker* marker,
- const Node** node);
+ QString fileBase(const Node *node) const;
+ QString fileName(const Node *node);
+ void findAllClasses(const InnerNode *node);
+ void findAllFunctions(const InnerNode *node);
+ void findAllLegaleseTexts(const InnerNode *node);
+ void findAllNamespaces(const InnerNode *node);
+ void findAllSince(const InnerNode *node);
+ static int hOffset(const Node *node);
+ static bool isThreeColumnEnumValueTable(const Atom *atom);
+ virtual QString getLink(const Atom *atom,
+ const Node *relative,
+ CodeMarker *marker,
+ const Node **node);
virtual void generateIndex(const QString& fileBase,
const QString& url,
const QString& title);
diff --git a/tools/qdoc3/doc.cpp b/tools/qdoc3/doc.cpp
index 4b1bec8bfc..9a154f870c 100644
--- a/tools/qdoc3/doc.cpp
+++ b/tools/qdoc3/doc.cpp
@@ -48,7 +48,6 @@
#include "text.h"
#include "tokenizer.h"
#include <qdatetime.h>
-#include <qdebug.h>
#include <qfile.h>
#include <qfileinfo.h>
#include <qhash.h>
@@ -225,13 +224,13 @@ class DocPrivateExtra
QStringMap metaMap;
DocPrivateExtra()
- : granularity(Doc::Part) { }
+ : granularity(Doc::Part) { }
};
struct Shared // ### get rid of
{
Shared()
- : count(1) { }
+ : count(1) { }
void ref() { ++count; }
bool deref() { return (--count == 0); }
@@ -301,7 +300,7 @@ void DocPrivate::addAlso(const Text& also)
void DocPrivate::constructExtra()
{
if (extra == 0)
- extra = new DocPrivateExtra;
+ extra = new DocPrivateExtra;
}
bool DocPrivate::isEnumDocSimplifiable() const
@@ -350,7 +349,7 @@ class DocParser
private:
Location& location();
QString detailsUnknownCommand(const QSet<QString>& metaCommandSet,
- const QString& str);
+ const QString& str);
void checkExpiry(const QString& date);
void insertBaseName(const QString &baseName);
void insertTarget(const QString& target, bool keyword);
@@ -367,8 +366,8 @@ class DocParser
void appendToCode(const QString &code);
void startNewPara();
void enterPara(Atom::Type leftType = Atom::ParaLeft,
- Atom::Type rightType = Atom::ParaRight,
- const QString& string = "");
+ Atom::Type rightType = Atom::ParaRight,
+ const QString& string = "");
void leavePara();
void leaveValue();
void leaveValueList();
@@ -547,15 +546,15 @@ void DocParser::parse(const QString& source,
leavePara();
append(Atom::Code, getCode(CMD_CODE, marker));
break;
-#ifdef QDOC_QML
+#ifdef QDOC_QML
case CMD_QML:
leavePara();
- append(Atom::Qml, getCode(CMD_QML, marker));
+ append(Atom::Qml, getCode(CMD_QML, CodeMarker::markerForLanguage(QLatin1String("QML"))));
break;
case CMD_QMLTEXT:
append(Atom::QmlText);
break;
-#endif
+#endif
case CMD_CODELINE:
{
if (!quoting) {
@@ -1465,35 +1464,35 @@ void DocParser::checkExpiry(const QString& date)
QRegExp ymd("(\\d{4})(?:-(\\d{2})(?:-(\\d{2})))");
if (ymd.exactMatch(date)) {
- int y = ymd.cap(1).toInt();
- int m = ymd.cap(2).toInt();
- int d = ymd.cap(3).toInt();
-
- if (m == 0)
- m = 1;
- if (d == 0)
- d = 1;
- QDate expiryDate(y, m, d);
- if (expiryDate.isValid()) {
- int days = expiryDate.daysTo(QDate::currentDate());
- if (days == 0) {
- location().warning(tr("Documentation expires today"));
- }
+ int y = ymd.cap(1).toInt();
+ int m = ymd.cap(2).toInt();
+ int d = ymd.cap(3).toInt();
+
+ if (m == 0)
+ m = 1;
+ if (d == 0)
+ d = 1;
+ QDate expiryDate(y, m, d);
+ if (expiryDate.isValid()) {
+ int days = expiryDate.daysTo(QDate::currentDate());
+ if (days == 0) {
+ location().warning(tr("Documentation expires today"));
+ }
else if (days == 1) {
- location().warning(tr("Documentation expired yesterday"));
- }
+ location().warning(tr("Documentation expired yesterday"));
+ }
else if (days >= 2) {
- location().warning(tr("Documentation expired %1 days ago")
- .arg(days));
- }
- }
+ location().warning(tr("Documentation expired %1 days ago")
+ .arg(days));
+ }
+ }
else {
- location().warning(tr("Date '%1' invalid").arg(date));
- }
+ location().warning(tr("Date '%1' invalid").arg(date));
+ }
}
else {
- location().warning(tr("Date '%1' not in YYYY-MM-DD format")
- .arg(date));
+ location().warning(tr("Date '%1' not in YYYY-MM-DD format")
+ .arg(date));
}
}
@@ -1501,34 +1500,34 @@ void DocParser::insertBaseName(const QString &baseName)
{
priv->constructExtra();
if (currentSectioningUnit == priv->extra->sectioningUnit) {
- priv->extra->baseName = baseName;
+ priv->extra->baseName = baseName;
}
else {
- Atom *atom = priv->text.firstAtom();
- Atom *sectionLeft = 0;
+ Atom *atom = priv->text.firstAtom();
+ Atom *sectionLeft = 0;
- int delta = currentSectioningUnit - priv->extra->sectioningUnit;
+ int delta = currentSectioningUnit - priv->extra->sectioningUnit;
- while (atom != 0) {
- if (atom->type() == Atom::SectionLeft &&
- atom->string().toInt() == delta)
- sectionLeft = atom;
- atom = atom->next();
- }
- if (sectionLeft != 0)
- (void) new Atom(sectionLeft, Atom::BaseName, baseName);
+ while (atom != 0) {
+ if (atom->type() == Atom::SectionLeft &&
+ atom->string().toInt() == delta)
+ sectionLeft = atom;
+ atom = atom->next();
+ }
+ if (sectionLeft != 0)
+ (void) new Atom(sectionLeft, Atom::BaseName, baseName);
}
}
void DocParser::insertTarget(const QString &target, bool keyword)
{
if (targetMap.contains(target)) {
- location().warning(tr("Duplicate target name '%1'").arg(target));
- targetMap[target].warning(tr("(The previous occurrence is here)"));
+ location().warning(tr("Duplicate target name '%1'").arg(target));
+ targetMap[target].warning(tr("(The previous occurrence is here)"));
}
else {
- targetMap.insert(target, location());
- append(Atom::Target, target);
+ targetMap.insert(target, location());
+ append(Atom::Target, target);
priv->constructExtra();
if (keyword)
priv->extra->keywords.append(priv->text.lastAtom());
@@ -1540,8 +1539,8 @@ void DocParser::insertTarget(const QString &target, bool keyword)
void DocParser::include(const QString& fileName)
{
if (location().depth() > 16)
- location().fatal(tr("Too many nested '\\%1's")
- .arg(cmdName(CMD_INCLUDE)));
+ location().fatal(tr("Too many nested '\\%1's")
+ .arg(cmdName(CMD_INCLUDE)));
QString userFriendlyFilePath;
// ### use current directory?
@@ -1551,25 +1550,25 @@ void DocParser::include(const QString& fileName)
fileName,
userFriendlyFilePath);
if (filePath.isEmpty()) {
- location().warning(tr("Cannot find leaf file '%1'").arg(fileName));
+ location().warning(tr("Cannot find leaf file '%1'").arg(fileName));
}
else {
- QFile inFile(filePath);
- if (!inFile.open(QFile::ReadOnly)) {
- location().warning(tr("Cannot open leaf file '%1'")
- .arg(userFriendlyFilePath));
- }
+ QFile inFile(filePath);
+ if (!inFile.open(QFile::ReadOnly)) {
+ location().warning(tr("Cannot open leaf file '%1'")
+ .arg(userFriendlyFilePath));
+ }
else {
- location().push(userFriendlyFilePath);
+ location().push(userFriendlyFilePath);
- QTextStream inStream(&inFile);
- QString includedStuff = inStream.readAll();
- inFile.close();
+ QTextStream inStream(&inFile);
+ QString includedStuff = inStream.readAll();
+ inFile.close();
- in.insert(pos, includedStuff);
- len = in.length();
- openedInputs.push(pos + includedStuff.length());
- }
+ in.insert(pos, includedStuff);
+ len = in.length();
+ openedInputs.push(pos + includedStuff.length());
+ }
}
}
@@ -1579,29 +1578,29 @@ void DocParser::startFormat(const QString& format, int cmd)
QMap<int, QString>::ConstIterator f = pendingFormats.begin();
while (f != pendingFormats.end()) {
- if (*f == format) {
- location().warning(tr("Cannot nest '\\%1' commands")
- .arg(cmdName(cmd)));
- return;
- }
- ++f;
+ if (*f == format) {
+ location().warning(tr("Cannot nest '\\%1' commands")
+ .arg(cmdName(cmd)));
+ return;
+ }
+ ++f;
}
append(Atom::FormattingLeft, format);
if (isLeftBraceAhead()) {
- skipSpacesOrOneEndl();
- pendingFormats.insert(braceDepth, format);
- ++braceDepth;
- ++pos;
+ skipSpacesOrOneEndl();
+ pendingFormats.insert(braceDepth, format);
+ ++braceDepth;
+ ++pos;
}
else {
- append(Atom::String, getArgument());
- append(Atom::FormattingRight, format);
- if (format == ATOM_FORMATTING_INDEX && indexStartedPara) {
- skipAllSpaces();
- indexStartedPara = false;
- }
+ append(Atom::String, getArgument());
+ append(Atom::FormattingRight, format);
+ if (format == ATOM_FORMATTING_INDEX && indexStartedPara) {
+ skipAllSpaces();
+ indexStartedPara = false;
+ }
}
}
@@ -1612,37 +1611,37 @@ bool DocParser::openCommand(int cmd)
if (cmd != CMD_LINK) {
if (outer == CMD_LIST) {
- ok = (cmd == CMD_FOOTNOTE || cmd == CMD_LIST);
+ ok = (cmd == CMD_FOOTNOTE || cmd == CMD_LIST);
}
else if (outer == CMD_ABSTRACT) {
- ok = (cmd == CMD_LIST ||
+ ok = (cmd == CMD_LIST ||
cmd == CMD_QUOTATION ||
cmd == CMD_TABLE);
}
else if (outer == CMD_SIDEBAR) {
- ok = (cmd == CMD_LIST ||
+ ok = (cmd == CMD_LIST ||
cmd == CMD_QUOTATION ||
cmd == CMD_SIDEBAR);
}
else if (outer == CMD_QUOTATION) {
- ok = (cmd == CMD_LIST);
+ ok = (cmd == CMD_LIST);
}
else if (outer == CMD_TABLE) {
- ok = (cmd == CMD_LIST ||
+ ok = (cmd == CMD_LIST ||
cmd == CMD_FOOTNOTE ||
cmd == CMD_QUOTATION);
}
else if (outer == CMD_FOOTNOTE || outer == CMD_LINK) {
- ok = false;
+ ok = false;
}
}
if (ok) {
- openedCommands.push(cmd);
+ openedCommands.push(cmd);
}
else {
- location().warning(tr("Cannot use '\\%1' within '\\%2'")
- .arg(cmdName(cmd)).arg(cmdName(outer)));
+ location().warning(tr("Cannot use '\\%1' within '\\%2'")
+ .arg(cmdName(cmd)).arg(cmdName(outer)));
}
return ok;
}
@@ -1650,33 +1649,33 @@ bool DocParser::openCommand(int cmd)
bool DocParser::closeCommand(int endCmd)
{
if (endCmdFor(openedCommands.top()) == endCmd && openedCommands.size() > 1) {
- openedCommands.pop();
- return true;
+ openedCommands.pop();
+ return true;
}
else {
- bool contains = false;
- QStack<int> opened2 = openedCommands;
- while (opened2.size() > 1) {
- if (endCmdFor(opened2.top()) == endCmd) {
- contains = true;
- break;
- }
- opened2.pop();
- }
-
- if (contains) {
- while (endCmdFor(openedCommands.top()) != endCmd && openedCommands.size() > 1) {
- location().warning(tr("Missing '\\%1' before '\\%2'")
- .arg(endCmdName(openedCommands.top()))
- .arg(cmdName(endCmd)));
- openedCommands.pop();
- }
- }
+ bool contains = false;
+ QStack<int> opened2 = openedCommands;
+ while (opened2.size() > 1) {
+ if (endCmdFor(opened2.top()) == endCmd) {
+ contains = true;
+ break;
+ }
+ opened2.pop();
+ }
+
+ if (contains) {
+ while (endCmdFor(openedCommands.top()) != endCmd && openedCommands.size() > 1) {
+ location().warning(tr("Missing '\\%1' before '\\%2'")
+ .arg(endCmdName(openedCommands.top()))
+ .arg(cmdName(endCmd)));
+ openedCommands.pop();
+ }
+ }
else {
- location().warning(tr("Unexpected '\\%1'")
- .arg(cmdName(endCmd)));
- }
- return false;
+ location().warning(tr("Unexpected '\\%1'")
+ .arg(cmdName(endCmd)));
+ }
+ return false;
}
}
@@ -1685,39 +1684,32 @@ void DocParser::startSection(Doc::SectioningUnit unit, int cmd)
leaveValueList();
if (currentSectioningUnit == Doc::Book) {
-#if 0
- // mws didn't think this was necessary.
- if (unit > Doc::Section1)
- location().warning(tr("Unexpected '\\%1' without '\\%2'")
- .arg(cmdName(cmd))
- .arg(cmdName(CMD_SECTION1)));
-#endif
- currentSectioningUnit = (Doc::SectioningUnit) (unit - 1);
- priv->constructExtra();
- priv->extra->sectioningUnit = currentSectioningUnit;
+ currentSectioningUnit = (Doc::SectioningUnit) (unit - 1);
+ priv->constructExtra();
+ priv->extra->sectioningUnit = currentSectioningUnit;
}
if (unit <= priv->extra->sectioningUnit) {
- location().warning(tr("Unexpected '\\%1' in this documentation")
- .arg(cmdName(cmd)));
+ location().warning(tr("Unexpected '\\%1' in this documentation")
+ .arg(cmdName(cmd)));
}
else if (unit - currentSectioningUnit > 1) {
- location().warning(tr("Unexpected '\\%1' at this point")
- .arg(cmdName(cmd)));
+ location().warning(tr("Unexpected '\\%1' at this point")
+ .arg(cmdName(cmd)));
}
else {
- if (currentSectioningUnit >= unit)
- endSection(unit, cmd);
+ if (currentSectioningUnit >= unit)
+ endSection(unit, cmd);
- int delta = unit - priv->extra->sectioningUnit;
- append(Atom::SectionLeft, QString::number(delta));
+ int delta = unit - priv->extra->sectioningUnit;
+ append(Atom::SectionLeft, QString::number(delta));
priv->constructExtra();
priv->extra->tableOfContents.append(priv->text.lastAtom());
priv->extra->tableOfContentsLevels.append(unit);
- enterPara(Atom::SectionHeadingLeft,
+ enterPara(Atom::SectionHeadingLeft,
Atom::SectionHeadingRight,
QString::number(delta));
- currentSectioningUnit = unit;
+ currentSectioningUnit = unit;
}
}
@@ -1726,20 +1718,20 @@ void DocParser::endSection(int unit, int endCmd)
leavePara();
if (unit < priv->extra->sectioningUnit) {
- location().warning(tr("Unexpected '\\%1' in this documentation")
- .arg(cmdName(endCmd)));
+ location().warning(tr("Unexpected '\\%1' in this documentation")
+ .arg(cmdName(endCmd)));
}
else if (unit > currentSectioningUnit) {
- location().warning(tr("Unexpected '\\%1' at this point")
- .arg(cmdName(endCmd)));
+ location().warning(tr("Unexpected '\\%1' at this point")
+ .arg(cmdName(endCmd)));
}
else {
- while (currentSectioningUnit >= unit) {
- int delta = currentSectioningUnit - priv->extra->sectioningUnit;
- append(Atom::SectionRight, QString::number(delta));
- currentSectioningUnit =
- (Doc::SectioningUnit) (currentSectioningUnit - 1);
- }
+ while (currentSectioningUnit >= unit) {
+ int delta = currentSectioningUnit - priv->extra->sectioningUnit;
+ append(Atom::SectionRight, QString::number(delta));
+ currentSectioningUnit =
+ (Doc::SectioningUnit) (currentSectioningUnit - 1);
+ }
}
}
@@ -1828,10 +1820,10 @@ void DocParser::appendChar(QChar ch)
void DocParser::appendWord(const QString &word)
{
if (priv->text.lastAtom()->type() != Atom::String) {
- append(Atom::String, word);
+ append(Atom::String, word);
}
else
- priv->text.lastAtom()->appendString(word);
+ priv->text.lastAtom()->appendString(word);
}
void DocParser::appendToCode(const QString& markedCode)
@@ -1839,10 +1831,10 @@ void DocParser::appendToCode(const QString& markedCode)
Atom::Type lastType = priv->text.lastAtom()->type();
#ifdef QDOC_QML
if (lastType != Atom::Qml)
- append(Atom::Qml);
+ append(Atom::Qml);
#else
if (lastType != Atom::Code)
- append(Atom::Code);
+ append(Atom::Code);
#endif
priv->text.lastAtom()->appendString(markedCode);
}
@@ -1860,47 +1852,44 @@ void DocParser::enterPara(Atom::Type leftType,
if (paraState == OutsidePara) {
if (priv->text.lastAtom()->type() != Atom::ListItemLeft)
leaveValueList();
- append(leftType, string);
- indexStartedPara = false;
- pendingParaLeftType = leftType;
- pendingParaRightType = rightType;
- pendingParaString = string;
- if (
-#if 0
- leftType == Atom::BriefLeft ||
-#endif
- leftType == Atom::SectionHeadingLeft) {
- paraState = InsideSingleLinePara;
- }
+ append(leftType, string);
+ indexStartedPara = false;
+ pendingParaLeftType = leftType;
+ pendingParaRightType = rightType;
+ pendingParaString = string;
+ if (
+ leftType == Atom::SectionHeadingLeft) {
+ paraState = InsideSingleLinePara;
+ }
else {
- paraState = InsideMultiLinePara;
- }
- skipSpacesOrOneEndl();
+ paraState = InsideMultiLinePara;
+ }
+ skipSpacesOrOneEndl();
}
}
void DocParser::leavePara()
{
if (paraState != OutsidePara) {
- if (!pendingFormats.isEmpty()) {
- location().warning(tr("Missing '}'"));
- pendingFormats.clear();
- }
-
- if (priv->text.lastAtom()->type() == pendingParaLeftType) {
- priv->text.stripLastAtom();
- }
+ if (!pendingFormats.isEmpty()) {
+ location().warning(tr("Missing '}'"));
+ pendingFormats.clear();
+ }
+
+ if (priv->text.lastAtom()->type() == pendingParaLeftType) {
+ priv->text.stripLastAtom();
+ }
else {
- if (priv->text.lastAtom()->type() == Atom::String &&
- priv->text.lastAtom()->string().endsWith(" ")) {
- priv->text.lastAtom()->chopString();
- }
- append(pendingParaRightType, pendingParaString);
- }
- paraState = OutsidePara;
- indexStartedPara = false;
- pendingParaRightType = Atom::Nop;
- pendingParaString = "";
+ if (priv->text.lastAtom()->type() == Atom::String &&
+ priv->text.lastAtom()->string().endsWith(" ")) {
+ priv->text.lastAtom()->chopString();
+ }
+ append(pendingParaRightType, pendingParaString);
+ }
+ paraState = OutsidePara;
+ indexStartedPara = false;
+ pendingParaRightType = Atom::Nop;
+ pendingParaString = "";
}
}
@@ -1908,13 +1897,13 @@ void DocParser::leaveValue()
{
leavePara();
if (openedLists.isEmpty()) {
- openedLists.push(OpenedList(OpenedList::Value));
- append(Atom::ListLeft, ATOM_LIST_VALUE);
+ openedLists.push(OpenedList(OpenedList::Value));
+ append(Atom::ListLeft, ATOM_LIST_VALUE);
}
else {
if (priv->text.lastAtom()->type() == Atom::Nop)
priv->text.stripLastAtom();
- append(Atom::ListItemRight, ATOM_LIST_VALUE);
+ append(Atom::ListItemRight, ATOM_LIST_VALUE);
}
}
@@ -1925,9 +1914,9 @@ void DocParser::leaveValueList()
(openedLists.top().style() == OpenedList::Value)) {
if (priv->text.lastAtom()->type() == Atom::Nop)
priv->text.stripLastAtom();
- append(Atom::ListItemRight, ATOM_LIST_VALUE);
- append(Atom::ListRight, ATOM_LIST_VALUE);
- openedLists.pop();
+ append(Atom::ListItemRight, ATOM_LIST_VALUE);
+ append(Atom::ListRight, ATOM_LIST_VALUE);
+ openedLists.pop();
}
}
@@ -1958,43 +1947,43 @@ void DocParser::expandMacro(const QString &name,
int numParams)
{
if (numParams == 0) {
- append(Atom::RawString, def);
+ append(Atom::RawString, def);
}
else {
- QStringList args;
- QString rawString;
+ QStringList args;
+ QString rawString;
- for (int i = 0; i < numParams; i++) {
- if (numParams == 1 || isLeftBraceAhead()) {
- args << getArgument(true);
- }
+ for (int i = 0; i < numParams; i++) {
+ if (numParams == 1 || isLeftBraceAhead()) {
+ args << getArgument(true);
+ }
else {
- location().warning(tr("Macro '\\%1' invoked with too few"
- " arguments (expected %2, got %3)")
- .arg(name).arg(numParams).arg(i));
- break;
- }
- }
-
- int j = 0;
- while (j < def.size()) {
- int paramNo;
- if ((def[j] == '\\') && (j < def.size() - 1) &&
+ location().warning(tr("Macro '\\%1' invoked with too few"
+ " arguments (expected %2, got %3)")
+ .arg(name).arg(numParams).arg(i));
+ break;
+ }
+ }
+
+ int j = 0;
+ while (j < def.size()) {
+ int paramNo;
+ if ((def[j] == '\\') && (j < def.size() - 1) &&
((paramNo = def[j + 1].digitValue()) >= 1) &&
(paramNo <= numParams)) {
- if (!rawString.isEmpty()) {
- append(Atom::RawString, rawString);
- rawString = "";
- }
- append(Atom::String, args[paramNo - 1]);
- j += 2;
- }
+ if (!rawString.isEmpty()) {
+ append(Atom::RawString, rawString);
+ rawString = "";
+ }
+ append(Atom::String, args[paramNo - 1]);
+ j += 2;
+ }
else {
- rawString += def[j++];
- }
- }
- if (!rawString.isEmpty())
- append(Atom::RawString, rawString);
+ rawString += def[j++];
+ }
+ }
+ if (!rawString.isEmpty())
+ append(Atom::RawString, rawString);
}
}
@@ -2003,29 +1992,29 @@ Doc::SectioningUnit DocParser::getSectioningUnit()
QString name = getOptionalArgument();
if (name == "part") {
- return Doc::Part;
+ return Doc::Part;
}
else if (name == "chapter") {
- return Doc::Chapter;
+ return Doc::Chapter;
}
else if (name == "section1") {
- return Doc::Section1;
+ return Doc::Section1;
}
else if (name == "section2") {
- return Doc::Section2;
+ return Doc::Section2;
}
else if (name == "section3") {
- return Doc::Section3;
+ return Doc::Section3;
}
else if (name == "section4") {
- return Doc::Section4;
+ return Doc::Section4;
}
else if (name.isEmpty()) {
- return Doc::Section4;
+ return Doc::Section4;
}
else {
- location().warning(tr("Invalid sectioning unit '%1'").arg(name));
- return Doc::Book;
+ location().warning(tr("Invalid sectioning unit '%1'").arg(name));
+ return Doc::Book;
}
}
@@ -2042,115 +2031,115 @@ QString DocParser::getArgument(bool verbatim)
Typically, an argument ends at the next white-space. However,
braces can be used to group words:
- {a few words}
+ {a few words}
Also, opening and closing parentheses have to match. Thus,
- printf("%d\n", x)
+ printf("%d\n", x)
is an argument too, although it contains spaces. Finally,
trailing punctuation is not included in an argument, nor is 's.
*/
if (pos < (int) in.length() && in[pos] == '{') {
- pos++;
- while (pos < (int) in.length() && delimDepth >= 0) {
- switch (in[pos].unicode()) {
- case '{':
- delimDepth++;
- arg += "{";
- pos++;
- break;
- case '}':
- delimDepth--;
- if (delimDepth >= 0)
- arg += "}";
- pos++;
- break;
- case '\\':
- if (verbatim) {
- arg += in[pos];
- pos++;
- }
+ pos++;
+ while (pos < (int) in.length() && delimDepth >= 0) {
+ switch (in[pos].unicode()) {
+ case '{':
+ delimDepth++;
+ arg += "{";
+ pos++;
+ break;
+ case '}':
+ delimDepth--;
+ if (delimDepth >= 0)
+ arg += "}";
+ pos++;
+ break;
+ case '\\':
+ if (verbatim) {
+ arg += in[pos];
+ pos++;
+ }
else {
- pos++;
- if (pos < (int) in.length()) {
- if (in[pos].isLetterOrNumber())
- break;
- arg += in[pos];
- if (in[pos].isSpace()) {
- skipAllSpaces();
- }
+ pos++;
+ if (pos < (int) in.length()) {
+ if (in[pos].isLetterOrNumber())
+ break;
+ arg += in[pos];
+ if (in[pos].isSpace()) {
+ skipAllSpaces();
+ }
else {
- pos++;
- }
- }
- }
- break;
- default:
- arg += in[pos];
- pos++;
- }
- }
- if (delimDepth > 0)
- location().warning(tr("Missing '}'"));
+ pos++;
+ }
+ }
+ }
+ break;
+ default:
+ arg += in[pos];
+ pos++;
+ }
+ }
+ if (delimDepth > 0)
+ location().warning(tr("Missing '}'"));
}
else {
- while (pos < in.length() &&
+ while (pos < in.length() &&
((delimDepth > 0) ||
((delimDepth == 0) &&
!in[pos].isSpace()))) {
- switch (in[pos].unicode()) {
- case '(':
- case '[':
- case '{':
- delimDepth++;
- arg += in[pos];
- pos++;
- break;
- case ')':
- case ']':
- case '}':
- delimDepth--;
- if (pos == startPos || delimDepth >= 0) {
- arg += in[pos];
- pos++;
- }
- break;
- case '\\':
- if (verbatim) {
- arg += in[pos];
- pos++;
- }
+ switch (in[pos].unicode()) {
+ case '(':
+ case '[':
+ case '{':
+ delimDepth++;
+ arg += in[pos];
+ pos++;
+ break;
+ case ')':
+ case ']':
+ case '}':
+ delimDepth--;
+ if (pos == startPos || delimDepth >= 0) {
+ arg += in[pos];
+ pos++;
+ }
+ break;
+ case '\\':
+ if (verbatim) {
+ arg += in[pos];
+ pos++;
+ }
else {
- pos++;
- if (pos < (int) in.length()) {
- if (in[pos].isLetterOrNumber())
- break;
- arg += in[pos];
- if (in[pos].isSpace()) {
- skipAllSpaces();
- }
+ pos++;
+ if (pos < (int) in.length()) {
+ if (in[pos].isLetterOrNumber())
+ break;
+ arg += in[pos];
+ if (in[pos].isSpace()) {
+ skipAllSpaces();
+ }
else {
- pos++;
- }
- }
- }
- break;
- default:
- arg += in[pos];
- pos++;
- }
- }
- if ((arg.length() > 1) &&
+ pos++;
+ }
+ }
+ }
+ break;
+ default:
+ arg += in[pos];
+ pos++;
+ }
+ }
+ if ((arg.length() > 1) &&
(QString(".,:;!?").indexOf(in[pos - 1]) != -1) &&
!arg.endsWith("...")) {
- arg.truncate(arg.length() - 1);
- pos--;
- }
- if (arg.length() > 2 && in.mid(pos - 2, 2) == "'s") {
- arg.truncate(arg.length() - 2);
- pos -= 2;
- }
+ arg.truncate(arg.length() - 1);
+ pos--;
+ }
+ if (arg.length() > 2 && in.mid(pos - 2, 2) == "'s") {
+ arg.truncate(arg.length() - 2);
+ pos -= 2;
+ }
}
return arg.simplified();
}
@@ -2159,11 +2148,11 @@ QString DocParser::getOptionalArgument()
{
skipSpacesOrOneEndl();
if (pos + 1 < (int) in.length() && in[pos] == '\\' &&
- in[pos + 1].isLetterOrNumber()) {
- return "";
+ in[pos + 1].isLetterOrNumber()) {
+ return "";
}
else {
- return getArgument();
+ return getArgument();
}
}
@@ -2226,7 +2215,7 @@ QString DocParser::getMetaCommandArgument(const QString &cmdStr)
else if (in.at(pos) == ')')
--parenDepth;
- ++pos;
+ ++pos;
}
if (pos == in.size() && parenDepth > 0) {
pos = begin;
@@ -2246,12 +2235,12 @@ QString DocParser::getUntilEnd(int cmd)
int end = rx.indexIn(in, pos);
if (end == -1) {
- location().warning(tr("Missing '\\%1'").arg(cmdName(endCmd)));
- pos = in.length();
+ location().warning(tr("Missing '\\%1'").arg(cmdName(endCmd)));
+ pos = in.length();
}
else {
- t = in.mid(pos, end - pos);
- pos = end + rx.matchedLength();
+ t = in.mid(pos, end - pos);
+ pos = end + rx.matchedLength();
}
return t;
}
@@ -2263,7 +2252,8 @@ QString DocParser::getCode(int cmd, CodeMarker *marker)
if (indent < minIndent)
minIndent = indent;
code = unindent(minIndent, code);
- marker = CodeMarker::markerForCode(code);
+ if (!marker)
+ marker = CodeMarker::markerForCode(code);
return marker->markedUpCode(code, 0, "");
}
@@ -2273,12 +2263,6 @@ QString DocParser::getCode(int cmd, CodeMarker *marker)
QString DocParser::getUnmarkedCode(int cmd)
{
QString code = getUntilEnd(cmd);
-#if 0
- int indent = indentLevel(code);
- if (indent < minIndent)
- minIndent = indent;
- code = unindent(minIndent, code);
-#endif
return code;
}
@@ -2287,9 +2271,9 @@ bool DocParser::isBlankLine()
int i = pos;
while (i < len && in[i].isSpace()) {
- if (in[i] == '\n')
- return true;
- i++;
+ if (in[i] == '\n')
+ return true;
+ i++;
}
return false;
}
@@ -2300,10 +2284,10 @@ bool DocParser::isLeftBraceAhead()
int i = pos;
while (i < len && in[i].isSpace() && numEndl < 2) {
- // ### bug with '\\'
- if (in[i] == '\n')
- numEndl++;
- i++;
+ // ### bug with '\\'
+ if (in[i] == '\n')
+ numEndl++;
+ i++;
}
return numEndl < 2 && i < len && in[i] == '{';
}
@@ -2313,31 +2297,31 @@ void DocParser::skipSpacesOnLine()
while ((pos < in.length()) &&
in[pos].isSpace() &&
(in[pos].unicode() != '\n'))
- ++pos;
+ ++pos;
}
void DocParser::skipSpacesOrOneEndl()
{
int firstEndl = -1;
while (pos < (int) in.length() && in[pos].isSpace()) {
- QChar ch = in[pos];
- if (ch == '\n') {
- if (firstEndl == -1) {
- firstEndl = pos;
- }
+ QChar ch = in[pos];
+ if (ch == '\n') {
+ if (firstEndl == -1) {
+ firstEndl = pos;
+ }
else {
- pos = firstEndl;
- break;
- }
- }
- pos++;
+ pos = firstEndl;
+ break;
+ }
+ }
+ pos++;
}
}
void DocParser::skipAllSpaces()
{
while (pos < len && in[pos].isSpace())
- pos++;
+ pos++;
}
void DocParser::skipToNextPreprocessorCommand()
@@ -2348,62 +2332,62 @@ void DocParser::skipToNextPreprocessorCommand()
int end = rx.indexIn(in, pos + 1); // ### + 1 necessary?
if (end == -1)
- pos = in.length();
+ pos = in.length();
else
- pos = end;
+ pos = end;
}
int DocParser::endCmdFor(int cmd)
{
switch (cmd) {
case CMD_ABSTRACT:
- return CMD_ENDABSTRACT;
+ return CMD_ENDABSTRACT;
case CMD_BADCODE:
- return CMD_ENDCODE;
+ return CMD_ENDCODE;
case CMD_CHAPTER:
- return CMD_ENDCHAPTER;
+ return CMD_ENDCHAPTER;
case CMD_CODE:
- return CMD_ENDCODE;
+ return CMD_ENDCODE;
#ifdef QDOC_QML
case CMD_QML:
- return CMD_ENDQML;
+ return CMD_ENDQML;
case CMD_QMLTEXT:
- return CMD_ENDQMLTEXT;
+ return CMD_ENDQMLTEXT;
#endif
case CMD_FOOTNOTE:
- return CMD_ENDFOOTNOTE;
+ return CMD_ENDFOOTNOTE;
case CMD_LEGALESE:
return CMD_ENDLEGALESE;
case CMD_LINK:
return CMD_ENDLINK;
case CMD_LIST:
- return CMD_ENDLIST;
+ return CMD_ENDLIST;
case CMD_NEWCODE:
return CMD_ENDCODE;
case CMD_OLDCODE:
return CMD_NEWCODE;
case CMD_OMIT:
- return CMD_ENDOMIT;
+ return CMD_ENDOMIT;
case CMD_PART:
- return CMD_ENDPART;
+ return CMD_ENDPART;
case CMD_QUOTATION:
- return CMD_ENDQUOTATION;
+ return CMD_ENDQUOTATION;
case CMD_RAW:
return CMD_ENDRAW;
case CMD_SECTION1:
- return CMD_ENDSECTION1;
+ return CMD_ENDSECTION1;
case CMD_SECTION2:
- return CMD_ENDSECTION2;
+ return CMD_ENDSECTION2;
case CMD_SECTION3:
- return CMD_ENDSECTION3;
+ return CMD_ENDSECTION3;
case CMD_SECTION4:
- return CMD_ENDSECTION4;
+ return CMD_ENDSECTION4;
case CMD_SIDEBAR:
- return CMD_ENDSIDEBAR;
+ return CMD_ENDSIDEBAR;
case CMD_TABLE:
- return CMD_ENDTABLE;
+ return CMD_ENDTABLE;
default:
- return cmd;
+ return cmd;
}
}
@@ -2457,14 +2441,14 @@ int DocParser::indentLevel(const QString& str)
int column = 0;
for (int i = 0; i < (int) str.length(); i++) {
- if (str[i] == '\n') {
- column = 0;
- }
+ if (str[i] == '\n') {
+ column = 0;
+ }
else {
- if (str[i] != ' ' && column < minIndent)
- minIndent = column;
- column++;
- }
+ if (str[i] != ' ' && column < minIndent)
+ minIndent = column;
+ column++;
+ }
}
return minIndent;
}
@@ -2472,21 +2456,21 @@ int DocParser::indentLevel(const QString& str)
QString DocParser::unindent(int level, const QString& str)
{
if (level == 0)
- return str;
+ return str;
QString t;
int column = 0;
for (int i = 0; i < (int) str.length(); i++) {
if (str[i] == QLatin1Char('\n')) {
- t += '\n';
- column = 0;
- }
+ t += '\n';
+ column = 0;
+ }
else {
- if (column >= level)
- t += str[i];
- column++;
- }
+ if (column >= level)
+ t += str[i];
+ column++;
+ }
}
return t;
}
@@ -2524,15 +2508,15 @@ Doc::Doc(const Doc& doc)
Doc::~Doc()
{
if (priv && priv->deref())
- delete priv;
+ delete priv;
}
Doc &Doc::operator=(const Doc& doc)
{
if (doc.priv)
- doc.priv->ref();
+ doc.priv->ref();
if (priv && priv->deref())
- delete priv;
+ delete priv;
priv = doc.priv;
return *this;
}
@@ -2699,18 +2683,18 @@ Text Doc::trimmedBriefText(const QString &className) const
whats = w.join(" ");
if (whats.endsWith("."))
- whats.truncate(whats.length() - 1);
+ whats.truncate(whats.length() - 1);
if (whats.isEmpty()) {
- location().warning(
+ location().warning(
tr("Nonstandard wording in '\\%1' text for '%2' (expected more text)")
.arg(COMMAND_BRIEF).arg(className));
- standardWording = false;
+ standardWording = false;
}
else
- whats[0] = whats[0].toUpper();
+ whats[0] = whats[0].toUpper();
- // ### move this once \brief is abolished for properties
+ // ### move this once \brief is abolished for properties
if (standardWording)
resultText << whats;
}
@@ -2720,29 +2704,29 @@ Text Doc::trimmedBriefText(const QString &className) const
Text Doc::legaleseText() const
{
if (priv == 0 || !priv->hasLegalese)
- return Text();
+ return Text();
else
- return body().subText(Atom::LegaleseLeft, Atom::LegaleseRight);
+ return body().subText(Atom::LegaleseLeft, Atom::LegaleseRight);
}
const QString& Doc::baseName() const
{
static QString null;
if (priv == 0 || priv->extra == 0) {
- return null;
+ return null;
}
else {
- return priv->extra->baseName;
+ return priv->extra->baseName;
}
}
Doc::SectioningUnit Doc::granularity() const
{
if (priv == 0 || priv->extra == 0) {
- return DocPrivateExtra().granularity;
+ return DocPrivateExtra().granularity;
}
else {
- return priv->extra->granularity;
+ return priv->extra->granularity;
}
}
@@ -2838,80 +2822,80 @@ void Doc::initialize(const Config& config)
QSet<QString> commands = config.subVars(CONFIG_ALIAS);
QSet<QString>::ConstIterator c = commands.begin();
while (c != commands.end()) {
- QString alias = config.getString(CONFIG_ALIAS + Config::dot + *c);
- if (reverseAliasMap.contains(alias)) {
- config.lastLocation().warning(tr("Command name '\\%1' cannot stand"
- " for both '\\%2' and '\\%3'")
- .arg(alias)
- .arg(reverseAliasMap[alias])
- .arg(*c));
- }
+ QString alias = config.getString(CONFIG_ALIAS + Config::dot + *c);
+ if (reverseAliasMap.contains(alias)) {
+ config.lastLocation().warning(tr("Command name '\\%1' cannot stand"
+ " for both '\\%2' and '\\%3'")
+ .arg(alias)
+ .arg(reverseAliasMap[alias])
+ .arg(*c));
+ }
else {
- reverseAliasMap.insert(alias, *c);
- }
- aliasMap()->insert(*c, alias);
- ++c;
+ reverseAliasMap.insert(alias, *c);
+ }
+ aliasMap()->insert(*c, alias);
+ ++c;
}
int i = 0;
while (cmds[i].english) {
- cmds[i].alias = new QString(alias(cmds[i].english));
- cmdHash()->insert(*cmds[i].alias, cmds[i].no);
+ cmds[i].alias = new QString(alias(cmds[i].english));
+ cmdHash()->insert(*cmds[i].alias, cmds[i].no);
- if (cmds[i].no != i)
- Location::internalError(tr("command %1 missing").arg(i));
- i++;
+ if (cmds[i].no != i)
+ Location::internalError(tr("command %1 missing").arg(i));
+ i++;
}
QSet<QString> macroNames = config.subVars(CONFIG_MACRO);
QSet<QString>::ConstIterator n = macroNames.begin();
while (n != macroNames.end()) {
- QString macroDotName = CONFIG_MACRO + Config::dot + *n;
- Macro macro;
- macro.numParams = -1;
- macro.defaultDef = config.getString(macroDotName);
- if (!macro.defaultDef.isEmpty()) {
- macro.defaultDefLocation = config.lastLocation();
- macro.numParams = Config::numParams(macro.defaultDef);
- }
- bool silent = false;
-
- QSet<QString> formats = config.subVars(macroDotName);
- QSet<QString>::ConstIterator f = formats.begin();
- while (f != formats.end()) {
- QString def = config.getString(macroDotName + Config::dot + *f);
- if (!def.isEmpty()) {
- macro.otherDefs.insert(*f, def);
- int m = Config::numParams(macro.defaultDef);
- if (macro.numParams == -1) {
- macro.numParams = m;
- }
+ QString macroDotName = CONFIG_MACRO + Config::dot + *n;
+ Macro macro;
+ macro.numParams = -1;
+ macro.defaultDef = config.getString(macroDotName);
+ if (!macro.defaultDef.isEmpty()) {
+ macro.defaultDefLocation = config.lastLocation();
+ macro.numParams = Config::numParams(macro.defaultDef);
+ }
+ bool silent = false;
+
+ QSet<QString> formats = config.subVars(macroDotName);
+ QSet<QString>::ConstIterator f = formats.begin();
+ while (f != formats.end()) {
+ QString def = config.getString(macroDotName + Config::dot + *f);
+ if (!def.isEmpty()) {
+ macro.otherDefs.insert(*f, def);
+ int m = Config::numParams(macro.defaultDef);
+ if (macro.numParams == -1) {
+ macro.numParams = m;
+ }
else if (macro.numParams != m) {
- if (!silent) {
- QString other = tr("default");
- if (macro.defaultDef.isEmpty())
- other = macro.otherDefs.begin().key();
- config.lastLocation().warning(tr("Macro '\\%1' takes"
- " inconsistent number"
- " of arguments (%2"
- " %3, %4 %5)")
- .arg(*n)
- .arg(*f)
- .arg(m)
- .arg(other)
- .arg(macro.numParams));
- silent = true;
- }
- if (macro.numParams < m)
- macro.numParams = m;
- }
- }
- ++f;
- }
-
- if (macro.numParams != -1)
- macroHash()->insert(*n, macro);
- ++n;
+ if (!silent) {
+ QString other = tr("default");
+ if (macro.defaultDef.isEmpty())
+ other = macro.otherDefs.begin().key();
+ config.lastLocation().warning(tr("Macro '\\%1' takes"
+ " inconsistent number"
+ " of arguments (%2"
+ " %3, %4 %5)")
+ .arg(*n)
+ .arg(*f)
+ .arg(m)
+ .arg(other)
+ .arg(macro.numParams));
+ silent = true;
+ }
+ if (macro.numParams < m)
+ macro.numParams = m;
+ }
+ }
+ ++f;
+ }
+
+ if (macro.numParams != -1)
+ macroHash()->insert(*n, macro);
+ ++n;
}
}
@@ -2951,27 +2935,27 @@ void Doc::trimCStyleComment(Location& location, QString& str)
int i;
for (i = 0; i < (int) str.length(); i++) {
- if (m.columnNo() == asterColumn) {
- if (str[i] != '*')
- break;
- cleaned += ' ';
- metAsterColumn = true;
- }
+ if (m.columnNo() == asterColumn) {
+ if (str[i] != '*')
+ break;
+ cleaned += ' ';
+ metAsterColumn = true;
+ }
else {
- if (str[i] == '\n') {
- if (!metAsterColumn)
- break;
- metAsterColumn = false;
- }
- cleaned += str[i];
- }
- m.advance(str[i]);
+ if (str[i] == '\n') {
+ if (!metAsterColumn)
+ break;
+ metAsterColumn = false;
+ }
+ cleaned += str[i];
+ }
+ m.advance(str[i]);
}
if (cleaned.length() == str.length())
- str = cleaned;
+ str = cleaned;
for (int i = 0; i < 3; i++)
- location.advance(str[i]);
+ location.advance(str[i]);
str = str.mid(3, str.length() - 5);
}
@@ -2987,19 +2971,19 @@ CodeMarker *Doc::quoteFromFile(const Location &location,
QString filePath = Config::findFile(location,
DocParser::exampleFiles,
DocParser::exampleDirs,
- fileName, userFriendlyFilePath);
+ fileName, userFriendlyFilePath);
if (filePath.isEmpty()) {
- location.warning(tr("Cannot find example file '%1'").arg(fileName));
+ location.warning(tr("Cannot find example file '%1'").arg(fileName));
}
else {
- QFile inFile(filePath);
- if (!inFile.open(QFile::ReadOnly)) {
- location.warning(tr("Cannot open example file '%1'").arg(userFriendlyFilePath));
- }
+ QFile inFile(filePath);
+ if (!inFile.open(QFile::ReadOnly)) {
+ location.warning(tr("Cannot open example file '%1'").arg(userFriendlyFilePath));
+ }
else {
- QTextStream inStream(&inFile);
- code = DocParser::untabifyEtc(inStream.readAll());
- }
+ QTextStream inStream(&inFile);
+ code = DocParser::untabifyEtc(inStream.readAll());
+ }
}
QString dirPath = QFileInfo(filePath).path();
@@ -3043,13 +3027,6 @@ QString Doc::canonicalTitle(const QString &title)
result += QLatin1Char('-');
dashAppended = true;
}
-#if 0
- // This was screwing things up.
- else {
- result += title[i];
- lastAlnum = result.size();
- }
-#endif
}
result.truncate(lastAlnum);
return result;
diff --git a/tools/qdoc3/doc/files/qt.qdocconf b/tools/qdoc3/doc/files/qt.qdocconf
index 4546c7a881..44cfbc1a7c 100644
--- a/tools/qdoc3/doc/files/qt.qdocconf
+++ b/tools/qdoc3/doc/files/qt.qdocconf
@@ -22,7 +22,7 @@ edition.DesktopLight.groups = -graphicsview-api
qhp.projects = Qt
qhp.Qt.file = qt.qhp
-qhp.Qt.namespace = com.trolltech.qt.471
+qhp.Qt.namespace = com.trolltech.qt.472
qhp.Qt.virtualFolder = qdoc
qhp.Qt.indexTitle = Qt Reference Documentation
qhp.Qt.indexRoot =
@@ -36,9 +36,9 @@ qhp.Qt.extraFiles = classic.css \
images/dynamiclayouts-example.png \
images/stylesheet-coffee-plastique.png
-qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc
-qhp.Qt.customFilters.Qt.name = Qt 4.7.1
-qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1
+qhp.Qt.filterAttributes = qt 4.7.2 qtrefdoc
+qhp.Qt.customFilters.Qt.name = Qt 4.7.2
+qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.2
qhp.Qt.subprojects = classes overviews examples
qhp.Qt.subprojects.classes.title = Classes
qhp.Qt.subprojects.classes.indexTitle = Qt's Classes
diff --git a/tools/qdoc3/doc/qdoc-manual.qdocconf b/tools/qdoc3/doc/qdoc-manual.qdocconf
index 26fd09c7e5..1e7ff017d8 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.7\">" \
- "<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.7</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/generator.cpp b/tools/qdoc3/generator.cpp
index 165bd5eecf..65b9a09c0e 100644
--- a/tools/qdoc3/generator.cpp
+++ b/tools/qdoc3/generator.cpp
@@ -181,45 +181,52 @@ void Generator::initialize(const Config &config)
++e;
}
- QStringList noExts;
- QStringList scripts =
- config.getStringList(CONFIG_SCRIPTS+Config::dot+(*g)->format());
- e = scripts.begin();
- while (e != scripts.end()) {
- QString userFriendlyFilePath;
- QString filePath = Config::findFile(config.lastLocation(),
- scriptFiles,
- scriptDirs,
- *e,
- noExts,
- userFriendlyFilePath);
- if (!filePath.isEmpty())
- Config::copyFile(config.lastLocation(),
- filePath,
- userFriendlyFilePath,
- (*g)->outputDir() +
- "/scripts");
- ++e;
- }
+ // Documentation template handling
+ QString templateDir = config.getString(
+ (*g)->format() + Config::dot + CONFIG_TEMPLATEDIR);
+
+ if (!templateDir.isEmpty()) {
+ QStringList noExts;
+ QStringList searchDirs = QStringList() << templateDir;
+ QStringList scripts =
+ config.getStringList((*g)->format()+Config::dot+CONFIG_SCRIPTS);
+ e = scripts.begin();
+ while (e != scripts.end()) {
+ QString userFriendlyFilePath;
+ QString filePath = Config::findFile(config.lastLocation(),
+ scriptFiles,
+ searchDirs,
+ *e,
+ noExts,
+ userFriendlyFilePath);
+ if (!filePath.isEmpty())
+ Config::copyFile(config.lastLocation(),
+ filePath,
+ userFriendlyFilePath,
+ (*g)->outputDir() +
+ "/scripts");
+ ++e;
+ }
- QStringList styles =
- config.getStringList(CONFIG_STYLES+Config::dot+(*g)->format());
- e = styles.begin();
- while (e != styles.end()) {
- QString userFriendlyFilePath;
- QString filePath = Config::findFile(config.lastLocation(),
- styleFiles,
- styleDirs,
- *e,
- noExts,
- userFriendlyFilePath);
- if (!filePath.isEmpty())
- Config::copyFile(config.lastLocation(),
- filePath,
- userFriendlyFilePath,
- (*g)->outputDir() +
- "/style");
- ++e;
+ QStringList styles =
+ config.getStringList((*g)->format()+Config::dot+CONFIG_STYLESHEETS);
+ e = styles.begin();
+ while (e != styles.end()) {
+ QString userFriendlyFilePath;
+ QString filePath = Config::findFile(config.lastLocation(),
+ styleFiles,
+ searchDirs,
+ *e,
+ noExts,
+ userFriendlyFilePath);
+ if (!filePath.isEmpty())
+ Config::copyFile(config.lastLocation(),
+ filePath,
+ userFriendlyFilePath,
+ (*g)->outputDir() +
+ "/style");
+ ++e;
+ }
}
}
++g;
@@ -518,7 +525,7 @@ void Generator::generateBody(const Node *node, CodeMarker *marker)
Doc::quoteFromFile(fake->doc().location(), quoter, fake->name());
QString code = quoter.quoteTo(fake->location(), "", "");
text << Atom(Atom::Code, code);
- generateText(text, fake, marker);
+ generateText(text, fake, CodeMarker::markerForFileName(fake->name()));
}
}
}
@@ -666,35 +673,6 @@ void Generator::generateExampleFiles(const FakeNode *fake, CodeMarker *marker)
generateFileList(fake, marker, Node::Image, QString("Images:"));
}
-#if 0
- QList<Generator *>::ConstIterator g = generators.begin();
- while (g != generators.end()) {
- if (outputFormats.contains((*g)->format())) {
- (*g)->initializeGenerator(config);
- QStringList extraImages =
- config.getStringList(CONFIG_EXTRAIMAGES+Config::dot+(*g)->format());
- QStringList::ConstIterator e = extraImages.begin();
- while (e != extraImages.end()) {
- QString userFriendlyFilePath;
- QString filePath = Config::findFile(config.lastLocation(),
- imageFiles,
- imageDirs,
- *e,
- imgFileExts[(*g)->format()],
- userFriendlyFilePath);
- if (!filePath.isEmpty())
- Config::copyFile(config.lastLocation(),
- filePath,
- userFriendlyFilePath,
- (*g)->outputDir() +
- "/images");
- ++e;
- }
- }
- ++g;
- }
-#endif
-
QString Generator::indent(int level, const QString& markedCode)
{
if (level == 0)
diff --git a/tools/qdoc3/generator.h b/tools/qdoc3/generator.h
index 26d526914e..1abec3fd51 100644
--- a/tools/qdoc3/generator.h
+++ b/tools/qdoc3/generator.h
@@ -78,7 +78,7 @@ class Generator
virtual void terminateGenerator();
virtual QString format() = 0;
virtual bool canHandleFormat(const QString &format) { return format == this->format(); }
- virtual void generateTree(const Tree *tree, CodeMarker *marker) = 0;
+ virtual void generateTree(const Tree *tree) = 0;
static void initialize(const Config& config);
static void terminate();
diff --git a/tools/qdoc3/helpprojectwriter.cpp b/tools/qdoc3/helpprojectwriter.cpp
index 98246c43b1..6253c584a7 100644
--- a/tools/qdoc3/helpprojectwriter.cpp
+++ b/tools/qdoc3/helpprojectwriter.cpp
@@ -41,7 +41,6 @@
#include <QHash>
#include <QMap>
-//#include <qdebug.h>
#include "atom.h"
#include "helpprojectwriter.h"
@@ -250,8 +249,9 @@ bool HelpProjectWriter::generateSection(HelpProject &project,
foreach (const QString &name, project.subprojects.keys()) {
SubProject subproject = project.subprojects[name];
// No selectors: accept all nodes.
- if (subproject.selectors.isEmpty())
+ if (subproject.selectors.isEmpty()) {
project.subprojects[name].nodes[objName] = node;
+ }
else if (subproject.selectors.contains(node->type())) {
// Accept only the node types in the selectors hash.
if (node->type() != Node::Fake)
@@ -262,9 +262,10 @@ bool HelpProjectWriter::generateSection(HelpProject &project,
const FakeNode *fakeNode = static_cast<const FakeNode *>(node);
if (subproject.selectors[node->type()].contains(fakeNode->subType()) &&
fakeNode->subType() != Node::ExternalPage &&
- !fakeNode->fullTitle().isEmpty())
+ !fakeNode->fullTitle().isEmpty()) {
project.subprojects[name].nodes[objName] = node;
+ }
}
}
}
@@ -527,13 +528,11 @@ void HelpProjectWriter::writeNode(HelpProject &project, QXmlStreamWriter &writer
writer.writeStartElement("section");
writer.writeAttribute("ref", href);
writer.writeAttribute("title", fakeNode->fullTitle());
- // qDebug() << "Title:" << fakeNode->fullTitle();
- if (fakeNode->subType() == Node::HeaderFile) {
-
+ if ((fakeNode->subType() == Node::HeaderFile) || (fakeNode->subType() == Node::QmlClass)) {
// Write subsections for all members, obsolete members and Qt 3
// members.
- if (!project.memberStatus[node].isEmpty()) {
+ if (!project.memberStatus[node].isEmpty() || (fakeNode->subType() == Node::QmlClass)) {
QString membersPath = href.left(href.size()-5) + "-members.html";
writer.writeStartElement("section");
writer.writeAttribute("ref", membersPath);
@@ -690,8 +689,9 @@ void HelpProjectWriter::generateProject(HelpProject &project)
if (subproject.sortPages) {
QStringList titles = subproject.nodes.keys();
titles.sort();
- foreach (const QString &title, titles)
+ foreach (const QString &title, titles) {
writeNode(project, writer, subproject.nodes[title]);
+ }
} else {
// Find a contents node and navigate from there, using the NextLink values.
foreach (const Node *node, subproject.nodes) {
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index c247be86eb..b5295c87b6 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -64,10 +64,6 @@ QT_BEGIN_NAMESPACE
int HtmlGenerator::id = 0;
bool HtmlGenerator::debugging_on = false;
-#if 0
-QString HtmlGenerator::divNavTop = "<div class=\"navTop\"><a href=\"#toc\"><img src=\"./images/bullet_up.png\"></a></div>";
-#endif
-
QString HtmlGenerator::divNavTop = "";
QString HtmlGenerator::sinceTitles[] =
@@ -94,7 +90,7 @@ static bool showBrokenLinks = false;
static QRegExp linkTag("(<@link node=\"([^\"]+)\">).*(</@link>)");
static QRegExp funcTag("(<@func target=\"([^\"]*)\">)(.*)(</@func>)");
static QRegExp typeTag("(<@(type|headerfile|func)(?: +[^>]*)?>)(.*)(</@\\2>)");
-static QRegExp spanTag("</@(?:comment|preprocessor|string|char)>");
+static QRegExp spanTag("</@(?:comment|preprocessor|string|char|number|op|type|name|keyword)>");
static QRegExp unknownTag("</?@[^>]*>");
bool parseArg(const QString &src,
@@ -220,8 +216,8 @@ HtmlGenerator::HtmlGenerator()
inTableHeader(false),
numTableRows(0),
threeColumnEnumValueTable(true),
- application(Online),
funcLeftParen("\\S(\\()"),
+ inObsoleteLink(false),
myTree(0),
slow(false),
obsoleteLinks(false)
@@ -264,7 +260,10 @@ void HtmlGenerator::initializeGenerator(const Config &config)
style = config.getString(HtmlGenerator::format() +
Config::dot +
- HTMLGENERATOR_STYLE);
+ CONFIG_STYLE);
+ endHeader = config.getString(HtmlGenerator::format() +
+ Config::dot +
+ CONFIG_ENDHEADER);
postHeader = config.getString(HtmlGenerator::format() +
Config::dot +
HTMLGENERATOR_POSTHEADER);
@@ -289,14 +288,6 @@ void HtmlGenerator::initializeGenerator(const Config &config)
project = config.getString(CONFIG_PROJECT);
- QString app = config.getString(CONFIG_APPLICATION);
- if (app == "online")
- application = Online;
- else if (app == "creator")
- application = Creator;
- else
- application = Creator;
-
projectDescription = config.getString(CONFIG_DESCRIPTION);
if (projectDescription.isEmpty() && !project.isEmpty())
projectDescription = project + " Reference Documentation";
@@ -337,17 +328,18 @@ void HtmlGenerator::initializeGenerator(const Config &config)
slow = config.getBool(CONFIG_SLOW);
- stylesheets = config.getStringList(HtmlGenerator::format() +
- Config::dot +
- HTMLGENERATOR_STYLESHEETS);
- customHeadElements = config.getStringList(HtmlGenerator::format() +
- Config::dot +
- HTMLGENERATOR_CUSTOMHEADELEMENTS);
codeIndent = config.getInt(CONFIG_CODEINDENT);
helpProjectWriter = new HelpProjectWriter(config,
project.toLower() +
".qhp");
+
+ // Documentation template handling
+ headerScripts = config.getString(HtmlGenerator::format() + Config::dot +
+ CONFIG_HEADERSCRIPTS);
+ headerStyles = config.getString(HtmlGenerator::format() +
+ Config::dot +
+ CONFIG_HEADERSTYLES);
}
void HtmlGenerator::terminateGenerator()
@@ -361,11 +353,11 @@ QString HtmlGenerator::format()
}
/*!
- This is where the html files and dcf files are written.
- \note The html file generation is done in the base class,
+ This is where the HTML files are written.
+ \note The HTML file generation is done in the base class,
PageGenerator::generateTree().
*/
-void HtmlGenerator::generateTree(const Tree *tree, CodeMarker *marker)
+void HtmlGenerator::generateTree(const Tree *tree)
{
myTree = tree;
nonCompatClasses.clear();
@@ -384,48 +376,11 @@ void HtmlGenerator::generateTree(const Tree *tree, CodeMarker *marker)
findAllNamespaces(tree->root());
findAllSince(tree->root());
- PageGenerator::generateTree(tree, marker);
-
- dcfClassesRoot.ref = "classes.html";
- dcfClassesRoot.title = "Classes";
- qSort(dcfClassesRoot.subsections);
-
- dcfOverviewsRoot.ref = "overviews.html";
- dcfOverviewsRoot.title = "Overviews";
- qSort(dcfOverviewsRoot.subsections);
-
- dcfExamplesRoot.ref = "examples.html";
- dcfExamplesRoot.title = "Tutorial & Examples";
- qSort(dcfExamplesRoot.subsections);
-
- DcfSection qtRoot;
- appendDcfSubSection(&qtRoot, dcfClassesRoot);
- appendDcfSubSection(&qtRoot, dcfOverviewsRoot);
- appendDcfSubSection(&qtRoot, dcfExamplesRoot);
-
- generateDcf(project.toLower().simplified().replace(" ", "-"),
- "index.html",
- projectDescription, qtRoot);
- generateDcf("designer",
- "designer-manual.html",
- "Qt Designer Manual",
- dcfDesignerRoot);
- generateDcf("linguist",
- "linguist-manual.html",
- "Qt Linguist Manual",
- dcfLinguistRoot);
- generateDcf("assistant",
- "assistant-manual.html",
- "Qt Assistant Manual",
- dcfAssistantRoot);
- generateDcf("qmake",
- "qmake-manual.html",
- "qmake Manual",
- dcfQmakeRoot);
+ PageGenerator::generateTree(tree);
QString fileBase = project.toLower().simplified().replace(" ", "-");
generateIndex(fileBase, projectUrl, projectDescription);
- generatePageIndex(outputDir() + "/" + fileBase + ".pageindex", marker);
+ generatePageIndex(outputDir() + "/" + fileBase + ".pageindex");
helpProjectWriter->generate(myTree);
}
@@ -1063,26 +1018,8 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << atom->string();
break;
case Atom::SectionLeft:
-#if 0
- {
- int nextLevel = atom->string().toInt();
- if (sectionNumber.size() < nextLevel) {
- do {
- sectionNumber.append("1");
- } while (sectionNumber.size() < nextLevel);
- }
- else {
- while (sectionNumber.size() > nextLevel) {
- sectionNumber.removeLast();
- }
- sectionNumber.last() = QString::number(sectionNumber.last().toInt() + 1);
- }
- out() << "<a name=\"sec-" << sectionNumber.join("-") << "\"></a>" << divNavTop << "\n";
- }
-#else
out() << "<a name=\"" << Doc::canonicalTitle(Text::sectionHeading(atom).toString())
<< "\"></a>" << divNavTop << "\n";
-#endif
break;
case Atom::SectionRight:
break;
@@ -1181,33 +1118,6 @@ int HtmlGenerator::generateAtom(const Atom *atom,
skipAhead = 1;
break;
case Atom::TableOfContents:
- {
- int numColumns = 1;
- const Node *node = relative;
-
- Doc::SectioningUnit sectioningUnit = Doc::Section4;
- QStringList params = atom->string().split(",");
- QString columnText = params.at(0);
- QStringList pieces = columnText.split(" ", QString::SkipEmptyParts);
- if (pieces.size() >= 2) {
- columnText = pieces.at(0);
- pieces.pop_front();
- QString path = pieces.join(" ").trimmed();
- node = findNodeForTarget(path, relative, marker, atom);
- }
-
- if (params.size() == 2) {
- numColumns = qMax(columnText.toInt(), numColumns);
- sectioningUnit = (Doc::SectioningUnit)params.at(1).toInt();
- }
-
- if (node)
- generateTableOfContents(node,
- marker,
- sectioningUnit,
- numColumns,
- relative);
- }
break;
case Atom::Target:
out() << "<a name=\"" << Doc::canonicalTitle(atom->string()) << "\"></a>";
@@ -1259,11 +1169,6 @@ void HtmlGenerator::generateClassLikeNode(const InnerNode *inner,
title = rawTitle + " Class Reference";
}
- DcfSection classSection;
- classSection.title = title;
- classSection.ref = linkForNode(inner, 0);
- classSection.keywords += qMakePair(inner->name(), classSection.ref);
-
Text subtitleText;
if (rawTitle != fullTitle)
subtitleText << "(" << Atom(Atom::AutoLink, fullTitle) << ")"
@@ -1426,8 +1331,6 @@ void HtmlGenerator::generateClassLikeNode(const InnerNode *inner,
names << plainCode(marker->markedUpEnumValue(enumName,
enume));
}
- foreach (const QString &name, names)
- classSection.keywords += qMakePair(name,linkForNode(*m,0));
}
++m;
}
@@ -1436,39 +1339,15 @@ void HtmlGenerator::generateClassLikeNode(const InnerNode *inner,
++s;
}
generateFooter(inner);
-
- if (!membersLink.isEmpty()) {
- DcfSection membersSection;
- membersSection.title = "List of all members";
- membersSection.ref = membersLink;
- appendDcfSubSection(&classSection, membersSection);
- }
- if (!obsoleteLink.isEmpty()) {
- DcfSection obsoleteSection;
- obsoleteSection.title = "Obsolete members";
- obsoleteSection.ref = obsoleteLink;
- appendDcfSubSection(&classSection, obsoleteSection);
- }
- if (!compatLink.isEmpty()) {
- DcfSection compatSection;
- compatSection.title = "Qt 3 support members";
- compatSection.ref = compatLink;
- appendDcfSubSection(&classSection, compatSection);
- }
-
- appendDcfSubSection(&dcfClassesRoot, classSection);
}
/*!
- Generate the html page for a qdoc file that doesn't map
- to an underlying c++ file.
+ Generate the HTML page for a qdoc file that doesn't map
+ to an underlying C++ file.
*/
void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
{
SubTitleSize subTitleSize = LargeSubTitle;
- DcfSection fakeSection;
- fakeSection.title = fake->fullTitle();
- fakeSection.ref = linkForNode(fake, 0);
QList<Section> sections;
QList<Section>::const_iterator s;
@@ -1482,6 +1361,9 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
else if (fake->subType() == Node::QmlBasicType) {
fullTitle = "QML Basic Type: " + fullTitle;
htmlTitle = fullTitle;
+
+ // Replace the marker with a QML code marker.
+ marker = CodeMarker::markerForLanguage(QLatin1String("QML"));
}
generateHeader(htmlTitle, fake, marker);
@@ -1495,6 +1377,9 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
qml_cn = static_cast<const QmlClassNode*>(fake);
sections = marker->qmlSections(qml_cn,CodeMarker::Summary,0);
generateTableOfContents(fake,marker,&sections);
+
+ // Replace the marker with a QML code marker.
+ marker = CodeMarker::markerForLanguage(QLatin1String("QML"));
}
else if (fake->name() != QString("index.html"))
generateTableOfContents(fake,marker,0);
@@ -1548,25 +1433,6 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
<< "Qt 3 support members</a></li>\n";
out() << "</ul>\n";
-
- if (!membersLink.isEmpty()) {
- DcfSection membersSection;
- membersSection.title = "List of all members";
- membersSection.ref = membersLink;
- appendDcfSubSection(&fakeSection, membersSection);
- }
- if (!obsoleteLink.isEmpty()) {
- DcfSection obsoleteSection;
- obsoleteSection.title = "Obsolete members";
- obsoleteSection.ref = obsoleteLink;
- appendDcfSubSection(&fakeSection, obsoleteSection);
- }
- if (!compatLink.isEmpty()) {
- DcfSection compatSection;
- compatSection.title = "Qt 3 support members";
- compatSection.ref = compatLink;
- appendDcfSubSection(&fakeSection, compatSection);
- }
}
#ifdef QDOC_QML
else if (fake->subType() == Node::QmlClass) {
@@ -1609,8 +1475,6 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
while (m != (*s).members.end()) {
generateDetailedQmlMember(*m, fake, marker);
out() << "<br/>\n";
- fakeSection.keywords += qMakePair((*m)->name(),
- linkForNode(*m,0));
++m;
}
++s;
@@ -1619,7 +1483,7 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
return;
}
#endif
-
+
sections = marker->sections(fake, CodeMarker::Summary, CodeMarker::Okay);
s = sections.begin();
while (s != sections.end()) {
@@ -1655,8 +1519,6 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
generateAnnotatedList(fake, marker, groupMembersMap);
}
- fakeSection.keywords += qMakePair(fakeSection.title, fakeSection.ref);
-
sections = marker->sections(fake, CodeMarker::Detailed, CodeMarker::Okay);
s = sections.begin();
while (s != sections.end()) {
@@ -1666,35 +1528,11 @@ void HtmlGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
NodeList::ConstIterator m = (*s).members.begin();
while (m != (*s).members.end()) {
generateDetailedMember(*m, fake, marker);
- fakeSection.keywords += qMakePair((*m)->name(), linkForNode(*m, 0));
++m;
}
++s;
}
generateFooter(fake);
-
- if (fake->subType() == Node::Example) {
- appendDcfSubSection(&dcfExamplesRoot, fakeSection);
- }
- else if (fake->subType() != Node::File) {
- QString contentsPage = fake->links().value(Node::ContentsLink).first;
-
- if (contentsPage == "Qt Designer Manual") {
- appendDcfSubSection(&dcfDesignerRoot, fakeSection);
- }
- else if (contentsPage == "Qt Linguist Manual") {
- appendDcfSubSection(&dcfLinguistRoot, fakeSection);
- }
- else if (contentsPage == "Qt Assistant Manual") {
- appendDcfSubSection(&dcfAssistantRoot, fakeSection);
- }
- else if (contentsPage == "qmake Manual") {
- appendDcfSubSection(&dcfQmakeRoot, fakeSection);
- }
- else {
- appendDcfSubSection(&dcfOverviewsRoot, fakeSection);
- }
- }
}
/*!
@@ -1788,12 +1626,10 @@ void HtmlGenerator::generateHeader(const QString& title,
out() << QString("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"%1\" lang=\"%1\">\n").arg(naturalLanguage);
out() << "<head>\n";
out() << " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n";
- QString shortVersion;
- shortVersion = project + " " + shortVersion + ": ";
if (node && !node->doc().location().isEmpty())
out() << "<!-- " << node->doc().location().fileName() << " -->\n";
- shortVersion = myTree->version();
+ QString shortVersion = myTree->version();
if (shortVersion.count(QChar('.')) == 2)
shortVersion.truncate(shortVersion.lastIndexOf(QChar('.')));
if (!shortVersion.isEmpty()) {
@@ -1805,77 +1641,22 @@ void HtmlGenerator::generateHeader(const QString& title,
// Generating page title
out() << " <title>" << shortVersion << protectEnc(title) << "</title>\n";
- // Adding style sheet
- out() << " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.css\" />\n";
- // Adding jquery and functions - providing online tools and search features
- out() << " <script src=\"scripts/jquery.js\" type=\"text/javascript\"></script>\n";
- out() << " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n";
-
-
- // Adding syntax highlighter // future release
-
- // Setting some additional style sheet related details depending on configuration (e.g. Online/Creator)
-
- switch (application) {
- case Online:
- // Adding style and js for small windows
- out() << " <script src=\"./scripts/superfish.js\" type=\"text/javascript\"></script>\n";
- out() << " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/superfish.css\" />";
- out() << " <script src=\"./scripts/narrow.js\" type=\"text/javascript\"></script>\n";
- out() << " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/narrow.css\" />\n";
- // Browser spec styles
- out() << " <!--[if IE]>\n";
- out() << "<meta name=\"MSSmartTagsPreventParsing\" content=\"true\">\n";
- out() << "<meta http-equiv=\"imagetoolbar\" content=\"no\">\n";
- out() << "<![endif]-->\n";
- out() << "<!--[if lt IE 7]>\n";
- out() << "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie6.css\">\n";
- out() << "<![endif]-->\n";
- out() << "<!--[if IE 7]>\n";
- out() << "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie7.css\">\n";
- out() << "<![endif]-->\n";
- out() << "<!--[if IE 8]>\n";
- out() << "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie8.css\">\n";
- out() << "<![endif]-->\n";
-
- out() << "</head>\n";
- // CheckEmptyAndLoadList activating search
- out() << "<body class=\"\" onload=\"CheckEmptyAndLoadList();\">\n";
- break;
- case Creator:
- out() << "</head>\n";
- out() << "<body class=\"offline narrow creator\">\n"; // offline narrow
- break;
- default:
- out() << "</head>\n";
- out() << "<body>\n";
- break;
- }
+
+ // Include style sheet and script links.
+ out() << headerStyles;
+ out() << headerScripts;
+ out() << endHeader;
#ifdef GENERATE_MAC_REFS
if (mainPage)
generateMacRef(node, marker);
#endif
- switch (application) {
- case Online:
- out() << QString(postHeader).replace("\\" + COMMAND_VERSION, myTree->version());
- generateBreadCrumbs(title,node,marker);
- out() << QString(postPostHeader).replace("\\" + COMMAND_VERSION, myTree->version());
- break;
- case Creator:
- out() << QString(creatorPostHeader).replace("\\" + COMMAND_VERSION, myTree->version());
- generateBreadCrumbs(title,node,marker);
- out() << QString(creatorPostPostHeader).replace("\\" + COMMAND_VERSION, myTree->version());
- break;
- default: // default -- not used except if one forgets to set any of the above settings to true
- out() << QString(creatorPostHeader).replace("\\" + COMMAND_VERSION, myTree->version());
- generateBreadCrumbs(title,node,marker);
- out() << QString(creatorPostPostHeader).replace("\\" + COMMAND_VERSION, myTree->version());
- break;
- }
+ out() << QString(postHeader).replace("\\" + COMMAND_VERSION, myTree->version());
+ generateBreadCrumbs(title,node,marker);
+ out() << QString(postPostHeader).replace("\\" + COMMAND_VERSION, myTree->version());
- navigationLinks.clear();
+ navigationLinks.clear();
if (node && !node->links().empty()) {
QPair<QString,QString> linkPair;
@@ -1930,10 +1711,8 @@ void HtmlGenerator::generateHeader(const QString& title,
}
}
-#if 0 // Removed for new doc format. MWS
if (node && !node->links().empty())
- out() << "<p>\n" << navigationLinks << "</p>\n";
-#endif
+ out() << "<p class=\"naviNextPrevious headerNavi\">\n" << navigationLinks << "</p><p/>\n";
}
void HtmlGenerator::generateTitle(const QString& title,
@@ -1958,35 +1737,13 @@ 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());
- switch (application) {
- case Online:
- out() << " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n";
- out() << " <script type=\"text/javascript\">\n";
- out() << " var _gaq = _gaq || [];\n";
- out() << " _gaq.push(['_setAccount', 'UA-4457116-5']);\n";
- out() << " _gaq.push(['_trackPageview']);\n";
- out() << " (function() {\n";
- out() << " var ga = document.createElement('script'); ";
- out() << "ga.type = 'text/javascript'; ga.async = true;\n";
- out() << " ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + ";
- out() << "'.google-analytics.com/ga.js';\n";
- out() << " var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n";
- out() << " })();\n";
- out() << " </script>\n";
- out() << "</body>\n";
- break;
- case Creator:
- out() << "</body>\n";
- break;
- default:
- out() << "</body>\n";
- }
- out() << "</html>\n";
+ out() << "</body>\n";
+ out() << "</html>\n";
}
void HtmlGenerator::generateBrief(const Node *node, CodeMarker *marker,
@@ -2021,91 +1778,6 @@ void HtmlGenerator::generateIncludes(const InnerNode *inner, CodeMarker *marker)
}
/*!
- Generates a table of contents beginning at \a node.
- */
-void HtmlGenerator::generateTableOfContents(const Node *node,
- CodeMarker *marker,
- Doc::SectioningUnit sectioningUnit,
- int numColumns,
- const Node *relative)
-
-{
- return;
- if (!node->doc().hasTableOfContents())
- return;
- QList<Atom *> toc = node->doc().tableOfContents();
- if (toc.isEmpty())
- return;
-
- QString nodeName = "";
- if (node != relative)
- nodeName = node->name();
-
- QStringList sectionNumber;
- int columnSize = 0;
-
- QString tdTag;
- if (numColumns > 1) {
- tdTag = "<td>"; /* width=\"" + QString::number((100 + numColumns - 1) / numColumns) + "%\">";*/
- out() << "<table class=\"toc\">\n<tr class=\"topAlign\">"
- << tdTag << "\n";
- }
-
- // disable nested links in table of contents
- inContents = true;
- inLink = true;
-
- for (int i = 0; i < toc.size(); ++i) {
- Atom *atom = toc.at(i);
-
- int nextLevel = atom->string().toInt();
- if (nextLevel > (int)sectioningUnit)
- continue;
-
- if (sectionNumber.size() < nextLevel) {
- do {
- out() << "<ul>";
- sectionNumber.append("1");
- } while (sectionNumber.size() < nextLevel);
- }
- else {
- while (sectionNumber.size() > nextLevel) {
- out() << "</ul>\n";
- sectionNumber.removeLast();
- }
- sectionNumber.last() = QString::number(sectionNumber.last().toInt() + 1);
- }
- int numAtoms;
- Text headingText = Text::sectionHeading(atom);
-
- if (sectionNumber.size() == 1 && columnSize > toc.size() / numColumns) {
- out() << "</ul></td>" << tdTag << "<ul>\n";
- columnSize = 0;
- }
- out() << "<li>";
- out() << "<a href=\""
- << nodeName
- << "#"
- << Doc::canonicalTitle(headingText.toString())
- << "\">";
- generateAtomList(headingText.firstAtom(), node, marker, true, numAtoms);
- out() << "</a></li>\n";
-
- ++columnSize;
- }
- while (!sectionNumber.isEmpty()) {
- out() << "</ul>\n";
- sectionNumber.removeLast();
- }
-
- if (numColumns > 1)
- out() << "</td></tr></table>\n";
-
- inContents = false;
- inLink = false;
-}
-
-/*!
Revised for the new doc format.
Generates a table of contents beginning at \a node.
*/
@@ -2222,39 +1894,6 @@ void HtmlGenerator::generateTableOfContents(const Node *node,
inLink = false;
}
-#if 0
-void HtmlGenerator::generateNavigationBar(const NavigationBar& bar,
- const Node *node,
- CodeMarker *marker)
-{
- if (bar.prev.begin() != 0 || bar.current.begin() != 0 ||
- bar.next.begin() != 0) {
- out() << "<p class=\"rightAlign\">";
- if (bar.prev.begin() != 0) {
-#if 0
- out() << "[<a href=\"" << section.previousBaseName()
- << ".html\">Prev: ";
- generateText(section.previousHeading(), node, marker);
- out() << "</a>]\n";
-#endif
- }
- if (fake->name() != QString("index.html")) {
- if (bar.current.begin() != 0) {
- out() << "[<a href=\"" << "home"
- << ".html\">Home</a>]\n";
- }
- if (bar.next.begin() != 0) {
- out() << "[<a href=\"" << fileBase(node, bar.next)
- << ".html\">Next: ";
- generateText(Text::sectionHeading(bar.next.begin()), node, marker);
- out() << "</a>]\n";
- }
- out() << "</p>\n";
- }
- }
-}
-#endif
-
QString HtmlGenerator::generateListOfAllMemberFile(const InnerNode *inner,
CodeMarker *marker)
{
@@ -3214,23 +2853,40 @@ QString HtmlGenerator::highlightedCode(const QString& markedCode,
// "<@preprocessor>" -> "<span class=\"preprocessor\">";
// "<@string>" -> "<span class=\"string\">";
// "<@char>" -> "<span class=\"char\">";
- // "</@(?:comment|preprocessor|string|char)>" -> "</span>"
+ // "<@number>" -> "<span class=\"number\">";
+ // "<@op>" -> "<span class=\"operator\">";
+ // "<@type>" -> "<span class=\"type\">";
+ // "<@name>" -> "<span class=\"name\">";
+ // "<@keyword>" -> "<span class=\"keyword\">";
+ // "</@(?:comment|preprocessor|string|char|number|op|type|name|keyword)>" -> "</span>"
src = html;
html = QString();
static const QString spanTags[] = {
- "<@comment>", "<span class=\"comment\">",
- "<@preprocessor>", "<span class=\"preprocessor\">",
- "<@string>", "<span class=\"string\">",
- "<@char>", "<span class=\"char\">",
- "</@comment>", "</span>",
- "</@preprocessor>","</span>",
- "</@string>", "</span>",
- "</@char>", "</span>"
+ "<@comment>", "<span class=\"comment\">",
+ "<@preprocessor>", "<span class=\"preprocessor\">",
+ "<@string>", "<span class=\"string\">",
+ "<@char>", "<span class=\"char\">",
+ "<@number>", "<span class=\"number\">",
+ "<@op>", "<span class=\"operator\">",
+ "<@type>", "<span class=\"type\">",
+ "<@name>", "<span class=\"name\">",
+ "<@keyword>", "<span class=\"keyword\">",
+ "</@comment>", "</span>",
+ "</@preprocessor>", "</span>",
+ "</@string>", "</span>",
+ "</@char>", "</span>",
+ "</@number>", "</span>",
+ "</@op>", "</span>",
+ "</@type>", "</span>",
+ "</@name>", "</span>",
+ "</@keyword>", "</span>",
};
+ // Update the upper bound of k in the following code to match the length
+ // of the above array.
for (int i = 0, n = src.size(); i < n;) {
if (src.at(i) == charLangle) {
bool handled = false;
- for (int k = 0; k != 8; ++k) {
+ for (int k = 0; k != 18; ++k) {
const QString & tag = spanTags[2 * k];
if (tag == QStringRef(&src, i, tag.length())) {
html += spanTags[2 * k + 1];
@@ -3281,18 +2937,6 @@ void HtmlGenerator::generateLink(const Atom* atom,
}
inLink = false;
out() << protectEnc(atom->string().mid(k));
- } else if (marker->recognizeLanguage("Java")) {
- // hack for Java: remove () and use <tt> when appropriate
- bool func = atom->string().endsWith("()");
- bool tt = (func || atom->string().contains(camelCase));
- if (tt)
- out() << "<tt>";
- if (func) {
- out() << protectEnc(atom->string().left(atom->string().length() - 2));
- } else {
- out() << protectEnc(atom->string());
- }
- out() << "</tt>";
} else {
out() << protectEnc(atom->string());
}
@@ -3437,29 +3081,6 @@ QString HtmlGenerator::fileBase(const Node *node) const
return result;
}
-#if 0
-QString HtmlGenerator::fileBase(const Node *node,
- const SectionIterator& section) const
-{
- QStringList::ConstIterator s = section.sectionNumber().end();
- QStringList::ConstIterator b = section.baseNameStack().end();
-
- QString suffix;
- QString base = fileBase(node);
-
- while (s != section.sectionNumber().begin()) {
- --s;
- --b;
- if (!(*b).isEmpty()) {
- base = *b;
- break;
- }
- suffix.prepend("-" + *s);
- }
- return base + suffix;
-}
-#endif
-
QString HtmlGenerator::fileName(const Node *node)
{
if (node->type() == Node::Fake) {
@@ -3549,10 +3170,7 @@ QString HtmlGenerator::linkForNode(const Node *node, const Node *relative)
fn = fileName(node);
/* if (!node->url().isEmpty())
return fn;*/
-#if 0
- // ### reintroduce this test, without breaking .dcf files
- if (fn != outFileName())
-#endif
+
link += fn;
if (!node->isInnerNode() || node->subType() == Node::QmlPropertyGroup) {
@@ -3722,7 +3340,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));
@@ -4013,14 +3635,6 @@ QString HtmlGenerator::getLink(const Atom *atom,
<< (*node)->name() << "no relative";
}
}
-#if 0
- else if ((*node)->status() == Node::Deprecated) {
- qDebug() << "Link to Deprecated entity";
- }
- else if ((*node)->status() == Node::Internal) {
- qDebug() << "Link to Internal entity";
- }
-#endif
}
while (!path.isEmpty()) {
@@ -4041,16 +3655,6 @@ QString HtmlGenerator::getLink(const Atom *atom,
return link;
}
-void HtmlGenerator::generateDcf(const QString &fileBase,
- const QString &startPage,
- const QString &title,
- DcfSection &dcfRoot)
-{
- dcfRoot.ref = startPage;
- dcfRoot.title = title;
- generateDcfSections(dcfRoot, outputDir() + "/" + fileBase + ".dcf", fileBase + "/reference");
-}
-
void HtmlGenerator::generateIndex(const QString &fileBase,
const QString &url,
const QString &title)
@@ -4236,7 +3840,7 @@ void HtmlGenerator::generateDetailedQmlMember(const Node *node,
if (qpgn->isDefault())
out() << "<span class=\"qmldefault\">default</span>";
generateQmlItem(qpn, relative, marker, false);
- out() << "</td></tr>";
+ out() << "</p></td></tr>";
}
++p;
}
@@ -4577,12 +4181,14 @@ void HtmlGenerator::generatePageElements(QXmlStreamWriter& writer, const Node* n
/*!
Outputs the file containing the index used for searching the html docs.
*/
-void HtmlGenerator::generatePageIndex(const QString& fileName, CodeMarker* marker) const
+void HtmlGenerator::generatePageIndex(const QString& fileName) const
{
QFile file(fileName);
if (!file.open(QFile::WriteOnly | QFile::Text))
return ;
+ CodeMarker *marker = CodeMarker::markerForFileName(fileName);
+
QXmlStreamWriter writer(&file);
writer.setAutoFormatting(true);
writer.writeStartDocument();
diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h
index 430aca27b6..8b5c50b4ff 100644
--- a/tools/qdoc3/htmlgenerator.h
+++ b/tools/qdoc3/htmlgenerator.h
@@ -52,20 +52,10 @@
#include "codemarker.h"
#include "config.h"
-#include "dcfsection.h"
#include "pagegenerator.h"
QT_BEGIN_NAMESPACE
-#if 0
-struct NavigationBar
-{
- SectionIterator prev;
- SectionIterator current;
- SectionIterator next;
-};
-#endif
-
typedef QMultiMap<QString, Node*> NodeMultiMap;
typedef QMap<QString, NodeMultiMap> NewSinceMaps;
typedef QMap<Node*, NodeMultiMap> ParentMaps;
@@ -95,10 +85,6 @@ class HtmlGenerator : public PageGenerator
LastSinceType
};
- enum Application {
- Online,
- Creator};
-
public:
HtmlGenerator();
~HtmlGenerator();
@@ -106,7 +92,7 @@ class HtmlGenerator : public PageGenerator
virtual void initializeGenerator(const Config& config);
virtual void terminateGenerator();
virtual QString format();
- virtual void generateTree(const Tree *tree, CodeMarker *marker);
+ virtual void generateTree(const Tree *tree);
QString protectEnc(const QString &string);
static QString protect(const QString &string, const QString &encoding = "ISO-8859-1");
@@ -155,16 +141,6 @@ class HtmlGenerator : public PageGenerator
CodeMarker *marker,
const Node *relative = 0);
void generateIncludes(const InnerNode *inner, CodeMarker *marker);
-#if 0
- void generateNavigationBar(const NavigationBar& bar,
- const Node *node,
- CodeMarker *marker);
-#endif
- void generateTableOfContents(const Node *node,
- CodeMarker *marker,
- Doc::SectioningUnit sectioningUnit,
- int numColumns,
- const Node *relative = 0);
void generateTableOfContents(const Node *node,
CodeMarker *marker,
QList<Section>* sections = 0);
@@ -241,10 +217,7 @@ class HtmlGenerator : public PageGenerator
void generateStatus(const Node *node, CodeMarker *marker);
QString registerRef(const QString& ref);
- QString fileBase(const Node *node) const;
-#if 0
- QString fileBase(const Node *node, const SectionIterator& section) const;
-#endif
+ virtual QString fileBase(const Node *node) const;
QString fileName(const Node *node);
void findAllClasses(const InnerNode *node);
void findAllFunctions(const InnerNode *node);
@@ -257,9 +230,6 @@ class HtmlGenerator : public PageGenerator
const Node *relative,
CodeMarker *marker,
const Node** node);
- virtual void generateDcf(const QString &fileBase,
- const QString &startPage,
- const QString &title, DcfSection &dcfRoot);
virtual void generateIndex(const QString &fileBase,
const QString &url,
const QString &title);
@@ -277,22 +247,11 @@ class HtmlGenerator : public PageGenerator
void generatePageElements(QXmlStreamWriter& writer,
const Node* node,
CodeMarker* marker) const;
- void generatePageIndex(const QString& fileName,
- CodeMarker* marker) const;
+ void generatePageIndex(const QString& fileName) const;
void generateExtractionMark(const Node *node, ExtractionMarkType markType);
-#if 0
- NavigationBar currentNavigationBar;
-#endif
QMap<QString, QString> refMap;
int codeIndent;
- DcfSection dcfClassesRoot;
- DcfSection dcfOverviewsRoot;
- DcfSection dcfExamplesRoot;
- DcfSection dcfDesignerRoot;
- DcfSection dcfLinguistRoot;
- DcfSection dcfAssistantRoot;
- DcfSection dcfQmakeRoot;
HelpProjectWriter *helpProjectWriter;
bool inLink;
bool inObsoleteLink;
@@ -301,11 +260,13 @@ class HtmlGenerator : public PageGenerator
bool inTableHeader;
int numTableRows;
bool threeColumnEnumValueTable;
- Application application;
QString link;
QStringList sectionNumber;
QRegExp funcLeftParen;
QString style;
+ QString headerScripts;
+ QString headerStyles;
+ QString endHeader;
QString postHeader;
QString postPostHeader;
QString creatorPostHeader;
@@ -350,9 +311,6 @@ class HtmlGenerator : public PageGenerator
#define HTMLGENERATOR_POSTPOSTHEADER "postpostheader"
#define HTMLGENERATOR_CREATORPOSTHEADER "postheader"
#define HTMLGENERATOR_CREATORPOSTPOSTHEADER "postpostheader"
-#define HTMLGENERATOR_STYLE "style"
-#define HTMLGENERATOR_STYLESHEETS "stylesheets"
-#define HTMLGENERATOR_CUSTOMHEADELEMENTS "customheadelements"
QT_END_NAMESPACE
diff --git a/tools/qdoc3/jambiapiparser.cpp b/tools/qdoc3/jambiapiparser.cpp
deleted file mode 100644
index 23f271642f..0000000000
--- a/tools/qdoc3/jambiapiparser.cpp
+++ /dev/null
@@ -1,546 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- jambiapiparser.cpp
-*/
-
-#include "cppcodeparser.h"
-#include "jambiapiparser.h"
-#include "node.h"
-#include "tree.h"
-
-QT_BEGIN_NAMESPACE
-
-static const char USED_INTERNALLY[] = "";
-
-static Text textWithFixedBrief(const Text &text, const Text &beforeBrief,
- const Text &afterBrief)
-{
- Text result;
-
- const Atom *atom = text.firstAtom();
- while (atom) {
- if (atom->type() == Atom::BriefLeft) {
- result << Atom::ParaLeft << beforeBrief;
- } else if (atom->type() == Atom::BriefRight) {
- result << afterBrief << Atom::ParaRight;
- } else {
- result << *atom;
- }
- atom = atom->next();
- }
-
- return result;
-}
-
-static void setPass1JambifiedDoc(Node *javaNode, const Node *cppNode, const QString &qName = "")
-{
- Doc newDoc(cppNode->doc());
-
- if (javaNode->type() == Node::Function) {
- const FunctionNode *javaFunc = static_cast<const FunctionNode *>(javaNode);
- if (cppNode->type() == Node::Function) {
- const FunctionNode *cppFunc = static_cast<const FunctionNode *>(cppNode);
- if (const PropertyNode *property = cppFunc->associatedProperty()) {
- newDoc = property->doc();
- Text text(newDoc.body());
-
- Node *mutableCppNode = const_cast<Node *>(cppNode);
- if (property->getters().contains(mutableCppNode)) {
- text = textWithFixedBrief(text, Text("Returns "), Text("."));
- } else if (property->setters().contains(mutableCppNode)) {
- Text afterBrief;
- if (javaFunc->parameterNames().count() == 1
- && !javaFunc->parameterNames().first().isEmpty()) {
- afterBrief << " to "
- << Atom(Atom::FormattingLeft, ATOM_FORMATTING_PARAMETER)
- << javaFunc->parameterNames().first()
- << Atom(Atom::FormattingRight, ATOM_FORMATTING_PARAMETER);
- }
- afterBrief << ".";
- text = textWithFixedBrief(text, Text("Sets "), afterBrief);
- } else if (property->resetters().contains(mutableCppNode)) {
- text = textWithFixedBrief(text, Text("Resets "), Text("."));
- }
-
- newDoc.setBody(text);
- } else {
- QStringList javaParams = javaFunc->parameterNames();
- QStringList cppParams = cppFunc->parameterNames();
- newDoc.renameParameters(cppParams, javaParams);
-
- if (cppNode->access() == Node::Private) {
- Text text;
- text << Atom::ParaLeft;
- if (cppFunc->reimplementedFrom()) {
- text << "This function is reimplemented for internal reasons.";
- } else {
- text << USED_INTERNALLY;
- }
- text << Atom::ParaRight;
- newDoc.setBody(text);
- }
- }
- } else if (cppNode->type() == Node::Variable) {
- Text text(newDoc.body());
-
- if (qName == "variablegetter") {
- text = textWithFixedBrief(text, Text("Returns "), Text("."));
- } else if (qName == "variablesetter") {
- Text afterBrief;
- if (javaFunc->parameterNames().count() == 1
- && !javaFunc->parameterNames().first().isEmpty()) {
- afterBrief << " to "
- << Atom(Atom::FormattingLeft, ATOM_FORMATTING_PARAMETER)
- << javaFunc->parameterNames().first()
- << Atom(Atom::FormattingRight, ATOM_FORMATTING_PARAMETER);
- }
- afterBrief << ".";
- text = textWithFixedBrief(text, Text("Sets "), afterBrief);
- }
-
- newDoc.setBody(text);
- }
- } else { // ### enum value names?
-
- }
-
- javaNode->setDoc(newDoc, true);
-}
-
-static void setStatus(Node *javaNode, const Node *cppNode)
-{
- if (cppNode->status() == Node::Compat) {
- javaNode->setStatus(Node::Obsolete);
- } else {
- javaNode->setStatus(cppNode->status());
- }
-}
-
-static Text findEnumText(Node *javaEnum, const QString &enumItemName)
-{
- const Text &body = javaEnum->doc().body();
- const Atom *atom = body.firstAtom();
- while (atom) {
- if (atom->type() == Atom::ListTagLeft && atom->string() == ATOM_LIST_VALUE) {
- atom = atom->next();
- if (atom) {
- // ### paras?
- if (atom->string() == enumItemName)
- return body.subText(Atom::ListItemLeft, Atom::ListItemRight, atom);
- }
- } else {
- atom = atom->next();
- }
- }
- return Text();
-}
-
-JambiApiParser::JambiApiParser(Tree *cppTree)
- : cppTre(cppTree), javaTre(0), metJapiTag(false)
-{
-}
-
-JambiApiParser::~JambiApiParser()
-{
-}
-
-void JambiApiParser::initializeParser(const Config &config)
-{
- CodeParser::initializeParser(config);
-}
-
-void JambiApiParser::terminateParser()
-{
- CodeParser::terminateParser();
-}
-
-QString JambiApiParser::language()
-{
- return "Java";
-}
-
-QString JambiApiParser::sourceFileNameFilter()
-{
- return "*.japi";
-}
-
-void JambiApiParser::parseSourceFile(const Location &location, const QString &filePath, Tree *tree)
-{
- javaTre = tree;
- metJapiTag = false;
-
- QXmlSimpleReader reader;
- reader.setContentHandler(this);
- reader.setErrorHandler(this);
-
- QFile file(filePath);
- if (!file.open(QFile::ReadOnly)) {
- location.warning(tr("Cannot open JAPI file '%1'").arg(filePath));
- return;
- }
-
- japiLocation = Location(filePath);
- QXmlInputSource xmlSource(&file);
- reader.parse(xmlSource);
-}
-
-void JambiApiParser::doneParsingSourceFiles(Tree * /* tree */)
-{
- /*
- Also import the overview documents.
- */
- foreach (Node *cppNode, cppTre->root()->childNodes()) {
- if (cppNode->type() == Node::Fake) {
- FakeNode *cppFake = static_cast<FakeNode *>(cppNode);
- if (cppFake->subType() == Node::Page) {
- FakeNode *javaFake = new FakeNode(javaTre->root(),
- cppFake->name(),
- cppFake->subType());
- javaFake->setModuleName("com.trolltech.qt"); // ### hard-coded
- javaFake->setTitle(cppFake->title());
- javaFake->setSubTitle(cppFake->subTitle());
- setStatus(javaFake, cppFake);
- setPass1JambifiedDoc(javaFake, cppFake);
- }
- }
- }
-
- /*
- Fix the docs.
- */
- if (javaTre) {
- javaTre->resolveInheritance();
- jambifyDocsPass2(javaTre->root());
- javaTre = 0;
- }
-}
-
-bool JambiApiParser::startElement(const QString & /* namespaceURI */,
- const QString & /* localName */,
- const QString &qName,
- const QXmlAttributes &attributes)
-{
- if (!metJapiTag && qName != "japi") {
- // ### The file is not a JAPI file.
- return true;
- }
- metJapiTag = true;
-
- EnumNode *javaEnum = 0;
- EnumNode *cppEnum = 0;
- InnerNode *javaParent = javaTre->root();
- InnerNode *cppParent = cppTre->root();
-
- for (int i = 0; i < classAndEnumStack.count(); ++i) {
- const ClassOrEnumInfo &info = classAndEnumStack.at(i);
- if (info.cppNode) {
- if (info.cppNode->type() == Node::Enum) {
- Q_ASSERT(info.javaNode->type() == Node::Enum);
- javaEnum = static_cast<EnumNode *>(info.javaNode);
- cppEnum = static_cast<EnumNode *>(info.cppNode);
- } else {
- Q_ASSERT(info.javaNode->type() == Node::Class
- || info.javaNode->type() == Node::Namespace);
- javaParent = static_cast<InnerNode *>(info.javaNode);
- cppParent = static_cast<InnerNode *>(info.cppNode);
- }
- }
- }
-
- if (qName == "class" || qName == "enum") {
- Node::Type type = (qName == "class") ? Node::Class : Node::Enum;
-
- QString javaExtends = attributes.value("java-extends");
- QString javaImplements = attributes.value("javaimplements");
-
- ClassOrEnumInfo info;
- info.tag = qName;
- info.javaName = attributes.value("java");
- info.cppName = attributes.value("cpp");
- info.cppNode = cppTre->findNode(info.cppName.split("::"), type, cppParent);
- if (!info.cppNode && type == Node::Class) {
- type = Node::Namespace;
- info.cppNode = cppTre->findNode(info.cppName.split("::"), type, cppParent);
- }
-
- if (!info.cppNode) {
- japiLocation.warning(tr("Cannot find C++ class or enum '%1'").arg(info.cppName));
- } else {
- if (qName == "class") {
- ClassNode *javaClass = new ClassNode(javaParent, info.javaName);
- javaClass->setModuleName(attributes.value("package"));
- if (!javaExtends.isEmpty())
- javaTre->addBaseClass(javaClass, Node::Public, javaExtends.split('.'),
- javaExtends);
- if (!javaImplements.isEmpty())
- javaTre->addBaseClass(javaClass, Node::Public, javaImplements.split('.'),
- javaExtends);
-
- info.javaNode = javaClass;
- } else {
- info.javaNode = new EnumNode(javaParent, info.javaName);
- }
- info.javaNode->setLocation(japiLocation);
- setStatus(info.javaNode, info.cppNode);
-
- setPass1JambifiedDoc(info.javaNode, info.cppNode);
- }
- classAndEnumStack.push(info);
- } else if (qName == "method" || qName == "signal") {
- QString javaSignature = attributes.value("java");
- if (javaSignature.startsWith("private"))
- return true;
-
- QString cppSignature = attributes.value("cpp");
-
- CppCodeParser cppParser;
- const FunctionNode *cppNode = cppParser.findFunctionNode(cppSignature, cppTre,
- cppParent,
- true /* fuzzy */);
- if (!cppNode) {
- bool quiet = false;
-
- /*
- Default constructors sometimes don't exist in C++.
- */
- if (!quiet && javaSignature == "public " + javaParent->name() + "()")
- quiet = true;
-
- if (!quiet)
- japiLocation.warning(tr("Cannot find C++ function '%1' ('%2')")
- .arg(cppSignature).arg(cppParent->name()));
- }
-
- FunctionNode *javaNode;
- if (makeFunctionNode(javaParent, javaSignature, &javaNode)) {
- javaNode->setLocation(japiLocation);
- if (qName == "signal")
- javaNode->setMetaness(FunctionNode::Signal);
-
- if (cppNode) {
- setStatus(javaNode, cppNode);
-
- int overloadNo = cppNode->parameters().count() - javaNode->parameters().count() + 1;
- if (overloadNo == 1) {
- setPass1JambifiedDoc(javaNode, cppNode);
- } else {
- Text text;
-
- text << Atom::ParaLeft << "Equivalent to "
- << Atom(Atom::Link, javaNode->name() + "()")
- << Atom(Atom::FormattingLeft, ATOM_FORMATTING_LINK)
- << javaNode->name()
- << Atom(Atom::FormattingRight, ATOM_FORMATTING_LINK)
- << "(";
-
- for (int i = 0; i < cppNode->parameters().count(); ++i) {
- if (i > 0)
- text << ", ";
- if (i < javaNode->parameters().count()) {
- text << Atom(Atom::FormattingLeft, ATOM_FORMATTING_PARAMETER)
- << javaNode->parameters().at(i).name()
- << Atom(Atom::FormattingRight, ATOM_FORMATTING_PARAMETER);
- } else {
- // ### convert to Java
- text << cppNode->parameters().at(i).defaultValue();
- }
- }
-
- text << ").";
-
- Doc doc;
- doc.setBody(text);
- javaNode->setDoc(doc, true);
- }
- javaNode->setOverload(overloadNo > 1);
- }
- }
- } else if (qName == "variablesetter" || qName == "variablegetter") {
- QString javaSignature = attributes.value("java");
- if (javaSignature.startsWith("private"))
- return true;
-
- QString cppVariable = attributes.value("cpp");
-
- VariableNode *cppNode = static_cast<VariableNode *>(cppParent->findNode(cppVariable,
- Node::Variable));
- FunctionNode *javaNode;
- if (makeFunctionNode(javaParent, javaSignature, &javaNode)) {
- javaNode->setLocation(japiLocation);
-
- if (!cppNode) {
-#if 0
- japiLocation.warning(tr("Cannot find C++ variable '%1' ('%2')")
- .arg(cppVariable).arg(cppParent->name()));
-#endif
- javaNode->setDoc(Doc(japiLocation, japiLocation,
- USED_INTERNALLY,
- QSet<QString>()), true);
- } else {
- setPass1JambifiedDoc(javaNode, cppNode, qName);
- setStatus(javaNode, cppNode);
- }
- }
- } else if (qName == "enum-value") {
- QString javaName = attributes.value("java");
- QString cppName = attributes.value("cpp");
- QString value = attributes.value("value");
-
- if (javaEnum) {
- EnumItem item(javaName, value, findEnumText(javaEnum, javaName));
- javaEnum->addItem(item);
- }
- }
-
- return true;
-}
-
-bool JambiApiParser::endElement(const QString & /* namespaceURI */,
- const QString & /* localName */,
- const QString &qName)
-{
- if (qName == "class" || qName == "enum")
- classAndEnumStack.pop();
- return true;
-}
-
-bool JambiApiParser::fatalError(const QXmlParseException &exception)
-{
- japiLocation.setLineNo(exception.lineNumber());
- japiLocation.setColumnNo(exception.columnNumber());
- japiLocation.warning(tr("Syntax error in JAPI file (%1)").arg(exception.message()));
- return true;
-}
-
-void JambiApiParser::jambifyDocsPass2(Node *node)
-{
- const Doc &doc = node->doc();
- if (!doc.isEmpty()) {
- if (node->type() == Node::Enum) {
- Doc newDoc(doc);
- newDoc.simplifyEnumDoc();
- node->setDoc(newDoc, true);
- }
- }
-
- if (node->isInnerNode()) {
- InnerNode *innerNode = static_cast<InnerNode *>(node);
- foreach (Node *child, innerNode->childNodes())
- jambifyDocsPass2(child);
- }
-}
-
-bool JambiApiParser::makeFunctionNode(InnerNode *parent, const QString &synopsis,
- FunctionNode **funcPtr)
-{
- Node::Access access = Node::Public;
- FunctionNode::Metaness metaness = FunctionNode::Plain;
- bool final = false;
- bool statique = false;
-
- QString mySynopsis = synopsis.simplified();
- int oldLen;
- do {
- oldLen = mySynopsis.length();
-
- if (mySynopsis.startsWith("public ")) {
- mySynopsis.remove(0, 7);
- access = Node::Public;
- }
- if (mySynopsis.startsWith("protected ")) {
- mySynopsis.remove(0, 10);
- access = Node::Protected;
- }
- if (mySynopsis.startsWith("private ")) {
- mySynopsis.remove(0, 8);
- access = Node::Private;
- }
- if (mySynopsis.startsWith("native ")) {
- mySynopsis.remove(0, 7);
- metaness = FunctionNode::Native;
- }
- if (mySynopsis.startsWith("final ")) {
- mySynopsis.remove(0, 6);
- final = true;
- }
- if (mySynopsis.startsWith("static ")) {
- mySynopsis.remove(0, 7);
- statique = true;
- }
- } while (oldLen != mySynopsis.length());
-
- // method or constructor
- QRegExp funcRegExp("(?:(.*) )?([A-Za-z_0-9]+)\\((.*)\\)");
- if (!funcRegExp.exactMatch(mySynopsis))
- return false;
-
- QString retType = funcRegExp.cap(1);
- QString funcName = funcRegExp.cap(2);
- QStringList params = funcRegExp.cap(3).split(",");
-
- FunctionNode *func = new FunctionNode(parent, funcName);
- func->setReturnType(retType);
- func->setAccess(access);
- func->setStatic(statique);
- func->setConst(final);
- func->setMetaness(metaness);
-
- QRegExp paramRegExp(" ?([^ ].*) ([A-Za-z_0-9]+) ?");
-
- foreach (const QString &param, params) {
- if (paramRegExp.exactMatch(param)) {
- func->addParameter(Parameter(paramRegExp.cap(1), "", paramRegExp.cap(2)));
- } else {
- // problem
- }
- }
-
- if (funcPtr) {
- *funcPtr = func;
- } else if (!parent) {
- delete func;
- }
- return true;
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/jambiapiparser.h b/tools/qdoc3/jambiapiparser.h
deleted file mode 100644
index ecfaab57d7..0000000000
--- a/tools/qdoc3/jambiapiparser.h
+++ /dev/null
@@ -1,99 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- jambiapiparser.h
-*/
-
-#ifndef JAMBIAPIPARSER_H
-#define JAMBIAPIPARSER_H
-
-#include <QStack>
-#include <QXmlDefaultHandler>
-
-#include "codeparser.h"
-
-QT_BEGIN_NAMESPACE
-
-struct ClassOrEnumInfo
-{
- QString tag;
- QString javaName;
- QString cppName;
- Node *javaNode;
- Node *cppNode;
-
- ClassOrEnumInfo() : javaNode(0), cppNode(0) {}
-};
-
-class JambiApiParser : public CodeParser, private QXmlDefaultHandler
-{
-public:
- JambiApiParser(Tree *cppTree);
- ~JambiApiParser();
-
- void initializeParser(const Config &config);
- void terminateParser();
- QString language();
- QString sourceFileNameFilter();
- void parseSourceFile(const Location &location, const QString &filePath, Tree *tree);
- virtual void doneParsingSourceFiles(Tree *tree);
-
-private:
- bool startElement(const QString &namespaceURI, const QString &localName,
- const QString &qName, const QXmlAttributes &attributes);
- bool endElement(const QString &namespaceURI, const QString &localName,
- const QString &qName);
- bool fatalError(const QXmlParseException &exception);
- void jambifyDocsPass2(Node *node);
- bool makeFunctionNode(InnerNode *parent, const QString &synopsis, FunctionNode **funcPtr);
-
- Tree *cppTre;
- Tree *javaTre;
-
- bool metJapiTag;
- Location japiLocation;
- QStack<ClassOrEnumInfo> classAndEnumStack;
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/tools/qdoc3/javacodemarker.cpp b/tools/qdoc3/javacodemarker.cpp
deleted file mode 100644
index c9a8f60929..0000000000
--- a/tools/qdoc3/javacodemarker.cpp
+++ /dev/null
@@ -1,203 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- javacodemarker.cpp
-*/
-
-#include "javacodemarker.h"
-#include "node.h"
-#include "text.h"
-#include "tree.h"
-
-QT_BEGIN_NAMESPACE
-
-JavaCodeMarker::JavaCodeMarker()
-{
-}
-
-JavaCodeMarker::~JavaCodeMarker()
-{
-}
-
-bool JavaCodeMarker::recognizeCode( const QString& /* code */ )
-{
- return true;
-}
-
-bool JavaCodeMarker::recognizeExtension( const QString& ext )
-{
- return ext == "java";
-}
-
-bool JavaCodeMarker::recognizeLanguage( const QString& lang )
-{
- return lang == "Java";
-}
-
-QString JavaCodeMarker::plainName( const Node *node )
-{
- return node->name();
-}
-
-QString JavaCodeMarker::plainFullName( const Node *node, const Node * /* relative */ )
-{
- if (!node)
- return QString();
-
- QString fullName;
- for ( ;; ) {
- fullName.prepend( plainName(node) );
- if ( node->parent() && node->parent()->name().isEmpty() )
- break;
- node = node->parent();
- if (!node)
- break;
- fullName.prepend(".");
- }
- return fullName;
-}
-
-QString JavaCodeMarker::markedUpCode( const QString& code,
- const Node * /* relative */,
- const QString& /* dirPath */ )
-{
- return protect( code );
-}
-
-QString JavaCodeMarker::markedUpSynopsis(const Node * /* node */,
- const Node * /* relative */,
- SynopsisStyle /* style */)
-{
- return QString();
-}
-
-QString JavaCodeMarker::markedUpName( const Node *node )
-{
- return linkTag(node, taggedNode(node));
-}
-
-QString JavaCodeMarker::markedUpFullName(const Node *node, const Node * /* relative */ )
-{
- QString fullName;
- for ( ;; ) {
- fullName.prepend( markedUpName(node) );
- if ( node->parent()->name().isEmpty() )
- break;
- node = node->parent();
- fullName.prepend( "." );
- }
- return fullName;
-}
-
-QString JavaCodeMarker::markedUpEnumValue(const QString &enumValue,
- const Node * /* relative */)
-{
- return protect(enumValue);
-}
-
-QString JavaCodeMarker::markedUpIncludes( const QStringList& /* includes */ )
-{
- return QString();
-}
-
-QString JavaCodeMarker::functionBeginRegExp( const QString& /* funcName */)
-{
- return "^x$"; // ### invalid regexp
-}
-
-QString JavaCodeMarker::functionEndRegExp( const QString& /* funcName */ )
-{
- return "^}";
-}
-
-QList<Section> JavaCodeMarker::sections(const InnerNode * /* inner */, SynopsisStyle /* style */,
- Status /* status */)
-{
- return QList<Section>();
-}
-
-const Node *JavaCodeMarker::resolveTarget(const QString &target,
- const Tree *tree,
- const Node *relative,
- const Node* /* self */)
-{
- if (target.endsWith("()")) {
- const FunctionNode *func;
- QString funcName = target;
- funcName.chop(2);
-
- QStringList path = funcName.split('.');
- if ((func = tree->findFunctionNode(path, relative, Tree::SearchBaseClasses)))
- return func;
- } else if (target.contains("#")) {
- int hashAt = target.indexOf("#");
- QString link = target.left(hashAt);
- QString ref = target.mid(hashAt + 1);
- const Node *node;
- if (link.isEmpty()) {
- node = relative;
- } else {
- QStringList path(link);
- node = tree->findNode(path, tree->root(), Tree::SearchBaseClasses);
- }
- if (node && node->isInnerNode()) {
- const Atom *atom = node->doc().body().firstAtom();
- while (atom) {
- if (atom->type() == Atom::Target && atom->string() == ref) {
- Node *parentNode = const_cast<Node *>(node);
- return new TargetNode(static_cast<InnerNode*>(parentNode),
- ref);
- }
- atom = atom->next();
- }
- }
- } else {
- QStringList path = target.split('.');
- const Node *node;
- if ((node = tree->findNode(path, relative,
- Tree::SearchBaseClasses | Tree::SearchEnumValues)))
- return node;
- }
- return 0;
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/javacodemarker.h b/tools/qdoc3/javacodemarker.h
deleted file mode 100644
index c2aabc018a..0000000000
--- a/tools/qdoc3/javacodemarker.h
+++ /dev/null
@@ -1,83 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- javacodemarker.h
-*/
-
-#ifndef JAVACODEMARKER_H
-#define JAVACODEMARKER_H
-
-#include "codemarker.h"
-
-QT_BEGIN_NAMESPACE
-
-class JavaCodeMarker : public CodeMarker
-{
-public:
- JavaCodeMarker();
- ~JavaCodeMarker();
-
- bool recognizeCode( const QString& code );
- bool recognizeExtension( const QString& ext );
- bool recognizeLanguage( const QString& lang );
- QString plainName(const Node *node);
- QString plainFullName(const Node *node, const Node *relative);
- QString markedUpCode( const QString& code, const Node *relative,
- const QString& dirPath );
- QString markedUpSynopsis( const Node *node, const Node *relative,
- SynopsisStyle style );
- QString markedUpName( const Node *node );
- QString markedUpFullName( const Node *node, const Node *relative );
- QString markedUpEnumValue(const QString &enumValue, const Node *relative);
- QString markedUpIncludes( const QStringList& includes );
- QList<Section> sections(const InnerNode *innerNode, SynopsisStyle style, Status status);
- QString functionBeginRegExp( const QString& funcName );
- QString functionEndRegExp( const QString& funcName );
- const Node* resolveTarget( const QString& target,
- const Tree* tree,
- const Node* relative,
- const Node* self = 0 );
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/tools/qdoc3/javadocgenerator.cpp b/tools/qdoc3/javadocgenerator.cpp
deleted file mode 100644
index eb9c1c9f7e..0000000000
--- a/tools/qdoc3/javadocgenerator.cpp
+++ /dev/null
@@ -1,454 +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 tools applications 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 "javadocgenerator.h"
-
-QT_BEGIN_NAMESPACE
-
-enum JavaSignatureSyntax {
- GeneratedJdocFile,
- JavadocRef,
- SlotSignature
-};
-
-static QString javaSignature(const FunctionNode *func, JavaSignatureSyntax syntax,
- int maxParams = 65535)
-{
- maxParams = qMin(maxParams, func->parameters().count());
-
- QString result;
-
- if (syntax == GeneratedJdocFile) {
- if (func->access() == Node::Public) {
- result += "public ";
- } else if (func->access() == Node::Protected) {
- result += "protected ";
- } else {
- result += "private ";
- }
-
- if (func->metaness() == FunctionNode::Native)
- result += "native ";
-
- if (func->isConst())
- result += "final ";
-
- // ### func->metaness() == FunctionNode::Abstract
-
- if (func->isStatic())
- result += "static ";
-
- if (!func->returnType().isEmpty()) {
- result += func->returnType();
- result += ' ';
- }
- }
-
- if (syntax == SlotSignature) {
- result += "void mySlot";
- } else {
- result += func->name();
- }
- result += '(';
- for (int i = 0; i < maxParams; ++i) {
- if (i != 0)
- result += ", ";
- result += func->parameters().at(i).leftType();
- if (syntax != JavadocRef) {
- result += ' ';
- result += func->parameters().at(i).name();
- }
- }
- result += ')';
-
- return result;
-}
-
-static QString packageName(const Node *node)
-{
- while (node && node->type() != Node::Class && node->type() != Node::Fake)
- node = node->parent();
- if (!node)
- return QString();
- return node->moduleName();
-}
-
-JavadocGenerator::JavadocGenerator()
- : oldDevice(0), currentDepth(0)
-{
-}
-
-JavadocGenerator::~JavadocGenerator()
-{
-}
-
-void JavadocGenerator::initializeGenerator(const Config &config)
-{
- HtmlGenerator::initializeGenerator(config);
-
- formattingLeftMap().insert(ATOM_FORMATTING_PARAMETER,
- formattingLeftMap().value(ATOM_FORMATTING_TELETYPE));
- formattingRightMap().insert(ATOM_FORMATTING_PARAMETER,
- formattingRightMap().value(ATOM_FORMATTING_TELETYPE));
-}
-
-void JavadocGenerator::terminateGenerator()
-{
- HtmlGenerator::terminateGenerator();
-}
-
-QString JavadocGenerator::format()
-{
- return "javadoc";
-}
-
-void JavadocGenerator::generateTree(const Tree *tree, CodeMarker *marker)
-{
- HtmlGenerator::generateTree(tree, marker);
-}
-
-QString JavadocGenerator::fileExtension(const Node *node) const
-{
- if (node->type() == Node::Fake) {
- return "html";
- } else {
- return "jdoc";
- }
-}
-
-QString JavadocGenerator::typeString(const Node *node)
-{
- if (node->type() == Node::Function) {
- const FunctionNode *func = static_cast<const FunctionNode *>(node);
- return func->metaness() == FunctionNode::Signal ? "signal" : "method";
- } else {
- return HtmlGenerator::typeString(node);
- }
-}
-
-QString JavadocGenerator::imageFileName(const Node *relative, const QString& fileBase)
-{
- QString result = HtmlGenerator::imageFileName(relative, fileBase);
- if (!result.isEmpty()) {
- QString package = packageName(relative);
- int numSubPackages = package.count('.') - 2;
- while (numSubPackages > 0) {
- result.prepend("%2E%2E/"); // javadoc 1.5.0_06 chokes on '../'
- --numSubPackages;
- }
- }
- return result;
-}
-
-static int textDepth = 0;
-
-void JavadocGenerator::startText(const Node *relative, CodeMarker *marker)
-{
- if (textDepth++ == 0 && relative->type() != Node::Fake) {
- Q_ASSERT(!oldDevice);
- oldDevice = out().device();
- Q_ASSERT(oldDevice);
- out().setString(&buffer);
- }
- HtmlGenerator::startText(relative, marker);
-}
-
-void JavadocGenerator::endText(const Node *relative, CodeMarker *marker)
-{
- HtmlGenerator::endText(relative, marker);
- if (--textDepth == 0 && relative->type() != Node::Fake) {
- Q_ASSERT(oldDevice);
- out().setDevice(oldDevice);
- oldDevice = 0;
-
- /*
- Need to escape XML metacharacters in .jdoc files.
- */
- buffer.replace("*/", "*&lt;!-- noop --&gt;/");
- buffer.replace("&", "&amp;");
- buffer.replace("\"", "&quot;");
- buffer.replace("<", "&lt;");
- buffer.replace(">", "&gt;");
- out() << buffer;
- buffer.clear();
- }
-}
-
-int JavadocGenerator::generateAtom(const Atom *atom, const Node *relative, CodeMarker *marker)
-{
- return HtmlGenerator::generateAtom(atom, relative, marker);
-}
-
-void JavadocGenerator::generateClassLikeNode(const InnerNode *inner, CodeMarker *marker)
-{
- generateIndent();
- out() << "<class name=\"" << protect(inner->name()) << "\"";
- generateDoc(inner, marker);
- out() << ">\n";
-
- ++currentDepth;
- foreach (Node *node, inner->childNodes()) {
- if (node->isInnerNode()) {
- generateClassLikeNode(static_cast<InnerNode *>(node), marker);
- } else {
- if (node->type() == Node::Enum) {
- EnumNode *enume = static_cast<EnumNode *>(node);
-
- generateIndent();
- out() << "<enum name=\"" << protect(node->name()) << "\"";
- generateDoc(node, marker);
- out() << ">\n";
-
- ++currentDepth;
- const QList<EnumItem> &items = enume->items();
- for (int i = 0; i < items.count(); ++i) {
- const EnumItem &item = items.at(i);
- generateIndent();
- out() << "<enum-value name=\"" << protect(item.name()) << "\"";
- generateEnumItemDoc(item.text(), enume, marker);
- out() << "/>\n";
- }
- --currentDepth;
-
- out() << "</enum>\n";
- } else if (node->type() == Node::Function) {
- FunctionNode *func = static_cast<FunctionNode *>(node);
- generateIndent();
- out() << (func->metaness() == FunctionNode::Signal ? "<signal" : "<method")
- << " name=\""
- << protect(javaSignature(func, GeneratedJdocFile))
- << "\"";
- generateDoc(node, marker);
- out() << "/>\n";
- }
- }
- }
- --currentDepth;
-
- generateIndent();
- out() << "</class>\n";
-}
-
-void JavadocGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
-{
- HtmlGenerator::generateFakeNode(fake, marker);
-}
-
-bool JavadocGenerator::generateText(const Text& text, const Node *relative, CodeMarker *marker)
-{
- HtmlGenerator::generateText(text, relative, marker);
- return true;
-}
-
-void JavadocGenerator::generateBody(const Node *node, CodeMarker *marker)
-{
- generateText(node->doc().body(), node, marker);
-}
-
-void JavadocGenerator::generateAlsoList( const Node *node, CodeMarker *marker )
-{
- QList<Text> alsoList = node->doc().alsoList();
- supplementAlsoList(node, alsoList);
-
- if (node->type() == Node::Fake
- || (node->type() == Node::Function
- && static_cast<const FunctionNode *>(node)->metaness() == FunctionNode::Signal)) {
- Text text;
-
- if (!alsoList.isEmpty()) {
- text << Atom(Atom::ListLeft, ATOM_LIST_TAG)
- << Atom(Atom::ListTagLeft, ATOM_LIST_TAG)
- << Atom(Atom::FormattingLeft, ATOM_FORMATTING_BOLD)
- << "See Also:"
- << Atom(Atom::FormattingRight, ATOM_FORMATTING_BOLD)
- << Atom(Atom::ListTagRight, ATOM_LIST_TAG)
- << Atom(Atom::ListItemLeft, ATOM_LIST_TAG);
-
- for (int i = 0; i < alsoList.count(); ++i) {
- if (i != 0)
- text << ", ";
- text << alsoList.at(i);
- }
- text << Atom(Atom::ListItemRight, ATOM_LIST_TAG)
- << Atom(Atom::ListRight, ATOM_LIST_TAG);
- }
-
- generateText(text, node, marker);
- } else {
- foreach (const Text &text, alsoList) {
- out() << "\n@see ";
- generateText(text, node, marker);
- }
- }
-}
-
-QString JavadocGenerator::refForNode( const Node *node )
-{
- if (node->type() == Node::Function)
- return javaSignature(static_cast<const FunctionNode *>(node), JavadocRef);
-
- return HtmlGenerator::refForNode(node);
-}
-
-QString JavadocGenerator::linkForNode( const Node *node, const Node *relative )
-{
- // ### EVIL, relative should never be null
- if (!relative)
- relative = node;
-
- if (packageName(node).isEmpty()) {
- // ### jasmin: Fixme
- return QString();
- }
-
- QString result;
- if (node->type() == Node::Fake) {
- result = node->name();
- } else {
- if (!node->isInnerNode()) {
- result = linkForNode(node->parent(), relative) + "#" + refForNode(node);
- } else {
- result = node->name() + ".html";
- }
- }
-
- QStringList nodePackage = packageName(node).split(".");
- QStringList relativePackage = packageName(relative).split(".");
- if (nodePackage == QStringList(QString()) || relativePackage == QStringList(QString())) {
- qWarning("I'm in trouble [%s][%s]", qPrintable(node->name()), qPrintable(relative->name()));
- return QString();
- }
-
- int i = nodePackage.count() - 1;
- while (nodePackage.value(i) != relativePackage.value(i)) {
- result.prepend(nodePackage.at(i) + "/");
- --i;
- }
-
- ++i;
- while (i < relativePackage.count()) {
- result.prepend("%2E%2E/"); // javadoc 1.5.0_06 chokes on '../'
- ++i;
- }
-
- return result;
-}
-
-QString JavadocGenerator::refForAtom(Atom *atom, const Node *node)
-{
- return HtmlGenerator::refForAtom(atom, node);
-}
-
-/*
- Neutralize dumb functions called from HtmlGenerator.
-*/
-void JavadocGenerator::generateDcf(const QString & /* fileBase */, const QString & /* startPage */,
- const QString & /* title */, DcfSection & /* dcfRoot */)
-{
-}
-
-void JavadocGenerator::generateIndex(const QString & /* fileBase */, const QString & /* url */,
- const QString & /* title */)
-{
-}
-
-void JavadocGenerator::generateIndent()
-{
- for (int i = 0; i < currentDepth; ++i)
- out() << " ";
-}
-
-void JavadocGenerator::generateDoc(const Node *node, CodeMarker *marker)
-{
- const Text &text = node->doc().body();
- if (!text.isEmpty()) {
- out() << " doc=\"/**\n";
- Generator::generateStatus(node, marker);
- generateText(text, node, marker);
- if (node && node->type() == Node::Function) {
- const FunctionNode *func = static_cast<const FunctionNode *>(node);
- if (func->metaness() == FunctionNode::Signal) {
- QStringList slotSignatures;
- for (int i = func->parameters().count(); i >= 0; --i)
- slotSignatures += javaSignature(func, SlotSignature, i);
-
- Text text;
-
- text << Atom(Atom::ListLeft, ATOM_LIST_TAG)
- << Atom(Atom::ListTagLeft, ATOM_LIST_TAG)
- << Atom(Atom::FormattingLeft, ATOM_FORMATTING_BOLD);
-
- if (slotSignatures.count() == 1) {
- text << "Compatible Slot Signature:";
- } else {
- text << "Compatible Slot Signatures:";
- }
-
- text << Atom(Atom::FormattingRight, ATOM_FORMATTING_BOLD)
- << Atom(Atom::ListTagRight, ATOM_LIST_TAG);
-
- for (int i = 0; i < slotSignatures.count(); ++i) {
- text << Atom(Atom::ListItemLeft, ATOM_LIST_TAG)
- << Atom(Atom::C, marker->markedUpCode(slotSignatures.at(i), 0, ""))
- << Atom(Atom::ListItemRight, ATOM_LIST_TAG);
- }
- text << Atom(Atom::ListRight, ATOM_LIST_TAG);
- generateText(text, node, marker);
- }
- }
- if (node)
- generateAlsoList(node, marker);
- out() << " */\"";
- }
-}
-
-void JavadocGenerator::generateEnumItemDoc(const Text &text, const Node *node, CodeMarker *marker)
-{
- out() << " doc=\"/**\n";
- if (text.isEmpty()) {
- out() << "Internal.";
- } else {
- generateText(text, node, marker);
- }
- out() << " */\"";
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/javadocgenerator.h b/tools/qdoc3/javadocgenerator.h
deleted file mode 100644
index b485502f87..0000000000
--- a/tools/qdoc3/javadocgenerator.h
+++ /dev/null
@@ -1,95 +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 tools applications 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 JAVADOCGENERATOR_H
-#define JAVADOCGENERATOR_H
-
-#include "htmlgenerator.h"
-
-QT_BEGIN_NAMESPACE
-
-class JavadocGenerator : public HtmlGenerator
-{
-public:
- JavadocGenerator();
- ~JavadocGenerator();
-
- void initializeGenerator(const Config &config);
- void terminateGenerator();
- QString format();
- bool canHandleFormat(const QString &format) { return format == "HTML" || format == "javadoc"; }
- void generateTree(const Tree *tree, CodeMarker *marker);
- QString typeString(const Node *node);
- QString imageFileName(const Node *relative, const QString &fileBase);
-
-protected:
- QString fileExtension(const Node *node) const;
- void startText( const Node *relative, CodeMarker *marker );
- void endText( const Node *relative, CodeMarker *marker );
- int generateAtom( const Atom *atom, const Node *relative, CodeMarker *marker );
- void generateClassLikeNode(const InnerNode *inner, CodeMarker *marker);
- void generateFakeNode( const FakeNode *fake, CodeMarker *marker );
-
- bool generateText( const Text& text, const Node *relative, CodeMarker *marker );
- void generateBody( const Node *node, CodeMarker *marker );
- void generateAlsoList( const Node *node, CodeMarker *marker );
-
- QString refForNode( const Node *node );
- QString linkForNode( const Node *node, const Node *relative );
- QString refForAtom(Atom *atom, const Node *node);
-
-private:
- void generateDcf(const QString &fileBase, const QString &startPage,
- const QString &title, DcfSection &dcfRoot);
- void generateIndex(const QString &fileBase, const QString &url,
- const QString &title);
- void generateIndent();
- void generateDoc(const Node *node, CodeMarker *marker);
- void generateEnumItemDoc(const Text &text, const Node *node, CodeMarker *marker);
-
- QString buffer;
- QIODevice *oldDevice;
- int currentDepth;
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/tools/qdoc3/jscodemarker.cpp b/tools/qdoc3/jscodemarker.cpp
new file mode 100644
index 0000000000..84a28c6254
--- /dev/null
+++ b/tools/qdoc3/jscodemarker.cpp
@@ -0,0 +1,137 @@
+/****************************************************************************
+**
+** 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 tools applications 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$
+**
+****************************************************************************/
+
+/*
+ jscodemarker.cpp
+*/
+
+#include "private/qdeclarativejsast_p.h"
+#include "private/qdeclarativejsengine_p.h"
+#include "private/qdeclarativejslexer_p.h"
+#include "private/qdeclarativejsnodepool_p.h"
+#include "private/qdeclarativejsparser_p.h"
+
+#include "atom.h"
+#include "node.h"
+#include "jscodemarker.h"
+#include "qmlmarkupvisitor.h"
+#include "text.h"
+#include "tree.h"
+
+QT_BEGIN_NAMESPACE
+
+JsCodeMarker::JsCodeMarker()
+{
+}
+
+JsCodeMarker::~JsCodeMarker()
+{
+}
+
+/*!
+ Returns true if the \a code is recognized by the parser.
+ */
+bool JsCodeMarker::recognizeCode(const QString &code)
+{
+ QDeclarativeJS::Engine engine;
+ QDeclarativeJS::Lexer lexer(&engine);
+ QDeclarativeJS::Parser parser(&engine);
+ QDeclarativeJS::NodePool m_nodePool("<JsCodeMarker::recognizeCode>", &engine);
+
+ QString newCode = code;
+ QList<QDeclarativeJS::AST::SourceLocation> pragmas = extractPragmas(newCode);
+ lexer.setCode(newCode, 1);
+
+ return parser.parseProgram();
+}
+
+/*!
+ Returns true if \a ext is any of a list of file extensions
+ for the QML language.
+ */
+bool JsCodeMarker::recognizeExtension(const QString &ext)
+{
+ return ext == "js";
+}
+
+/*!
+ Returns true if the \a language is recognized. Only "QML" is
+ recognized by this marker.
+ */
+bool JsCodeMarker::recognizeLanguage(const QString &language)
+{
+ return language == "JavaScript" || language == "ECMAScript";
+}
+
+QString JsCodeMarker::markedUpCode(const QString &code,
+ const Node *relative,
+ const QString &dirPath)
+{
+ return addMarkUp(code, relative, dirPath);
+}
+
+QString JsCodeMarker::addMarkUp(const QString &code,
+ const Node * /* relative */,
+ const QString & /* dirPath */)
+{
+ QDeclarativeJS::Engine engine;
+ QDeclarativeJS::Lexer lexer(&engine);
+
+ QString newCode = code;
+ QList<QDeclarativeJS::AST::SourceLocation> pragmas = extractPragmas(newCode);
+ lexer.setCode(newCode, 1);
+
+ QDeclarativeJS::Parser parser(&engine);
+ QDeclarativeJS::NodePool m_nodePool("<JsCodeMarker::addMarkUp>", &engine);
+ QString output;
+
+ if (parser.parseProgram()) {
+ QDeclarativeJS::AST::Node *ast = parser.rootNode();
+ // Pass the unmodified code to the visitor so that pragmas and other
+ // unhandled source text can be output.
+ QmlMarkupVisitor visitor(code, pragmas, &engine);
+ QDeclarativeJS::AST::Node::accept(ast, &visitor);
+ output = visitor.markedUpCode();
+ }
+ return output;
+}
+
+QT_END_NAMESPACE
diff --git a/tools/qdoc3/archiveextractor.h b/tools/qdoc3/jscodemarker.h
index 678945a3f7..f7cb0253f3 100644
--- a/tools/qdoc3/archiveextractor.h
+++ b/tools/qdoc3/jscodemarker.h
@@ -40,37 +40,33 @@
****************************************************************************/
/*
- archiveextractor.h
+ jscodemarker.h
*/
-#ifndef ARCHIVEEXTRACTOR_H
-#define ARCHIVEEXTRACTOR_H
+#ifndef JSCODEMARKER_H
+#define JSCODEMARKER_H
-#include <qstringlist.h>
-
-#include "location.h"
+#include "qmlcodemarker.h"
QT_BEGIN_NAMESPACE
-class ArchiveExtractor
+class JsCodeMarker : public QmlCodeMarker
{
public:
- ArchiveExtractor( const QStringList& extensions );
- virtual ~ArchiveExtractor();
-
- virtual void extractArchive( const Location& location,
- const QString& filePath,
- const QString& outputDir ) = 0;
+ JsCodeMarker();
+ ~JsCodeMarker();
- static ArchiveExtractor *extractorForFileName( const QString& fileName );
+ virtual bool recognizeCode(const QString &code);
+ virtual bool recognizeExtension(const QString &ext);
+ virtual bool recognizeLanguage(const QString &language);
-protected:
- const QStringList& fileExtensions() { return fileExts; }
+ virtual QString markedUpCode(const QString &code,
+ const Node *relative,
+ const QString &dirPath);
private:
- QStringList fileExts;
-
- static QList<ArchiveExtractor *> extractors;
+ QString addMarkUp(const QString &code, const Node * /* relative */,
+ const QString & /* dirPath */);
};
QT_END_NAMESPACE
diff --git a/tools/qdoc3/linguistgenerator.cpp b/tools/qdoc3/linguistgenerator.cpp
deleted file mode 100644
index 702f0fb35d..0000000000
--- a/tools/qdoc3/linguistgenerator.cpp
+++ /dev/null
@@ -1,245 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- linguistgenerator.cpp
-*/
-
-#include "codemarker.h"
-#include "pagegenerator.h"
-#include "linguistgenerator.h"
-#include "node.h"
-#include "separator.h"
-#include "tree.h"
-#include <ctype.h>
-
-#include <qlist.h>
-#include <qiterator.h>
-
-QT_BEGIN_NAMESPACE
-
-#define COMMAND_VERSION Doc::alias("version")
-
-LinguistGenerator::LinguistGenerator()
- : PageGenerator()
-{
-}
-
-LinguistGenerator::~LinguistGenerator()
-{
-}
-
-void LinguistGenerator::initializeGenerator(const Config &config)
-{
- Generator::initializeGenerator(config);
-}
-
-void LinguistGenerator::terminateGenerator()
-{
- PageGenerator::terminateGenerator();
-}
-
-QString LinguistGenerator::format()
-{
- return "Linguist";
-}
-
-QString LinguistGenerator::fileExtension(const Node * /* node */) const
-{
- return "ts";
-}
-
-void LinguistGenerator::generateClassLikeNode(const InnerNode *inner, CodeMarker *marker)
-{
- out().setCodec("UTF-8");
-
- QDomDocument document("TS");
- QDomElement documentElement = document.createElement("TS");
- documentElement.setAttribute("version", "1.1");
-
- QList<QDomElement> contextElements = generateIndexSections(document, inner, marker);
- foreach (const QDomElement &element, contextElements)
- documentElement.appendChild(element);
-
- QDomProcessingInstruction process = document.createProcessingInstruction(
- "xml", QString("version=\"1.0\" encoding=\"%1\"").arg("UTF-8"));
- document.appendChild(process);
- document.appendChild(documentElement);
-
- out() << document;
- out().flush();
-}
-
-void LinguistGenerator::generateFakeNode( const FakeNode *fake, CodeMarker *marker )
-{
- out().setCodec("utf-8");
-
- QDomDocument document("TS");
- QDomElement documentElement = document.createElement("TS");
- documentElement.setAttribute("version", "1.1");
-
- QList<QDomElement> contextElements = generateIndexSections(document, fake, marker);
- foreach (const QDomElement &element, contextElements)
- documentElement.appendChild(element);
-
- QDomProcessingInstruction process = document.createProcessingInstruction(
- "xml", QString("version=\"1.0\" encoding=\"%1\"").arg("utf-8"));
- document.appendChild(process);
- document.appendChild(documentElement);
-
- out() << document;
- out().flush();
-}
-
-QList<QDomElement> LinguistGenerator::generateIndexSections(
- QDomDocument &document, const Node *node, CodeMarker *marker)
-{
- QList<QDomElement> contexts;
-
- if (node->isInnerNode()) {
- const InnerNode *inner = static_cast<const InnerNode *>(node);
-
- foreach (const Node *child, inner->childNodes()) {
- // Recurse to generate a DOM element for this child node and all
- // its children.
- contexts += generateIndexSections(document, child, marker);
- }
-/*
- foreach (const Node *child, inner->relatedNodes()) {
- QDomElement childElement = generateIndexSections(document, child, marker);
- element.appendChild(childElement);
- }
-*/
- }
-
- // Add documentation to this node if it exists.
- if (!node->doc().isEmpty()) {
-
- QString nodeName = fullName(node);
- QString signature;
-
- if (node->type() == Node::Function) {
- QStringList pieces;
- const FunctionNode *functionNode = static_cast<const FunctionNode*>(node);
- foreach (const Parameter &parameter, functionNode->parameters()) {
- QString typeString = parameter.leftType() + parameter.rightType();
- if (typeString.split(" ").size() > 1)
- pieces.append(typeString + parameter.name());
- else
- pieces.append(typeString + " " + parameter.name());
- }
- signature = "(" + pieces.join(", ") + ")";
- }
-
- QDomElement contextElement = document.createElement("context");
- QDomElement nameElement = document.createElement("name");
- nameElement.appendChild(document.createTextNode(nodeName + signature));
- contextElement.appendChild(nameElement);
-
- QDomElement messageElement = document.createElement("message");
- contextElement.appendChild(messageElement);
-
- QDomElement sourceElement = document.createElement("source");
- QString sourceText = simplified(node->doc().source());
- if (!signature.isEmpty() && signature != "()" && !sourceText.contains("\\fn"))
- sourceText.prepend(QString("\\fn %1%2\n").arg(nodeName).arg(signature));
- sourceElement.appendChild(document.createTextNode(sourceText));
- messageElement.appendChild(sourceElement);
-
- QDomElement translationElement = document.createElement("translation");
- translationElement.setAttribute("type", "unfinished");
- messageElement.appendChild(translationElement);
-
- QDomElement locationElement = document.createElement("location");
- locationElement.setAttribute("filename", node->doc().location().filePath());
- locationElement.setAttribute("line", node->doc().location().lineNo());
- messageElement.appendChild(locationElement);
-
- contexts.append(contextElement);
- }
-
- return contexts;
-}
-
-QString LinguistGenerator::fullName(const Node *node) const
-{
- if (!node)
- return "";
- else if (node->parent() && !node->parent()->name().isEmpty())
- return fullName(node->parent()) + "::" + node->name();
- else
- return node->name();
-}
-
-QString LinguistGenerator::simplified(const QString &text) const
-{
- QStringList lines = text.split("\n");
-
- while (lines.size() > 0 && lines.first().trimmed().isEmpty())
- lines.pop_front();
-
- while (lines.size() > 0 && lines.last().trimmed().isEmpty())
- lines.pop_back();
-
- int min = 0;
- bool set = false;
- foreach (const QString &line, lines) {
- int j = 0;
- while (j < line.length()) {
- if (line[j] != ' ')
- break;
- ++j;
- }
- if (j < line.length()) {
- if (!set) {
- min = j;
- set = true;
- } else
- min = qMin(min, j);
- }
- }
- for (int i = 0; i < lines.size(); ++i)
- lines[i] = lines[i].mid(min);
-
- return lines.join("\n");
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/location.cpp b/tools/qdoc3/location.cpp
index dee87d13d9..1257a45a29 100644
--- a/tools/qdoc3/location.cpp
+++ b/tools/qdoc3/location.cpp
@@ -390,10 +390,6 @@ QString Location::top() const
if (lineNo() >= 1) {
str += QLatin1Char(':');
str += QString::number(lineNo());
-#if 0
- if (columnNo() >= 1)
- str += ":" + QString::number(columnNo());
-#endif
}
if (etc())
str += QLatin1String(" (etc.)");
diff --git a/tools/qdoc3/main.cpp b/tools/qdoc3/main.cpp
index 2bfe38ed92..782df39cf4 100644
--- a/tools/qdoc3/main.cpp
+++ b/tools/qdoc3/main.cpp
@@ -45,30 +45,19 @@
#include <qglobal.h>
#include <stdlib.h>
-#include "apigenerator.h"
#include "codemarker.h"
#include "codeparser.h"
#include "config.h"
#include "cppcodemarker.h"
#include "cppcodeparser.h"
-#include "cpptoqsconverter.h"
+#include "ditaxmlgenerator.h"
#include "doc.h"
#include "htmlgenerator.h"
-#include "jambiapiparser.h"
-#include "javacodemarker.h"
-#include "javadocgenerator.h"
-#include "linguistgenerator.h"
-#include "loutgenerator.h"
-#include "mangenerator.h"
+#include "jscodemarker.h"
#include "plaincodemarker.h"
-#include "polyarchiveextractor.h"
-#include "polyuncompressor.h"
-#include "qsakernelparser.h"
-#include "qscodemarker.h"
-#include "qscodeparser.h"
-#include "sgmlgenerator.h"
-#include "webxmlgenerator.h"
-#include "ditaxmlgenerator.h"
+#include "puredocparser.h"
+#include "qmlcodemarker.h"
+#include "qmlcodeparser.h"
#include "tokenizer.h"
#include "tree.h"
#include <qdebug.h>
@@ -105,22 +94,6 @@ static bool showInternal = false;
static bool obsoleteLinks = false;
static QStringList defines;
static QHash<QString, Tree *> trees;
-static QString appArg; // application
-
-/*!
- Find the Tree for language \a lang and return a pointer to it.
- If there is no Tree for language \a lang in the Tree table, add
- a new one. The Tree table is indexed by \a lang strings.
- */
-static Tree* treeForLanguage(const QString &lang)
-{
- Tree* tree = trees.value(lang);
- if (tree == 0) {
- tree = new Tree;
- trees.insert( lang, tree );
- }
- return tree;
-}
/*!
Print the help message to \c stdout.
@@ -193,24 +166,6 @@ static void processQdocconfFile(const QString &fileName)
config.load(fileName);
/*
- Set the application to which qdoc will create the output.
- The two applications are:
-
- creator: additional formatting for viewing in
- the Creator application.
-
- online: full-featured online version with search and
- links to Qt topics
- */
- if (appArg.isEmpty()) {
- qDebug() << "Warning: Application flag not specified on"
- << "command line. Options are -creator (default)"
- << "and -online.";
- appArg = "creator";
- }
- config.setStringList(CONFIG_APPLICATION, QStringList(appArg));
-
- /*
Add the defines to the configuration variables.
*/
QStringList defs = defines + config.getStringList(CONFIG_DEFINES);
@@ -229,7 +184,6 @@ static void processQdocconfFile(const QString &fileName)
Location::initialize(config);
Tokenizer::initialize(config);
Doc::initialize(config);
- CppToQsConverter::initialize(config);
CodeMarker::initialize(config);
CodeParser::initialize(config);
Generator::initialize(config);
@@ -270,74 +224,75 @@ static void processQdocconfFile(const QString &fileName)
tree->setVersion(config.getString(CONFIG_VERSION));
/*
- There must be a code parser for the source code language, e.g. C++.
- If there isn't one, give up.
- */
- CodeParser *codeParser = CodeParser::parserForLanguage(lang);
- if (codeParser == 0)
- config.lastLocation().fatal(tr("Cannot parse programming language '%1'").arg(lang));
-
- /*
By default, the only output format is HTML.
*/
QSet<QString> outputFormats = config.getStringSet(CONFIG_OUTPUTFORMATS);
Location outputFormatsLocation = config.lastLocation();
/*
- There must be a code marker for the source code language, e.g. C++.
- If there isn't one, give up.
- */
- CodeMarker *marker = CodeMarker::markerForLanguage(lang);
- if (!marker && !outputFormats.isEmpty())
- langLocation.fatal(tr("Cannot output documentation for programming language '%1'").arg(lang));
-
- /*
- Read some XML indexes. What are they???
+ Read some XML indexes containing definitions from other documentation sets.
*/
QStringList indexFiles = config.getStringList(CONFIG_INDEXES);
tree->readIndexes(indexFiles);
-
+
/*
- Get all the header files: "*.ch *.h *.h++ *.hh *.hpp *.hxx"
- Put them in a set.
+ Read the list of excluded directories.
*/
QSet<QString> excludedDirs;
QStringList excludedDirsList = config.getStringList(CONFIG_EXCLUDEDIRS);
foreach (const QString &excludeDir, excludedDirsList)
excludedDirs.insert(QDir::fromNativeSeparators(excludeDir));
- QSet<QString> headers = QSet<QString>::fromList(
- config.getAllFiles(CONFIG_HEADERS, CONFIG_HEADERDIRS,
- codeParser->headerFileNameFilter(),
- excludedDirs));
/*
- Parse each header file in the set and add it to the big tree.
+ Get all the header files: "*.ch *.h *.h++ *.hh *.hpp *.hxx"
+ Put them in a set.
*/
- QSet<QString>::ConstIterator h = headers.begin();
- while (h != headers.end()) {
- codeParser->parseHeaderFile(config.location(), *h, tree);
- ++h;
- }
- codeParser->doneParsingHeaderFiles(tree);
+ QSet<QString> headers = QSet<QString>::fromList(
+ config.getAllFiles(CONFIG_HEADERS, CONFIG_HEADERDIRS, excludedDirs));
/*
Get all the source text files: "*.cpp *.qdoc *.mm"
Put them in a set.
*/
QSet<QString> sources = QSet<QString>::fromList(
- config.getAllFiles(CONFIG_SOURCES, CONFIG_SOURCEDIRS,
- codeParser->sourceFileNameFilter(),
- excludedDirs));
+ config.getAllFiles(CONFIG_SOURCES, CONFIG_SOURCEDIRS, excludedDirs));
+
+ /*
+ Parse each header file in the set using the appropriate parser and add it
+ to the big tree.
+ */
+ QSet<CodeParser *> usedParsers;
+ QSet<QString>::ConstIterator h = headers.begin();
+ while (h != headers.end()) {
+ CodeParser *codeParser = CodeParser::parserForHeaderFile(*h);
+ if (codeParser) {
+ codeParser->parseHeaderFile(config.location(), *h, tree);
+ usedParsers.insert(codeParser);
+ }
+ ++h;
+ }
+
+ foreach (CodeParser *codeParser, usedParsers)
+ codeParser->doneParsingHeaderFiles(tree);
+
+ usedParsers.clear();
/*
- Parse each source text file in the set and add it to the big tree.
+ Parse each source text file in the set using the appropriate parser and
+ add it to the big tree.
*/
QSet<QString>::ConstIterator s = sources.begin();
while (s != sources.end()) {
- codeParser->parseSourceFile(config.location(), *s, tree);
+ CodeParser *codeParser = CodeParser::parserForSourceFile(*s);
+ if (codeParser) {
+ codeParser->parseSourceFile(config.location(), *s, tree);
+ usedParsers.insert(codeParser);
+ }
++s;
}
- codeParser->doneParsingSourceFiles(tree);
+
+ foreach (CodeParser *codeParser, usedParsers)
+ codeParser->doneParsingSourceFiles(tree);
/*
Now the big tree has been built from all the header and
@@ -358,7 +313,7 @@ static void processQdocconfFile(const QString &fileName)
if (generator == 0)
outputFormatsLocation.fatal(tr("Unknown output format '%1'")
.arg(*of));
- generator->generateTree(tree, marker);
+ generator->generateTree(tree);
++of;
}
@@ -374,7 +329,6 @@ static void processQdocconfFile(const QString &fileName)
Generator::terminate();
CodeParser::terminate();
CodeMarker::terminate();
- CppToQsConverter::terminate();
Doc::terminate();
Tokenizer::terminate();
Location::terminate();
@@ -401,52 +355,24 @@ int main(int argc, char **argv)
#ifndef QT_BOOTSTRAPPED
QCoreApplication app(argc, argv);
#endif
- QString cf = "qsauncompress \1 \2";
- PolyArchiveExtractor qsaExtractor(QStringList() << "qsa",cf);
- cf = "tar -C \2 -xf \1";
- PolyArchiveExtractor tarExtractor(QStringList() << "tar",cf);
- cf = "tar -C \2 -Zxf \1";
- PolyArchiveExtractor tazExtractor(QStringList() << "taz",cf);
- cf = "tar -C \2 -jxf \1";
- PolyArchiveExtractor tbz2Extractor(QStringList() << "tbz" << "tbz2",cf);
- cf = "tar -C \2 -zxf \1";
- PolyArchiveExtractor tgzExtractor(QStringList() << "tgz",cf);
- cf = "unzip \1 -d \2";
- PolyArchiveExtractor zipExtractor(QStringList() << "zip",cf);
- cf = "bunzip2 -c \1 > \2";
- PolyUncompressor bz2Uncompressor(QStringList() << "bz" << "bz2",cf);
- cf = "gunzip -c \1 > \2";
- PolyUncompressor gzAndZUncompressor(QStringList() << "gz" << "z" << "Z",cf);
- cf = "unzip -c \1 > \2";
- PolyUncompressor zipUncompressor(QStringList() << "zip",cf);
/*
Create code parsers for the languages to be parsed,
and create a tree for C++.
*/
CppCodeParser cppParser;
- Tree *cppTree = treeForLanguage(cppParser.language());
-
- QsCodeParser qsParser(cppTree);
- QsaKernelParser qsaKernelParser(cppTree);
- JambiApiParser jambiParser(cppTree);
+ QmlCodeParser qmlParser;
+ PureDocParser docParser;
/*
- Create code markers for plain text, C++, Java, and qs.
+ Create code markers for plain text and C++.
*/
PlainCodeMarker plainMarker;
CppCodeMarker cppMarker;
- JavaCodeMarker javaMarker;
- QsCodeMarker qsMarker;
+ JsCodeMarker jsMarker;
+ QmlCodeMarker qmlMarker;
- ApiGenerator apiGenerator;
HtmlGenerator htmlGenerator;
- JavadocGenerator javadocGenerator;
- LinguistGenerator linguistGenerator;
- LoutGenerator loutGenerator;
- ManGenerator manGenerator;
- SgmlGenerator smglGenerator;
- WebXMLGenerator webxmlGenerator;
DitaXmlGenerator ditaxmlGenerator;
QStringList qdocFiles;
@@ -481,10 +407,6 @@ int main(int argc, char **argv)
else if (opt == "-obsoletelinks") {
obsoleteLinks = true;
}
- else if (opt == "-creator")
- appArg = "creator";
- else if (opt == "-online")
- appArg = "online";
else {
qdocFiles.append(opt);
}
diff --git a/tools/qdoc3/mangenerator.cpp b/tools/qdoc3/mangenerator.cpp
deleted file mode 100644
index 1e85b73160..0000000000
--- a/tools/qdoc3/mangenerator.cpp
+++ /dev/null
@@ -1,228 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- mangenerator.cpp
-*/
-
-#include <qdatetime.h>
-#include <qregexp.h>
-
-#include "mangenerator.h"
-#include "node.h"
-#include "tree.h"
-
-QT_BEGIN_NAMESPACE
-
-ManGenerator::ManGenerator()
-{
- date = QDate::currentDate().toString( "d MMMM yyyy" );
-}
-
-ManGenerator::~ManGenerator()
-{
-}
-
-QString ManGenerator::format()
-{
- return "man";
-}
-
-int ManGenerator::generateAtom( const Atom *atom, const Node * /* relative */,
- CodeMarker * /* marker */ )
-{
-#if 0
- switch ( atom->type() ) {
- case Atom::AbstractBegin:
- break;
- case Atom::AbstractEnd:
- break;
- case Atom::Alias:
- break;
- case Atom::AliasArg:
- break;
- case Atom::BaseName:
- break;
- case Atom::BriefBegin:
- break;
- case Atom::BriefEnd:
- break;
- case Atom::C:
- break;
- case Atom::CaptionBegin:
- break;
- case Atom::CaptionEnd:
- break;
- case Atom::CitationBegin:
- break;
- case Atom::CitationEnd:
- break;
- case Atom::Code:
- break;
- case Atom::FootnoteBegin:
- break;
- case Atom::FootnoteEnd:
- break;
- case Atom::FormatBegin:
- break;
- case Atom::FormatEnd:
- break;
- case Atom::GeneratedList:
- break;
- case Atom::Image:
- break;
- case Atom::ImageText:
- break;
- case Atom::Link:
- break;
- case Atom::LinkNode:
- break;
- case Atom::ListBegin:
- break;
- case Atom::ListItemNumber:
- break;
- case Atom::ListItemBegin:
- out() << ".IP " << atom->string() << ".\n";
- break;
- case Atom::ListItemEnd:
- break;
- case Atom::ListEnd:
- break;
- case Atom::Nop:
- break;
- case Atom::ParaBegin:
- out() << ".PP\n";
- break;
- case Atom::ParaEnd:
- out() << "\n";
- break;
- case Atom::RawFormat:
- break;
- case Atom::RawString:
- break;
- case Atom::SectionBegin:
- break;
- case Atom::SectionEnd:
- break;
- case Atom::SectionHeadingBegin:
- break;
- case Atom::SectionHeadingEnd:
- break;
- case Atom::SidebarBegin:
- break;
- case Atom::SidebarEnd:
- break;
- case Atom::String:
- out() << protectTextLine( atom->string() );
- break;
- case Atom::TableBegin:
- break;
- case Atom::TableEnd:
- break;
- case Atom::TableOfContents:
- break;
- case Atom::Target:
- break;
- case Atom::UnknownCommand:
- ;
- }
-#endif
- unknownAtom( atom );
- return 0;
-}
-
-void ManGenerator::generateClassLikeNode( const InnerNode *classe,
- CodeMarker *marker )
-{
- generateHeader( classe->name() );
- out() << ".SH NAME\n"
- << classe->name() << "\n"
- << ".SH SYNOPSYS\n";
- generateBody( classe, marker );
- generateFooter();
-}
-
-void ManGenerator::generateFakeNode( const FakeNode *fake, CodeMarker *marker )
-{
- generateHeader( "foo" );
- generateBody( fake, marker );
- generateFooter();
-}
-
-QString ManGenerator::fileExtension(const Node * /* node */) const
-{
- return "3qt";
-}
-
-void ManGenerator::generateHeader( const QString& name )
-{
- out() << ".TH " << protectArg( name )
- << " " << protectArg( "3qt" )
- << " " << protectArg( date )
- << " " << protectArg( "Nokia Corporation and/or its subsidiary(-ies)" )
- << " " << protectArg( "Qt Toolkit" ) << "\n";
-}
-
-void ManGenerator::generateFooter()
-{
-}
-
-QString ManGenerator::protectArg( const QString& str )
-{
- for ( int i = 0; i < (int) str.length(); i++ ) {
- if ( str[i] == ' ' || str[i].isSpace() ) {
- QString quoted = str;
- quoted.replace( "\"", "\"\"" );
- return "\"" + quoted + "\"";
- }
- }
- return str;
-}
-
-QString ManGenerator::protectTextLine( const QString& str )
-{
- QString t = str;
- if ( t.startsWith(".") || t.startsWith("'") )
- t.prepend( "\\&" );
- return t;
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp
index d787bc9fc6..cca5e379ff 100644
--- a/tools/qdoc3/node.cpp
+++ b/tools/qdoc3/node.cpp
@@ -1562,11 +1562,6 @@ void QmlClassNode::clear()
*/
QString QmlClassNode::fileBase() const
{
-#if 0
- if (Node::fileBase() == "item")
- qDebug() << "FILEBASE: qmlitem" << name();
- return "qml_" + Node::fileBase();
-#endif
return Node::fileBase();
}
@@ -1702,6 +1697,9 @@ static QString valueType(const QString& n)
*/
bool QmlPropertyNode::isWritable(const Tree* tree) const
{
+ if (wri != Trool_Default)
+ return fromTrool(wri, false);
+
Node* n = parent();
while (n && n->subType() != Node::QmlClass)
n = n->parent();
diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h
index 69f3ba53d4..096ff40348 100644
--- a/tools/qdoc3/node.h
+++ b/tools/qdoc3/node.h
@@ -86,8 +86,8 @@ class Node
enum SubType {
NoSubType,
- Example,
- HeaderFile,
+ Example,
+ HeaderFile,
File,
Image,
Group,
@@ -113,7 +113,7 @@ class Node
Commendable,
Main,
Internal
- }; // don't reorder thisw enum
+ }; // don't reorder this enum
enum ThreadSafeness {
UnspecifiedSafeness,
diff --git a/tools/qdoc3/pagegenerator.cpp b/tools/qdoc3/pagegenerator.cpp
index ca98faab16..4f2a2ee057 100644
--- a/tools/qdoc3/pagegenerator.cpp
+++ b/tools/qdoc3/pagegenerator.cpp
@@ -46,6 +46,7 @@
#include <qfile.h>
#include <qfileinfo.h>
#include <qdebug.h>
+#include "codemarker.h"
#include "pagegenerator.h"
#include "tree.h"
@@ -175,9 +176,9 @@ bool PageGenerator::parseArg(const QString& src,
/*!
This function is recursive.
*/
-void PageGenerator::generateTree(const Tree *tree, CodeMarker *marker)
+void PageGenerator::generateTree(const Tree *tree)
{
- generateInnerNode(tree->root(), marker);
+ generateInnerNode(tree->root());
}
QString PageGenerator::fileBase(const Node *node) const
@@ -320,10 +321,10 @@ QTextStream &PageGenerator::out()
}
/*!
- Recursive writing of html files from the root \a node.
+ Recursive writing of HTML files from the root \a node.
*/
void
-PageGenerator::generateInnerNode(const InnerNode* node, CodeMarker* marker)
+PageGenerator::generateInnerNode(const InnerNode* node)
{
if (!node->url().isNull())
return;
@@ -342,6 +343,11 @@ PageGenerator::generateInnerNode(const InnerNode* node, CodeMarker* marker)
}
}
+ /*
+ Obtain a code marker for the source file.
+ */
+ CodeMarker *marker = CodeMarker::markerForFileName(node->location().filePath());
+
if (node->parent() != 0) {
beginSubPage(node->location(), fileName(node));
if (node->type() == Node::Namespace || node->type() == Node::Class) {
@@ -356,7 +362,7 @@ PageGenerator::generateInnerNode(const InnerNode* node, CodeMarker* marker)
NodeList::ConstIterator c = node->childNodes().begin();
while (c != node->childNodes().end()) {
if ((*c)->isInnerNode() && (*c)->access() != Node::Private)
- generateInnerNode((const InnerNode *) *c, marker);
+ generateInnerNode((const InnerNode *) *c);
++c;
}
}
diff --git a/tools/qdoc3/pagegenerator.h b/tools/qdoc3/pagegenerator.h
index 0fea67aa83..30ce9a5960 100644
--- a/tools/qdoc3/pagegenerator.h
+++ b/tools/qdoc3/pagegenerator.h
@@ -64,7 +64,7 @@ class PageGenerator : public Generator
PageGenerator();
~PageGenerator();
- virtual void generateTree(const Tree* tree, CodeMarker* marker);
+ virtual void generateTree(const Tree *tree);
protected:
virtual QString fileBase(const Node* node) const;
@@ -73,7 +73,7 @@ class PageGenerator : public Generator
QString outFileName();
virtual void beginSubPage(const Location& location, const QString& fileName);
virtual void endSubPage();
- virtual void generateInnerNode(const InnerNode* node, CodeMarker* marker);
+ virtual void generateInnerNode(const InnerNode *node);
QTextStream& out();
QString naturalLanguage;
diff --git a/tools/qdoc3/polyarchiveextractor.cpp b/tools/qdoc3/polyarchiveextractor.cpp
deleted file mode 100644
index b2574ab60b..0000000000
--- a/tools/qdoc3/polyarchiveextractor.cpp
+++ /dev/null
@@ -1,94 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- polyarchiveextractor.cpp
-*/
-
-#include "command.h"
-#include "polyarchiveextractor.h"
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \class PolyArchiveExtractor
-
- \brief The PolyArchiveExtractor class is a class for unpacking
- archive files.
-
- This subclass of ArchiveExtractor contains a parameterized
- command for doing the archive extraction.
-
- It has an extractArchive() function you call to do the
- actual archive extraction.
- */
-
-/*!
- The constructor takes the list of filename \a extensions,
- which it passes to the base class, and the \a commandFormat,
- which it stores locally. The \a commandFormat is a command
- template string.
- */
-PolyArchiveExtractor::PolyArchiveExtractor( const QStringList& extensions,
- const QString& commandFormat )
- : ArchiveExtractor( extensions ), cmd( commandFormat )
-{
-}
-
-/*!
- The destructor doesn't have to do anything.
- */
-PolyArchiveExtractor::~PolyArchiveExtractor()
-{
-}
-
-/*!
- Call this function to do the actual archive extraction. It calls
- the executeCommand() function to do the work. That's all it does.
- */
-void PolyArchiveExtractor::extractArchive( const Location& location,
- const QString& filePath,
- const QString& outputDir )
-{
- executeCommand( location, cmd, QStringList() << filePath << outputDir );
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/polyarchiveextractor.h b/tools/qdoc3/polyarchiveextractor.h
deleted file mode 100644
index 7ed0f6233f..0000000000
--- a/tools/qdoc3/polyarchiveextractor.h
+++ /dev/null
@@ -1,70 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- polyarchiveextractor.h
-*/
-
-#ifndef POLYARCHIVEEXTRACTOR_H
-#define POLYARCHIVEEXTRACTOR_H
-
-#include "archiveextractor.h"
-
-QT_BEGIN_NAMESPACE
-
-class PolyArchiveExtractor : public ArchiveExtractor
-{
- public:
- PolyArchiveExtractor(const QStringList& extensions,
- const QString& commandFormat);
- ~PolyArchiveExtractor();
-
- virtual void extractArchive(const Location& location,
- const QString& filePath,
- const QString& outputDir);
-
- private:
- QString cmd;
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/tools/qdoc3/polyuncompressor.cpp b/tools/qdoc3/polyuncompressor.cpp
deleted file mode 100644
index 97b5e0de00..0000000000
--- a/tools/qdoc3/polyuncompressor.cpp
+++ /dev/null
@@ -1,109 +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 tools applications 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 "command.h"
-#include "polyuncompressor.h"
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \class PolyUncompressor
-
- \brief The PolyUncompressor class is a class for uncompressing
- compressed files.
-
- This subclass of Uncompressor contains a parameterized
- command for doing the uncompression
-
- It has an uncompressFile() function you call to do the
- actual uncompression.
- */
-
-/*!
- The constructor takes the list of filename \a extensions,
- which it passes to the base class, and the \a commandFormat,
- which it stores locally. The \a commandFormat is a command
- template string.
- */
-PolyUncompressor::PolyUncompressor( const QStringList& extensions,
- const QString& commandFormat )
- : Uncompressor( extensions ), cmd( commandFormat )
-{
-}
-
-/*!
- The destructor doesn't have to do anything.
- */
-PolyUncompressor::~PolyUncompressor()
-{
-}
-
-/*!
- From \a filePath, derive a file path for the uncompressed
- file and return it. If it can't figure out what the file
- path should be, it just concatenates ".out" to the
- \a filePath and returns that.
- */
-QString PolyUncompressor::uncompressedFilePath( const QString& filePath )
-{
- QStringList::ConstIterator e = fileExtensions().begin();
- while ( e != fileExtensions().end() ) {
- QString dotExt = "." + *e;
- if ( filePath.endsWith(dotExt) )
- return filePath.left( filePath.length() - dotExt.length() );
- ++e;
- }
- return filePath + ".out"; // doesn't really matter
-}
-
-/*!
- Call this function to do the actual uncompressing. It calls
- the executeCommand() function to do the work. That's all it does.
- */
-void PolyUncompressor::uncompressFile( const Location& location,
- const QString& filePath,
- const QString& outputFilePath )
-{
- executeCommand( location, cmd,
- QStringList() << filePath << outputFilePath );
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/polyuncompressor.h b/tools/qdoc3/polyuncompressor.h
deleted file mode 100644
index e12f475634..0000000000
--- a/tools/qdoc3/polyuncompressor.h
+++ /dev/null
@@ -1,71 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- polyuncompressor.h
-*/
-
-#ifndef POLYUNCOMPRESSOR_H
-#define POLYUNCOMPRESSOR_H
-
-#include "uncompressor.h"
-
-QT_BEGIN_NAMESPACE
-
-class PolyUncompressor : public Uncompressor
-{
- public:
- PolyUncompressor(const QStringList& extensions,
- const QString& commandFormat);
- ~PolyUncompressor();
-
- virtual QString uncompressedFilePath(const QString& filePath);
- virtual void uncompressFile(const Location& location,
- const QString& filePath,
- const QString& outputFilePath);
-
- private:
- QString cmd;
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/tools/qdoc3/loutgenerator.cpp b/tools/qdoc3/puredocparser.cpp
index caf98e8bca..de7d668be7 100644
--- a/tools/qdoc3/loutgenerator.cpp
+++ b/tools/qdoc3/puredocparser.cpp
@@ -40,24 +40,24 @@
****************************************************************************/
/*
- loutgenerator.cpp
+ puredocparser.cpp
*/
-#include "loutgenerator.h"
+#include "puredocparser.h"
QT_BEGIN_NAMESPACE
-LoutGenerator::LoutGenerator()
+PureDocParser::PureDocParser()
{
}
-LoutGenerator::~LoutGenerator()
+PureDocParser::~PureDocParser()
{
}
-QString LoutGenerator::format()
+QStringList PureDocParser::sourceFileNameFilter()
{
- return "lout";
+ return QStringList("*.qdoc");
}
QT_END_NAMESPACE
diff --git a/tools/qdoc3/ccodeparser.h b/tools/qdoc3/puredocparser.h
index 1771fc9db0..6e37dbd347 100644
--- a/tools/qdoc3/ccodeparser.h
+++ b/tools/qdoc3/puredocparser.h
@@ -40,25 +40,31 @@
****************************************************************************/
/*
- ccodeparser.h
+ puredocparser.h
*/
-#ifndef CCODEPARSER_H
-#define CCODEPARSER_H
+#ifndef PUREDOCPARSER_H
+#define PUREDOCPARSER_H
+
+#include <QSet>
#include "cppcodeparser.h"
+#include "location.h"
QT_BEGIN_NAMESPACE
-class CCodeParser : public CppCodeParser
+class Config;
+class Node;
+class QString;
+class Tree;
+
+class PureDocParser : public CppCodeParser
{
public:
- CCodeParser();
- ~CCodeParser();
+ PureDocParser();
+ virtual ~PureDocParser();
- virtual QString language();
- virtual QString headerFileNameFilter();
- virtual QString sourceFileNameFilter();
+ virtual QStringList sourceFileNameFilter();
};
QT_END_NAMESPACE
diff --git a/tools/qdoc3/qdoc3.pro b/tools/qdoc3/qdoc3.pro
index ae0bf255a7..4bc6bca004 100644
--- a/tools/qdoc3/qdoc3.pro
+++ b/tools/qdoc3/qdoc3.pro
@@ -24,105 +24,79 @@ build_all:!build_pass {
}
CONFIG -= app_bundle
-HEADERS += apigenerator.h \
- archiveextractor.h \
- atom.h \
- bookgenerator.h \
- ccodeparser.h \
+HEADERS += atom.h \
codechunk.h \
codemarker.h \
codeparser.h \
- command.h \
config.h \
cppcodemarker.h \
cppcodeparser.h \
- cpptoqsconverter.h \
- dcfsection.h \
ditaxmlgenerator.h \
doc.h \
editdistance.h \
generator.h \
helpprojectwriter.h \
htmlgenerator.h \
- jambiapiparser.h \
- javacodemarker.h \
- javadocgenerator.h \
- linguistgenerator.h \
+ jscodemarker.h \
location.h \
- loutgenerator.h \
- mangenerator.h \
node.h \
openedlist.h \
pagegenerator.h \
plaincodemarker.h \
- polyarchiveextractor.h \
- polyuncompressor.h \
- qsakernelparser.h \
- qscodemarker.h \
- qscodeparser.h \
+ puredocparser.h \
+ qmlcodemarker.h \
+ qmlcodeparser.h \
+ qmlmarkupvisitor.h \
+ qmlvisitor.h \
quoter.h \
separator.h \
- sgmlgenerator.h \
text.h \
tokenizer.h \
tr.h \
- tree.h \
- uncompressor.h \
- webxmlgenerator.h
-SOURCES += apigenerator.cpp \
- archiveextractor.cpp \
- atom.cpp \
- bookgenerator.cpp \
- ccodeparser.cpp \
+ tree.h
+SOURCES += atom.cpp \
codechunk.cpp \
codemarker.cpp \
codeparser.cpp \
- command.cpp \
config.cpp \
cppcodemarker.cpp \
cppcodeparser.cpp \
- cpptoqsconverter.cpp \
- dcfsection.cpp \
ditaxmlgenerator.cpp \
doc.cpp \
editdistance.cpp \
generator.cpp \
helpprojectwriter.cpp \
htmlgenerator.cpp \
- jambiapiparser.cpp \
- javacodemarker.cpp \
- javadocgenerator.cpp \
- linguistgenerator.cpp \
+ jscodemarker.cpp \
location.cpp \
- loutgenerator.cpp \
- mangenerator.cpp \
main.cpp \
node.cpp \
openedlist.cpp \
pagegenerator.cpp \
plaincodemarker.cpp \
- polyarchiveextractor.cpp \
- polyuncompressor.cpp \
- qsakernelparser.cpp \
- qscodemarker.cpp \
- qscodeparser.cpp \
+ puredocparser.cpp \
+ qmlcodemarker.cpp \
+ qmlcodeparser.cpp \
+ qmlmarkupvisitor.cpp \
+ qmlvisitor.cpp \
quoter.cpp \
separator.cpp \
- sgmlgenerator.cpp \
text.cpp \
tokenizer.cpp \
tree.cpp \
- uncompressor.cpp \
- webxmlgenerator.cpp \
yyindent.cpp
+INCLUDEPATH += $$(QT_BUILD_TREE)/include/QtDeclarative
+
+include($$(QT_SOURCE_TREE)/src/declarative/qml/parser/parser.pri)
+
### Documentation for qdoc3 ###
qtPrepareTool(QDOC, qdoc3)
-docs.commands = $$QDOC qdoc-manual.qdocconf
+html-docs.commands = cd \"$$PWD/doc\" && $$QDOC qdoc-manual.qdocconf
-QMAKE_EXTRA_TARGETS += docs
+QMAKE_EXTRA_TARGETS += html-docs
target.path = $$[QT_INSTALL_BINS]
INSTALLS += target
diff --git a/tools/qdoc3/qmlcodemarker.cpp b/tools/qdoc3/qmlcodemarker.cpp
new file mode 100644
index 0000000000..1e4ad1e610
--- /dev/null
+++ b/tools/qdoc3/qmlcodemarker.cpp
@@ -0,0 +1,287 @@
+/****************************************************************************
+**
+** 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 tools applications 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$
+**
+****************************************************************************/
+
+/*
+ qmlcodemarker.cpp
+*/
+
+#include "private/qdeclarativejsast_p.h"
+#include "private/qdeclarativejsastfwd_p.h"
+#include "private/qdeclarativejsengine_p.h"
+#include "private/qdeclarativejslexer_p.h"
+#include "private/qdeclarativejsnodepool_p.h"
+#include "private/qdeclarativejsparser_p.h"
+
+#include "atom.h"
+#include "node.h"
+#include "qmlcodemarker.h"
+#include "qmlmarkupvisitor.h"
+#include "text.h"
+#include "tree.h"
+
+QT_BEGIN_NAMESPACE
+
+QmlCodeMarker::QmlCodeMarker()
+{
+}
+
+QmlCodeMarker::~QmlCodeMarker()
+{
+}
+
+/*!
+ Returns true if the \a code is recognized by the parser.
+ */
+bool QmlCodeMarker::recognizeCode(const QString &code)
+{
+ QDeclarativeJS::Engine engine;
+ QDeclarativeJS::Lexer lexer(&engine);
+ QDeclarativeJS::Parser parser(&engine);
+ QDeclarativeJS::NodePool m_nodePool("<QmlCodeMarker::recognizeCode>", &engine);
+
+ QString newCode = code;
+ extractPragmas(newCode);
+ lexer.setCode(newCode, 1);
+
+ return parser.parse();
+}
+
+/*!
+ Returns true if \a ext is any of a list of file extensions
+ for the QML language.
+ */
+bool QmlCodeMarker::recognizeExtension(const QString &ext)
+{
+ return ext == "qml";
+}
+
+/*!
+ Returns true if the \a language is recognized. Only "QML" is
+ recognized by this marker.
+ */
+bool QmlCodeMarker::recognizeLanguage(const QString &language)
+{
+ return language == "QML";
+}
+
+/*!
+ Returns the name of the \a node. Method names include are returned with a
+ trailing set of parentheses.
+ */
+QString QmlCodeMarker::plainName(const Node *node)
+{
+ QString name = node->name();
+ if (node->type() == Node::QmlMethod)
+ name += "()";
+ return name;
+}
+
+QString QmlCodeMarker::plainFullName(const Node *node, const Node *relative)
+{
+ if (node->name().isEmpty()) {
+ return "global";
+ }
+ else {
+ QString fullName;
+ while (node) {
+ fullName.prepend(plainName(node));
+ if (node->parent() == relative || node->parent()->name().isEmpty())
+ break;
+ fullName.prepend("::");
+ node = node->parent();
+ }
+ return fullName;
+ }
+}
+
+QString QmlCodeMarker::markedUpCode(const QString &code,
+ const Node *relative,
+ const QString &dirPath)
+{
+ return addMarkUp(code, relative, dirPath);
+}
+
+QString QmlCodeMarker::markedUpName(const Node *node)
+{
+ QString name = linkTag(node, taggedNode(node));
+ if (node->type() == Node::QmlMethod)
+ name += "()";
+ return name;
+}
+
+QString QmlCodeMarker::markedUpFullName(const Node *node, const Node *relative)
+{
+ if (node->name().isEmpty()) {
+ return "global";
+ }
+ else {
+ QString fullName;
+ for (;;) {
+ fullName.prepend(markedUpName(node));
+ if (node->parent() == relative || node->parent()->name().isEmpty())
+ break;
+ fullName.prepend("<@op>::</@op>");
+ node = node->parent();
+ }
+ return fullName;
+ }
+}
+
+QString QmlCodeMarker::markedUpIncludes(const QStringList& includes)
+{
+ QString code;
+
+ QStringList::ConstIterator inc = includes.begin();
+ while (inc != includes.end()) {
+ code += "import " + *inc + "\n";
+ ++inc;
+ }
+ return protect(addMarkUp(code, 0, ""));
+}
+
+QString QmlCodeMarker::functionBeginRegExp(const QString& funcName)
+{
+ return "^" + QRegExp::escape("function " + funcName) + "$";
+
+}
+
+QString QmlCodeMarker::functionEndRegExp(const QString& /* funcName */)
+{
+ return "^\\}$";
+}
+
+QString QmlCodeMarker::addMarkUp(const QString &code,
+ const Node * /* relative */,
+ const QString & /* dirPath */)
+{
+ QDeclarativeJS::Engine engine;
+ QDeclarativeJS::Lexer lexer(&engine);
+
+ QString newCode = code;
+ QList<QDeclarativeJS::AST::SourceLocation> pragmas = extractPragmas(newCode);
+ lexer.setCode(newCode, 1);
+
+ QDeclarativeJS::Parser parser(&engine);
+ QDeclarativeJS::NodePool m_nodePool("<QmlCodeMarker::addMarkUp>", &engine);
+ QString output;
+
+ if (parser.parse()) {
+ QDeclarativeJS::AST::UiProgram *ast = parser.ast();
+ // Pass the unmodified code to the visitor so that pragmas and other
+ // unhandled source text can be output.
+ QmlMarkupVisitor visitor(code, pragmas, &engine);
+ QDeclarativeJS::AST::Node::accept(ast, &visitor);
+ output = visitor.markedUpCode();
+ }
+ return output;
+}
+
+/*
+Copied and pasted from src/declarative/qml/qdeclarativescriptparser.cpp.
+*/
+static void replaceWithSpace(QString &str, int idx, int n)
+{
+ QChar *data = str.data() + idx;
+ const QChar space(QLatin1Char(' '));
+ for (int ii = 0; ii < n; ++ii)
+ *data++ = space;
+}
+
+/*
+Copied and pasted from src/declarative/qml/qdeclarativescriptparser.cpp then
+modified to return a list of removed pragmas.
+
+Searches for ".pragma <value>" declarations within \a script. Currently supported pragmas
+are:
+ library
+*/
+QList<QDeclarativeJS::AST::SourceLocation> QmlCodeMarker::extractPragmas(QString &script)
+{
+ const QString pragma(QLatin1String("pragma"));
+ const QString library(QLatin1String("library"));
+ QList<QDeclarativeJS::AST::SourceLocation> removed;
+
+ QDeclarativeJS::Lexer l(0);
+ l.setCode(script, 0);
+
+ int token = l.lex();
+
+ while (true) {
+ if (token != QDeclarativeJSGrammar::T_DOT)
+ return removed;
+
+ int startOffset = l.tokenOffset();
+ int startLine = l.currentLineNo();
+ int startColumn = l.currentColumnNo();
+
+ token = l.lex();
+
+ if (token != QDeclarativeJSGrammar::T_IDENTIFIER ||
+ l.currentLineNo() != startLine ||
+ script.mid(l.tokenOffset(), l.tokenLength()) != pragma)
+ return removed;
+
+ token = l.lex();
+
+ if (token != QDeclarativeJSGrammar::T_IDENTIFIER ||
+ l.currentLineNo() != startLine)
+ return removed;
+
+ QString pragmaValue = script.mid(l.tokenOffset(), l.tokenLength());
+ int endOffset = l.tokenLength() + l.tokenOffset();
+
+ token = l.lex();
+ if (l.currentLineNo() == startLine)
+ return removed;
+
+ if (pragmaValue == QLatin1String("library")) {
+ replaceWithSpace(script, startOffset, endOffset - startOffset);
+ removed.append(
+ QDeclarativeJS::AST::SourceLocation(
+ startOffset, endOffset - startOffset,
+ startLine, startColumn));
+ } else
+ return removed;
+ }
+ return removed;
+}
+
+QT_END_NAMESPACE
diff --git a/tools/qdoc3/linguistgenerator.h b/tools/qdoc3/qmlcodemarker.h
index 979db021dd..68e6753937 100644
--- a/tools/qdoc3/linguistgenerator.h
+++ b/tools/qdoc3/qmlcodemarker.h
@@ -40,44 +40,44 @@
****************************************************************************/
/*
- LinguistGenerator.h
+ qmlcodemarker.h
*/
-#ifndef LINGUISTGENERATOR_H
-#define LINGUISTGENERATOR_H
+#ifndef QMLCODEMARKER_H
+#define QMLCODEMARKER_H
-#include <qmap.h>
-#include <qregexp.h>
-#include <qdom.h>
-
-#include "codemarker.h"
-#include "config.h"
-#include "pagegenerator.h"
+#include "private/qdeclarativejsastfwd_p.h"
+#include "cppcodemarker.h"
QT_BEGIN_NAMESPACE
-class LinguistGenerator : public PageGenerator
+class QmlCodeMarker : public CppCodeMarker
{
public:
- LinguistGenerator();
- ~LinguistGenerator();
+ QmlCodeMarker();
+ ~QmlCodeMarker();
- virtual void initializeGenerator( const Config& config );
- virtual void terminateGenerator();
- virtual QString format();
+ virtual bool recognizeCode(const QString &code);
+ virtual bool recognizeExtension(const QString &ext);
+ virtual bool recognizeLanguage(const QString &language);
+ virtual QString plainName(const Node *node);
+ virtual QString plainFullName(const Node *node, const Node *relative);
+ virtual QString markedUpCode(const QString &code,
+ const Node *relative,
+ const QString &dirPath);
-protected:
- virtual void generateClassLikeNode(const InnerNode *inner,
- CodeMarker *marker);
- virtual void generateFakeNode( const FakeNode *fake, CodeMarker *marker );
- virtual QString fileExtension(const Node *node) const;
+ virtual QString markedUpName(const Node *node);
+ virtual QString markedUpFullName(const Node *node, const Node *relative);
+ virtual QString markedUpIncludes(const QStringList &includes);
+ virtual QString functionBeginRegExp(const QString &funcName);
+ virtual QString functionEndRegExp(const QString &funcName);
- QList<QDomElement> generateIndexSections(QDomDocument &document,
- const Node *node, CodeMarker *marker);
- virtual QString fullName(const Node *node) const;
+ /* Copied from src/declarative/qml/qdeclarativescriptparser.cpp */
+ QList<QDeclarativeJS::AST::SourceLocation> extractPragmas(QString &script);
private:
- QString simplified(const QString &text) const;
+ QString addMarkUp(const QString &code, const Node * /* relative */,
+ const QString & /* dirPath */);
};
QT_END_NAMESPACE
diff --git a/tools/qdoc3/qmlcodeparser.cpp b/tools/qdoc3/qmlcodeparser.cpp
new file mode 100644
index 0000000000..9c1d4eeab8
--- /dev/null
+++ b/tools/qdoc3/qmlcodeparser.cpp
@@ -0,0 +1,235 @@
+/****************************************************************************
+**
+** 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 tools applications 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$
+**
+****************************************************************************/
+
+/*
+ qmlcodeparser.cpp
+*/
+
+#include "private/qdeclarativejsast_p.h"
+#include "private/qdeclarativejsastvisitor_p.h"
+#include "private/qdeclarativejsnodepool_p.h"
+
+#include "qmlcodeparser.h"
+#include "node.h"
+#include "tree.h"
+#include "config.h"
+#include "qmlvisitor.h"
+
+QT_BEGIN_NAMESPACE
+
+#define COMMAND_STARTPAGE Doc::alias("startpage")
+#define COMMAND_VARIABLE Doc::alias("variable")
+
+#define COMMAND_QMLCLASS Doc::alias("qmlclass")
+#define COMMAND_QMLPROPERTY Doc::alias("qmlproperty")
+#define COMMAND_QMLATTACHEDPROPERTY Doc::alias("qmlattachedproperty")
+#define COMMAND_QMLINHERITS Doc::alias("inherits")
+#define COMMAND_QMLSIGNAL Doc::alias("qmlsignal")
+#define COMMAND_QMLATTACHEDSIGNAL Doc::alias("qmlattachedsignal")
+#define COMMAND_QMLMETHOD Doc::alias("qmlmethod")
+#define COMMAND_QMLATTACHEDMETHOD Doc::alias("qmlattachedmethod")
+#define COMMAND_QMLDEFAULT Doc::alias("default")
+#define COMMAND_QMLBASICTYPE Doc::alias("qmlbasictype")
+
+QmlCodeParser::QmlCodeParser()
+{
+}
+
+QmlCodeParser::~QmlCodeParser()
+{
+}
+
+/*!
+ Initialize the code parser base class.
+ */
+void QmlCodeParser::initializeParser(const Config &config)
+{
+ CodeParser::initializeParser(config);
+
+ lexer = new QDeclarativeJS::Lexer(&engine);
+ parser = new QDeclarativeJS::Parser(&engine);
+}
+
+void QmlCodeParser::terminateParser()
+{
+ delete lexer;
+ delete parser;
+}
+
+QString QmlCodeParser::language()
+{
+ return "QML";
+}
+
+QStringList QmlCodeParser::sourceFileNameFilter()
+{
+ return QStringList("*.qml");
+}
+
+void QmlCodeParser::parseSourceFile(const Location& location,
+ const QString& filePath,
+ Tree *tree)
+{
+ QFile in(filePath);
+ if (!in.open(QIODevice::ReadOnly)) {
+ location.error(tr("Cannot open QML file '%1'").arg(filePath));
+ return;
+ }
+
+ QString document = in.readAll();
+ in.close();
+
+ Location fileLocation(filePath);
+
+ QString newCode = document;
+ extractPragmas(newCode);
+ lexer->setCode(newCode, 1);
+
+ QSet<QString> topicCommandsAllowed = topicCommands();
+ QSet<QString> otherMetacommandsAllowed = otherMetaCommands();
+ QSet<QString> metacommandsAllowed = topicCommandsAllowed +
+ otherMetacommandsAllowed;
+
+ QDeclarativeJS::NodePool m_nodePool(filePath, &engine);
+
+ if (parser->parse()) {
+ QDeclarativeJS::AST::UiProgram *ast = parser->ast();
+ QmlDocVisitor visitor(filePath, newCode, &engine, tree, metacommandsAllowed);
+ QDeclarativeJS::AST::Node::accept(ast, &visitor);
+ }
+}
+
+void QmlCodeParser::doneParsingSourceFiles(Tree *tree)
+{
+}
+
+/*!
+ Returns the set of strings reopresenting the topic commands.
+ */
+QSet<QString> QmlCodeParser::topicCommands()
+{
+ return QSet<QString>() << COMMAND_VARIABLE
+ << COMMAND_QMLCLASS
+ << COMMAND_QMLPROPERTY
+ << COMMAND_QMLATTACHEDPROPERTY
+ << COMMAND_QMLSIGNAL
+ << COMMAND_QMLATTACHEDSIGNAL
+ << COMMAND_QMLMETHOD
+ << COMMAND_QMLATTACHEDMETHOD
+ << COMMAND_QMLBASICTYPE;
+}
+
+/*!
+ Returns the set of strings representing the common metacommands
+ plus some other metacommands.
+ */
+QSet<QString> QmlCodeParser::otherMetaCommands()
+{
+ return commonMetaCommands() << COMMAND_STARTPAGE
+ << COMMAND_QMLINHERITS
+ << COMMAND_QMLDEFAULT;
+}
+
+/*
+Copied and pasted from src/declarative/qml/qdeclarativescriptparser.cpp.
+*/
+static void replaceWithSpace(QString &str, int idx, int n)
+{
+ QChar *data = str.data() + idx;
+ const QChar space(QLatin1Char(' '));
+ for (int ii = 0; ii < n; ++ii)
+ *data++ = space;
+}
+
+/*
+Copied and pasted from src/declarative/qml/qdeclarativescriptparser.cpp then
+modified to return no values.
+
+Searches for ".pragma <value>" declarations within \a script. Currently supported pragmas
+are:
+ library
+*/
+void QmlCodeParser::extractPragmas(QString &script)
+{
+ const QString pragma(QLatin1String("pragma"));
+ const QString library(QLatin1String("library"));
+
+ QDeclarativeJS::Lexer l(0);
+ l.setCode(script, 0);
+
+ int token = l.lex();
+
+ while (true) {
+ if (token != QDeclarativeJSGrammar::T_DOT)
+ return;
+
+ int startOffset = l.tokenOffset();
+ int startLine = l.currentLineNo();
+
+ token = l.lex();
+
+ if (token != QDeclarativeJSGrammar::T_IDENTIFIER ||
+ l.currentLineNo() != startLine ||
+ script.mid(l.tokenOffset(), l.tokenLength()) != pragma)
+ return;
+
+ token = l.lex();
+
+ if (token != QDeclarativeJSGrammar::T_IDENTIFIER ||
+ l.currentLineNo() != startLine)
+ return;
+
+ QString pragmaValue = script.mid(l.tokenOffset(), l.tokenLength());
+ int endOffset = l.tokenLength() + l.tokenOffset();
+
+ token = l.lex();
+ if (l.currentLineNo() == startLine)
+ return;
+
+ if (pragmaValue == QLatin1String("library"))
+ replaceWithSpace(script, startOffset, endOffset - startOffset);
+ else
+ return;
+ }
+ return;
+}
+
+QT_END_NAMESPACE
diff --git a/tools/qdoc3/qsakernelparser.h b/tools/qdoc3/qmlcodeparser.h
index 9ac84fb8fd..bbacd72280 100644
--- a/tools/qdoc3/qsakernelparser.h
+++ b/tools/qdoc3/qmlcodeparser.h
@@ -40,36 +40,52 @@
****************************************************************************/
/*
- qsakernelparser.h
+ qmlcodeparser.h
*/
-#ifndef QSAKERNELPARSER_H
-#define QSAKERNELPARSER_H
+#ifndef QMLCODEPARSER_H
+#define QMLCODEPARSER_H
+
+#include <QSet>
+#include "private/qdeclarativejsengine_p.h"
+#include "private/qdeclarativejslexer_p.h"
+#include "private/qdeclarativejsparser_p.h"
#include "codeparser.h"
+#include "location.h"
QT_BEGIN_NAMESPACE
-class Tokenizer;
+class Config;
+class Node;
+class QString;
+class Tree;
-class QsaKernelParser : public CodeParser
+class QmlCodeParser : public CodeParser
{
public:
- QsaKernelParser( Tree *cppTree );
- ~QsaKernelParser();
+ QmlCodeParser();
+ virtual ~QmlCodeParser();
+ virtual void initializeParser(const Config& config);
+ virtual void terminateParser();
virtual QString language();
- virtual QString sourceFileNameFilter();
- virtual void parseSourceFile( const Location& location,
- const QString& filePath, Tree *tree );
- virtual void doneParsingSourceFiles( Tree *tree );
+ virtual QStringList sourceFileNameFilter();
+ virtual void parseSourceFile(const Location& location,
+ const QString& filePath, Tree *tree);
+ virtual void doneParsingSourceFiles(Tree *tree);
-private:
- void readToken();
+ /* Copied from src/declarative/qml/qdeclarativescriptparser.cpp */
+ void extractPragmas(QString &script);
- Tree *cppTre;
- Tokenizer *tokenizer;
- int tok;
+protected:
+ virtual QSet<QString> topicCommands();
+ virtual QSet<QString> otherMetaCommands();
+
+private:
+ QDeclarativeJS::Engine engine;
+ QDeclarativeJS::Lexer *lexer;
+ QDeclarativeJS::Parser *parser;
};
QT_END_NAMESPACE
diff --git a/tools/qdoc3/qmlmarkupvisitor.cpp b/tools/qdoc3/qmlmarkupvisitor.cpp
new file mode 100644
index 0000000000..6bede969bf
--- /dev/null
+++ b/tools/qdoc3/qmlmarkupvisitor.cpp
@@ -0,0 +1,863 @@
+/****************************************************************************
+**
+** 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 tools applications 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 <QStringList>
+#include <QtGlobal>
+#include "private/qdeclarativejsast_p.h"
+#include "private/qdeclarativejsastfwd_p.h"
+#include "private/qdeclarativejsengine_p.h"
+
+#include "qmlmarkupvisitor.h"
+
+QT_BEGIN_NAMESPACE
+
+QmlMarkupVisitor::QmlMarkupVisitor(const QString &source,
+ const QList<QDeclarativeJS::AST::SourceLocation> &pragmas,
+ QDeclarativeJS::Engine *engine)
+{
+ this->source = source;
+ this->engine = engine;
+
+ cursor = 0;
+ extraIndex = 0;
+
+ // Merge the lists of locations of pragmas and comments in the source code.
+ int i = 0;
+ int j = 0;
+ while (i < engine->comments().length() && j < pragmas.length()) {
+ if (engine->comments()[i].offset < pragmas[j].offset) {
+ extraTypes.append(Comment);
+ extraLocations.append(engine->comments()[i]);
+ ++i;
+ } else {
+ extraTypes.append(Pragma);
+ extraLocations.append(engine->comments()[j]);
+ ++j;
+ }
+ }
+
+ while (i < engine->comments().length()) {
+ extraTypes.append(Comment);
+ extraLocations.append(engine->comments()[i]);
+ ++i;
+ }
+
+ while (j < pragmas.length()) {
+ extraTypes.append(Pragma);
+ extraLocations.append(pragmas[j]);
+ ++j;
+ }
+}
+
+QmlMarkupVisitor::~QmlMarkupVisitor()
+{
+}
+
+// The protect() function is a copy of the one from CppCodeMarker.
+
+static const QString samp = QLatin1String("&amp;");
+static const QString slt = QLatin1String("&lt;");
+static const QString sgt = QLatin1String("&gt;");
+static const QString squot = QLatin1String("&quot;");
+
+QString QmlMarkupVisitor::protect(const QString& str)
+{
+ int n = str.length();
+ QString marked;
+ marked.reserve(n * 2 + 30);
+ const QChar *data = str.constData();
+ for (int i = 0; i != n; ++i) {
+ switch (data[i].unicode()) {
+ case '&': marked += samp; break;
+ case '<': marked += slt; break;
+ case '>': marked += sgt; break;
+ case '"': marked += squot; break;
+ default : marked += data[i];
+ }
+ }
+ return marked;
+}
+
+QString QmlMarkupVisitor::markedUpCode()
+{
+ if (int(cursor) < source.length())
+ addExtra(cursor, source.length());
+
+ return output;
+}
+
+void QmlMarkupVisitor::addExtra(quint32 start, quint32 finish)
+{
+ if (extraIndex >= extraLocations.length()) {
+ QString extra = source.mid(start, finish - start);
+ if (extra.trimmed().isEmpty())
+ output += extra;
+ else
+ output += protect(extra); // text that should probably have been caught by the parser
+
+ cursor = finish;
+ return;
+ }
+
+ while (extraIndex < extraLocations.length()) {
+ if (extraTypes[extraIndex] == Comment) {
+ if (extraLocations[extraIndex].offset - 2 >= start)
+ break;
+ } else {
+ if (extraLocations[extraIndex].offset >= start)
+ break;
+ }
+ extraIndex++;
+ }
+
+ quint32 i = start;
+ while (i < finish && extraIndex < extraLocations.length()) {
+ quint32 j = extraLocations[extraIndex].offset - 2;
+ if (i <= j && j < finish) {
+ if (i < j)
+ output += protect(source.mid(i, j - i));
+
+ quint32 l = extraLocations[extraIndex].length;
+ if (extraTypes[extraIndex] == Comment) {
+ if (source.mid(j, 2) == QLatin1String("/*"))
+ l += 4;
+ else
+ l += 2;
+ output += QLatin1String("<@comment>");
+ output += protect(source.mid(j, l));
+ output += QLatin1String("</@comment>");
+ } else
+ output += protect(source.mid(j, l));
+
+ extraIndex++;
+ i = j + l;
+ } else
+ break;
+ }
+
+ QString extra = source.mid(i, finish - i);
+ if (extra.trimmed().isEmpty())
+ output += extra;
+ else
+ output += protect(extra); // text that should probably have been caught by the parser
+
+ cursor = finish;
+}
+
+void QmlMarkupVisitor::addMarkedUpToken(
+ QDeclarativeJS::AST::SourceLocation &location, const QString &tagName)
+{
+ if (!location.isValid())
+ return;
+
+ if (cursor < location.offset)
+ addExtra(cursor, location.offset);
+ else if (cursor > location.offset)
+ return;
+
+ output += QString(QLatin1String("<@%1>%2</@%3>")).arg(tagName, protect(sourceText(location)), tagName);
+ cursor += location.length;
+}
+
+QString QmlMarkupVisitor::sourceText(QDeclarativeJS::AST::SourceLocation &location)
+{
+ return source.mid(location.offset, location.length);
+}
+
+void QmlMarkupVisitor::addVerbatim(QDeclarativeJS::AST::SourceLocation first,
+ QDeclarativeJS::AST::SourceLocation last)
+{
+ if (!first.isValid())
+ return;
+
+ quint32 start = first.begin();
+ quint32 finish;
+ if (last.isValid())
+ finish = last.end();
+ else
+ finish = first.end();
+
+ if (cursor < start)
+ addExtra(cursor, start);
+ else if (cursor > start)
+ return;
+
+ QString text = source.mid(start, finish - start);
+ output += protect(text);
+ cursor = finish;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::UiImport *uiimport)
+{
+ addVerbatim(uiimport->importToken);
+ if (!uiimport->importUri)
+ addMarkedUpToken(uiimport->fileNameToken, QLatin1String("headerfile"));
+ return false;
+}
+
+void QmlMarkupVisitor::endVisit(QDeclarativeJS::AST::UiImport *uiimport)
+{
+ addVerbatim(uiimport->versionToken);
+ addVerbatim(uiimport->asToken);
+ addMarkedUpToken(uiimport->importIdToken, QLatin1String("headerfile"));
+ addVerbatim(uiimport->semicolonToken);
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::UiPublicMember *member)
+{
+ if (member->type == QDeclarativeJS::AST::UiPublicMember::Property) {
+ addVerbatim(member->defaultToken);
+ addVerbatim(member->readonlyToken);
+ addVerbatim(member->propertyToken);
+ addVerbatim(member->typeModifierToken);
+ addMarkedUpToken(member->typeToken, QLatin1String("type"));
+ addMarkedUpToken(member->identifierToken, QLatin1String("name"));
+ addVerbatim(member->colonToken);
+ if (member->binding)
+ QDeclarativeJS::AST::Node::accept(member->binding, this);
+ else if (member->expression)
+ QDeclarativeJS::AST::Node::accept(member->expression, this);
+ } else {
+ addVerbatim(member->propertyToken);
+ addVerbatim(member->typeModifierToken);
+ addMarkedUpToken(member->typeToken, QLatin1String("type"));
+ //addVerbatim(member->identifierToken);
+ QDeclarativeJS::AST::Node::accept(member->parameters, this);
+ }
+ addVerbatim(member->semicolonToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::UiObjectInitializer *initializer)
+{
+ addVerbatim(initializer->lbraceToken, initializer->lbraceToken);
+ return true;
+}
+
+void QmlMarkupVisitor::endVisit(QDeclarativeJS::AST::UiObjectInitializer *initializer)
+{
+ addVerbatim(initializer->rbraceToken, initializer->rbraceToken);
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::UiObjectBinding *binding)
+{
+ QDeclarativeJS::AST::Node::accept(binding->qualifiedId, this);
+ addVerbatim(binding->colonToken);
+ QDeclarativeJS::AST::Node::accept(binding->qualifiedTypeNameId, this);
+ QDeclarativeJS::AST::Node::accept(binding->initializer, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::UiScriptBinding *binding)
+{
+ QDeclarativeJS::AST::Node::accept(binding->qualifiedId, this);
+ addVerbatim(binding->colonToken);
+ QDeclarativeJS::AST::Node::accept(binding->statement, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::UiArrayBinding *binding)
+{
+ QDeclarativeJS::AST::Node::accept(binding->qualifiedId, this);
+ addVerbatim(binding->colonToken);
+ addVerbatim(binding->lbracketToken);
+ QDeclarativeJS::AST::Node::accept(binding->members, this);
+ addVerbatim(binding->rbracketToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::UiArrayMemberList *list)
+{
+ for (QDeclarativeJS::AST::UiArrayMemberList *it = list; it; it = it->next) {
+ QDeclarativeJS::AST::Node::accept(it->member, this);
+ //addVerbatim(it->commaToken);
+ }
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::UiQualifiedId *id)
+{
+ addMarkedUpToken(id->identifierToken, QLatin1String("name"));
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::UiSignature *signature)
+{
+ addVerbatim(signature->lparenToken);
+ return true;
+}
+
+void QmlMarkupVisitor::endVisit(QDeclarativeJS::AST::UiSignature *signature)
+{
+ addVerbatim(signature->rparenToken);
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::UiFormal *formal)
+{
+ addMarkedUpToken(formal->identifierToken, QLatin1String("name"));
+ addVerbatim(formal->asToken);
+ addVerbatim(formal->aliasToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::ThisExpression *expression)
+{
+ addVerbatim(expression->thisToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::IdentifierExpression *identifier)
+{
+ addMarkedUpToken(identifier->identifierToken, QLatin1String("name"));
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::NullExpression *null)
+{
+ addMarkedUpToken(null->nullToken, QLatin1String("number"));
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::TrueLiteral *literal)
+{
+ addMarkedUpToken(literal->trueToken, QLatin1String("number"));
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::FalseLiteral *literal)
+{
+ addMarkedUpToken(literal->falseToken, QLatin1String("number"));
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::NumericLiteral *literal)
+{
+ addMarkedUpToken(literal->literalToken, QLatin1String("number"));
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::StringLiteral *literal)
+{
+ addMarkedUpToken(literal->literalToken, QLatin1String("string"));
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::RegExpLiteral *literal)
+{
+ addVerbatim(literal->literalToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::ArrayLiteral *literal)
+{
+ addVerbatim(literal->lbracketToken);
+ QDeclarativeJS::AST::Node::accept(literal->elements, this);
+ addVerbatim(literal->rbracketToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::ObjectLiteral *literal)
+{
+ addVerbatim(literal->lbraceToken);
+ return true;
+}
+
+void QmlMarkupVisitor::endVisit(QDeclarativeJS::AST::ObjectLiteral *literal)
+{
+ addVerbatim(literal->rbraceToken);
+}
+
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::ElementList *list)
+{
+ for (QDeclarativeJS::AST::ElementList *it = list; it; it = it->next) {
+ QDeclarativeJS::AST::Node::accept(it->expression, this);
+ //addVerbatim(it->commaToken);
+ }
+ QDeclarativeJS::AST::Node::accept(list->elision, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::Elision *elision)
+{
+ addVerbatim(elision->commaToken, elision->commaToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::PropertyNameAndValueList *list)
+{
+ QDeclarativeJS::AST::Node::accept(list->name, this);
+ addVerbatim(list->colonToken, list->colonToken);
+ QDeclarativeJS::AST::Node::accept(list->value, this);
+ addVerbatim(list->commaToken, list->commaToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::ArrayMemberExpression *expression)
+{
+ QDeclarativeJS::AST::Node::accept(expression->base, this);
+ addVerbatim(expression->lbracketToken);
+ QDeclarativeJS::AST::Node::accept(expression->expression, this);
+ addVerbatim(expression->rbracketToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::FieldMemberExpression *expression)
+{
+ QDeclarativeJS::AST::Node::accept(expression->base, this);
+ addVerbatim(expression->dotToken);
+ addMarkedUpToken(expression->identifierToken, QLatin1String("name"));
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::NewMemberExpression *expression)
+{
+ addVerbatim(expression->newToken);
+ QDeclarativeJS::AST::Node::accept(expression->base, this);
+ addVerbatim(expression->lparenToken);
+ QDeclarativeJS::AST::Node::accept(expression->arguments, this);
+ addVerbatim(expression->rparenToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::NewExpression *expression)
+{
+ addVerbatim(expression->newToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::ArgumentList *list)
+{
+ addVerbatim(list->commaToken, list->commaToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::PostIncrementExpression *expression)
+{
+ addVerbatim(expression->incrementToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::PostDecrementExpression *expression)
+{
+ addVerbatim(expression->decrementToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::DeleteExpression *expression)
+{
+ addVerbatim(expression->deleteToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::VoidExpression *expression)
+{
+ addVerbatim(expression->voidToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::TypeOfExpression *expression)
+{
+ addVerbatim(expression->typeofToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::PreIncrementExpression *expression)
+{
+ addVerbatim(expression->incrementToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::PreDecrementExpression *expression)
+{
+ addVerbatim(expression->decrementToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::UnaryPlusExpression *expression)
+{
+ addVerbatim(expression->plusToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::UnaryMinusExpression *expression)
+{
+ addVerbatim(expression->minusToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::TildeExpression *expression)
+{
+ addVerbatim(expression->tildeToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::NotExpression *expression)
+{
+ addVerbatim(expression->notToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::BinaryExpression *expression)
+{
+ QDeclarativeJS::AST::Node::accept(expression->left, this);
+ addMarkedUpToken(expression->operatorToken, QLatin1String("op"));
+ QDeclarativeJS::AST::Node::accept(expression->right, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::ConditionalExpression *expression)
+{
+ QDeclarativeJS::AST::Node::accept(expression->expression, this);
+ addVerbatim(expression->questionToken);
+ QDeclarativeJS::AST::Node::accept(expression->ok, this);
+ addVerbatim(expression->colonToken);
+ QDeclarativeJS::AST::Node::accept(expression->ko, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::Expression *expression)
+{
+ QDeclarativeJS::AST::Node::accept(expression->left, this);
+ addVerbatim(expression->commaToken);
+ QDeclarativeJS::AST::Node::accept(expression->right, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::Block *block)
+{
+ addVerbatim(block->lbraceToken);
+ return true;
+}
+
+void QmlMarkupVisitor::endVisit(QDeclarativeJS::AST::Block *block)
+{
+ addVerbatim(block->rbraceToken);
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::VariableStatement *statement)
+{
+ addVerbatim(statement->declarationKindToken);
+ QDeclarativeJS::AST::Node::accept(statement->declarations, this);
+ addVerbatim(statement->semicolonToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::VariableDeclarationList *list)
+{
+ for (QDeclarativeJS::AST::VariableDeclarationList *it = list; it; it = it->next) {
+ QDeclarativeJS::AST::Node::accept(it->declaration, this);
+ addVerbatim(it->commaToken);
+ }
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::VariableDeclaration *declaration)
+{
+ addMarkedUpToken(declaration->identifierToken, QLatin1String("name"));
+ QDeclarativeJS::AST::Node::accept(declaration->expression, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::EmptyStatement *statement)
+{
+ addVerbatim(statement->semicolonToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::ExpressionStatement *statement)
+{
+ QDeclarativeJS::AST::Node::accept(statement->expression, this);
+ addVerbatim(statement->semicolonToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::IfStatement *statement)
+{
+ addMarkedUpToken(statement->ifToken, QLatin1String("keyword"));
+ addVerbatim(statement->lparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->expression, this);
+ addVerbatim(statement->rparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->ok, this);
+ if (statement->ko) {
+ addMarkedUpToken(statement->elseToken, QLatin1String("keyword"));
+ QDeclarativeJS::AST::Node::accept(statement->ko, this);
+ }
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::DoWhileStatement *statement)
+{
+ addMarkedUpToken(statement->doToken, QLatin1String("keyword"));
+ QDeclarativeJS::AST::Node::accept(statement->statement, this);
+ addMarkedUpToken(statement->whileToken, QLatin1String("keyword"));
+ addVerbatim(statement->lparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->expression, this);
+ addVerbatim(statement->rparenToken);
+ addVerbatim(statement->semicolonToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::WhileStatement *statement)
+{
+ addMarkedUpToken(statement->whileToken, QLatin1String("keyword"));
+ addVerbatim(statement->lparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->expression, this);
+ addVerbatim(statement->rparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->statement, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::ForStatement *statement)
+{
+ addMarkedUpToken(statement->forToken, QLatin1String("keyword"));
+ addVerbatim(statement->lparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->initialiser, this);
+ addVerbatim(statement->firstSemicolonToken);
+ QDeclarativeJS::AST::Node::accept(statement->condition, this);
+ addVerbatim(statement->secondSemicolonToken);
+ QDeclarativeJS::AST::Node::accept(statement->expression, this);
+ addVerbatim(statement->rparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->statement, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::LocalForStatement *statement)
+{
+ addMarkedUpToken(statement->forToken, QLatin1String("keyword"));
+ addVerbatim(statement->lparenToken);
+ addMarkedUpToken(statement->varToken, QLatin1String("keyword"));
+ QDeclarativeJS::AST::Node::accept(statement->declarations, this);
+ addVerbatim(statement->firstSemicolonToken);
+ QDeclarativeJS::AST::Node::accept(statement->condition, this);
+ addVerbatim(statement->secondSemicolonToken);
+ QDeclarativeJS::AST::Node::accept(statement->expression, this);
+ addVerbatim(statement->rparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->statement, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::ForEachStatement *statement)
+{
+ addMarkedUpToken(statement->forToken, QLatin1String("keyword"));
+ addVerbatim(statement->lparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->initialiser, this);
+ addVerbatim(statement->inToken);
+ QDeclarativeJS::AST::Node::accept(statement->expression, this);
+ addVerbatim(statement->rparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->statement, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::LocalForEachStatement *statement)
+{
+ addMarkedUpToken(statement->forToken, QLatin1String("keyword"));
+ addVerbatim(statement->lparenToken);
+ addMarkedUpToken(statement->varToken, QLatin1String("keyword"));
+ QDeclarativeJS::AST::Node::accept(statement->declaration, this);
+ addVerbatim(statement->inToken);
+ QDeclarativeJS::AST::Node::accept(statement->expression, this);
+ addVerbatim(statement->rparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->statement, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::ContinueStatement *statement)
+{
+ addMarkedUpToken(statement->continueToken, QLatin1String("keyword"));
+ addMarkedUpToken(statement->identifierToken, QLatin1String("name"));
+ addVerbatim(statement->semicolonToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::BreakStatement *statement)
+{
+ addMarkedUpToken(statement->breakToken, QLatin1String("keyword"));
+ addMarkedUpToken(statement->identifierToken, QLatin1String("name"));
+ addVerbatim(statement->semicolonToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::ReturnStatement *statement)
+{
+ addMarkedUpToken(statement->returnToken, QLatin1String("keyword"));
+ QDeclarativeJS::AST::Node::accept(statement->expression, this);
+ addVerbatim(statement->semicolonToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::WithStatement *statement)
+{
+ addMarkedUpToken(statement->withToken, QLatin1String("keyword"));
+ addVerbatim(statement->lparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->expression, this);
+ addVerbatim(statement->rparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->statement, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::CaseBlock *block)
+{
+ addVerbatim(block->lbraceToken);
+ return true;
+}
+
+void QmlMarkupVisitor::endVisit(QDeclarativeJS::AST::CaseBlock *block)
+{
+ addVerbatim(block->rbraceToken, block->rbraceToken);
+}
+
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::SwitchStatement *statement)
+{
+ addMarkedUpToken(statement->switchToken, QLatin1String("keyword"));
+ addVerbatim(statement->lparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->expression, this);
+ addVerbatim(statement->rparenToken);
+ QDeclarativeJS::AST::Node::accept(statement->block, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::CaseClause *clause)
+{
+ addMarkedUpToken(clause->caseToken, QLatin1String("keyword"));
+ QDeclarativeJS::AST::Node::accept(clause->expression, this);
+ addVerbatim(clause->colonToken);
+ QDeclarativeJS::AST::Node::accept(clause->statements, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::DefaultClause *clause)
+{
+ addMarkedUpToken(clause->defaultToken, QLatin1String("keyword"));
+ addVerbatim(clause->colonToken, clause->colonToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::LabelledStatement *statement)
+{
+ addMarkedUpToken(statement->identifierToken, QLatin1String("name"));
+ addVerbatim(statement->colonToken);
+ QDeclarativeJS::AST::Node::accept(statement->statement, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::ThrowStatement *statement)
+{
+ addMarkedUpToken(statement->throwToken, QLatin1String("keyword"));
+ QDeclarativeJS::AST::Node::accept(statement->expression, this);
+ addVerbatim(statement->semicolonToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::Catch *c)
+{
+ addMarkedUpToken(c->catchToken, QLatin1String("keyword"));
+ addVerbatim(c->lparenToken);
+ addMarkedUpToken(c->identifierToken, QLatin1String("name"));
+ addVerbatim(c->rparenToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::Finally *f)
+{
+ addMarkedUpToken(f->finallyToken, QLatin1String("keyword"));
+ QDeclarativeJS::AST::Node::accept(f->statement, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::TryStatement *statement)
+{
+ addMarkedUpToken(statement->tryToken, QLatin1String("keyword"));
+ QDeclarativeJS::AST::Node::accept(statement->statement, this);
+ QDeclarativeJS::AST::Node::accept(statement->catchExpression, this);
+ QDeclarativeJS::AST::Node::accept(statement->finallyExpression, this);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::FunctionExpression *expression)
+{
+ addMarkedUpToken(expression->functionToken, QLatin1String("keyword"));
+ addMarkedUpToken(expression->identifierToken, QLatin1String("name"));
+ addVerbatim(expression->lparenToken);
+ QDeclarativeJS::AST::Node::accept(expression->formals, this);
+ addVerbatim(expression->rparenToken);
+ addVerbatim(expression->lbraceToken);
+ QDeclarativeJS::AST::Node::accept(expression->body, this);
+ addVerbatim(expression->rbraceToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::FunctionDeclaration *declaration)
+{
+ addMarkedUpToken(declaration->functionToken, QLatin1String("keyword"));
+ addMarkedUpToken(declaration->identifierToken, QLatin1String("name"));
+ addVerbatim(declaration->lparenToken);
+ QDeclarativeJS::AST::Node::accept(declaration->formals, this);
+ addVerbatim(declaration->rparenToken);
+ addVerbatim(declaration->lbraceToken);
+ QDeclarativeJS::AST::Node::accept(declaration->body, this);
+ addVerbatim(declaration->rbraceToken);
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::FormalParameterList *list)
+{
+ addVerbatim(list->commaToken);
+ addMarkedUpToken(list->identifierToken, QLatin1String("name"));
+ return false;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::DebuggerStatement *statement)
+{
+ addVerbatim(statement->debuggerToken);
+ addVerbatim(statement->semicolonToken);
+ return true;
+}
+
+bool QmlMarkupVisitor::visit(QDeclarativeJS::AST::UiObjectDefinition *definition)
+{
+ QDeclarativeJS::AST::Node::accept(definition->qualifiedTypeNameId, this);
+ QDeclarativeJS::AST::Node::accept(definition->initializer, this);
+ return false;
+}
+
+QT_END_NAMESPACE
diff --git a/tools/qdoc3/qmlmarkupvisitor.h b/tools/qdoc3/qmlmarkupvisitor.h
new file mode 100644
index 0000000000..7a9ff22e79
--- /dev/null
+++ b/tools/qdoc3/qmlmarkupvisitor.h
@@ -0,0 +1,180 @@
+/****************************************************************************
+**
+** 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 tools applications 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 QMLVISITOR_H
+#define QMLVISITOR_H
+
+#include <QString>
+#include "private/qdeclarativejsastvisitor_p.h"
+#include "node.h"
+#include "tree.h"
+
+QT_BEGIN_NAMESPACE
+
+class QmlMarkupVisitor : public QDeclarativeJS::AST::Visitor
+{
+public:
+ enum ExtraType{
+ Comment,
+ Pragma
+ };
+
+ QmlMarkupVisitor(const QString &code,
+ const QList<QDeclarativeJS::AST::SourceLocation> &pragmas,
+ QDeclarativeJS::Engine *engine);
+ virtual ~QmlMarkupVisitor();
+
+ QString markedUpCode();
+
+ virtual bool visit(QDeclarativeJS::AST::UiImport *);
+ virtual void endVisit(QDeclarativeJS::AST::UiImport *);
+
+ virtual bool visit(QDeclarativeJS::AST::UiPublicMember *);
+ virtual bool visit(QDeclarativeJS::AST::UiObjectDefinition *);
+
+ virtual bool visit(QDeclarativeJS::AST::UiObjectInitializer *);
+ virtual void endVisit(QDeclarativeJS::AST::UiObjectInitializer *);
+
+ virtual bool visit(QDeclarativeJS::AST::UiObjectBinding *);
+ virtual bool visit(QDeclarativeJS::AST::UiScriptBinding *);
+ virtual bool visit(QDeclarativeJS::AST::UiArrayBinding *);
+ virtual bool visit(QDeclarativeJS::AST::UiArrayMemberList *);
+ virtual bool visit(QDeclarativeJS::AST::UiQualifiedId *);
+
+ virtual bool visit(QDeclarativeJS::AST::UiSignature *);
+ virtual void endVisit(QDeclarativeJS::AST::UiSignature *);
+
+ virtual bool visit(QDeclarativeJS::AST::UiFormal *);
+ virtual bool visit(QDeclarativeJS::AST::ThisExpression *);
+ virtual bool visit(QDeclarativeJS::AST::IdentifierExpression *);
+ virtual bool visit(QDeclarativeJS::AST::NullExpression *);
+ virtual bool visit(QDeclarativeJS::AST::TrueLiteral *);
+ virtual bool visit(QDeclarativeJS::AST::FalseLiteral *);
+ virtual bool visit(QDeclarativeJS::AST::NumericLiteral *);
+ virtual bool visit(QDeclarativeJS::AST::StringLiteral *);
+ virtual bool visit(QDeclarativeJS::AST::RegExpLiteral *);
+ virtual bool visit(QDeclarativeJS::AST::ArrayLiteral *);
+
+ virtual bool visit(QDeclarativeJS::AST::ObjectLiteral *);
+ virtual void endVisit(QDeclarativeJS::AST::ObjectLiteral *);
+
+ virtual bool visit(QDeclarativeJS::AST::ElementList *);
+ virtual bool visit(QDeclarativeJS::AST::Elision *);
+ virtual bool visit(QDeclarativeJS::AST::PropertyNameAndValueList *);
+ virtual bool visit(QDeclarativeJS::AST::ArrayMemberExpression *);
+ virtual bool visit(QDeclarativeJS::AST::FieldMemberExpression *);
+ virtual bool visit(QDeclarativeJS::AST::NewMemberExpression *);
+ virtual bool visit(QDeclarativeJS::AST::NewExpression *);
+ virtual bool visit(QDeclarativeJS::AST::ArgumentList *);
+ virtual bool visit(QDeclarativeJS::AST::PostIncrementExpression *);
+ virtual bool visit(QDeclarativeJS::AST::PostDecrementExpression *);
+ virtual bool visit(QDeclarativeJS::AST::DeleteExpression *);
+ virtual bool visit(QDeclarativeJS::AST::VoidExpression *);
+ virtual bool visit(QDeclarativeJS::AST::TypeOfExpression *);
+ virtual bool visit(QDeclarativeJS::AST::PreIncrementExpression *);
+ virtual bool visit(QDeclarativeJS::AST::PreDecrementExpression *);
+ virtual bool visit(QDeclarativeJS::AST::UnaryPlusExpression *);
+ virtual bool visit(QDeclarativeJS::AST::UnaryMinusExpression *);
+ virtual bool visit(QDeclarativeJS::AST::TildeExpression *);
+ virtual bool visit(QDeclarativeJS::AST::NotExpression *);
+ virtual bool visit(QDeclarativeJS::AST::BinaryExpression *);
+ virtual bool visit(QDeclarativeJS::AST::ConditionalExpression *);
+ virtual bool visit(QDeclarativeJS::AST::Expression *);
+
+ virtual bool visit(QDeclarativeJS::AST::Block *);
+ virtual void endVisit(QDeclarativeJS::AST::Block *);
+
+ virtual bool visit(QDeclarativeJS::AST::VariableStatement *);
+ virtual bool visit(QDeclarativeJS::AST::VariableDeclarationList *);
+ virtual bool visit(QDeclarativeJS::AST::VariableDeclaration *);
+ virtual bool visit(QDeclarativeJS::AST::EmptyStatement *);
+ virtual bool visit(QDeclarativeJS::AST::ExpressionStatement *);
+ virtual bool visit(QDeclarativeJS::AST::IfStatement *);
+ virtual bool visit(QDeclarativeJS::AST::DoWhileStatement *);
+ virtual bool visit(QDeclarativeJS::AST::WhileStatement *);
+ virtual bool visit(QDeclarativeJS::AST::ForStatement *);
+ virtual bool visit(QDeclarativeJS::AST::LocalForStatement *);
+ virtual bool visit(QDeclarativeJS::AST::ForEachStatement *);
+ virtual bool visit(QDeclarativeJS::AST::LocalForEachStatement *);
+ virtual bool visit(QDeclarativeJS::AST::ContinueStatement *);
+ virtual bool visit(QDeclarativeJS::AST::BreakStatement *);
+ virtual bool visit(QDeclarativeJS::AST::ReturnStatement *);
+ virtual bool visit(QDeclarativeJS::AST::WithStatement *);
+
+ virtual bool visit(QDeclarativeJS::AST::CaseBlock *);
+ virtual void endVisit(QDeclarativeJS::AST::CaseBlock *);
+
+ virtual bool visit(QDeclarativeJS::AST::SwitchStatement *);
+ virtual bool visit(QDeclarativeJS::AST::CaseClause *);
+ virtual bool visit(QDeclarativeJS::AST::DefaultClause *);
+ virtual bool visit(QDeclarativeJS::AST::LabelledStatement *);
+ virtual bool visit(QDeclarativeJS::AST::ThrowStatement *);
+ virtual bool visit(QDeclarativeJS::AST::TryStatement *);
+ virtual bool visit(QDeclarativeJS::AST::Catch *);
+ virtual bool visit(QDeclarativeJS::AST::Finally *);
+ virtual bool visit(QDeclarativeJS::AST::FunctionDeclaration *);
+ virtual bool visit(QDeclarativeJS::AST::FunctionExpression *);
+ virtual bool visit(QDeclarativeJS::AST::FormalParameterList *);
+ virtual bool visit(QDeclarativeJS::AST::DebuggerStatement *);
+
+protected:
+ QString protect(const QString &string);
+
+private:
+ void addExtra(quint32 start, quint32 finish);
+ void addMarkedUpToken(QDeclarativeJS::AST::SourceLocation &location,
+ const QString &text);
+ void addVerbatim(QDeclarativeJS::AST::SourceLocation first,
+ QDeclarativeJS::AST::SourceLocation last = QDeclarativeJS::AST::SourceLocation());
+ QString sourceText(QDeclarativeJS::AST::SourceLocation &location);
+
+ QDeclarativeJS::Engine *engine;
+ QList<ExtraType> extraTypes;
+ QList<QDeclarativeJS::AST::SourceLocation> extraLocations;
+ QString source;
+ QString output;
+ quint32 cursor;
+ int extraIndex;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/tools/qdoc3/qmlvisitor.cpp b/tools/qdoc3/qmlvisitor.cpp
new file mode 100644
index 0000000000..9295624351
--- /dev/null
+++ b/tools/qdoc3/qmlvisitor.cpp
@@ -0,0 +1,221 @@
+/****************************************************************************
+**
+** 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 tools applications 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 <QFileInfo>
+#include <QStringList>
+#include <QtGlobal>
+#include "private/qdeclarativejsast_p.h"
+#include "private/qdeclarativejsastfwd_p.h"
+#include "private/qdeclarativejsengine_p.h"
+
+#include "node.h"
+#include "qmlvisitor.h"
+
+QT_BEGIN_NAMESPACE
+
+QmlDocVisitor::QmlDocVisitor(const QString &filePath, const QString &code,
+ QDeclarativeJS::Engine *engine, Tree *tree, QSet<QString> &commands)
+{
+ this->filePath = filePath;
+ this->name = QFileInfo(filePath).baseName();
+ document = code;
+ this->engine = engine;
+ this->tree = tree;
+ this->commands = commands;
+ current = tree->root();
+}
+
+QmlDocVisitor::~QmlDocVisitor()
+{
+}
+
+QDeclarativeJS::AST::SourceLocation QmlDocVisitor::precedingComment(unsigned offset) const
+{
+ QDeclarativeJS::AST::SourceLocation currentLoc;
+
+ foreach (const QDeclarativeJS::AST::SourceLocation &loc, engine->comments()) {
+ if (loc.begin() > lastEndOffset && loc.end() < offset)
+ currentLoc = loc;
+ else
+ break;
+ }
+ if (currentLoc.isValid()) {
+ QString comment = document.mid(currentLoc.offset, currentLoc.length);
+ if (comment.startsWith("!") || comment.startsWith("*"))
+ return currentLoc;
+ }
+
+ return QDeclarativeJS::AST::SourceLocation();
+}
+
+void QmlDocVisitor::applyDocumentation(QDeclarativeJS::AST::SourceLocation location,
+ Node *node)
+{
+ QDeclarativeJS::AST::SourceLocation loc = precedingComment(location.begin());
+
+ if (loc.isValid()) {
+ QString source = document.mid(loc.offset, loc.length);
+ if (source.startsWith(QLatin1String("!")) ||
+ (source.startsWith(QLatin1String("*")) &&
+ source[1] != QLatin1Char('*'))) {
+
+ Location start(filePath);
+ start.setLineNo(loc.startLine);
+ start.setColumnNo(loc.startColumn);
+ Location finish(filePath);
+ finish.setLineNo(loc.startLine);
+ finish.setColumnNo(loc.startColumn);
+
+ Doc doc(start, finish, source.mid(1), commands);
+ node->setDoc(doc);
+ }
+ }
+}
+
+/*!
+ Visits element definitions, recording them in a tree structure.
+*/
+bool QmlDocVisitor::visit(QDeclarativeJS::AST::UiObjectDefinition *definition)
+{
+ QString type = definition->qualifiedTypeNameId->name->asString();
+
+ if (current->type() == Node::Namespace) {
+ QmlClassNode *component = new QmlClassNode(current, name, 0);
+ component->setTitle(QLatin1String("QML ") + name + QLatin1String(" Component"));
+
+ QmlClassNode::addInheritedBy(type, component);
+ component->setLink(Node::InheritsLink, type, type);
+
+ applyDocumentation(definition->firstSourceLocation(), component);
+
+ current = component;
+ }
+
+ return true;
+}
+
+void QmlDocVisitor::endVisit(QDeclarativeJS::AST::UiObjectDefinition *definition)
+{
+ lastEndOffset = definition->lastSourceLocation().end();
+}
+
+bool QmlDocVisitor::visit(QDeclarativeJS::AST::UiImportList *imports)
+{
+ // Note that the imports list can be traversed by iteration to obtain
+ // all the imports in the document at once, having found just one:
+ // *it = imports; it; it = it->next
+
+ QString module = document.mid(imports->import->fileNameToken.offset,
+ imports->import->fileNameToken.length);
+ QString version = document.mid(imports->import->versionToken.offset,
+ imports->import->versionToken.length);
+ importList.append(QPair<QString, QString>(module, version));
+
+ return true;
+}
+
+/*!
+ Visits public member declarations, such as signals and properties.
+ These only include custom signals and properties.
+*/
+bool QmlDocVisitor::visit(QDeclarativeJS::AST::UiPublicMember *member)
+{
+ switch (member->type) {
+ case QDeclarativeJS::AST::UiPublicMember::Signal:
+ {
+ if (current->type() == Node::Fake) {
+ QmlClassNode *qmlClass = static_cast<QmlClassNode *>(current);
+ if (qmlClass) {
+
+ QString name = member->name->asString();
+ FunctionNode *qmlSignal = new FunctionNode(Node::QmlSignal, current, name, false);
+
+ QList<Parameter> parameters;
+ for (QDeclarativeJS::AST::UiParameterList *it = member->parameters; it; it = it->next) {
+ if (it->type && it->name)
+ parameters.append(Parameter(it->type->asString(), "", it->name->asString()));
+ }
+
+ qmlSignal->setParameters(parameters);
+ applyDocumentation(member->firstSourceLocation(), qmlSignal);
+ }
+ }
+ break;
+ }
+ case QDeclarativeJS::AST::UiPublicMember::Property:
+ {
+ QString type = member->memberType->asString();
+ QString name = member->name->asString();
+
+ if (current->type() == Node::Fake) {
+ QmlClassNode *qmlClass = static_cast<QmlClassNode *>(current);
+ if (qmlClass) {
+
+ QString name = member->name->asString();
+ QmlPropGroupNode *qmlPropGroup = new QmlPropGroupNode(qmlClass, name, false);
+ if (member->isDefaultMember)
+ qmlPropGroup->setDefault();
+ QmlPropertyNode *qmlPropNode = new QmlPropertyNode(qmlPropGroup, name, type, false);
+ qmlPropNode->setWritable(!member->isReadonlyMember);
+ applyDocumentation(member->firstSourceLocation(), qmlPropNode);
+ }
+ }
+ break;
+ }
+ default:
+ return false;
+ }
+
+ //current->doc = precedingComment(member->firstSourceLocation().begin());
+ return true;
+}
+
+void QmlDocVisitor::endVisit(QDeclarativeJS::AST::UiPublicMember *definition)
+{
+ lastEndOffset = definition->lastSourceLocation().end();
+}
+
+bool QmlDocVisitor::visit(QDeclarativeJS::AST::IdentifierPropertyName *idproperty)
+{
+ return true;
+}
+
+QT_END_NAMESPACE
diff --git a/tools/qdoc3/cpptoqsconverter.h b/tools/qdoc3/qmlvisitor.h
index 001091b14b..c7b4bda603 100644
--- a/tools/qdoc3/cpptoqsconverter.h
+++ b/tools/qdoc3/qmlvisitor.h
@@ -39,48 +39,46 @@
**
****************************************************************************/
-/*
- cpptoqsconverter.h
-*/
-
-#ifndef CPPTOQSCONVERTER_H
-#define CPPTOQSCONVERTER_H
-
-#include <qregexp.h>
+#ifndef QMLVISITOR_H
+#define QMLVISITOR_H
+#include <QString>
+#include "private/qdeclarativejsastvisitor_p.h"
+#include "node.h"
#include "tree.h"
QT_BEGIN_NAMESPACE
-class CppToQsConverter
+class QmlDocVisitor : public QDeclarativeJS::AST::Visitor
{
public:
- CppToQsConverter() { }
+ QmlDocVisitor(const QString &filePath, const QString &code,
+ QDeclarativeJS::Engine *engine, Tree *tree, QSet<QString> &commands);
+ virtual ~QmlDocVisitor();
+
+ bool visit(QDeclarativeJS::AST::UiImportList *imports);
+
+ bool visit(QDeclarativeJS::AST::UiObjectDefinition *definition);
+ void endVisit(QDeclarativeJS::AST::UiObjectDefinition *definition);
- ClassNode *findClassNode( Tree *qsTree, const QString& qtName );
- QString convertedDataType( Tree *qsTree, const QString& leftType,
- const QString& rightType = "" );
- QString convertedCode( Tree *qsTree, const QString& code,
- const QSet<QString>& classesWithNoQ );
+ bool visit(QDeclarativeJS::AST::UiPublicMember *member);
+ void endVisit(QDeclarativeJS::AST::UiPublicMember *definition);
- static void initialize( const Config& config );
- static void terminate();
+ bool visit(QDeclarativeJS::AST::IdentifierPropertyName *idproperty);
private:
- void clearState();
- QString convertCodeLine( Tree *qsTree, const QStringList& program,
- const QString& code,
- const QSet<QString>& classesWithNoQ );
- QString convertComment( Tree *qsTree, const QString& comment,
- const QSet<QString>& classesWithNoQ );
- QString convertExpr( Tree *qsTree, const QString& expr,
- const QSet<QString>& classesWithNoQ );
- void updateDelimDepths( const QString& code );
+ QDeclarativeJS::AST::SourceLocation precedingComment(unsigned offset) const;
+ void applyDocumentation(QDeclarativeJS::AST::SourceLocation location, Node *node);
- static QRegExp qClassRegExp;
- static QRegExp addressOperatorRegExp;
- static QRegExp gulbrandsenRegExp;
- static int tabSize;
+ QDeclarativeJS::Engine *engine;
+ quint32 lastEndOffset;
+ QString filePath;
+ QString name;
+ QString document;
+ QList<QPair<QString, QString> > importList;
+ QSet<QString> commands;
+ Tree *tree;
+ InnerNode *current;
};
QT_END_NAMESPACE
diff --git a/tools/qdoc3/qsakernelparser.cpp b/tools/qdoc3/qsakernelparser.cpp
deleted file mode 100644
index 8f12eda956..0000000000
--- a/tools/qdoc3/qsakernelparser.cpp
+++ /dev/null
@@ -1,186 +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 tools applications 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 <qfile.h>
-
-#include "qsakernelparser.h"
-#include "tokenizer.h"
-#include "tree.h"
-
-QT_BEGIN_NAMESPACE
-
-QsaKernelParser::QsaKernelParser( Tree *cppTree )
- : cppTre( cppTree )
-{
-}
-
-QsaKernelParser::~QsaKernelParser()
-{
-}
-
-QString QsaKernelParser::language()
-{
- return "QSA Kernel C++";
-}
-
-QString QsaKernelParser::sourceFileNameFilter()
-{
- return "*.cpp";
-}
-
-void QsaKernelParser::parseSourceFile( const Location& location,
- const QString& filePath,
- Tree * /* tree */ )
-{
- QFile in(filePath);
- if (!in.open(QIODevice::ReadOnly)) {
- location.error( tr("Cannot open QSA kernel file '%1'").arg(filePath) );
- return;
- }
-
- Location fileLocation( filePath );
- Tokenizer fileTokenizer( fileLocation, in );
- tokenizer = &fileTokenizer;
- readToken();
-
- QString ident;
- QString className;
- int delimDepth = 0;
-
- while ( tok != Tok_Eoi ) {
- if ( tok == Tok_Ident ) {
- ident = tokenizer->lexeme();
- readToken();
- if ( tok == Tok_Gulbrandsen && tokenizer->braceDepth() == 0 &&
- tokenizer->parenDepth() == 0 ) {
- className = ident;
- } else if ( ident.startsWith("add") && ident.endsWith("Member") &&
- tok == Tok_LeftParen ) {
- bool isProperty = ident.endsWith( "VariableMember" );
- bool isStatic = ident.startsWith( "addStatic" );
- bool isWritable = !isStatic;
-
- readToken();
- if ( tok == Tok_String ) {
- QString member = tokenizer->lexeme();
- member = member.mid( 1, member.length() - 2 );
-
- readToken();
- if ( tok == Tok_Comma )
- readToken();
- if ( tok == Tok_Ident && tokenizer->lexeme() == "QSMember" )
- readToken();
- if ( tok == Tok_LeftParen ) {
- delimDepth++;
- readToken();
- }
-
- while ( tok != Tok_Eoi && tok != Tok_RightParen &&
- tok != Tok_Semicolon ) {
- if ( tok == Tok_Ident ) {
- ident = tokenizer->lexeme();
- if ( ident == "Custom" ) {
- isProperty = true;
- } else if ( ident == "AttributeNonWritable" ) {
- isWritable = false;
- } else if ( ident == "AttributeStatic" ) {
- isStatic = true;
- }
- }
- readToken();
- }
-
- ClassNode *classe =
- (ClassNode *) cppTre->findNode( QStringList(className),
- Node::Class );
- if ( classe == 0 ) {
- classe = new ClassNode( cppTre->root(), className );
- classe->setLocation( tokenizer->location() );
- }
-
- if ( isProperty ) {
- PropertyNode *property = new PropertyNode(classe, member);
- property->setLocation( tokenizer->location() );
- property->setDataType( "Object" );
-#if 0
- property->setGetter( member );
- if ( isWritable ) {
- QString setter = member;
- setter[0] = setter[0].toUpper();
- setter.prepend( "set" );
- property->setSetter( setter );
- }
-#endif
- } else {
- FunctionNode *func = new FunctionNode( classe, member );
- func->setLocation( tokenizer->location() );
- func->setAccess( FunctionNode::Public );
- func->setMetaness( FunctionNode::Slot );
- if ( member == "toLocaleString" ||
- member == "toString" ) {
- func->setReturnType( "QString" );
- } else if ( member == "valueOf" ) {
- func->setReturnType( "Object" );
- } else {
- func->setReturnType( "Object" );
- func->addParameter( Parameter("...") );
- }
- func->setStatic( false ); // ###
- }
- }
- }
- } else {
- readToken();
- }
- }
- in.close();
-}
-
-void QsaKernelParser::doneParsingSourceFiles( Tree * /* tree */ )
-{
-}
-
-void QsaKernelParser::readToken()
-{
- tok = tokenizer->getToken();
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/qscodemarker.cpp b/tools/qdoc3/qscodemarker.cpp
deleted file mode 100644
index 2ee5d99340..0000000000
--- a/tools/qdoc3/qscodemarker.cpp
+++ /dev/null
@@ -1,378 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- qscodemarker.cpp
-*/
-
-#include "node.h"
-#include "qscodemarker.h"
-
-QT_BEGIN_NAMESPACE
-
-QsCodeMarker::QsCodeMarker()
-{
-}
-
-QsCodeMarker::~QsCodeMarker()
-{
-}
-
-bool QsCodeMarker::recognizeCode( const QString& /* code */ )
-{
- return true;
-}
-
-bool QsCodeMarker::recognizeExtension( const QString& ext )
-{
- return ext == "js" || ext == "qs";
-}
-
-bool QsCodeMarker::recognizeLanguage( const QString& lang )
-{
- return lang == "JavaScript" || lang == "Qt Script";
-}
-
-QString QsCodeMarker::plainName( const Node *node )
-{
- QString name = node->name();
- if ( node->type() == Node::Function )
- name += "()";
- return name;
-}
-
-QString QsCodeMarker::plainFullName( const Node *node, const Node * /* relative */ )
-{
- QString fullName;
- for ( ;; ) {
- fullName.prepend( plainName(node) );
- if ( node->parent()->name().isEmpty() )
- break;
- node = node->parent();
- fullName.prepend(".");
- }
- return fullName;
-}
-
-QString QsCodeMarker::markedUpCode( const QString& code,
- const Node * /* relative */,
- const QString& /* dirPath */ )
-{
- return protect( code );
-}
-
-QString QsCodeMarker::markedUpSynopsis( const Node *node,
- const Node * /* relative */,
- SynopsisStyle style )
-{
- QString synopsis;
- QStringList extras;
- QString name;
-
- name = taggedNode( node );
- if ( style != Detailed )
- name = linkTag( node, name );
- name = "<@name>" + name + "</@name>";
-
- if ( style == Detailed && !node->parent()->name().isEmpty() &&
- node->type() != Node::Enum )
- name.prepend( taggedNode(node->parent()) + "." );
-
- switch ( node->type() ) {
- case Node::Class:
- synopsis = "class " + name;
- break;
- case Node::Function:
- {
- const FunctionNode *func = (const FunctionNode *) node;
-
- synopsis = name;
-
- if ( style == SeparateList ) {
- synopsis += "()";
- } else {
- synopsis += " (";
- if ( !func->parameters().isEmpty() ) {
- synopsis += " ";
- int numOptional = 0;
- QList<Parameter>::ConstIterator p = func->parameters().begin();
- while ( p != func->parameters().end() ) {
- if ( !(*p).defaultValue().isEmpty() ) {
- if ( p == func->parameters().begin() ) {
- synopsis += "[ ";
- } else {
- synopsis += " [ , ";
- }
- numOptional++;
- } else {
- if ( p != func->parameters().begin() )
- synopsis += ", ";
- }
- if ( !(*p).name().isEmpty() )
- synopsis += "<@param>" + protect( (*p).name() ) +
- "</@param> : ";
- synopsis += protect( (*p).leftType() );
- ++p;
- }
- for ( int i = 0; i < numOptional; i++ )
- synopsis += " ]";
- synopsis += " ";
- }
- synopsis += ")";
- }
-
- if ( style != SeparateList && !func->returnType().isEmpty() )
- synopsis += " : " + protect( func->returnType() );
-
- if ( style == Detailed && func->metaness() == FunctionNode::Signal )
- extras << "[signal]";
- }
- break;
- case Node::Property:
- {
- const PropertyNode *property = (const PropertyNode *) node;
-
- synopsis = name;
- if ( style != SeparateList )
- synopsis += " : " + property->dataType();
- if ( style == Detailed && property->setters().isEmpty() )
- extras << "[read only]";
- }
- break;
- case Node::Enum:
- {
- /*
- The letters A to F and X (upper- and lower-case) can
- appear in a hexadecimal constant (e.g. 0x3F).
- */
- QRegExp letterRegExp( "[G-WYZg-wyz_]" );
- const EnumNode *enume = (const EnumNode *) node;
-
- synopsis = name;
- if ( style == Summary && !enume->items().isEmpty() ) {
- synopsis += " : ";
- QString comma;
- QList<EnumItem>::ConstIterator it = enume->items().begin();
- while ( it != enume->items().end() ) {
- if ( enume->itemAccess((*it).name()) == Node::Public ) {
- synopsis += comma;
- synopsis += (*it).name();
- if ( (*it).value().indexOf(letterRegExp) != -1 )
- synopsis += " = " + (*it).value();
- comma = ", ";
- }
- ++it;
- }
- }
- }
- break;
- case Node::Namespace:
- case Node::Typedef:
- default:
- synopsis = name;
- }
-
- if ( style == Summary ) {
- if ( node->status() == Node::Preliminary ) {
- extras << "(preliminary)";
- } else if ( node->status() == Node::Deprecated ) {
- extras << "(deprecated)";
- } else if ( node->status() == Node::Obsolete ) {
- extras << "(obsolete)";
- }
- }
-
- QString extra;
- if ( !extras.isEmpty() )
- extra = "<@extra>" + extras.join(" ") + "</@extra>";
- return synopsis + extra;
-}
-
-QString QsCodeMarker::markedUpName( const Node *node )
-{
- QString name = linkTag( node, taggedNode(node) );
- if ( node->type() == Node::Function )
- name += "()";
- return name;
-}
-
-QString QsCodeMarker::markedUpFullName( const Node *node,
- const Node * /* relative */ )
-{
- QString fullName;
- for ( ;; ) {
- fullName.prepend( markedUpName(node) );
- if ( node->parent()->name().isEmpty() )
- break;
- node = node->parent();
- fullName.prepend( "<@op>.</@op>" );
- }
- return fullName;
-}
-
-QString QsCodeMarker::markedUpEnumValue(const QString & /* enumValue */,
- const Node * /* relative */)
-{
- return QString();
-}
-
-QString QsCodeMarker::markedUpIncludes( const QStringList& /* includes */ )
-{
- return QString();
-}
-
-QString QsCodeMarker::functionBeginRegExp( const QString& funcName )
-{
- return "^function[ \t].*\\b" + QRegExp::escape( funcName );
-}
-
-QString QsCodeMarker::functionEndRegExp( const QString& /* funcName */ )
-{
- return "^}";
-}
-
-QList<Section> QsCodeMarker::sections( const InnerNode *inner, SynopsisStyle style, Status status )
-{
- QList<Section> sections;
-
- if (inner->type() != Node::Class)
- return sections;
-
- const ClassNode *classe = static_cast<const ClassNode *>(inner);
-
- if ( style == Summary ) {
- FastSection enums(classe, "Enums", "", "enum", "enums");
- FastSection functions(classe, "Functions", "", "function", "functions");
- FastSection readOnlyProperties(classe, "", "Read-Only Properties", "property", "properties");
- FastSection signalz(classe, "Signals", "", "signal", "signals");
- FastSection writableProperties(classe, "", "Writable Properties", "property", "properties");
-
- QStack<const ClassNode *> stack;
- stack.push( classe );
-
- while ( !stack.isEmpty() ) {
- const ClassNode *ancestorClass = stack.pop();
-
- NodeList::ConstIterator c = ancestorClass->childNodes().begin();
- while ( c != ancestorClass->childNodes().end() ) {
- if ( (*c)->access() == Node::Public ) {
- if ( (*c)->type() == Node::Enum ) {
- insert( enums, *c, style, status );
- } else if ( (*c)->type() == Node::Function ) {
- const FunctionNode *func = (const FunctionNode *) *c;
- if ( func->metaness() == FunctionNode::Signal ) {
- insert( signalz, *c, style, status );
- } else {
- insert( functions, *c, style, status );
- }
- } else if ( (*c)->type() == Node::Property ) {
- const PropertyNode *property =
- (const PropertyNode *) *c;
- if ( property->setters().isEmpty() ) {
- insert( readOnlyProperties, *c, style, status );
- } else {
- insert( writableProperties, *c, style, status );
- }
- }
- }
- ++c;
- }
-
- QList<RelatedClass>::ConstIterator r = ancestorClass->baseClasses().begin();
- while ( r != ancestorClass->baseClasses().end() ) {
- stack.prepend( (*r).node );
- ++r;
- }
- }
- append( sections, enums );
- append( sections, writableProperties );
- append( sections, readOnlyProperties );
- append( sections, functions );
- append( sections, signalz );
- } else if ( style == Detailed ) {
- FastSection enums( classe, "Enum Documentation", "", "member", "members");
- FastSection functionsAndSignals( classe, "Function and Signal Documentation", "", "member", "members");
- FastSection properties( classe, "Property Documentation", "", "member", "members");
-
- NodeList::ConstIterator c = classe->childNodes().begin();
- while ( c != classe->childNodes().end() ) {
- if ( (*c)->access() == Node::Public ) {
- if ( (*c)->type() == Node::Enum ) {
- insert( enums, *c, style, status );
- } else if ( (*c)->type() == Node::Function ) {
- insert( functionsAndSignals, *c, style, status );
- } else if ( (*c)->type() == Node::Property ) {
- insert( properties, *c, style, status );
- }
- }
- ++c;
- }
- append( sections, enums );
- append( sections, properties );
- append( sections, functionsAndSignals );
- } else { // ( style == SeparateList )
- FastSection all(classe, "", "", "member", "members");
-
- QStack<const ClassNode *> stack;
- stack.push( classe );
-
- while ( !stack.isEmpty() ) {
- const ClassNode *ancestorClass = stack.pop();
-
- NodeList::ConstIterator c = ancestorClass->childNodes().begin();
- while ( c != ancestorClass->childNodes().end() ) {
- if ( (*c)->access() == Node::Public )
- insert( all, *c, style, status );
- ++c;
- }
-
- QList<RelatedClass>::ConstIterator r = ancestorClass->baseClasses().begin();
- while ( r != ancestorClass->baseClasses().end() ) {
- stack.prepend( (*r).node );
- ++r;
- }
- }
- append( sections, all );
- }
- return sections;
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/qscodemarker.h b/tools/qdoc3/qscodemarker.h
deleted file mode 100644
index c6a177f4e4..0000000000
--- a/tools/qdoc3/qscodemarker.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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- qscodemarker.h
-*/
-
-#ifndef QSCODEMARKER_H
-#define QSCODEMARKER_H
-
-#include "codemarker.h"
-
-QT_BEGIN_NAMESPACE
-
-class QsCodeMarker : public CodeMarker
-{
-public:
- QsCodeMarker();
- ~QsCodeMarker();
-
- bool recognizeCode( const QString& code );
- bool recognizeExtension( const QString& ext );
- bool recognizeLanguage( const QString& lang );
- QString plainName(const Node *node);
- QString plainFullName(const Node *node, const Node *relative);
- QString markedUpCode( const QString& code, const Node *relative,
- const QString& dirPath );
- QString markedUpSynopsis( const Node *node, const Node *relative,
- SynopsisStyle style );
- QString markedUpName( const Node *node );
- QString markedUpFullName( const Node *node, const Node *relative );
- QString markedUpEnumValue(const QString &enumValue, const Node *relative);
- QString markedUpIncludes( const QStringList& includes );
- QList<Section> sections(const InnerNode *innerNode, SynopsisStyle style, Status status);
- QString functionBeginRegExp( const QString& funcName );
- QString functionEndRegExp( const QString& funcName );
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/tools/qdoc3/qscodeparser.cpp b/tools/qdoc3/qscodeparser.cpp
deleted file mode 100644
index 3b8bc1a47e..0000000000
--- a/tools/qdoc3/qscodeparser.cpp
+++ /dev/null
@@ -1,944 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- qscodeparser.cpp
-*/
-
-#include <qfile.h>
-#include <qregexp.h>
-
-#include "config.h"
-#include "qscodeparser.h"
-#include "text.h"
-#include "tokenizer.h"
-#include "tree.h"
-
-QT_BEGIN_NAMESPACE
-
-#define CONFIG_QUICK "quick"
-#define CONFIG_REPLACES "replaces"
-
-#define COMMAND_BRIEF Doc::alias( "brief")
-#define COMMAND_CODE Doc::alias( "code")
-#define COMMAND_ENDCODE Doc::alias( "endcode")
-#define COMMAND_ENDQUICKCODE Doc::alias( "endquickcode")
-#define COMMAND_FILE Doc::alias( "file")
-#define COMMAND_GROUP Doc::alias( "group")
-#define COMMAND_MODULE Doc::alias( "module")
-#define COMMAND_PAGE Doc::alias( "page")
-#define COMMAND_QUICKCLASS Doc::alias( "quickclass")
-#define COMMAND_QUICKCODE Doc::alias( "quickcode")
-#define COMMAND_QUICKENUM Doc::alias( "quickenum")
-#define COMMAND_QUICKFN Doc::alias( "quickfn")
-#define COMMAND_QUICKIFY Doc::alias( "quickify")
-#define COMMAND_QUICKPROPERTY Doc::alias( "quickproperty")
-#define COMMAND_PROTECTED Doc::alias( "protected")
-#define COMMAND_REPLACE Doc::alias( "replace")
-
-static QString balancedParens = "(?:[^()]+|\\([^()]*\\))*";
-
-QsCodeParser::QsCodeParser(Tree *cppTree)
- : cppTre(cppTree), qsTre(0), replaceRegExp("/(.+)/([^/]*)/")
-{
-}
-
-QsCodeParser::~QsCodeParser()
-{
-}
-
-void QsCodeParser::initializeParser(const Config& config)
-{
- CppCodeParser::initializeParser(config);
-
- nodeTypeMap.insert(COMMAND_QUICKCLASS, Node::Class);
- nodeTypeMap.insert(COMMAND_QUICKENUM, Node::Enum);
- nodeTypeMap.insert(COMMAND_QUICKPROPERTY, Node::Property);
- nodeTypeMap.insert(COMMAND_QUICKFN, Node::Function);
-
- QString quickDotReplaces = CONFIG_QUICK + Config::dot + CONFIG_REPLACES;
- QStringList replaces = config.getStringList(quickDotReplaces);
- QStringList::ConstIterator r = replaces.begin();
- while (r != replaces.end()) {
- if (replaceRegExp.exactMatch(*r)) {
- QRegExp before(replaceRegExp.cap(1));
- before.setMinimal(true);
- QString after = replaceRegExp.cap(2);
-
- if (before.isValid()) {
- replaceBefores << before;
- replaceAfters << after;
- }
- else {
- config.lastLocation().warning(
- tr("Invalid regular expression '%1'")
- .arg(before.pattern()));
- }
- }
- else {
- config.lastLocation().warning(tr("Bad syntax in '%1'")
- .arg(quickDotReplaces));
- }
- ++r;
- }
-}
-
-void QsCodeParser::terminateParser()
-{
- nodeTypeMap.clear();
- classesWithNoQuickDoc.clear();
- replaceBefores.clear();
- replaceAfters.clear();
- CppCodeParser::terminateParser();
-}
-
-QString QsCodeParser::language()
-{
- return "Qt Script";
-}
-
-QString QsCodeParser::headerFileNameFilter()
-{
- return "*";
-}
-
-QString QsCodeParser::sourceFileNameFilter()
-{
- return "*.qs *.qsd";
-}
-
-void QsCodeParser::parseHeaderFile(const Location& location,
- const QString& filePath,
- Tree *tree)
-{
- qsTre = tree;
-
- QFile in(filePath);
- if (!in.open(QIODevice::ReadOnly)) {
- location.error(tr("Cannot open Qt Script class list '%1'")
- .arg(filePath));
- return;
- }
-
- Location fileLocation(filePath);
- Tokenizer fileTokenizer(fileLocation, in);
- int tok = fileTokenizer.getToken();
- while (tok != Tok_Eoi) {
- if (tok == Tok_Ident) {
- ClassNode *quickClass = new ClassNode(qsTre->root(),
- fileTokenizer.lexeme());
- quickClass->setLocation(fileTokenizer.location());
- }
- else {
- fileTokenizer.location().error(tr("Unexpected token '%1' in Qt"
- " Script class list")
- .arg(fileTokenizer.lexeme()));
- break;
- }
- tok = fileTokenizer.getToken();
- }
- in.close();
-}
-
-void QsCodeParser::parseSourceFile(const Location& location,
- const QString& filePath,
- Tree *tree)
-{
- qsTre = tree;
- CppCodeParser::parseSourceFile(location, filePath, tree);
-}
-
-void QsCodeParser::doneParsingHeaderFiles(Tree *tree)
-{
- NodeList::ConstIterator c = tree->root()->childNodes().begin();
- while (c != tree->root()->childNodes().end()) {
- if ((*c)->type() == Node::Class)
- quickifyClass((ClassNode *) *c);
- ++c;
- }
- cppTre->root()->deleteChildren(); // save memory
- tree->resolveInheritance();
- tree->resolveProperties();
-}
-
-void QsCodeParser::doneParsingSourceFiles(Tree *tree)
-{
- tree->root()->normalizeOverloads();
-
- NodeList::ConstIterator c = tree->root()->childNodes().begin();
- while (c != tree->root()->childNodes().end()) {
- if ((*c)->type() == Node::Class) {
- QMap<QString, Node *>::ConstIterator cwnqd =
- classesWithNoQuickDoc.find((*c)->name());
- if (cwnqd != classesWithNoQuickDoc.end()) {
- (*cwnqd)->location().warning(tr("No '\\%1' documentation for"
- " class '%2'")
- .arg(COMMAND_QUICKCLASS)
- .arg(cwnqd.key()));
- (*cwnqd)->setDoc(Doc(), true);
- }
- }
- ++c;
- }
-
- // ### check which enum types are used
-}
-
-FunctionNode *QsCodeParser::findFunctionNode(const QString& synopsis,
- Tree *tree)
-{
- QStringList parentPath;
- FunctionNode *clone;
- FunctionNode *func = 0;
-
- if (makeFunctionNode(synopsis, &parentPath, &clone)) {
- func = tree->findFunctionNode(parentPath, clone);
- delete clone;
- }
- return func;
-}
-
-QSet<QString> QsCodeParser::topicCommands()
-{
- return QSet<QString>() << COMMAND_FILE << COMMAND_GROUP << COMMAND_MODULE
- << COMMAND_PAGE << COMMAND_QUICKCLASS
- << COMMAND_QUICKENUM << COMMAND_QUICKFN
- << COMMAND_QUICKPROPERTY;
-}
-
-Node *QsCodeParser::processTopicCommand(const Doc& doc,
- const QString& command,
- const QString& arg)
-{
- if (command == COMMAND_QUICKFN) {
- QStringList parentPath;
- FunctionNode *quickFunc = 0;
- FunctionNode *clone;
-
- if (makeFunctionNode(arg, &parentPath, &clone)) {
- FunctionNode *kernelFunc = findKernelFunction(parentPath,
- clone->name());
- if (kernelFunc != 0)
- kernelFunc->setAccess(Node::Private);
-
- quickFunc = qsTre->findFunctionNode(parentPath, clone);
- if (quickFunc == 0 && kernelFunc != 0) {
- quickFunc = new FunctionNode(kernelFunc->parent(),
- kernelFunc->name());
- quickFunc->setLocation(kernelFunc->location());
- quickFunc->setReturnType(clone->returnType());
- quickFunc->setParameters(clone->parameters());
- }
-
- if (quickFunc == 0) {
- doc.location().warning(tr("Cannot find '%1' specified with '\\%2'")
- .arg(arg).arg(command));
- }
- else {
- quickFunc->setAccess(Node::Public);
- QStringList qtParams = quickFunc->parameterNames();
- quickFunc->borrowParameterNames(clone);
- QStringList quickParams = quickFunc->parameterNames();
- setQuickDoc(quickFunc, doc, qtParams, quickParams);
- }
- delete clone;
- }
- else {
- doc.location().warning(tr("Cannot find '%1' specified with '\\%2'")
- .arg(arg).arg(command));
- }
- return 0;
- }
- else if (nodeTypeMap.contains(command)) {
- QStringList subArgs = arg.split(" ");
- QString dataType;
-
- if (subArgs.count() == 3 && subArgs[1] == ":") {
- dataType = subArgs[2];
- }
- else if (subArgs.count() != 1) {
- doc.location().warning(tr("Invalid syntax in '\\%1'")
- .arg(command));
- }
-
- QStringList path = subArgs[0].split(".");
- Node *quickNode = qsTre->findNode(path, nodeTypeMap[command]);
- if (quickNode == 0) {
- doc.location().warning(tr("Cannot find '%1' specified with '\\%2'")
- .arg(arg).arg(command));
- }
- else {
- setQuickDoc(quickNode, doc);
- if (quickNode->type() == Node::Class) {
- classesWithNoQuickDoc.remove(quickNode->name());
- if (doc.briefText().isEmpty())
- doc.location().warning(tr("Missing '\\%1' for class '%2'")
- .arg(COMMAND_BRIEF)
- .arg(quickNode->name()));
- }
- else if (quickNode->type() == Node::Property) {
- PropertyNode *quickProperty = (PropertyNode *) quickNode;
- if (quickProperty->dataType() == "Object") {
- if (dataType.isEmpty()) {
- doc.location().warning(tr("Missing data type in '\\%1'"
- " (assuming 'Object')")
- .arg(command));
- }
- else {
- quickProperty->setDataType(dataType);
- }
- }
- else if (dataType != quickProperty->dataType()) {
- doc.location().warning(tr("Ignored contradictory data type"
- " in '\\%1'")
- .arg(command));
- }
- }
- }
- return 0;
- }
- else {
- return CppCodeParser::processTopicCommand(doc, command, arg);
- }
-}
-
-QSet<QString> QsCodeParser::otherMetaCommands()
-{
- return commonMetaCommands() << COMMAND_ENDQUICKCODE << COMMAND_QUICKCODE
- << COMMAND_QUICKIFY << COMMAND_REPLACE;
-}
-
-void QsCodeParser::processOtherMetaCommand(const Doc& doc,
- const QString& command,
- const QString& arg,
- Node *node)
-{
- if (command == COMMAND_PROTECTED) {
- doc.location().warning(tr("Cannot use '\\%1' in %2")
- .arg(COMMAND_PROTECTED).arg(language()));
- }
- else {
- CppCodeParser::processOtherMetaCommand(doc,command,arg,node);
- }
-}
-
-ClassNode *QsCodeParser::tryClass(const QString& className)
-{
- return (ClassNode*) cppTre->findNode(QStringList(className),Node::Class);
-}
-
-FunctionNode *QsCodeParser::findKernelFunction(const QStringList& parentPath,
- const QString& name)
-{
- FunctionNode clone(0, name);
- clone.setReturnType("Object");
- clone.addParameter(Parameter("..."));
- return qsTre->findFunctionNode(parentPath, &clone);
-}
-
-void QsCodeParser::extractRegExp(const QRegExp& regExp,
- QString& source,
- const Doc& doc)
-{
- QRegExp blankLineRegExp(
- "[ \t]*(?:\n(?:[ \t]*\n)+[ \t]*|[ \n\t]*\\\\code|"
- "\\\\endcode[ \n\t]*)");
- QStringList paras = source.trimmed().split(blankLineRegExp);
- paras = paras.filter(regExp);
- if (paras.count() == 0) {
- doc.location().warning(tr("Cannot find regular expression '%1'")
- .arg(regExp.pattern()));
- }
- else if (paras.count() > 1) {
- doc.location().warning(tr("Regular rexpression '%1' matches multiple"
- "times").arg(regExp.pattern()));
- }
- else {
- source = paras.first() + "\n\n";
- }
-}
-
-void QsCodeParser::extractTarget(const QString& target,
- QString& source,
- const Doc& doc)
-{
- QRegExp targetRegExp(
- "(\\\\target\\s+(\\S+)[^\n]*\n"
- "(?:(?!\\s*\\\\code)[^\n]+\n|\\s*\\\\code.*\\\\endcode\\s*\n)*)"
- "(?:\\s*\n|[^\n]*$)");
- targetRegExp.setMinimal(true);
-
- int pos = 0;
- while ((pos = source.indexOf(targetRegExp, pos)) != -1) {
- if (targetRegExp.cap(2) == target) {
- source = targetRegExp.cap(1) + "\n\n";
- return;
- }
- pos += targetRegExp.matchedLength();
- }
- doc.location().warning(tr("Cannot find target '%1'").arg(target));
-}
-
-void QsCodeParser::renameParameters(QString& source,
- const Doc& /* doc */,
- const QStringList& qtParams,
- const QStringList& quickParams)
-{
- QRegExp paramRegExp("(\\\\a\\s*\\{?\\s*)([A-Za-z0-9_]+)");
-
- int pos = 0;
- while ((pos = paramRegExp.indexIn(source, pos)) != -1) {
- pos += paramRegExp.cap(1).length();
- QString before = paramRegExp.cap(2);
- int index = qtParams.indexOf(before);
- if (index != -1) {
- QString after = quickParams[index];
- source.replace(pos, before.size(), after);
- }
- }
-}
-
-void QsCodeParser::applyReplacementList(QString& source, const Doc& doc)
-{
- QStringList args = doc.metaCommandArgs(COMMAND_REPLACE);
- QStringList::ConstIterator a = args.begin();
- while (a != args.end()) {
- if (replaceRegExp.exactMatch(*a)) {
- QRegExp before(replaceRegExp.cap(1));
- before.setMinimal(true);
- QString after = replaceRegExp.cap(2);
-
- if (before.isValid()) {
- int oldLen = source.size();
- source.replace(before, after);
-
- // this condition is sufficient but not necessary
- if (oldLen == source.size() && !source.contains(after))
- doc.location().warning(
- tr("Regular expression '%1' did not match anything")
- .arg(before.pattern()));
- }
- else {
- doc.location().warning(
- tr("Invalid regular expression '%1'")
- .arg(before.pattern()));
- }
- }
- else {
- doc.location().warning(tr("Bad syntax in '\\%1'")
- .arg(COMMAND_REPLACE));
- }
- ++a;
- }
-
- QRegExp codeRegExp("\\\\" + COMMAND_CODE + "(.*)\\\\" + COMMAND_ENDCODE);
- codeRegExp.setMinimal(true);
-
- QRegExp quickcodeRegExp(
- "\\\\" + COMMAND_QUICKCODE + "(.*)\\\\" + COMMAND_ENDQUICKCODE);
- quickcodeRegExp.setMinimal(true);
-
- int quickcodePos = doc.source().indexOf(quickcodeRegExp);
- if (quickcodePos != -1) {
- int codePos = source.indexOf(codeRegExp);
- if (codePos == -1) {
- doc.location().warning(
- tr("Cannot find any '\\%1' snippet corresponding to '\\%2'")
- .arg(COMMAND_CODE).arg(COMMAND_QUICKCODE));
- }
- else {
- source.replace(codeRegExp.pos(1), codeRegExp.cap(1).length(),
- quickcodeRegExp.cap(1));
- codePos = codeRegExp.pos(1) + quickcodeRegExp.cap(1).length();
-
- if (doc.source().indexOf(quickcodeRegExp, quickcodePos + 1) != -1) {
- doc.location().warning(
- tr("Cannot use '\\%1' twice in a row")
- .arg(COMMAND_QUICKCODE));
- }
- else if (source.indexOf(codeRegExp, codePos + 1) != -1) {
- doc.location().warning(tr("Ambiguous '\\%1'")
- .arg(COMMAND_QUICKCODE));
- }
- }
- }
-}
-
-void QsCodeParser::quickifyClass(ClassNode *quickClass)
-{
- QString qtClassName = quickClass->name();
- QString bare = quickClass->name();
- if (bare != "Qt" && bare != "Object") {
- if (bare.startsWith("Q")) {
- bare = bare.mid(1);
- }
- else {
- qtClassName.prepend("Q");
- classesWithNoQ.insert(bare);
- }
- }
-
- ClassNode *qtClass = 0;
- ClassNode *wrapperClass = 0;
-
- if ((wrapperClass = tryClass("Quick" + bare)) != 0 ||
- (wrapperClass = tryClass("QS" + bare + "Class")) != 0) {
- qtClass = tryClass(qtClassName);
- if (qtClass == 0) {
- qtClass = wrapperClass;
- wrapperClass = 0;
- }
- }
- else if ((wrapperClass = tryClass("Quick" + bare + "Ptr")) != 0) {
- QRegExp ptrToQtType("(Q[A-Za-z0-9_]+)\\s*\\*");
- FunctionNode *ctor =
- wrapperClass->findFunctionNode(wrapperClass->name());
- if (ctor != 0 && !ctor->parameters().isEmpty() &&
- ptrToQtType.exactMatch(ctor->parameters().first().leftType()))
- qtClassName = ptrToQtType.cap(1);
- qtClass = tryClass(qtClassName);
- }
- else {
- wrapperClass = tryClass("Q" + bare + "Ptr");
- if (wrapperClass == 0)
- wrapperClass = tryClass("Quick" + bare + "Interface");
- qtClass = tryClass(qtClassName);
- }
-
- if (qtClass == 0) {
- if (wrapperClass == 0) {
- quickClass->location().warning(tr("Cannot find Qt class '%1'")
- .arg(qtClassName));
- }
- else {
- quickClass->location().warning(tr("Cannot find Qt class '%1'"
- " wrapped by '%2'")
- .arg(qtClassName)
- .arg(wrapperClass->name()));
- }
- return;
- }
-
- QList<RelatedClass>::ConstIterator r = qtClass->baseClasses().begin();
- while (r != qtClass->baseClasses().end()) {
- ClassNode *quickBaseClass = cpp2qs.findClassNode(qsTre,
- (*r).node->name());
- if (quickBaseClass)
- quickClass->addBaseClass((*r).access, quickBaseClass);
- ++r;
- }
- if (quickClass->baseClasses().isEmpty() && quickClass->name() != "Object")
- quickClass->addBaseClass(Node::Public,
- cpp2qs.findClassNode(qsTre,"Object"));
-
- QSet<QString> funcBlackList;
- QSet<QString> propertyBlackList;
-
- NodeList children;
- if (wrapperClass != 0) {
- children = wrapperClass->childNodes();
-
- funcBlackList.insert(wrapperClass->name());
- funcBlackList.insert("~" + wrapperClass->name());
- }
- children += qtClass->childNodes();
-
- for (int pass = 0; pass < 2; pass++) {
- NodeList::ConstIterator c = children.begin();
- while (c != children.end()) {
- if ((*c)->access() != Node::Private &&
- (*c)->status() == Node::Commendable) {
- if (pass == 0) {
- if ((*c)->type() == Node::Enum) {
- EnumNode *enume = (EnumNode *) *c;
- quickifyEnum(quickClass, enume);
- }
- else if ((*c)->type() == Node::Property) {
- if (!propertyBlackList.contains((*c)->name())) {
- PropertyNode *property = (PropertyNode *) *c;
- quickifyProperty(quickClass, qtClass, property);
- if (!property->getters().isEmpty())
- funcBlackList.insert(property->getters().first()->name());
- if (!property->setters().isEmpty())
- funcBlackList.insert(property->setters().first()->name());
- if (!property->resetters().isEmpty())
- funcBlackList.insert(property->resetters().first()->name());
- propertyBlackList.insert(property->name());
- }
- }
- }
- else if ((*c)->type() == Node::Function) {
- FunctionNode *func = (FunctionNode *) *c;
- quickifyFunction(quickClass, qtClass, func,
- funcBlackList.contains((*c)->name()) &&
- func->parameters().count() < 2);
- }
- }
- ++c;
- }
- }
- setQtDoc(quickClass, qtClass->doc());
- classesWithNoQuickDoc.insert(quickClass->name(), quickClass);
-}
-
-void QsCodeParser::quickifyEnum(ClassNode *quickClass, EnumNode *enume)
-{
- EnumNode *quickEnum = new EnumNode(quickClass, enume->name());
- quickEnum->setLocation(enume->location());
-#if 0 // ### not yet
- quickEnum->setAccess(Node::Protected);
-#endif
-
- QList<EnumItem>::ConstIterator it = enume->items().begin();
- while (it != enume->items().end()) {
- QString name = (*it).name();
- QString value = (*it).value();
- quickEnum->addItem(EnumItem(name, value));
- ++it;
- }
- setQtDoc(quickEnum, enume->doc());
-}
-
-void QsCodeParser::quickifyFunction(ClassNode *quickClass, ClassNode *qtClass,
- FunctionNode *func, bool onBlackList)
-{
- if (func->metaness() == FunctionNode::Dtor)
- return;
-
- FunctionNode *kernelFunc = findKernelFunction(
- QStringList() << quickClass->name(), func->name());
-
- QString quickName = func->name();
- if (func->metaness() == FunctionNode::Ctor)
- quickName = quickClass->name();
- FunctionNode *quickFunc = new FunctionNode(quickClass, quickName);
- quickFunc->setLocation(func->location());
-
- if (onBlackList) {
- quickFunc->setAccess(Node::Protected);
- }
- else {
- if (kernelFunc != 0 && func->numOverloads() == 1 &&
- (func->parameters().count() == 0 ||
- func->parameters().last().defaultValue().isEmpty())) {
- kernelFunc->setAccess(Node::Private);
- }
- else {
- if (func->metaness() == FunctionNode::Plain)
- quickFunc->setAccess(Node::Protected);
- }
- }
-
- quickFunc->setReturnType(cpp2qs.convertedDataType(qsTre,
- func->returnType()));
- if (func->metaness() != FunctionNode::Slot)
- quickFunc->setMetaness(func->metaness());
- quickFunc->setVirtualness(FunctionNode::ImpureVirtual);
- quickFunc->setOverload(func->isOverload());
-
- QList<Parameter>::ConstIterator q = func->parameters().begin();
- while (q != func->parameters().end()) {
- QString dataType = cpp2qs.convertedDataType(qsTre, (*q).leftType(),
- (*q).rightType());
- if (dataType.isEmpty()) {
- dataType = "UNKNOWN";
- quickFunc->setAccess(Node::Private);
- }
- Parameter param(dataType, "", (*q).name(),
- (*q).defaultValue().isEmpty() ? "" : "undefined");
- quickFunc->addParameter(param);
- ++q;
- }
-
- if (func->doc().isEmpty()) {
- if (func->parent() != (InnerNode *) qtClass) {
- func = qtClass->findFunctionNode(func);
- if (func != 0)
- setQtDoc(quickFunc, func->doc());
- }
- }
- else {
- setQtDoc(quickFunc, func->doc());
- }
-}
-
-void QsCodeParser::quickifyProperty(ClassNode *quickClass,
- ClassNode * /* qtClass */,
- PropertyNode *property)
-{
- PropertyNode *quickProperty = new PropertyNode(quickClass,
- property->name());
- quickProperty->setLocation(property->location());
- quickProperty->setDataType(cpp2qs.convertedDataType(qsTre,
- property->dataType()));
-#if 0
- quickProperty->setGetter(property->getter());
- quickProperty->setSetter(property->setter());
- quickProperty->setResetter(property->resetter());
-#endif
- quickProperty->setStored(property->isStored());
- quickProperty->setDesignable(property->isDesignable());
-
- setQtDoc(quickProperty, property->doc());
-}
-
-QString QsCodeParser::quickifiedDoc(const QString& source)
-{
- QString result;
- int i = 0;
-
- while (i < (int) source.length()) {
- if (leftWordBoundary(source, i)) {
- if (source[i] == 'Q') {
- if (source[i + 1] == 'C' && source.mid(i, 8) == "QCString") {
- i += 2;
- }
- else {
- int end = i + 1;
- while (isWord(source[end]))
- ++end;
- if (!classesWithNoQ.contains(
- source.mid(i + 1, end - (i + 1))))
- result += "Q";
- i++;
- }
- }
- else if (source[i] == 'T' && source.mid(i, 4) == "TRUE" &&
- rightWordBoundary(source, i + 4)) {
- result += "\\c{true}";
- i += 4;
- }
- else if (source[i] == 'F' && source.mid(i, 5) == "FALSE" &&
- rightWordBoundary(source, i + 5)) {
- result += "\\c{false}";
- i += 5;
- }
- else if (source[i] == 'c' && source.mid(i, 6) == "const ") {
- i += 6;
- }
- else {
- result += source[i++];
- }
- }
- else if ((source[i] == ':' && source[i + 1] == ':') ||
- (source[i] == '-' && source[i + 1] == '>')) {
- result += '.';
- i += 2;
- }
- else if (source[i] == '\\') {
- // ### make independent of the command name
- if (source.mid(i, 5) == "\\code") {
- do {
- result += source[i++];
- } while (source[i - 1] != '\n');
-
- int begin = i;
- int end = source.indexOf("\\endcode", i);
- if (end != -1) {
- QString code = source.mid(begin, end - begin);
- result += cpp2qs.convertedCode(qsTre, code,
- classesWithNoQ);
- i = end;
- }
- }
- else {
- result += source[i++];
- }
- }
- else {
- result += source[i++];
- }
- }
-
- QList<QRegExp>::ConstIterator b = replaceBefores.begin();
- QStringList::ConstIterator a = replaceAfters.begin();
- while (a != replaceAfters.end()) {
- result.replace(*b, *a);
- ++b;
- ++a;
- }
- return result;
-}
-
-void QsCodeParser::setQtDoc(Node *quickNode, const Doc& doc)
-{
- if (!doc.isEmpty()) {
- Doc quickDoc(doc.location(), doc.location(),
- quickifiedDoc(doc.source()),
- CppCodeParser::topicCommands() +
- CppCodeParser::otherMetaCommands());
- quickNode->setDoc(quickDoc, true);
- }
-}
-
-void QsCodeParser::setQuickDoc(Node *quickNode,
- const Doc& doc,
- const QStringList& qtParams,
- const QStringList& quickParams)
-{
- QRegExp quickifyCommand("\\\\" + COMMAND_QUICKIFY + "([^\n]*)(?:\n|$)");
-
- if (quickNode->type() == Node::Function) {
- FunctionNode *quickFunc = (FunctionNode *) quickNode;
- quickFunc->setOverload(false);
- }
-
- if (doc.metaCommandsUsed().contains(COMMAND_QUICKIFY)) {
- QString source = doc.source();
- int pos = source.indexOf(quickifyCommand);
- if (pos != -1) {
- QString quickifiedSource = quickNode->doc().source();
- if (!qtParams.isEmpty() && qtParams != quickParams)
- renameParameters(quickifiedSource, doc, qtParams,
- quickParams);
- applyReplacementList(quickifiedSource, doc);
-
- do {
- QString extract = quickifiedSource;
- QString arg = quickifyCommand.cap(1).simplified();
- if (!arg.isEmpty()) {
- if (arg.startsWith("/") && arg.endsWith("/") &&
- arg.length() > 2) {
- QString pattern = arg.mid(1, arg.length() - 2);
- extractRegExp(QRegExp(pattern), extract, doc);
- }
- else {
- extractTarget(arg, extract, doc);
- }
- }
- source.replace(pos, quickifyCommand.matchedLength(), extract);
- pos += extract.length();
- } while ((pos = source.indexOf(quickifyCommand, pos)) != -1);
-
- QRegExp quickcodeRegExp(
- "\\\\" + COMMAND_QUICKCODE + "(.*)\\\\" +
- COMMAND_ENDQUICKCODE);
- quickcodeRegExp.setMinimal(true);
- source.replace(quickcodeRegExp, "");
- }
-
- Doc quickDoc(doc.location(),
- doc.location(),
- source,
- (CppCodeParser::topicCommands() + topicCommands() +
- CppCodeParser::otherMetaCommands()) << COMMAND_REPLACE);
- quickNode->setDoc(quickDoc, true);
- processOtherMetaCommands(quickDoc, quickNode);
- }
- else {
- quickNode->setDoc(doc, true);
- processOtherMetaCommands(doc, quickNode);
- }
-}
-
-bool QsCodeParser::makeFunctionNode(const QString& synopsis,
- QStringList *parentPathPtr,
- FunctionNode **funcPtr)
-{
- QRegExp funcRegExp(
- "\\s*([A-Za-z0-9_]+)\\.([A-Za-z0-9_]+)\\s*\\((" +
- balancedParens +
- ")\\)(?:\\s*:\\s*([A-Za-z0-9_]+))?\\s*");
- QRegExp paramRegExp(
- "\\s*(\\[)?\\s*(?:([A-Za-z0-9_]+)\\s*:\\s*)?"
- "([A-Za-z0-9_]+|\\.\\.\\.)\\s*(\\[)?[\\s\\]]*");
-
- if (!funcRegExp.exactMatch(synopsis))
- return false;
-
- ClassNode *classe = (ClassNode*)
- qsTre->findNode(QStringList(funcRegExp.cap(1)),Node::Class);
- if (classe == 0)
- return false;
-
- FunctionNode *clone = new FunctionNode(0, funcRegExp.cap(2));
- bool optional = false;
-
- QString paramStr = funcRegExp.cap(3);
- QStringList params = paramStr.split(",");
- QStringList::ConstIterator p = params.begin();
- while (p != params.end()) {
- if (paramRegExp.exactMatch(*p)) {
- if (!paramRegExp.cap(1).isEmpty())
- optional = true;
- clone->addParameter(Parameter(paramRegExp.cap(3),
- "",
- paramRegExp.cap(2),
- optional ? "undefined" : ""));
- if (!paramRegExp.cap(4).isEmpty())
- optional = true;
- }
- else {
- delete clone;
- return false;
- }
- ++p;
- }
- QString returnType = funcRegExp.cap(4);
- if (!returnType.isEmpty())
- clone->setReturnType(returnType);
- if (parentPathPtr != 0)
- *parentPathPtr = QStringList() << classe->name();
- if (funcPtr != 0) {
- *funcPtr = clone;
- }
- else {
- delete clone;
- }
- return true;
-}
-
-bool QsCodeParser::isWord(QChar ch)
-{
- return ch.isLetterOrNumber() || ch == QChar('_');
-}
-
-bool QsCodeParser::leftWordBoundary(const QString& str, int pos)
-{
- return !isWord(str[pos - 1]) && isWord(str[pos]);
-}
-
-bool QsCodeParser::rightWordBoundary(const QString& str, int pos)
-{
- return isWord(str[pos - 1]) && !isWord(str[pos]);
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/qscodeparser.h b/tools/qdoc3/qscodeparser.h
deleted file mode 100644
index 28924d70f2..0000000000
--- a/tools/qdoc3/qscodeparser.h
+++ /dev/null
@@ -1,128 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- qscodeparser.h
-*/
-
-#ifndef QSCODEPARSER_H
-#define QSCODEPARSER_H
-
-#include "cppcodeparser.h"
-#include "cpptoqsconverter.h"
-
-QT_BEGIN_NAMESPACE
-
-class QsCodeParser : public CppCodeParser
-{
- public:
- QsCodeParser(Tree *cppTree);
- ~QsCodeParser();
-
- virtual void initializeParser(const Config& config);
- virtual void terminateParser();
- virtual QString language();
- virtual QString headerFileNameFilter();
- virtual QString sourceFileNameFilter();
- virtual void parseHeaderFile(const Location& location,
- const QString& filePath, Tree *tree);
- virtual void parseSourceFile(const Location& location,
- const QString& filePath, Tree *tree);
- virtual void doneParsingHeaderFiles(Tree *tree);
- virtual void doneParsingSourceFiles(Tree *tree);
-
- FunctionNode *findFunctionNode(const QString& synopsis, Tree *tree);
-
- protected:
- virtual QSet<QString> topicCommands();
- virtual Node *processTopicCommand(const Doc& doc, const QString& command,
- const QString& arg);
- virtual QSet<QString> otherMetaCommands();
- virtual void processOtherMetaCommand(const Doc& doc,
- const QString& command,
- const QString& arg, Node *node);
-
- private:
- ClassNode *tryClass(const QString& className);
- FunctionNode *findKernelFunction(const QStringList& parentPath,
- const QString& name);
- void extractRegExp(const QRegExp& regExp, QString& source,
- const Doc& doc);
- void extractTarget(const QString& target, QString& source,
- const Doc& doc);
- void renameParameters(QString& source, const Doc& doc,
- const QStringList& qtNames,
- const QStringList& quickNames);
- void applyReplacementList(QString& source, const Doc& doc);
- void quickifyClass(ClassNode *quickClass);
- void quickifyEnum(ClassNode *quickClass, EnumNode *enume);
- void quickifyFunction(ClassNode *quickClass, ClassNode *qtClass,
- FunctionNode *func, bool onBlackList);
- void quickifyProperty(ClassNode *quickClass, ClassNode *qtClass,
- PropertyNode *property);
- QString quickifiedDoc(const QString& source);
- void setQtDoc(Node *quickNode, const Doc& doc);
- void setQuickDoc(Node *quickNode, const Doc& doc,
- const QStringList& qtParams = QStringList(),
- const QStringList& quickParams = QStringList());
- bool makeFunctionNode(const QString& synopsis, QStringList *parentPathPtr,
- FunctionNode **funcPtr);
-
- static bool isWord(QChar ch);
- static bool leftWordBoundary(const QString& str, int pos);
- static bool rightWordBoundary(const QString& str, int pos);
-
- QMap<QString,Node::Type> nodeTypeMap;
- QMap<QString,Node*> classesWithNoQuickDoc;
- QList<QRegExp> replaceBefores;
- QStringList replaceAfters;
- QSet<QString> classesWithNoQ;
- Tree* cppTre;
- Tree* qsTre;
- QRegExp replaceRegExp;
- CppToQsConverter cpp2qs;
-
- static int tabSize;
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/tools/qdoc3/quoter.cpp b/tools/qdoc3/quoter.cpp
index b8055a7ebe..6dc7894100 100644
--- a/tools/qdoc3/quoter.cpp
+++ b/tools/qdoc3/quoter.cpp
@@ -41,7 +41,6 @@
#include <qfileinfo.h>
#include <qregexp.h>
-#include <qdebug.h>
#include "quoter.h"
@@ -123,9 +122,9 @@ Quoter::Quoter()
/* We're going to hard code these delimiters:
* C++, Qt, Qt Script, Java:
//! [<id>]
- * .pro files:
+ * .pro, .py files:
#! [<id>]
- * .xq, .xml, .html files:
+ * .html, .qrc, .ui, .xq, .xml files:
<!-- [<id>] -->
*/
commentHash["pro"] = "#!";
diff --git a/tools/qdoc3/test/assistant.qdocconf b/tools/qdoc3/test/assistant.qdocconf
index 74b68df3cc..0e9a2a86aa 100644
--- a/tools/qdoc3/test/assistant.qdocconf
+++ b/tools/qdoc3/test/assistant.qdocconf
@@ -13,7 +13,7 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index
qhp.projects = Assistant
qhp.Assistant.file = assistant.qhp
-qhp.Assistant.namespace = com.trolltech.assistant.471
+qhp.Assistant.namespace = com.trolltech.assistant.472
qhp.Assistant.virtualFolder = qdoc
qhp.Assistant.indexTitle = Qt Assistant Manual
qhp.Assistant.extraFiles = images/bg_l.png \
@@ -50,7 +50,7 @@ qhp.Assistant.extraFiles = images/bg_l.png \
style/style_ie8.css \
style/style.css
-qhp.Assistant.filterAttributes = qt 4.7.1 tools assistant
+qhp.Assistant.filterAttributes = qt 4.7.2 tools assistant
qhp.Assistant.customFilters.Assistant.name = Qt Assistant Manual
qhp.Assistant.customFilters.Assistant.filterAttributes = qt tools assistant
qhp.Assistant.subprojects = manual examples
diff --git a/tools/qdoc3/test/designer.qdocconf b/tools/qdoc3/test/designer.qdocconf
index ab66792910..637399bf2f 100644
--- a/tools/qdoc3/test/designer.qdocconf
+++ b/tools/qdoc3/test/designer.qdocconf
@@ -13,7 +13,7 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index
qhp.projects = Designer
qhp.Designer.file = designer.qhp
-qhp.Designer.namespace = com.trolltech.designer.471
+qhp.Designer.namespace = com.trolltech.designer.472
qhp.Designer.virtualFolder = qdoc
qhp.Designer.indexTitle = Qt Designer Manual
qhp.Designer.extraFiles = images/bg_l.png \
@@ -50,7 +50,7 @@ qhp.Designer.extraFiles = images/bg_l.png \
style/style_ie8.css \
style/style.css
-qhp.Designer.filterAttributes = qt 4.7.1 tools designer
+qhp.Designer.filterAttributes = qt 4.7.2 tools designer
qhp.Designer.customFilters.Designer.name = Qt Designer Manual
qhp.Designer.customFilters.Designer.filterAttributes = qt tools designer
qhp.Designer.subprojects = manual examples
diff --git a/tools/qdoc3/test/linguist.qdocconf b/tools/qdoc3/test/linguist.qdocconf
index 0d920e2517..8ee298ece9 100644
--- a/tools/qdoc3/test/linguist.qdocconf
+++ b/tools/qdoc3/test/linguist.qdocconf
@@ -13,7 +13,7 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index
qhp.projects = Linguist
qhp.Linguist.file = linguist.qhp
-qhp.Linguist.namespace = com.trolltech.linguist.471
+qhp.Linguist.namespace = com.trolltech.linguist.472
qhp.Linguist.virtualFolder = qdoc
qhp.Linguist.indexTitle = Qt Linguist Manual
qhp.Linguist.extraFiles = images/bg_l.png \
@@ -50,7 +50,7 @@ qhp.Linguist.extraFiles = images/bg_l.png \
style/style_ie8.css \
style/style.css
-qhp.Linguist.filterAttributes = qt 4.7.1 tools linguist
+qhp.Linguist.filterAttributes = qt 4.7.2 tools linguist
qhp.Linguist.customFilters.Linguist.name = Qt Linguist Manual
qhp.Linguist.customFilters.Linguist.filterAttributes = qt tools linguist
qhp.Linguist.subprojects = manual examples
diff --git a/tools/qdoc3/test/qdeclarative.qdocconf b/tools/qdoc3/test/qdeclarative.qdocconf
index 9aaebcbf6c..e68a935fec 100644
--- a/tools/qdoc3/test/qdeclarative.qdocconf
+++ b/tools/qdoc3/test/qdeclarative.qdocconf
@@ -21,7 +21,7 @@ edition.DesktopLight.groups = -graphicsview-api
qhp.projects = Qml
qhp.Qml.file = qml.qhp
-qhp.Qml.namespace = com.trolltech.qml.471
+qhp.Qml.namespace = com.trolltech.qml.472
qhp.Qml.virtualFolder = qdoc
qhp.Qml.indexTitle = Qml Reference
@@ -61,9 +61,9 @@ qhp.Qml.extraFiles = images/bg_l.png \
style/style_ie8.css \
style/style.css
-qhp.Qml.filterAttributes = qt 4.7.1 qtrefdoc
-qhp.Qml.customFilters.Qt.name = Qt 4.7.1
-qhp.Qml.customFilters.Qt.filterAttributes = qt 4.7.1
+qhp.Qml.filterAttributes = qt 4.7.2 qtrefdoc
+qhp.Qml.customFilters.Qt.name = Qt 4.7.2
+qhp.Qml.customFilters.Qt.filterAttributes = qt 4.7.2
qhp.Qml.subprojects = classes
qhp.Qml.subprojects.classes.title = Elements
qhp.Qml.subprojects.classes.indexTitle = Qml Elements
diff --git a/tools/qdoc3/test/qmake.qdocconf b/tools/qdoc3/test/qmake.qdocconf
index be2e9d38d3..b5bc96c6e5 100644
--- a/tools/qdoc3/test/qmake.qdocconf
+++ b/tools/qdoc3/test/qmake.qdocconf
@@ -13,7 +13,7 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index
qhp.projects = qmake
qhp.qmake.file = qmake.qhp
-qhp.qmake.namespace = com.trolltech.qmake.471
+qhp.qmake.namespace = com.trolltech.qmake.472
qhp.qmake.virtualFolder = qdoc
qhp.qmake.indexTitle = QMake Manual
qhp.qmake.extraFiles = images/bg_l.png \
@@ -50,7 +50,7 @@ qhp.qmake.extraFiles = images/bg_l.png \
style/style_ie8.css \
style/style.css
-qhp.qmake.filterAttributes = qt 4.7.1 tools qmake
+qhp.qmake.filterAttributes = qt 4.7.2 tools qmake
qhp.qmake.customFilters.qmake.name = qmake Manual
qhp.qmake.customFilters.qmake.filterAttributes = qt tools qmake
qhp.qmake.subprojects = manual
diff --git a/tools/qdoc3/test/qt-api-only.qdocconf b/tools/qdoc3/test/qt-api-only.qdocconf
index cdd7a7c81a..36637d21d5 100644
--- a/tools/qdoc3/test/qt-api-only.qdocconf
+++ b/tools/qdoc3/test/qt-api-only.qdocconf
@@ -1,34 +1,2 @@
include(qt-build-docs.qdocconf)
-
-# Ensures that the generated index contains a URL that can be used by the
-# tools documentation (assistant.qdocconf, designer.qdocconf, linguist.qdocconf,
-# qmake.qdocconf).
-
-url = ./
-
-# Ensures that the documentation for the tools is not included in the generated
-# .qhp file.
-
-qhp.Qt.excluded += $QT_SOURCE_TREE/doc/src/development/assistant-manual.qdoc \
- $QT_SOURCE_TREE/doc/src/examples/simpletextviewer.qdoc \
- $QT_SOURCE_TREE/doc/src/development/designer-manual.qdoc \
- $QT_SOURCE_TREE/doc/src/examples/calculatorbuilder.qdoc \
- $QT_SOURCE_TREE/doc/src/examples/calculatorform.qdoc \
- $QT_SOURCE_TREE/doc/src/examples/customwidgetplugin.qdoc \
- $QT_SOURCE_TREE/doc/src/examples/taskmenuextension.qdoc \
- $QT_SOURCE_TREE/doc/src/examples/containerextension.qdoc \
- $QT_SOURCE_TREE/doc/src/examples/worldtimeclockbuilder.qdoc \
- $QT_SOURCE_TREE/doc/src/examples/worldtimeclockplugin.qdoc \
- $QT_SOURCE_TREE/doc/src/internationalization/linguist-manual.qdoc \
- $QT_SOURCE_TREE/doc/src/examples/hellotr.qdoc \
- $QT_SOURCE_TREE/doc/src/examples/arrowpad.qdoc \
- $QT_SOURCE_TREE/doc/src/examples/trollprint.qdoc \
- $QT_SOURCE_TREE/doc/src/development/qmake-manual.qdoc
-
-# Remove the QML documentation from the Qt-only documentation.
-
-excludedirs += $QT_SOURCE_TREE/src/imports
-
-outputdir = $QT_BUILD_TREE/doc-build/html-qt
-tagfile = $QT_BUILD_TREE/doc-build/html-qt/qt.tags
-base = file:$QT_BUILD_TREE/doc-build/html-qt
+include(qt-project-api-only.qdocconf)
diff --git a/tools/qdoc3/test/qt-build-docs-online.qdocconf b/tools/qdoc3/test/qt-build-docs-online.qdocconf
new file mode 100644
index 0000000000..296284538a
--- /dev/null
+++ b/tools/qdoc3/test/qt-build-docs-online.qdocconf
@@ -0,0 +1,2 @@
+include(qt-project.qdocconf)
+include(qt-html-templates-online.qdocconf)
diff --git a/tools/qdoc3/test/qt-build-docs.qdocconf b/tools/qdoc3/test/qt-build-docs.qdocconf
index dcabeb4c97..4dbe1cdaa8 100644
--- a/tools/qdoc3/test/qt-build-docs.qdocconf
+++ b/tools/qdoc3/test/qt-build-docs.qdocconf
@@ -1,147 +1,2 @@
-include(compat.qdocconf)
-include(macros.qdocconf)
-include(qt-cpp-ignore.qdocconf)
+include(qt-project.qdocconf)
include(qt-html-templates.qdocconf)
-include(qt-defines.qdocconf)
-
-project = Qt
-description = Qt Reference Documentation
-url = http://qt.nokia.com/doc/4.7
-
-sourceencoding = UTF-8
-outputencoding = UTF-8
-naturallanguage = en_US
-
-qhp.projects = Qt
-
-qhp.Qt.file = qt.qhp
-qhp.Qt.namespace = com.trolltech.qt.471
-qhp.Qt.virtualFolder = qdoc
-qhp.Qt.indexTitle = Qt Reference Documentation
-qhp.Qt.indexRoot =
-
-# Files not referenced in any qdoc file (last four are needed by qtdemo)
-# See also extraimages.HTML
-qhp.Qt.extraFiles = index.html \
- images/bg_l.png \
- images/bg_l_blank.png \
- images/bg_ll_blank.png \
- images/bg_ul_blank.png \
- images/header_bg.png \
- images/bg_r.png \
- images/box_bg.png \
- images/breadcrumb.png \
- images/bullet_gt.png \
- images/bullet_dn.png \
- images/bullet_sq.png \
- images/bullet_up.png \
- images/arrow_down.png \
- images/feedbackground.png \
- images/horBar.png \
- images/page.png \
- images/page_bg.png \
- images/sprites-combined.png \
- images/spinner.gif \
- images/stylesheet-coffee-plastique.png \
- images/taskmenuextension-example.png \
- images/coloreditorfactoryimage.png \
- images/dynamiclayouts-example.png \
- 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
-
-
-
-qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc
-qhp.Qt.customFilters.Qt.name = Qt 4.7.1
-qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1
-qhp.Qt.subprojects = classes overviews examples
-qhp.Qt.subprojects.classes.title = Classes
-qhp.Qt.subprojects.classes.indexTitle = Qt's Classes
-qhp.Qt.subprojects.classes.selectors = class fake:headerfile
-qhp.Qt.subprojects.classes.sortPages = true
-qhp.Qt.subprojects.overviews.title = Overviews
-qhp.Qt.subprojects.overviews.indexTitle = All Overviews and HOWTOs
-qhp.Qt.subprojects.overviews.selectors = fake:page,group,module
-qhp.Qt.subprojects.examples.title = Tutorials and Examples
-qhp.Qt.subprojects.examples.indexTitle = Qt Examples
-qhp.Qt.subprojects.examples.selectors = fake:example
-
-language = Cpp
-
-headerdirs = $QT_SOURCE_TREE/src \
- $QT_SOURCE_TREE/extensions/activeqt \
- $QT_SOURCE_TREE/tools/assistant/lib \
- $QT_SOURCE_TREE/tools/assistant/compat/lib \
- $QT_SOURCE_TREE/tools/designer/src/uitools \
- $QT_SOURCE_TREE/tools/designer/src/lib/extension \
- $QT_SOURCE_TREE/tools/designer/src/lib/sdk \
- $QT_SOURCE_TREE/tools/designer/src/lib/uilib \
- $QT_SOURCE_TREE/tools/qtestlib/src \
- $QT_SOURCE_TREE/tools/qdbus/src
-sourcedirs = $QT_SOURCE_TREE/src \
- $QT_SOURCE_TREE/doc/src \
- $QT_SOURCE_TREE/extensions/activeqt \
- $QT_SOURCE_TREE/tools/assistant/lib \
- $QT_SOURCE_TREE/tools/assistant/compat/lib \
- $QT_SOURCE_TREE/tools/designer/src/uitools \
- $QT_SOURCE_TREE/tools/designer/src/lib/extension \
- $QT_SOURCE_TREE/tools/designer/src/lib/sdk \
- $QT_SOURCE_TREE/tools/designer/src/lib/uilib \
- $QT_SOURCE_TREE/tools/qtestlib/src \
- $QT_SOURCE_TREE/tools/qdbus
-
-excludedirs = $QT_SOURCE_TREE/src/3rdparty/clucene \
- $QT_SOURCE_TREE/src/3rdparty/des \
- $QT_SOURCE_TREE/src/3rdparty/freetype \
- $QT_SOURCE_TREE/src/3rdparty/harfbuzz \
- $QT_SOURCE_TREE/src/3rdparty/kdebase \
- $QT_SOURCE_TREE/src/3rdparty/libconninet \
- $QT_SOURCE_TREE/src/3rdparty/libjpeg \
- $QT_SOURCE_TREE/src/3rdparty/libmng \
- $QT_SOURCE_TREE/src/3rdparty/libpng \
- $QT_SOURCE_TREE/src/3rdparty/libtiff \
- $QT_SOURCE_TREE/src/3rdparty/md4 \
- $QT_SOURCE_TREE/src/3rdparty/md5 \
- $QT_SOURCE_TREE/src/3rdparty/patches \
- $QT_SOURCE_TREE/src/3rdparty/sha1 \
- $QT_SOURCE_TREE/src/3rdparty/sqlite \
- $QT_SOURCE_TREE/src/3rdparty/webkit/JavaScriptCore \
- $QT_SOURCE_TREE/src/3rdparty/webkit/WebCore \
- $QT_SOURCE_TREE/src/3rdparty/wintab \
- $QT_SOURCE_TREE/src/3rdparty/zlib \
- $QT_SOURCE_TREE/src/3rdparty/phonon/gstreamer \
- $QT_SOURCE_TREE/src/3rdparty/phonon/ds9 \
- $QT_SOURCE_TREE/src/3rdparty/phonon/qt7 \
- $QT_SOURCE_TREE/src/3rdparty/phonon/mmf \
- $QT_SOURCE_TREE/src/3rdparty/phonon/waveout \
- $QT_SOURCE_TREE/doc/src/snippets \
- $QT_SOURCE_TREE/doc/src/ja_JP \
- $QT_SOURCE_TREE/doc/src/zh_CN
-
-sources.fileextensions = "*.cpp *.qdoc *.mm"
-examples.fileextensions = "*.cpp *.h *.js *.xq *.svg *.xml *.ui *.qhp *.qhcp *.qml"
-examples.imageextensions = "*.png"
-
-exampledirs = $QT_SOURCE_TREE/doc/src \
- $QT_SOURCE_TREE/examples \
- $QT_SOURCE_TREE/examples/tutorials \
- $QT_SOURCE_TREE \
- $QT_SOURCE_TREE/qmake/examples \
- $QT_SOURCE_TREE/src/3rdparty/webkit/WebKit/qt/docs
-imagedirs = $QT_SOURCE_TREE/doc/src/images \
- $QT_SOURCE_TREE/examples \
- $QT_SOURCE_TREE/doc/src/declarative/pics \
- $QT_SOURCE_TREE/doc/src/template/images
-outputdir = $QT_BUILD_TREE/doc/html
-tagfile = $QT_BUILD_TREE/doc/html/qt.tags
-base = file:$QT_BUILD_TREE/doc/html
-
-HTML.generatemacrefs = "true"
diff --git a/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf b/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf
index 7e28fa244c..24696d5b84 100644
--- a/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf
+++ b/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf
@@ -17,15 +17,15 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index
qhp.projects = Qt
qhp.Qt.file = qt.qhp
-qhp.Qt.namespace = com.trolltech.qt.471
+qhp.Qt.namespace = com.trolltech.qt.472
qhp.Qt.virtualFolder = qdoc
qhp.Qt.title = Qt
qhp.Qt.indexTitle = Qt
qhp.Qt.selectors = fake:example
-qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc ja_JP
-qhp.Qt.customFilters.Qt.name = Qt 4.7.1
-qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1
+qhp.Qt.filterAttributes = qt 4.7.2 qtrefdoc ja_JP
+qhp.Qt.customFilters.Qt.name = Qt 4.7.2
+qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.2
# Files not referenced in any qdoc file (last four are needed by qtdemo)
# See also extraimages.HTML
diff --git a/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf b/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf
index cfcc76d533..7789bf7ca8 100644
--- a/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf
+++ b/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf
@@ -17,15 +17,15 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index
qhp.projects = Qt
qhp.Qt.file = qt.qhp
-qhp.Qt.namespace = com.trolltech.qt.471
+qhp.Qt.namespace = com.trolltech.qt.472
qhp.Qt.virtualFolder = qdoc
qhp.Qt.title = 教程
qhp.Qt.indexTitle = 教程
qhp.Qt.selectors = fake:example
-qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc zh_CN
-qhp.Qt.customFilters.Qt.name = Qt 4.7.1
-qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1
+qhp.Qt.filterAttributes = qt 4.7.2 qtrefdoc zh_CN
+qhp.Qt.customFilters.Qt.name = Qt 4.7.2
+qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.2
# Files not referenced in any qdoc file (last four are needed by qtdemo)
# See also extraimages.HTML
diff --git a/tools/qdoc3/test/qt-defines.qdocconf b/tools/qdoc3/test/qt-defines.qdocconf
index 51ee0d355c..bf7fd08597 100644
--- a/tools/qdoc3/test/qt-defines.qdocconf
+++ b/tools/qdoc3/test/qt-defines.qdocconf
@@ -15,48 +15,3 @@ defines = Q_QDOC \
versionsym = QT_VERSION_STR
codeindent = 1
-
-# Files not referenced in any qdoc file (last four needed by qtdemo)
-# See also qhp.Qt.extraFiles
-extraimages.HTML = qt-logo \
- trolltech-logo \
- bg_l.png \
- bg_l_blank.png \
- bg_ll_blank.png \
- bg_ul_blank.png \
- header_bg.png \
- bg_r.png \
- box_bg.png \
- breadcrumb.png \
- bullet_gt.png \
- bullet_dn.png \
- bullet_sq.png \
- bullet_up.png \
- arrow_down.png \
- feedbackground.png \
- horBar.png \
- page.png \
- page_bg.png \
- sprites-combined.png \
- spinner.gif \
- stylesheet-coffee-plastique.png \
- taskmenuextension-example.png \
- coloreditorfactoryimage.png \
- dynamiclayouts-example.png
-
-# This stuff is used by the new doc format.
-scriptdirs = $QT_SOURCE_TREE/doc/src/template/scripts
-styledirs = $QT_SOURCE_TREE/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
diff --git a/tools/qdoc3/test/qt-html-default-styles.qdocconf b/tools/qdoc3/test/qt-html-default-styles.qdocconf
new file mode 100644
index 0000000000..30c28cb69a
--- /dev/null
+++ b/tools/qdoc3/test/qt-html-default-styles.qdocconf
@@ -0,0 +1,50 @@
+# Define the location of the templates to use. Style sheets and scripts are
+# specified relative to the template directory and will be copied into
+# subdirectories of the output directory.
+
+HTML.templatedir = $QT_SOURCE_TREE/doc/src/template
+
+HTML.stylesheets = style/style.css \
+ style/narrow.css
+
+HTML.scripts =
+
+# Files not referenced in any qdoc file (last four needed by qtdemo)
+# See also qhp.Qt.extraFiles
+extraimages.HTML = qt-logo \
+ trolltech-logo \
+ bg_l.png \
+ bg_l_blank.png \
+ bg_ll_blank.png \
+ bg_ul_blank.png \
+ header_bg.png \
+ bg_r.png \
+ box_bg.png \
+ breadcrumb.png \
+ bullet_gt.png \
+ bullet_dn.png \
+ bullet_sq.png \
+ bullet_up.png \
+ arrow_down.png \
+ feedbackground.png \
+ horBar.png \
+ page.png \
+ page_bg.png \
+ sprites-combined.png \
+ spinner.gif \
+ stylesheet-coffee-plastique.png \
+ taskmenuextension-example.png \
+ coloreditorfactoryimage.png \
+ dynamiclayouts-example.png
+
+# Include the style sheets and scripts used.
+
+HTML.headerstyles = \
+ " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/narrow.css\" />\n" \
+ " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.css\" />\n"
+
+HTML.headerscripts =
+
+HTML.endheader = \
+ "</head>\n" \
+ "<body class=\"offline creator\">\n"
diff --git a/tools/qdoc3/test/qt-html-online-styles.qdocconf b/tools/qdoc3/test/qt-html-online-styles.qdocconf
new file mode 100644
index 0000000000..06f8964637
--- /dev/null
+++ b/tools/qdoc3/test/qt-html-online-styles.qdocconf
@@ -0,0 +1,77 @@
+# Define the location of the templates to use. Style sheets and scripts are
+# specified relative to the template directory and will be copied into
+# subdirectories of the output directory.
+
+HTML.templatedir = $QT_SOURCE_TREE/doc/src/template
+
+HTML.stylesheets = style/narrow.css \
+ style/style.css \
+ style/style_ie6.css \
+ style/style_ie7.css \
+ style/style_ie8.css \
+ style/superfish.css
+
+# Adding jquery and functions - providing online tools and search features
+HTML.scripts = scripts/functions.js \
+ scripts/narrow.js \
+ scripts/superfish.js \
+ scripts/jquery.js
+
+
+# Files not referenced in any qdoc file (last four needed by qtdemo)
+# See also qhp.Qt.extraFiles
+extraimages.HTML = qt-logo \
+ trolltech-logo \
+ bg_l.png \
+ bg_l_blank.png \
+ bg_ll_blank.png \
+ bg_ul_blank.png \
+ header_bg.png \
+ bg_r.png \
+ box_bg.png \
+ breadcrumb.png \
+ bullet_gt.png \
+ bullet_dn.png \
+ bullet_sq.png \
+ bullet_up.png \
+ arrow_down.png \
+ feedbackground.png \
+ horBar.png \
+ page.png \
+ page_bg.png \
+ sprites-combined.png \
+ spinner.gif \
+ stylesheet-coffee-plastique.png \
+ taskmenuextension-example.png \
+ coloreditorfactoryimage.png \
+ dynamiclayouts-example.png
+
+# Include the style sheets and scripts used.
+
+HTML.headerstyles = \
+ " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/style.css\" />\n" \
+ " <script src=\"scripts/jquery.js\" type=\"text/javascript\"></script>\n" \
+ " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n" \
+ " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/superfish.css\" />\n" \
+ " <link rel=\"stylesheet\" type=\"text/css\" href=\"style/narrow.css\" />\n" \
+ " <!--[if IE]>\n" \
+ "<meta name=\"MSSmartTagsPreventParsing\" content=\"true\">\n" \
+ "<meta http-equiv=\"imagetoolbar\" content=\"no\">\n" \
+ "<![endif]-->\n" \
+ "<!--[if lt IE 7]>\n" \
+ "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie6.css\">\n" \
+ "<![endif]-->\n" \
+ "<!--[if IE 7]>\n" \
+ "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie7.css\">\n" \
+ "<![endif]-->\n" \
+ "<!--[if IE 8]>\n" \
+ "<link rel=\"stylesheet\" type=\"text/css\" href=\"style/style_ie8.css\">\n" \
+ "<![endif]-->\n\n"
+
+HTML.headerscripts = \
+ "<script src=\"scripts/superfish.js\" type=\"text/javascript\"></script>\n" \
+ "<script src=\"scripts/narrow.js\" type=\"text/javascript\"></script>\n\n"
+
+HTML.endheader = \
+ "</head>\n" \
+ "<body class=\"\" onload=\"CheckEmptyAndLoadList();\">\n"
diff --git a/tools/qdoc3/test/qt-html-templates-online.qdocconf b/tools/qdoc3/test/qt-html-templates-online.qdocconf
new file mode 100644
index 0000000000..1d55cee85c
--- /dev/null
+++ b/tools/qdoc3/test/qt-html-templates-online.qdocconf
@@ -0,0 +1,236 @@
+include(qt-html-online-styles.qdocconf)
+
+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.7</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" \
+ " <!-- Breadcrumbs go 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" \
+ "\n" \
+ " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n" \
+ " <script type=\"text/javascript\">\n" \
+ " var _gaq = _gaq || [];\n" \
+ " _gaq.push(['_setAccount', 'UA-4457116-5']);\n" \
+ " _gaq.push(['_trackPageview']);\n" \
+ " (function() {\n" \
+ " var ga = document.createElement('script'); " \
+ "ga.type = 'text/javascript'; ga.async = true;\n" \
+ " ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + " \
+ "'.google-analytics.com/ga.js';\n" \
+ " var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n" \
+ " })();\n" \
+ " </script>\n"
+
+
+# Files not referenced in any qdoc file (last four are needed by qtdemo)
+# See also extraimages.HTML
+qhp.Qt.extraFiles = index.html \
+ images/bg_l.png \
+ images/bg_l_blank.png \
+ images/bg_ll_blank.png \
+ images/bg_ul_blank.png \
+ images/header_bg.png \
+ images/bg_r.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_gt.png \
+ images/bullet_dn.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/arrow_down.png \
+ images/feedbackground.png \
+ images/horBar.png \
+ images/page.png \
+ images/page_bg.png \
+ images/sprites-combined.png \
+ images/spinner.gif \
+ images/stylesheet-coffee-plastique.png \
+ images/taskmenuextension-example.png \
+ images/coloreditorfactoryimage.png \
+ images/dynamiclayouts-example.png \
+ 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/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf
index 47b1e5fe1b..67ce95a407 100644
--- a/tools/qdoc3/test/qt-html-templates.qdocconf
+++ b/tools/qdoc3/test/qt-html-templates.qdocconf
@@ -1,154 +1,77 @@
-HTML.stylesheets = style/style.css \
- style/OfflineStyle.css \
- style/style_ie7.css \
- style/style_ie8.css \
- style/style_ie6.css
+include(qt-html-default-styles.qdocconf)
-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=\"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.7</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" \
- " </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\">\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.postheader = \
+ " <div class=\"header\" id=\"qtdocheader\">\n" \
+ " <div class=\"content\"> \n" \
+ " <div id=\"nav-logo\">\n" \
+ " <a href=\"index.html\">Home</a>\n" \
+ " </div>\n" \
+ " <a href=\"index.html\" class=\"qtref\"><span>Qt Reference Documentation</span></a>\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" \
+ " <!-- Breadcrumbs go 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.postpostheader = \
+ " </ul>\n" \
+ " </div>\n" \
+ " </div>\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" \ No newline at end of file
+HTML.footer = \
+ " <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" \
+
+# Files not referenced in any qdoc file (last four are needed by qtdemo)
+# See also extraimages.HTML
+qhp.Qt.extraFiles = index.html \
+ images/bg_l.png \
+ images/bg_l_blank.png \
+ images/bg_ll_blank.png \
+ images/bg_ul_blank.png \
+ images/header_bg.png \
+ images/bg_r.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_gt.png \
+ images/bullet_dn.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/arrow_down.png \
+ images/feedbackground.png \
+ images/horBar.png \
+ images/page.png \
+ images/page_bg.png \
+ images/sprites-combined.png \
+ images/spinner.gif \
+ images/stylesheet-coffee-plastique.png \
+ images/taskmenuextension-example.png \
+ images/coloreditorfactoryimage.png \
+ images/dynamiclayouts-example.png \
+ style/narrow.css \
+ style/style.css
diff --git a/tools/qdoc3/test/qt-html-templates_ja_JP-online.qdocconf b/tools/qdoc3/test/qt-html-templates_ja_JP-online.qdocconf
new file mode 100644
index 0000000000..fa15d90c60
--- /dev/null
+++ b/tools/qdoc3/test/qt-html-templates_ja_JP-online.qdocconf
@@ -0,0 +1,176 @@
+include(qt-html-online-styles.qdocconf)
+
+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\"><form onsubmit=\"return false;\" action=\"\" id=\"qtdocsearch\">\n" \
+ " <fieldset>\n" \
+ " <input type=\"text\" value=\"\" id=\"pageType\" name=\"searchstring\">\n" \
+ " </fieldset>\n" \
+ " </form></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://qt.nokia.com/developer\">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" \
+ " <li class=\"nav-topright-shop\"><a title=\"SHOP\" href=\"http://shop.qt.nokia.com\">SHOP</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.7</a></span></li>\n" \
+ " <li class=\"shortCut-topleft-active\"><a href=\"http://qt.nokia.com/doc/\">ALL VERSIONS" \
+ " </a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " <ul class=\"sf-menu sf-js-enabled sf-shadow\" id=\"narrowmenu\"> \n" \
+ " <li><a href=\"#\">API Lookup</a> \n" \
+ " <ul id=\"topmenuLook\"> \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 stuff</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 id=\"topmenuTopic\"> \n" \
+ " <li><a href=\"qt-basic-concepts.html\">Basic Qt architecture</a></li> \n" \
+ " <li><a href=\"declarativeui.html\">Device UI's &amp; Qt Quick</a></li> \n" \
+ " <li><a href=\"qt-gui-concepts.html\">Desktop UI components</a></li> \n" \
+ " <li><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Examples</a> \n" \
+ " <ul id=\"topmenuexample\"> \n" \
+ " <li><a href=\"all-examples.html\">Examples</a></li> \n" \
+ " <li><a href=\"tutorials.html\">チュートリアル</a></li> \n" \
+ " <li><a href=\"demos.html\">Demos</a></li> \n" \
+ " <li><a href=\"qdeclarativeexamples.html\">QML Examples</a></li> \n" \
+ " <li><a href=\"qdeclarativeexamples.html#Demos\">QML Demos</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\">\n" \
+ " <form id=\"qtdocsearch\" action=\"\" onsubmit=\"return false;\">\n" \
+ " <fieldset>\n" \
+ " <input type=\"text\" name=\"searchstring\" id=\"pageType\" value=\"\" />\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 stuff</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\">Basic Qt architecture</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"declarativeui.html\">Device UI's &amp; Qt Quick</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qt-gui-concepts.html\">Desktop UI components</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"platform-specific.html\">Platform-specific info</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\">チュートリアル</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" \
+ " <li class=\"defaultLink\"><a href=\"qdeclarativeexamples.html#Demos\">QML Demos</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\">\n"
+
+HTML.footer = \
+ " <!-- /div -->\n" \
+ " <div class=\"feedback t_button\">\n" \
+ " [+] Documentation Feedback</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><textarea id=\"feedbox\" name=\"feedText\" rows=\"5\" cols=\"40\">Please submit your feedback...</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"
diff --git a/tools/qdoc3/test/qt-html-templates_ja_JP.qdocconf b/tools/qdoc3/test/qt-html-templates_ja_JP.qdocconf
index da20766eb6..18ed5c1504 100644
--- a/tools/qdoc3/test/qt-html-templates_ja_JP.qdocconf
+++ b/tools/qdoc3/test/qt-html-templates_ja_JP.qdocconf
@@ -1,177 +1,63 @@
-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\"><form onsubmit=\"return false;\" action=\"\" id=\"qtdocsearch\">\n" \
- " <fieldset>\n" \
- " <input type=\"text\" value=\"\" id=\"pageType\" name=\"searchstring\">\n" \
- " </fieldset>\n" \
- " </form></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://qt.nokia.com/developer\">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" \
- " <li class=\"nav-topright-shop\"><a title=\"SHOP\" href=\"http://shop.qt.nokia.com\">SHOP</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.7</a></span></li>\n" \
- " <li class=\"shortCut-topleft-active\"><a href=\"http://qt.nokia.com/doc/\">ALL VERSIONS" \
- " </a></li>\n" \
- " </ul>\n" \
- " </div>\n" \
- " <ul class=\"sf-menu sf-js-enabled sf-shadow\" id=\"narrowmenu\"> \n" \
- " <li><a href=\"#\">API Lookup</a> \n" \
- " <ul id=\"topmenuLook\"> \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 stuff</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 id=\"topmenuTopic\"> \n" \
- " <li><a href=\"qt-basic-concepts.html\">Basic Qt architecture</a></li> \n" \
- " <li><a href=\"declarativeui.html\">Device UI's &amp; Qt Quick</a></li> \n" \
- " <li><a href=\"qt-gui-concepts.html\">Desktop UI components</a></li> \n" \
- " <li><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
- " </ul> \n" \
- " </li> \n" \
- " <li><a href=\"#\">Examples</a> \n" \
- " <ul id=\"topmenuexample\"> \n" \
- " <li><a href=\"all-examples.html\">Examples</a></li> \n" \
- " <li><a href=\"tutorials.html\">チュートリアル</a></li> \n" \
- " <li><a href=\"demos.html\">Demos</a></li> \n" \
- " <li><a href=\"qdeclarativeexamples.html\">QML Examples</a></li> \n" \
- " <li><a href=\"qdeclarativeexamples.html#Demos\">QML Demos</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\">\n" \
- " <form id=\"qtdocsearch\" action=\"\" onsubmit=\"return false;\">\n" \
- " <fieldset>\n" \
- " <input type=\"text\" name=\"searchstring\" id=\"pageType\" value=\"\" />\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 stuff</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\">Basic Qt architecture</a></li>\n" \
- " <li class=\"defaultLink\"><a href=\"declarativeui.html\">Device UI's &amp; Qt Quick</a></li>\n" \
- " <li class=\"defaultLink\"><a href=\"qt-gui-concepts.html\">Desktop UI components</a></li>\n" \
- " <li class=\"defaultLink\"><a href=\"platform-specific.html\">Platform-specific info</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\">チュートリアル</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" \
- " <li class=\"defaultLink\"><a href=\"qdeclarativeexamples.html#Demos\">QML Demos</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"
+include(qt-html-default-styles.qdocconf)
-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\">\n"
+HTML.postheader = \
+ " <div class=\"header\" id=\"qtdocheader\">\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.footer = " <!-- /div -->\n" \
- " <div class=\"feedback t_button\">\n" \
- " [+] Documentation Feedback</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><textarea id=\"feedbox\" name=\"feedText\" rows=\"5\" cols=\"40\">Please submit your feedback...</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"
+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\">\n"
+
+HTML.footer = \
+ " <!-- /div -->\n" \
+ " <div class=\"feedback t_button\">\n" \
+ " [+] Documentation Feedback</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><textarea id=\"feedbox\" name=\"feedText\" rows=\"5\" cols=\"40\">Please submit your feedback...</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"
diff --git a/tools/qdoc3/test/qt-html-templates_zh_CN-online.qdocconf b/tools/qdoc3/test/qt-html-templates_zh_CN-online.qdocconf
new file mode 100644
index 0000000000..285ec27af3
--- /dev/null
+++ b/tools/qdoc3/test/qt-html-templates_zh_CN-online.qdocconf
@@ -0,0 +1,176 @@
+include(qt-html-online-styles.qdocconf)
+
+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\"><form onsubmit=\"return false;\" action=\"\" id=\"qtdocsearch\">\n" \
+ " <fieldset>\n" \
+ " <input type=\"text\" value=\"\" id=\"pageType\" name=\"searchstring\">\n" \
+ " </fieldset>\n" \
+ " </form></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://qt.nokia.com/developer\">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" \
+ " <li class=\"nav-topright-shop\"><a title=\"SHOP\" href=\"http://shop.qt.nokia.com\">SHOP</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.7</a></span></li>\n" \
+ " <li class=\"shortCut-topleft-active\"><a href=\"http://qt.nokia.com/doc/\">ALL VERSIONS" \
+ " </a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " <ul class=\"sf-menu sf-js-enabled sf-shadow\" id=\"narrowmenu\"> \n" \
+ " <li><a href=\"#\">API Lookup</a> \n" \
+ " <ul id=\"topmenuLook\"> \n" \
+ " <li><a href=\"classes.html\">所有类</a></li> \n" \
+ " <li><a href=\"functions.html\">所有函数</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 stuff</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 id=\"topmenuTopic\"> \n" \
+ " <li><a href=\"qt-basic-concepts.html\">Basic Qt architecture</a></li> \n" \
+ " <li><a href=\"declarativeui.html\">Device UI's &amp; Qt Quick</a></li> \n" \
+ " <li><a href=\"qt-gui-concepts.html\">Desktop UI components</a></li> \n" \
+ " <li><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Examples</a> \n" \
+ " <ul id=\"topmenuexample\"> \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" \
+ " <li><a href=\"qdeclarativeexamples.html#Demos\">QML Demos</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\">\n" \
+ " <form id=\"qtdocsearch\" action=\"\" onsubmit=\"return false;\">\n" \
+ " <fieldset>\n" \
+ " <input type=\"text\" name=\"searchstring\" id=\"pageType\" value=\"\" />\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\">所有类</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"functions.html\">所有函数</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 stuff</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\">Basic Qt architecture</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"declarativeui.html\">Device UI's &amp; Qt Quick</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qt-gui-concepts.html\">Desktop UI components</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"platform-specific.html\">Platform-specific info</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" \
+ " <li class=\"defaultLink\"><a href=\"qdeclarativeexamples.html#Demos\">QML Demos</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\">\n"
+
+HTML.footer = \
+ " <!-- /div -->\n" \
+ " <div class=\"feedback t_button\">\n" \
+ " [+] Documentation Feedback</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><textarea id=\"feedbox\" name=\"feedText\" rows=\"5\" cols=\"40\">Please submit your feedback...</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"
diff --git a/tools/qdoc3/test/qt-html-templates_zh_CN.qdocconf b/tools/qdoc3/test/qt-html-templates_zh_CN.qdocconf
index 5c4bfa9a4b..7773aa6e58 100644
--- a/tools/qdoc3/test/qt-html-templates_zh_CN.qdocconf
+++ b/tools/qdoc3/test/qt-html-templates_zh_CN.qdocconf
@@ -1,177 +1,176 @@
-HTML.stylesheets = style/style.css \
- style/OfflineStyle.css \
- style/style_ie7.css \
- style/style_ie8.css \
- style/style_ie6.css
+include(qt-html-default-styles.qdocconf)
-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\"><form onsubmit=\"return false;\" action=\"\" id=\"qtdocsearch\">\n" \
- " <fieldset>\n" \
- " <input type=\"text\" value=\"\" id=\"pageType\" name=\"searchstring\">\n" \
- " </fieldset>\n" \
- " </form></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://qt.nokia.com/developer\">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" \
- " <li class=\"nav-topright-shop\"><a title=\"SHOP\" href=\"http://shop.qt.nokia.com\">SHOP</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.7</a></span></li>\n" \
- " <li class=\"shortCut-topleft-active\"><a href=\"http://qt.nokia.com/doc/\">ALL VERSIONS" \
- " </a></li>\n" \
- " </ul>\n" \
- " </div>\n" \
- " <ul class=\"sf-menu sf-js-enabled sf-shadow\" id=\"narrowmenu\"> \n" \
- " <li><a href=\"#\">API Lookup</a> \n" \
- " <ul id=\"topmenuLook\"> \n" \
- " <li><a href=\"classes.html\">所有类</a></li> \n" \
- " <li><a href=\"functions.html\">所有函数</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 stuff</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 id=\"topmenuTopic\"> \n" \
- " <li><a href=\"qt-basic-concepts.html\">Basic Qt architecture</a></li> \n" \
- " <li><a href=\"declarativeui.html\">Device UI's &amp; Qt Quick</a></li> \n" \
- " <li><a href=\"qt-gui-concepts.html\">Desktop UI components</a></li> \n" \
- " <li><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
- " </ul> \n" \
- " </li> \n" \
- " <li><a href=\"#\">Examples</a> \n" \
- " <ul id=\"topmenuexample\"> \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" \
- " <li><a href=\"qdeclarativeexamples.html#Demos\">QML Demos</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\">\n" \
- " <form id=\"qtdocsearch\" action=\"\" onsubmit=\"return false;\">\n" \
- " <fieldset>\n" \
- " <input type=\"text\" name=\"searchstring\" id=\"pageType\" value=\"\" />\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\">所有类</a></li>\n" \
- " <li class=\"defaultLink\"><a href=\"functions.html\">所有函数</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 stuff</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\">Basic Qt architecture</a></li>\n" \
- " <li class=\"defaultLink\"><a href=\"declarativeui.html\">Device UI's &amp; Qt Quick</a></li>\n" \
- " <li class=\"defaultLink\"><a href=\"qt-gui-concepts.html\">Desktop UI components</a></li>\n" \
- " <li class=\"defaultLink\"><a href=\"platform-specific.html\">Platform-specific info</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" \
- " <li class=\"defaultLink\"><a href=\"qdeclarativeexamples.html#Demos\">QML Demos</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.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\"><form onsubmit=\"return false;\" action=\"\" id=\"qtdocsearch\">\n" \
+ " <fieldset>\n" \
+ " <input type=\"text\" value=\"\" id=\"pageType\" name=\"searchstring\">\n" \
+ " </fieldset>\n" \
+ " </form></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://qt.nokia.com/developer\">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" \
+ " <li class=\"nav-topright-shop\"><a title=\"SHOP\" href=\"http://shop.qt.nokia.com\">SHOP</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.7</a></span></li>\n" \
+ " <li class=\"shortCut-topleft-active\"><a href=\"http://qt.nokia.com/doc/\">ALL VERSIONS" \
+ " </a></li>\n" \
+ " </ul>\n" \
+ " </div>\n" \
+ " <ul class=\"sf-menu sf-js-enabled sf-shadow\" id=\"narrowmenu\"> \n" \
+ " <li><a href=\"#\">API Lookup</a> \n" \
+ " <ul id=\"topmenuLook\"> \n" \
+ " <li><a href=\"classes.html\">所有类</a></li> \n" \
+ " <li><a href=\"functions.html\">所有函数</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 stuff</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 id=\"topmenuTopic\"> \n" \
+ " <li><a href=\"qt-basic-concepts.html\">Basic Qt architecture</a></li> \n" \
+ " <li><a href=\"declarativeui.html\">Device UI's &amp; Qt Quick</a></li> \n" \
+ " <li><a href=\"qt-gui-concepts.html\">Desktop UI components</a></li> \n" \
+ " <li><a href=\"platform-specific.html\">Platform-specific info</a></li> \n" \
+ " </ul> \n" \
+ " </li> \n" \
+ " <li><a href=\"#\">Examples</a> \n" \
+ " <ul id=\"topmenuexample\"> \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" \
+ " <li><a href=\"qdeclarativeexamples.html#Demos\">QML Demos</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\">\n" \
+ " <form id=\"qtdocsearch\" action=\"\" onsubmit=\"return false;\">\n" \
+ " <fieldset>\n" \
+ " <input type=\"text\" name=\"searchstring\" id=\"pageType\" value=\"\" />\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\">所有类</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"functions.html\">所有函数</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 stuff</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\">Basic Qt architecture</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"declarativeui.html\">Device UI's &amp; Qt Quick</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"qt-gui-concepts.html\">Desktop UI components</a></li>\n" \
+ " <li class=\"defaultLink\"><a href=\"platform-specific.html\">Platform-specific info</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" \
+ " <li class=\"defaultLink\"><a href=\"qdeclarativeexamples.html#Demos\">QML Demos</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\">\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\">\n"
-HTML.footer = " <!-- /div -->\n" \
- " <div class=\"feedback t_button\">\n" \
- " [+] Documentation Feedback</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><textarea id=\"feedbox\" name=\"feedText\" rows=\"5\" cols=\"40\">Please submit your feedback...</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"
+HTML.footer = \
+ " <!-- /div -->\n" \
+ " <div class=\"feedback t_button\">\n" \
+ " [+] Documentation Feedback</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><textarea id=\"feedbox\" name=\"feedText\" rows=\"5\" cols=\"40\">Please submit your feedback...</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"
diff --git a/tools/qdoc3/test/qt-project-api-only.qdocconf b/tools/qdoc3/test/qt-project-api-only.qdocconf
new file mode 100644
index 0000000000..4a9160129b
--- /dev/null
+++ b/tools/qdoc3/test/qt-project-api-only.qdocconf
@@ -0,0 +1,32 @@
+# Ensures that the generated index contains a URL that can be used by the
+# tools documentation (assistant.qdocconf, designer.qdocconf, linguist.qdocconf,
+# qmake.qdocconf).
+
+url = ./
+
+# Ensures that the documentation for the tools is not included in the generated
+# .qhp file.
+
+qhp.Qt.excluded += $QT_SOURCE_TREE/doc/src/development/assistant-manual.qdoc \
+ $QT_SOURCE_TREE/doc/src/examples/simpletextviewer.qdoc \
+ $QT_SOURCE_TREE/doc/src/development/designer-manual.qdoc \
+ $QT_SOURCE_TREE/doc/src/examples/calculatorbuilder.qdoc \
+ $QT_SOURCE_TREE/doc/src/examples/calculatorform.qdoc \
+ $QT_SOURCE_TREE/doc/src/examples/customwidgetplugin.qdoc \
+ $QT_SOURCE_TREE/doc/src/examples/taskmenuextension.qdoc \
+ $QT_SOURCE_TREE/doc/src/examples/containerextension.qdoc \
+ $QT_SOURCE_TREE/doc/src/examples/worldtimeclockbuilder.qdoc \
+ $QT_SOURCE_TREE/doc/src/examples/worldtimeclockplugin.qdoc \
+ $QT_SOURCE_TREE/doc/src/internationalization/linguist-manual.qdoc \
+ $QT_SOURCE_TREE/doc/src/examples/hellotr.qdoc \
+ $QT_SOURCE_TREE/doc/src/examples/arrowpad.qdoc \
+ $QT_SOURCE_TREE/doc/src/examples/trollprint.qdoc \
+ $QT_SOURCE_TREE/doc/src/development/qmake-manual.qdoc
+
+# Remove the QML documentation from the Qt-only documentation.
+
+excludedirs += $QT_SOURCE_TREE/src/imports
+
+outputdir = $QT_BUILD_TREE/doc-build/html-qt
+tagfile = $QT_BUILD_TREE/doc-build/html-qt/qt.tags
+base = file:$QT_BUILD_TREE/doc-build/html-qt
diff --git a/tools/qdoc3/test/qt-project.qdocconf b/tools/qdoc3/test/qt-project.qdocconf
new file mode 100644
index 0000000000..135fbbb409
--- /dev/null
+++ b/tools/qdoc3/test/qt-project.qdocconf
@@ -0,0 +1,110 @@
+include(compat.qdocconf)
+include(macros.qdocconf)
+include(qt-cpp-ignore.qdocconf)
+include(qt-defines.qdocconf)
+
+project = Qt
+description = Qt Reference Documentation
+url = http://qt.nokia.com/doc/4.7
+version = 4.7.1
+
+sourceencoding = UTF-8
+outputencoding = UTF-8
+naturallanguage = en_US
+
+qhp.projects = Qt
+
+qhp.Qt.file = qt.qhp
+qhp.Qt.namespace = com.trolltech.qt.471
+qhp.Qt.virtualFolder = qdoc
+qhp.Qt.indexTitle = Qt Reference Documentation
+qhp.Qt.indexRoot =
+
+qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc
+qhp.Qt.customFilters.Qt.name = Qt 4.7.1
+qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1
+qhp.Qt.subprojects = classes overviews examples
+qhp.Qt.subprojects.classes.title = Classes
+qhp.Qt.subprojects.classes.indexTitle = Qt's Classes
+qhp.Qt.subprojects.classes.selectors = class fake:headerfile
+qhp.Qt.subprojects.classes.sortPages = true
+qhp.Qt.subprojects.overviews.title = Overviews
+qhp.Qt.subprojects.overviews.indexTitle = All Overviews and HOWTOs
+qhp.Qt.subprojects.overviews.selectors = fake:page,group,module
+qhp.Qt.subprojects.examples.title = Tutorials and Examples
+qhp.Qt.subprojects.examples.indexTitle = Qt Examples
+qhp.Qt.subprojects.examples.selectors = fake:example
+
+language = Cpp
+
+headerdirs = $QT_SOURCE_TREE/src \
+ $QT_SOURCE_TREE/extensions/activeqt \
+ $QT_SOURCE_TREE/tools/assistant/lib \
+ $QT_SOURCE_TREE/tools/assistant/compat/lib \
+ $QT_SOURCE_TREE/tools/designer/src/uitools \
+ $QT_SOURCE_TREE/tools/designer/src/lib/extension \
+ $QT_SOURCE_TREE/tools/designer/src/lib/sdk \
+ $QT_SOURCE_TREE/tools/designer/src/lib/uilib \
+ $QT_SOURCE_TREE/tools/qtestlib/src \
+ $QT_SOURCE_TREE/tools/qdbus/src
+sourcedirs = $QT_SOURCE_TREE/src \
+ $QT_SOURCE_TREE/doc/src \
+ $QT_SOURCE_TREE/extensions/activeqt \
+ $QT_SOURCE_TREE/tools/assistant/lib \
+ $QT_SOURCE_TREE/tools/assistant/compat/lib \
+ $QT_SOURCE_TREE/tools/designer/src/uitools \
+ $QT_SOURCE_TREE/tools/designer/src/lib/extension \
+ $QT_SOURCE_TREE/tools/designer/src/lib/sdk \
+ $QT_SOURCE_TREE/tools/designer/src/lib/uilib \
+ $QT_SOURCE_TREE/tools/qtestlib/src \
+ $QT_SOURCE_TREE/tools/qdbus
+
+excludedirs = $QT_SOURCE_TREE/src/3rdparty/clucene \
+ $QT_SOURCE_TREE/src/3rdparty/des \
+ $QT_SOURCE_TREE/src/3rdparty/freetype \
+ $QT_SOURCE_TREE/src/3rdparty/harfbuzz \
+ $QT_SOURCE_TREE/src/3rdparty/kdebase \
+ $QT_SOURCE_TREE/src/3rdparty/libconninet \
+ $QT_SOURCE_TREE/src/3rdparty/libjpeg \
+ $QT_SOURCE_TREE/src/3rdparty/libmng \
+ $QT_SOURCE_TREE/src/3rdparty/libpng \
+ $QT_SOURCE_TREE/src/3rdparty/libtiff \
+ $QT_SOURCE_TREE/src/3rdparty/md4 \
+ $QT_SOURCE_TREE/src/3rdparty/md5 \
+ $QT_SOURCE_TREE/src/3rdparty/patches \
+ $QT_SOURCE_TREE/src/3rdparty/sha1 \
+ $QT_SOURCE_TREE/src/3rdparty/sqlite \
+ $QT_SOURCE_TREE/src/3rdparty/webkit/JavaScriptCore \
+ $QT_SOURCE_TREE/src/3rdparty/webkit/WebCore \
+ $QT_SOURCE_TREE/src/3rdparty/wintab \
+ $QT_SOURCE_TREE/src/3rdparty/zlib \
+ $QT_SOURCE_TREE/src/3rdparty/phonon/gstreamer \
+ $QT_SOURCE_TREE/src/3rdparty/phonon/ds9 \
+ $QT_SOURCE_TREE/src/3rdparty/phonon/qt7 \
+ $QT_SOURCE_TREE/src/3rdparty/phonon/mmf \
+ $QT_SOURCE_TREE/src/3rdparty/phonon/waveout \
+ $QT_SOURCE_TREE/doc/src/snippets \
+ $QT_SOURCE_TREE/doc/src/ja_JP \
+ $QT_SOURCE_TREE/doc/src/zh_CN
+
+sources.fileextensions = "*.c++ *.cc *.cpp *.cxx *.mm *.qml *.qdoc"
+headers.fileextensions = "*.ch *.h *.h++ *.hh *.hpp *.hxx"
+
+examples.fileextensions = "*.cpp *.h *.js *.xq *.svg *.xml *.ui *.qhp *.qhcp *.qml"
+examples.imageextensions = "*.png"
+
+exampledirs = $QT_SOURCE_TREE/doc/src \
+ $QT_SOURCE_TREE/examples \
+ $QT_SOURCE_TREE/examples/tutorials \
+ $QT_SOURCE_TREE \
+ $QT_SOURCE_TREE/qmake/examples \
+ $QT_SOURCE_TREE/src/3rdparty/webkit/WebKit/qt/docs
+imagedirs = $QT_SOURCE_TREE/doc/src/images \
+ $QT_SOURCE_TREE/examples \
+ $QT_SOURCE_TREE/doc/src/declarative/pics \
+ $QT_SOURCE_TREE/doc/src/template/images
+outputdir = $QT_BUILD_TREE/doc/html
+tagfile = $QT_BUILD_TREE/doc/html/qt.tags
+base = file:$QT_BUILD_TREE/doc/html
+
+HTML.generatemacrefs = "true"
diff --git a/tools/qdoc3/test/qt.qdocconf b/tools/qdoc3/test/qt.qdocconf
deleted file mode 100644
index ea97205af8..0000000000
--- a/tools/qdoc3/test/qt.qdocconf
+++ /dev/null
@@ -1,147 +0,0 @@
-include(compat.qdocconf)
-include(macros.qdocconf)
-include(qt-cpp-ignore.qdocconf)
-include(qt-html-templates.qdocconf)
-include(qt-defines.qdocconf)
-
-project = Qt
-versionsym =
-version = %VERSION%
-description = Qt Reference Documentation
-url = http://qt.nokia.com/doc/4.7
-
-sourceencoding = UTF-8
-outputencoding = UTF-8
-naturallanguage = en_US
-
-qhp.projects = Qt
-
-qhp.Qt.file = qt.qhp
-qhp.Qt.namespace = com.trolltech.qt.471
-qhp.Qt.virtualFolder = qdoc
-qhp.Qt.indexTitle = Qt Reference Documentation
-qhp.Qt.indexRoot =
-
-# Files not referenced in any qdoc file (last four are needed by qtdemo)
-# See also extraimages.HTML
-qhp.Qt.extraFiles = index.html \
- images/bg_l.png \
- images/bg_l_blank.png \
- images/bg_ll_blank.png \
- images/bg_ul_blank.png \
- images/header_bg.png \
- images/bg_r.png \
- images/box_bg.png \
- images/breadcrumb.png \
- images/bullet_gt.png \
- images/bullet_dn.png \
- images/bullet_sq.png \
- images/bullet_up.png \
- images/arrow_down.png \
- images/feedbackground.png \
- images/horBar.png \
- images/page.png \
- images/page_bg.png \
- images/sprites-combined.png \
- images/spinner.gif \
- images/stylesheet-coffee-plastique.png \
- images/taskmenuextension-example.png \
- images/coloreditorfactoryimage.png \
- images/dynamiclayouts-example.png \
- 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
-
-qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc
-qhp.Qt.customFilters.Qt.name = Qt 4.7.1
-qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1
-qhp.Qt.subprojects = classes overviews examples
-qhp.Qt.subprojects.classes.title = Classes
-qhp.Qt.subprojects.classes.indexTitle = Qt's Classes
-qhp.Qt.subprojects.classes.selectors = class fake:headerfile
-qhp.Qt.subprojects.classes.sortPages = true
-qhp.Qt.subprojects.overviews.title = Overviews
-qhp.Qt.subprojects.overviews.indexTitle = All Overviews and HOWTOs
-qhp.Qt.subprojects.overviews.selectors = fake:page,group,module
-qhp.Qt.subprojects.examples.title = Tutorials and Examples
-qhp.Qt.subprojects.examples.indexTitle = Qt Examples
-qhp.Qt.subprojects.examples.selectors = fake:example
-
-language = Cpp
-
-headerdirs = $QTDIR/src \
- $QTDIR/extensions/activeqt \
- $QTDIR/tools/assistant/lib \
- $QTDIR/tools/assistant/compat/lib \
- $QTDIR/tools/designer/src/uitools \
- $QTDIR/tools/designer/src/lib/extension \
- $QTDIR/tools/designer/src/lib/sdk \
- $QTDIR/tools/designer/src/lib/uilib \
- $QTDIR/tools/qtestlib/src \
- $QTDIR/tools/qdbus/src
-sourcedirs = $QTDIR/src \
- $QTDIR/doc/src \
- $QTDIR/extensions/activeqt \
- $QTDIR/tools/assistant/lib \
- $QTDIR/tools/assistant/compat/lib \
- $QTDIR/tools/designer/src/uitools \
- $QTDIR/tools/designer/src/lib/extension \
- $QTDIR/tools/designer/src/lib/sdk \
- $QTDIR/tools/designer/src/lib/uilib \
- $QTDIR/tools/qtestlib/src \
- $QTDIR/tools/qdbus
-
-excludedirs = $QTDIR/src/3rdparty/clucene \
- $QTDIR/src/3rdparty/des \
- $QTDIR/src/3rdparty/freetype \
- $QTDIR/src/3rdparty/harfbuzz \
- $QTDIR/src/3rdparty/kdebase \
- $QTDIR/src/3rdparty/libconninet \
- $QTDIR/src/3rdparty/libjpeg \
- $QTDIR/src/3rdparty/libmng \
- $QTDIR/src/3rdparty/libpng \
- $QTDIR/src/3rdparty/libtiff \
- $QTDIR/src/3rdparty/md4 \
- $QTDIR/src/3rdparty/md5 \
- $QTDIR/src/3rdparty/patches \
- $QTDIR/src/3rdparty/sha1 \
- $QTDIR/src/3rdparty/sqlite \
- $QTDIR/src/3rdparty/webkit/JavaScriptCore \
- $QTDIR/src/3rdparty/webkit/WebCore \
- $QTDIR/src/3rdparty/wintab \
- $QTDIR/src/3rdparty/zlib \
- $QTDIR/src/3rdparty/phonon/gstreamer \
- $QTDIR/src/3rdparty/phonon/ds9 \
- $QTDIR/src/3rdparty/phonon/qt7 \
- $QTDIR/src/3rdparty/phonon/mmf \
- $QTDIR/src/3rdparty/phonon/waveout \
- $QTDIR/doc/src/snippets \
- $QTDIR/doc/src/ja_JP \
- $QTDIR/doc/src/zh_CN
-
-sources.fileextensions = "*.cpp *.qdoc *.mm"
-examples.fileextensions = "*.cpp *.h *.js *.xq *.svg *.xml *.ui *.qhp *.qhcp *.qml"
-examples.imageextensions = "*.png"
-
-exampledirs = $QTDIR/doc/src \
- $QTDIR/examples \
- $QTDIR/examples/tutorials \
- $QTDIR \
- $QTDIR/qmake/examples \
- $QTDIR/src/3rdparty/webkit/WebKit/qt/docs
-imagedirs = $QTDIR/doc/src/images \
- $QTDIR/examples \
- $QTDIR/doc/src/declarative/pics \
- $QTDIR/doc/src/template/images
-outputdir = $QTDIR/doc/html
-tagfile = $QTDIR/doc/html/qt.tags
-base = file:$QTDIR/doc/html
-
-HTML.generatemacrefs = "true"
diff --git a/tools/qdoc3/test/qt_ja_JP.qdocconf b/tools/qdoc3/test/qt_ja_JP.qdocconf
deleted file mode 100644
index 32bba064a1..0000000000
--- a/tools/qdoc3/test/qt_ja_JP.qdocconf
+++ /dev/null
@@ -1,118 +0,0 @@
-include(compat.qdocconf)
-include(macros.qdocconf)
-include(qt-cpp-ignore.qdocconf)
-include(qt-html-templates_ja_JP.qdocconf)
-include(qt-defines.qdocconf)
-
-project = Qt
-versionsym =
-version = %VERSION%
-description = Qt リファレンスドキュメント
-url = http://qt.nokia.com/doc/ja_JP/4.7
-
-sourceencoding = UTF-8
-outputencoding = UTF-8
-naturallanguage = ja
-
-indexes = $QTDIR/doc/html/qt.index
-
-qhp.projects = Qt
-
-qhp.Qt.file = qt.qhp
-qhp.Qt.namespace = com.trolltech.qt.471
-qhp.Qt.virtualFolder = qdoc
-qhp.Qt.title = Qt
-qhp.Qt.indexTitle = Qt
-qhp.Qt.selectors = fake:example
-
-qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc ja_JP
-qhp.Qt.customFilters.Qt.name = Qt 4.7.1
-qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1
-
-# Files not referenced in any qdoc file (last four are needed by qtdemo)
-# See also extraimages.HTML
-qhp.Qt.extraFiles = index.html \
- images/bg_l.png \
- images/bg_l_blank.png \
- images/bg_ll_blank.png \
- images/bg_ul_blank.png \
- images/header_bg.png \
- images/bg_r.png \
- images/box_bg.png \
- images/breadcrumb.png \
- images/bullet_gt.png \
- images/bullet_dn.png \
- images/bullet_sq.png \
- images/bullet_up.png \
- images/arrow_down.png \
- images/feedbackground.png \
- images/horBar.png \
- images/page.png \
- images/page_bg.png \
- images/sprites-combined.png \
- images/spinner.gif \
- images/stylesheet-coffee-plastique.png \
- images/taskmenuextension-example.png \
- images/coloreditorfactoryimage.png \
- images/dynamiclayouts-example.png \
- 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
-
-language = Cpp
-
-sourcedirs = $QTDIR/doc/src/ja_JP
-
-excludedirs = $QTDIR/src/3rdparty/clucene \
- $QTDIR/src/3rdparty/des \
- $QTDIR/src/3rdparty/freetype \
- $QTDIR/src/3rdparty/harfbuzz \
- $QTDIR/src/3rdparty/kdebase \
- $QTDIR/src/3rdparty/libjpeg \
- $QTDIR/src/3rdparty/libmng \
- $QTDIR/src/3rdparty/libpng \
- $QTDIR/src/3rdparty/libtiff \
- $QTDIR/src/3rdparty/md4 \
- $QTDIR/src/3rdparty/md5 \
- $QTDIR/src/3rdparty/patches \
- $QTDIR/src/3rdparty/sha1 \
- $QTDIR/src/3rdparty/sqlite \
- $QTDIR/src/3rdparty/webkit/JavaScriptCore \
- $QTDIR/src/3rdparty/webkit/WebCore \
- $QTDIR/src/3rdparty/wintab \
- $QTDIR/src/3rdparty/zlib \
- $QTDIR/doc/src/snippets \
- $QTDIR/doc/src/zh_CN \
- $QTDIR/src/3rdparty/phonon/gstreamer \
- $QTDIR/src/3rdparty/phonon/ds9 \
- $QTDIR/src/3rdparty/phonon/qt7 \
- $QTDIR/src/3rdparty/phonon/mmf \
- $QTDIR/src/3rdparty/phonon/waveout
-
-sources.fileextensions = "*.cpp *.qdoc *.mm"
-examples.fileextensions = "*.cpp *.h *.js *.xq *.svg *.xml *.ui *.qhp *.qhcp"
-examples.imageextensions = "*.png"
-
-exampledirs = $QTDIR/doc/src \
- $QTDIR/examples/ja_JP \
- $QTDIR/examples \
- $QTDIR/examples/tutorials \
- $QTDIR \
- $QTDIR/qmake/examples \
- $QTDIR/src/3rdparty/webkit/WebKit/qt/docs
-imagedirs = $QTDIR/doc/src/ja_JP/images \
- $QTDIR/doc/src/images \
- $QTDIR/examples \
- $QTDIR/doc/src/template/images
-outputdir = $QTDIR/doc/html_ja_JP
-tagfile = $QTDIR/doc/html_ja_JP/qt.tags
-base = file:$QTDIR/doc/html_ja_JP
-
-HTML.generatemacrefs = "true"
diff --git a/tools/qdoc3/test/qt_zh_CN.qdocconf b/tools/qdoc3/test/qt_zh_CN.qdocconf
deleted file mode 100644
index 40d3d5a060..0000000000
--- a/tools/qdoc3/test/qt_zh_CN.qdocconf
+++ /dev/null
@@ -1,116 +0,0 @@
-include(compat.qdocconf)
-include(macros.qdocconf)
-include(qt-cpp-ignore.qdocconf)
-include(qt-html-templates_zh_CN.qdocconf)
-include(qt-defines.qdocconf)
-
-project = Qt
-versionsym =
-version = %VERSION%
-description = Qt Reference Documentation
-url = http://qt.nokia.com/doc/zh_CN/4.7
-
-sourceencoding = UTF-8
-outputencoding = UTF-8
-naturallanguage = zh-Hans
-
-indexes = $QTDIR/doc/html/qt.index
-
-qhp.projects = Qt
-
-qhp.Qt.file = qt.qhp
-qhp.Qt.namespace = com.trolltech.qt.471
-qhp.Qt.virtualFolder = qdoc
-qhp.Qt.title = 教程
-qhp.Qt.indexTitle = 教程
-qhp.Qt.selectors = fake:example
-
-qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc zh_CN
-qhp.Qt.customFilters.Qt.name = Qt 4.7.1
-qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1
-
-# Files not referenced in any qdoc file (last four are needed by qtdemo)
-# See also extraimages.HTML
-qhp.Qt.extraFiles = index.html \
- images/bg_l.png \
- images/bg_l_blank.png \
- images/bg_ll_blank.png \
- images/bg_ul_blank.png \
- images/header_bg.png \
- images/bg_r.png \
- images/box_bg.png \
- images/breadcrumb.png \
- images/bullet_gt.png \
- images/bullet_dn.png \
- images/bullet_sq.png \
- images/bullet_up.png \
- images/arrow_down.png \
- images/feedbackground.png \
- images/horBar.png \
- images/page.png \
- images/page_bg.png \
- images/sprites-combined.png \
- images/spinner.gif \
- images/stylesheet-coffee-plastique.png \
- images/taskmenuextension-example.png \
- images/coloreditorfactoryimage.png \
- images/dynamiclayouts-example.png \
- 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
-
-language = Cpp
-
-sourcedirs = $QTDIR/doc/src/zh_CN
-
-excludedirs = $QTDIR/src/3rdparty/clucene \
- $QTDIR/src/3rdparty/des \
- $QTDIR/src/3rdparty/freetype \
- $QTDIR/src/3rdparty/harfbuzz \
- $QTDIR/src/3rdparty/kdebase \
- $QTDIR/src/3rdparty/libjpeg \
- $QTDIR/src/3rdparty/libmng \
- $QTDIR/src/3rdparty/libpng \
- $QTDIR/src/3rdparty/libtiff \
- $QTDIR/src/3rdparty/md4 \
- $QTDIR/src/3rdparty/md5 \
- $QTDIR/src/3rdparty/patches \
- $QTDIR/src/3rdparty/sha1 \
- $QTDIR/src/3rdparty/sqlite \
- $QTDIR/src/3rdparty/webkit/JavaScriptCore \
- $QTDIR/src/3rdparty/webkit/WebCore \
- $QTDIR/src/3rdparty/wintab \
- $QTDIR/src/3rdparty/zlib \
- $QTDIR/doc/src/snippets \
- $QTDIR/doc/src/ja_JP \
- $QTDIR/src/3rdparty/phonon/gstreamer \
- $QTDIR/src/3rdparty/phonon/ds9 \
- $QTDIR/src/3rdparty/phonon/qt7 \
- $QTDIR/src/3rdparty/phonon/mmf \
- $QTDIR/src/3rdparty/phonon/waveout
-
-sources.fileextensions = "*.cpp *.qdoc *.mm"
-examples.fileextensions = "*.cpp *.h *.js *.xq *.svg *.xml *.ui *.qhp *.qhcp"
-examples.imageextensions = "*.png"
-
-exampledirs = $QTDIR/doc/src \
- $QTDIR/examples \
- $QTDIR/examples/tutorials \
- $QTDIR \
- $QTDIR/qmake/examples \
- $QTDIR/src/3rdparty/webkit/WebKit/qt/docs
-imagedirs = $QTDIR/doc/src/images \
- $QTDIR/examples \
- $QTDIR/doc/src/template/images
-outputdir = $QTDIR/doc/html_zh_CN
-tagfile = $QTDIR/doc/html_zh_CN/qt.tags
-base = file:$QTDIR/doc/html_zh_CN
-
-HTML.generatemacrefs = "true"
diff --git a/tools/qdoc3/test/scripts/functions.js b/tools/qdoc3/test/scripts/functions.js
deleted file mode 100644
index 013542764d..0000000000
--- a/tools/qdoc3/test/scripts/functions.js
+++ /dev/null
@@ -1,60 +0,0 @@
-
-/* START non link areas where cursor should change to pointing hand */
-$('.t_button').mouseover(function() {
- $('.t_button').css('cursor','pointer');
- /*document.getElementById(this.id).style.cursor='pointer';*/
-});
-
-/* END non link areas */
-$('#smallA').click(function() {
- $('.content .heading,.content h1, .content h2, .content h3, .content p, .content li, .content table').css('font-size','smaller');
- $('.t_button').removeClass('active')
- $(this).addClass('active')
-});
-
-$('#medA').click(function() {
- $('.content .heading').css('font','600 16px/1 Arial');
- $('.content h1').css('font','600 18px/1.2 Arial');
- $('.content h2').css('font','600 16px/1.2 Arial');
- $('.content h3').css('font','600 14px/1.2 Arial');
- $('.content p').css('font','13px/20px Verdana');
- $('.content li').css('font','400 13px/1 Verdana');
- $('.content li').css('line-height','14px');
- $('.content table').css('font','13px/1.2 Verdana');
- $('.content .heading').css('font','600 16px/1 Arial');
- $('.content .indexboxcont li').css('font','600 13px/1 Verdana');
- $('.t_button').removeClass('active')
- $(this).addClass('active')
-});
-
-$('#bigA').click(function() {
- $('.content .heading,.content h1, .content h2, .content h3, .content p, .content li, .content table').css('font-size','large');
- $('.content .heading,.content h1, .content h2, .content h3, .content p, .content li, .content table').css('line-height','25px');
- $('.t_button').removeClass('active')
- $(this).addClass('active')
-});
-
-function doSearch(str){
-
-if (str.length>3)
- {
- alert('start search');
- // document.getElementById("refWrapper").innerHTML="";
- return;
- }
- else
- return;
-
-// var url="indexSearch.php";
-// url=url+"?q="+str;
- // url=url+"&sid="+Math.random();
- // var url="http://localhost:8983/solr/select?";
- // url=url+"&q="+str;
- // url=url+"&fq=&start=0&rows=10&fl=&qt=&wt=&explainOther=&hl.fl=";
-
- // $.get(url, function(data){
- // alert(data);
- // document.getElementById("refWrapper").innerHTML=data;
- //});
-
-} \ No newline at end of file
diff --git a/tools/qdoc3/test/scripts/jquery.js b/tools/qdoc3/test/scripts/jquery.js
deleted file mode 100644
index 0c7294c90a..0000000000
--- a/tools/qdoc3/test/scripts/jquery.js
+++ /dev/null
@@ -1,152 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.4.1
- * http://jquery.com/
- *
- * Copyright 2010, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Mon Jan 25 19:43:33 2010 -0500
- */
-(function(z,v){function la(){if(!c.isReady){try{r.documentElement.doScroll("left")}catch(a){setTimeout(la,1);return}c.ready()}}function Ma(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,i){var j=a.length;if(typeof b==="object"){for(var n in b)X(a,n,b[n],f,e,d);return a}if(d!==v){f=!i&&f&&c.isFunction(d);for(n=0;n<j;n++)e(a[n],b,f?d.call(a[n],n,e(a[n],b)):d,i);return a}return j?
-e(a[0],b):null}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function ma(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function na(a){var b,d=[],f=[],e=arguments,i,j,n,o,m,s,x=c.extend({},c.data(this,"events").live);if(!(a.button&&a.type==="click")){for(o in x){j=x[o];if(j.live===a.type||j.altLive&&c.inArray(a.type,j.altLive)>-1){i=j.data;i.beforeFilter&&i.beforeFilter[a.type]&&!i.beforeFilter[a.type](a)||f.push(j.selector)}else delete x[o]}i=c(a.target).closest(f,
-a.currentTarget);m=0;for(s=i.length;m<s;m++)for(o in x){j=x[o];n=i[m].elem;f=null;if(i[m].selector===j.selector){if(j.live==="mouseenter"||j.live==="mouseleave")f=c(a.relatedTarget).closest(j.selector)[0];if(!f||f!==n)d.push({elem:n,fn:j})}}m=0;for(s=d.length;m<s;m++){i=d[m];a.currentTarget=i.elem;a.data=i.fn.data;if(i.fn.apply(i.elem,e)===false){b=false;break}}return b}}function oa(a,b){return"live."+(a?a+".":"")+b.replace(/\./g,"`").replace(/ /g,"&")}function pa(a){return!a||!a.parentNode||a.parentNode.nodeType===
-11}function qa(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var i in f)for(var j in f[i])c.event.add(this,i,f[i][j],f[i][j].data)}}})}function ra(a,b,d){var f,e,i;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&a[0].indexOf("<option")<0&&(c.support.checkClone||!sa.test(a[0]))){e=true;if(i=c.fragments[a[0]])if(i!==1)f=i}if(!f){b=b&&b[0]?b[0].ownerDocument||b[0]:r;f=b.createDocumentFragment();
-c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=i?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(ta.concat.apply([],ta.slice(0,b)),function(){d[this]=a});return d}function ua(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Na=z.jQuery,Oa=z.$,r=z.document,S,Pa=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Qa=/^.[^:#\[\.,]*$/,Ra=/\S/,Sa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Ta=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,O=navigator.userAgent,
-va=false,P=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,Q=Array.prototype.slice,wa=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(typeof a==="string")if((d=Pa.exec(a))&&(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:r;if(a=Ta.exec(a))if(c.isPlainObject(b)){a=[r.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=ra([d[1]],
-[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}}else{if(b=r.getElementById(d[2])){if(b.id!==d[2])return S.find(a);this.length=1;this[0]=b}this.context=r;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=r;a=r.getElementsByTagName(a)}else return!b||b.jquery?(b||S).find(a):c(b).find(a);else if(c.isFunction(a))return S.ready(a);if(a.selector!==v){this.selector=a.selector;this.context=a.context}return c.isArray(a)?this.setArray(a):c.makeArray(a,
-this)},selector:"",jquery:"1.4.1",length:0,size:function(){return this.length},toArray:function(){return Q.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){a=c(a||null);a.prevObject=this;a.context=this.context;if(b==="find")a.selector=this.selector+(this.selector?" ":"")+d;else if(b)a.selector=this.selector+"."+b+"("+d+")";return a},setArray:function(a){this.length=0;ba.apply(this,a);return this},each:function(a,b){return c.each(this,
-a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(r,c);else P&&P.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(Q.apply(this,arguments),"slice",Q.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};
-c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,i,j,n;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(i in e){j=a[i];n=e[i];if(a!==n)if(f&&n&&(c.isPlainObject(n)||c.isArray(n))){j=j&&(c.isPlainObject(j)||c.isArray(j))?j:c.isArray(n)?[]:{};a[i]=c.extend(f,j,n)}else if(n!==v)a[i]=n}return a};c.extend({noConflict:function(a){z.$=
-Oa;if(a)z.jQuery=Na;return c},isReady:false,ready:function(){if(!c.isReady){if(!r.body)return setTimeout(c.ready,13);c.isReady=true;if(P){for(var a,b=0;a=P[b++];)a.call(r,c);P=null}c.fn.triggerHandler&&c(r).triggerHandler("ready")}},bindReady:function(){if(!va){va=true;if(r.readyState==="complete")return c.ready();if(r.addEventListener){r.addEventListener("DOMContentLoaded",L,false);z.addEventListener("load",c.ready,false)}else if(r.attachEvent){r.attachEvent("onreadystatechange",L);z.attachEvent("onload",
-c.ready);var a=false;try{a=z.frameElement==null}catch(b){}r.documentElement.doScroll&&a&&la()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,"isPrototypeOf"))return false;var b;for(b in a);return b===v||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;
-return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return z.JSON&&z.JSON.parse?z.JSON.parse(a):(new Function("return "+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Ra.test(a)){var b=r.getElementsByTagName("head")[0]||
-r.documentElement,d=r.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(r.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,i=a.length,j=i===v||c.isFunction(a);if(d)if(j)for(f in a){if(b.apply(a[f],d)===false)break}else for(;e<i;){if(b.apply(a[e++],d)===false)break}else if(j)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=
-a[0];e<i&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Sa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==
-v;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,i=a.length;e<i;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,i=0,j=a.length;i<j;i++){e=b(a[i],i,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=v}else if(b&&!c.isFunction(b)){d=b;b=v}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},
-uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});O=c.uaMatch(O);if(O.browser){c.browser[O.browser]=true;c.browser.version=O.version}if(c.browser.webkit)c.browser.safari=true;if(wa)c.inArray=function(a,b){return wa.call(b,a)};S=c(r);if(r.addEventListener)L=function(){r.removeEventListener("DOMContentLoaded",
-L,false);c.ready()};else if(r.attachEvent)L=function(){if(r.readyState==="complete"){r.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=r.documentElement,b=r.createElement("script"),d=r.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var e=d.getElementsByTagName("*"),i=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!i)){c.support=
-{leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(i.getAttribute("style")),hrefNormalized:i.getAttribute("href")==="/a",opacity:/^0.55$/.test(i.style.opacity),cssFloat:!!i.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:r.createElement("select").appendChild(r.createElement("option")).selected,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};
-b.type="text/javascript";try{b.appendChild(r.createTextNode("window."+f+"=1;"))}catch(j){}a.insertBefore(b,a.firstChild);if(z[f]){c.support.scriptEval=true;delete z[f]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function n(){c.support.noCloneEvent=false;d.detachEvent("onclick",n)});d.cloneNode(true).fireEvent("onclick")}d=r.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=r.createDocumentFragment();a.appendChild(d.firstChild);
-c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var n=r.createElement("div");n.style.width=n.style.paddingLeft="1px";r.body.appendChild(n);c.boxModel=c.support.boxModel=n.offsetWidth===2;r.body.removeChild(n).style.display="none"});a=function(n){var o=r.createElement("div");n="on"+n;var m=n in o;if(!m){o.setAttribute(n,"return;");m=typeof o[n]==="function"}return m};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=i=null}})();c.props=
-{"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ua=0,xa={},Va={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var f=a[G],e=c.cache;if(!b&&!f)return null;f||(f=++Ua);if(typeof b==="object"){a[G]=f;e=e[f]=c.extend(true,
-{},b)}else e=e[f]?e[f]:typeof d==="undefined"?Va:(e[f]={});if(d!==v){a[G]=f;e[b]=d}return typeof b==="string"?e[b]:e}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{try{delete a[G]}catch(i){a.removeAttribute&&a.removeAttribute(G)}delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,
-a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===v){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===v&&this.length)f=c.data(this[0],a);return f===v&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);
-return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===v)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||
-a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var ya=/[\n\t]/g,ca=/\s+/,Wa=/\r/g,Xa=/href|src|style/,Ya=/(button|input)/i,Za=/(button|input|object|select|textarea)/i,$a=/^(a|area)$/i,za=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(o){var m=
-c(this);m.addClass(a.call(this,o,m.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className)for(var i=" "+e.className+" ",j=0,n=b.length;j<n;j++){if(i.indexOf(" "+b[j]+" ")<0)e.className+=" "+b[j]}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(o){var m=c(this);m.removeClass(a.call(this,o,m.attr("class")))});if(a&&typeof a==="string"||a===v)for(var b=(a||"").split(ca),
-d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var i=(" "+e.className+" ").replace(ya," "),j=0,n=b.length;j<n;j++)i=i.replace(" "+b[j]+" "," ");e.className=i.substring(1,i.length-1)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var i=c(this);i.toggleClass(a.call(this,e,i.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,i=0,j=c(this),n=b,o=
-a.split(ca);e=o[i++];){n=f?n:!j.hasClass(e);j[n?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(ya," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===v){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||
-{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var i=b?d:0;for(d=b?d+1:e.length;i<d;i++){var j=e[i];if(j.selected){a=c(j).val();if(b)return a;f.push(a)}}return f}if(za.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Wa,"")}return v}var n=c.isFunction(a);return this.each(function(o){var m=c(this),s=a;if(this.nodeType===1){if(n)s=a.call(this,o,m.val());
-if(typeof s==="number")s+="";if(c.isArray(s)&&za.test(this.type))this.checked=c.inArray(m.val(),s)>=0;else if(c.nodeName(this,"select")){var x=c.makeArray(s);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),x)>=0});if(!x.length)this.selectedIndex=-1}else this.value=s}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return v;if(f&&b in c.attrFn)return c(a)[b](d);
-f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==v;b=f&&c.props[b]||b;if(a.nodeType===1){var i=Xa.test(b);if(b in a&&f&&!i){if(e){b==="type"&&Ya.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Za.test(a.nodeName)||$a.test(a.nodeName)&&a.href?0:v;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=
-""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&i?a.getAttribute(b,2):a.getAttribute(b);return a===null?v:a}return c.style(a,b,d)}});var ab=function(a){return a.replace(/[^\w\s\.\|`]/g,function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==z&&!a.frameElement)a=z;if(!d.guid)d.guid=c.guid++;if(f!==v){d=c.proxy(d);d.data=f}var e=c.data(a,"events")||c.data(a,"events",{}),i=c.data(a,"handle"),j;if(!i){j=
-function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(j.elem,arguments):v};i=c.data(a,"handle",j)}if(i){i.elem=a;b=b.split(/\s+/);for(var n,o=0;n=b[o++];){var m=n.split(".");n=m.shift();if(o>1){d=c.proxy(d);if(f!==v)d.data=f}d.type=m.slice(0).sort().join(".");var s=e[n],x=this.special[n]||{};if(!s){s=e[n]={};if(!x.setup||x.setup.call(a,f,m,d)===false)if(a.addEventListener)a.addEventListener(n,i,false);else a.attachEvent&&a.attachEvent("on"+n,i)}if(x.add)if((m=x.add.call(a,
-d,f,m,s))&&c.isFunction(m)){m.guid=m.guid||d.guid;m.data=m.data||d.data;m.type=m.type||d.type;d=m}s[d.guid]=d;this.global[n]=true}a=null}}},global:{},remove:function(a,b,d){if(!(a.nodeType===3||a.nodeType===8)){var f=c.data(a,"events"),e,i,j;if(f){if(b===v||typeof b==="string"&&b.charAt(0)===".")for(i in f)this.remove(a,i+(b||""));else{if(b.type){d=b.handler;b=b.type}b=b.split(/\s+/);for(var n=0;i=b[n++];){var o=i.split(".");i=o.shift();var m=!o.length,s=c.map(o.slice(0).sort(),ab);s=new RegExp("(^|\\.)"+
-s.join("\\.(?:.*\\.)?")+"(\\.|$)");var x=this.special[i]||{};if(f[i]){if(d){j=f[i][d.guid];delete f[i][d.guid]}else for(var A in f[i])if(m||s.test(f[i][A].type))delete f[i][A];x.remove&&x.remove.call(a,o,j);for(e in f[i])break;if(!e){if(!x.teardown||x.teardown.call(a,o)===false)if(a.removeEventListener)a.removeEventListener(i,c.data(a,"handle"),false);else a.detachEvent&&a.detachEvent("on"+i,c.data(a,"handle"));e=null;delete f[i]}}}}for(e in f)break;if(!e){if(A=c.data(a,"handle"))A.elem=null;c.removeData(a,
-"events");c.removeData(a,"handle")}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();this.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return v;a.result=v;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,
-b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(i){}if(!a.isPropagationStopped()&&f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){d=a.target;var j;if(!(c.nodeName(d,"a")&&e==="click")&&!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()])){try{if(d[e]){if(j=d["on"+e])d["on"+e]=null;this.triggered=true;d[e]()}}catch(n){}if(j)d["on"+e]=j;this.triggered=false}}},handle:function(a){var b,
-d;a=arguments[0]=c.event.fix(a||z.event);a.currentTarget=this;d=a.type.split(".");a.type=d.shift();b=!d.length&&!a.exclusive;var f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)");d=(c.data(this,"events")||{})[a.type];for(var e in d){var i=d[e];if(b||f.test(i.type)){a.handler=i;a.data=i.data;i=i.apply(this,arguments);if(i!==v){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
-fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||r;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=r.documentElement;d=r.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
-d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==v)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a,b){c.extend(a,b||{});a.guid+=b.selector+b.live;b.liveProxy=a;c.event.add(this,b.live,na,b)},remove:function(a){if(a.length){var b=
-0,d=new RegExp("(^|\\.)"+a[0]+"(\\.|$)");c.each(c.data(this,"events").live||{},function(){d.test(this.type)&&b++});b<1&&c.event.remove(this,a[0],na)}},special:{}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};
-c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y};var Aa=function(a){for(var b=
-a.relatedTarget;b&&b!==this;)try{b=b.parentNode}catch(d){break}if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}},Ba=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ba:Aa,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ba:Aa)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(a,b,d){if(this.nodeName.toLowerCase()!==
-"form"){c.event.add(this,"click.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="submit"||i==="image")&&c(e).closest("form").length)return ma("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="text"||i==="password")&&c(e).closest("form").length&&f.keyCode===13)return ma("submit",this,arguments)})}else return false},remove:function(a,b){c.event.remove(this,"click.specialSubmit"+(b?"."+b.guid:""));c.event.remove(this,
-"keypress.specialSubmit"+(b?"."+b.guid:""))}};if(!c.support.changeBubbles){var da=/textarea|input|select/i;function Ca(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d}function ea(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Ca(d);if(a.type!=="focusout"||
-d.type!=="radio")c.data(d,"_change_data",e);if(!(f===v||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}}c.event.special.change={filters:{focusout:ea,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return ea.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return ea.call(this,a)},beforeactivate:function(a){a=
-a.target;a.nodeName.toLowerCase()==="input"&&a.type==="radio"&&c.data(a,"_change_data",Ca(a))}},setup:function(a,b,d){for(var f in T)c.event.add(this,f+".specialChange."+d.guid,T[f]);return da.test(this.nodeName)},remove:function(a,b){for(var d in T)c.event.remove(this,d+".specialChange"+(b?"."+b.guid:""),T[d]);return da.test(this.nodeName)}};var T=c.event.special.change.filters}r.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,
-f)}c.event.special[b]={setup:function(){this.addEventListener(a,d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var i in d)this[b](i,f,d[i],e);return this}if(c.isFunction(f)){e=f;f=v}var j=b==="one"?c.proxy(e,function(n){c(this).unbind(n,j);return e.apply(this,arguments)}):e;return d==="unload"&&b!=="one"?this.one(d,f,e):this.each(function(){c.event.add(this,d,j,f)})}});c.fn.extend({unbind:function(a,
-b){if(typeof a==="object"&&!a.preventDefault){for(var d in a)this.unbind(d,a[d]);return this}return this.each(function(){c.event.remove(this,a,b)})},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+
-a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e){var i,j=0;if(c.isFunction(f)){e=f;f=v}for(d=(d||"").split(/\s+/);(i=d[j++])!=null;){i=i==="focus"?"focusin":i==="blur"?"focusout":i==="hover"?d.push("mouseleave")&&"mouseenter":i;b==="live"?c(this.context).bind(oa(i,this.selector),{data:f,selector:this.selector,
-live:i},e):c(this.context).unbind(oa(i,this.selector),e?{guid:e.guid+this.selector+i}:null)}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});z.attachEvent&&!z.addEventListener&&z.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
-(function(){function a(g){for(var h="",k,l=0;g[l];l++){k=g[l];if(k.nodeType===3||k.nodeType===4)h+=k.nodeValue;else if(k.nodeType!==8)h+=a(k.childNodes)}return h}function b(g,h,k,l,q,p){q=0;for(var u=l.length;q<u;q++){var t=l[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===k){y=l[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=k;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}l[q]=y}}}function d(g,h,k,l,q,p){q=0;for(var u=l.length;q<u;q++){var t=l[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===
-k){y=l[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=k;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(o.filter(h,[t]).length>0){y=t;break}}t=t[g]}l[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,i=Object.prototype.toString,j=false,n=true;[0,0].sort(function(){n=false;return 0});var o=function(g,h,k,l){k=k||[];var q=h=h||r;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||
-typeof g!=="string")return k;for(var p=[],u,t,y,R,H=true,M=w(h),I=g;(f.exec(""),u=f.exec(I))!==null;){I=u[3];p.push(u[1]);if(u[2]){R=u[3];break}}if(p.length>1&&s.exec(g))if(p.length===2&&m.relative[p[0]])t=fa(p[0]+p[1],h);else for(t=m.relative[p[0]]?[h]:o(p.shift(),h);p.length;){g=p.shift();if(m.relative[g])g+=p.shift();t=fa(g,t)}else{if(!l&&p.length>1&&h.nodeType===9&&!M&&m.match.ID.test(p[0])&&!m.match.ID.test(p[p.length-1])){u=o.find(p.shift(),h,M);h=u.expr?o.filter(u.expr,u.set)[0]:u.set[0]}if(h){u=
-l?{expr:p.pop(),set:A(l)}:o.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=u.expr?o.filter(u.expr,u.set):u.set;if(p.length>0)y=A(t);else H=false;for(;p.length;){var D=p.pop();u=D;if(m.relative[D])u=p.pop();else D="";if(u==null)u=h;m.relative[D](y,u,M)}}else y=[]}y||(y=t);y||o.error(D||g);if(i.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))k.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&
-y[g].nodeType===1&&k.push(t[g]);else k.push.apply(k,y);else A(y,k);if(R){o(R,q,k,l);o.uniqueSort(k)}return k};o.uniqueSort=function(g){if(C){j=n;g.sort(C);if(j)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};o.matches=function(g,h){return o(g,null,null,h)};o.find=function(g,h,k){var l,q;if(!g)return[];for(var p=0,u=m.order.length;p<u;p++){var t=m.order[p];if(q=m.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");l=m.find[t](q,
-h,k);if(l!=null){g=g.replace(m.match[t],"");break}}}}l||(l=h.getElementsByTagName("*"));return{set:l,expr:g}};o.filter=function(g,h,k,l){for(var q=g,p=[],u=h,t,y,R=h&&h[0]&&w(h[0]);g&&h.length;){for(var H in m.filter)if((t=m.leftMatch[H].exec(g))!=null&&t[2]){var M=m.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-1)!=="\\"){if(u===p)p=[];if(m.preFilter[H])if(t=m.preFilter[H](t,u,k,p,l,R)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=u[U])!=null;U++)if(D){I=M(D,t,U,u);var Da=
-l^!!I;if(k&&I!=null)if(Da)y=true;else u[U]=false;else if(Da){p.push(D);y=true}}if(I!==v){k||(u=p);g=g.replace(m.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)o.error(g);else break;q=g}return u};o.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var m=o.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
-TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,h){var k=typeof h==="string",l=k&&!/\W/.test(h);k=k&&!l;if(l)h=h.toLowerCase();l=0;for(var q=g.length,
-p;l<q;l++)if(p=g[l]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[l]=k||p&&p.nodeName.toLowerCase()===h?p||false:p===h}k&&o.filter(h,g,true)},">":function(g,h){var k=typeof h==="string";if(k&&!/\W/.test(h)){h=h.toLowerCase();for(var l=0,q=g.length;l<q;l++){var p=g[l];if(p){k=p.parentNode;g[l]=k.nodeName.toLowerCase()===h?k:false}}}else{l=0;for(q=g.length;l<q;l++)if(p=g[l])g[l]=k?p.parentNode:p.parentNode===h;k&&o.filter(h,g,true)}},"":function(g,h,k){var l=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=
-h=h.toLowerCase();q=b}q("parentNode",h,l,g,p,k)},"~":function(g,h,k){var l=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,l,g,p,k)}},find:{ID:function(g,h,k){if(typeof h.getElementById!=="undefined"&&!k)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var k=[];h=h.getElementsByName(g[1]);for(var l=0,q=h.length;l<q;l++)h[l].getAttribute("name")===g[1]&&k.push(h[l]);return k.length===0?null:k}},
-TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,k,l,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var u;(u=h[p])!=null;p++)if(u)if(q^(u.className&&(" "+u.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))k||l.push(u);else if(k)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&
-"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,k,l,q,p){h=g[1].replace(/\\/g,"");if(!p&&m.attrMap[h])g[1]=m.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,k,l,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=o(g[3],null,null,h);else{g=o.filter(g[3],h,k,true^q);k||l.push.apply(l,g);return false}else if(m.match.POS.test(g[0])||m.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);
-return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,k){return!!o(k[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===
-g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,h){return h===0},last:function(g,h,k,l){return h===l.length-1},even:function(g,h){return h%2===
-0},odd:function(g,h){return h%2===1},lt:function(g,h,k){return h<k[3]-0},gt:function(g,h,k){return h>k[3]-0},nth:function(g,h,k){return k[3]-0===h},eq:function(g,h,k){return k[3]-0===h}},filter:{PSEUDO:function(g,h,k,l){var q=h[1],p=m.filters[q];if(p)return p(g,k,h,l);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=h[3];k=0;for(l=h.length;k<l;k++)if(h[k]===g)return false;return true}else o.error("Syntax error, unrecognized expression: "+
-q)},CHILD:function(g,h){var k=h[1],l=g;switch(k){case "only":case "first":for(;l=l.previousSibling;)if(l.nodeType===1)return false;if(k==="first")return true;l=g;case "last":for(;l=l.nextSibling;)if(l.nodeType===1)return false;return true;case "nth":k=h[2];var q=h[3];if(k===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var u=0;for(l=p.firstChild;l;l=l.nextSibling)if(l.nodeType===1)l.nodeIndex=++u;p.sizcache=h}g=g.nodeIndex-q;return k===0?g===0:g%k===0&&g/k>=
-0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var k=h[1];g=m.attrHandle[k]?m.attrHandle[k](g):g[k]!=null?g[k]:g.getAttribute(k);k=g+"";var l=h[2];h=h[4];return g==null?l==="!=":l==="="?k===h:l==="*="?k.indexOf(h)>=0:l==="~="?(" "+k+" ").indexOf(h)>=0:!h?k&&g!==false:l==="!="?k!==h:l==="^="?
-k.indexOf(h)===0:l==="$="?k.substr(k.length-h.length)===h:l==="|="?k===h||k.substr(0,h.length+1)===h+"-":false},POS:function(g,h,k,l){var q=m.setFilters[h[2]];if(q)return q(g,k,h,l)}}},s=m.match.POS;for(var x in m.match){m.match[x]=new RegExp(m.match[x].source+/(?![^\[]*\])(?![^\(]*\))/.source);m.leftMatch[x]=new RegExp(/(^(?:.|\r|\n)*?)/.source+m.match[x].source.replace(/\\(\d+)/g,function(g,h){return"\\"+(h-0+1)}))}var A=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};
-try{Array.prototype.slice.call(r.documentElement.childNodes,0)}catch(B){A=function(g,h){h=h||[];if(i.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var k=0,l=g.length;k<l;k++)h.push(g[k]);else for(k=0;g[k];k++)h.push(g[k]);return h}}var C;if(r.documentElement.compareDocumentPosition)C=function(g,h){if(!g.compareDocumentPosition||!h.compareDocumentPosition){if(g==h)j=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===
-h?0:1;if(g===0)j=true;return g};else if("sourceIndex"in r.documentElement)C=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)j=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)j=true;return g};else if(r.createRange)C=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)j=true;return g.ownerDocument?-1:1}var k=g.ownerDocument.createRange(),l=h.ownerDocument.createRange();k.setStart(g,0);k.setEnd(g,0);l.setStart(h,0);l.setEnd(h,0);g=k.compareBoundaryPoints(Range.START_TO_END,
-l);if(g===0)j=true;return g};(function(){var g=r.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var k=r.documentElement;k.insertBefore(g,k.firstChild);if(r.getElementById(h)){m.find.ID=function(l,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(l[1]))?q.id===l[1]||typeof q.getAttributeNode!=="undefined"&&q.getAttributeNode("id").nodeValue===l[1]?[q]:v:[]};m.filter.ID=function(l,q){var p=typeof l.getAttributeNode!=="undefined"&&l.getAttributeNode("id");
-return l.nodeType===1&&p&&p.nodeValue===q}}k.removeChild(g);k=g=null})();(function(){var g=r.createElement("div");g.appendChild(r.createComment(""));if(g.getElementsByTagName("*").length>0)m.find.TAG=function(h,k){k=k.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var l=0;k[l];l++)k[l].nodeType===1&&h.push(k[l]);k=h}return k};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")m.attrHandle.href=function(h){return h.getAttribute("href",
-2)};g=null})();r.querySelectorAll&&function(){var g=o,h=r.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){o=function(l,q,p,u){q=q||r;if(!u&&q.nodeType===9&&!w(q))try{return A(q.querySelectorAll(l),p)}catch(t){}return g(l,q,p,u)};for(var k in g)o[k]=g[k];h=null}}();(function(){var g=r.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===
-0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){m.order.splice(1,0,"CLASS");m.find.CLASS=function(h,k,l){if(typeof k.getElementsByClassName!=="undefined"&&!l)return k.getElementsByClassName(h[1])};g=null}}})();var E=r.compareDocumentPosition?function(g,h){return g.compareDocumentPosition(h)&16}:function(g,h){return g!==h&&(g.contains?g.contains(h):true)},w=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},fa=function(g,h){var k=[],
-l="",q;for(h=h.nodeType?[h]:h;q=m.match.PSEUDO.exec(g);){l+=q[0];g=g.replace(m.match.PSEUDO,"")}g=m.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)o(g,h[q],k);return o.filter(l,k)};c.find=o;c.expr=o.selectors;c.expr[":"]=c.expr.filters;c.unique=o.uniqueSort;c.getText=a;c.isXMLDoc=w;c.contains=E})();var bb=/Until$/,cb=/^(?:parents|prevUntil|prevAll)/,db=/,/;Q=Array.prototype.slice;var Ea=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,i){return!!b.call(e,i,e)===d});else if(b.nodeType)return c.grep(a,
-function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Qa.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;c.find(a,this[f],b);if(f>0)for(var i=d;i<b.length;i++)for(var j=0;j<d;j++)if(b[j]===b[i]){b.splice(i--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=
-0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ea(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ea(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,i={},j;if(f&&a.length){e=0;for(var n=a.length;e<n;e++){j=a[e];i[j]||(i[j]=c.expr.match.POS.test(j)?c(j,b||this.context):j)}for(;f&&f.ownerDocument&&f!==b;){for(j in i){e=i[j];if(e.jquery?e.index(f)>
--1:c(f).is(e)){d.push({selector:j,elem:f});delete i[j]}}f=f.parentNode}}return d}var o=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(m,s){for(;s&&s.ownerDocument&&s!==b;){if(o?o.index(s)>-1:c(s).is(a))return s;s=s.parentNode}return null})},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),
-a);return this.pushStack(pa(a[0])||pa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},
-nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);bb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):
-e;if((this.length>1||db.test(f))&&cb.test(a))e=e.reverse();return this.pushStack(e,a,Q.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===v||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==
-b&&d.push(a);return d}});var Fa=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ga=/(<([\w:]+)[^>]*?)\/>/g,eb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,Ha=/<([\w:]+)/,fb=/<tbody/i,gb=/<|&\w+;/,sa=/checked\s*(?:[^=]|=\s*.checked.)/i,Ia=function(a,b,d){return eb.test(d)?a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],
-col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==v)return this.empty().append((this[0]&&this[0].ownerDocument||r).createTextNode(a));return c.getText(this)},
-wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?
-d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,
-false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&
-!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Fa,"").replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){qa(this,b);qa(this.find("*"),b.find("*"))}return b},html:function(a){if(a===v)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Fa,""):null;else if(typeof a==="string"&&!/<script/i.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(Ha.exec(a)||
-["",""])[1].toLowerCase()]){a=a.replace(Ga,Ia);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var i=c(this),j=i.html();i.empty().append(function(){return a.call(this,e,j)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,
-b,f))});else a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(s){return c.nodeName(s,"table")?s.getElementsByTagName("tbody")[0]||s.appendChild(s.ownerDocument.createElement("tbody")):s}var e,i,j=a[0],n=[];if(!c.support.checkClone&&arguments.length===3&&typeof j===
-"string"&&sa.test(j))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(j))return this.each(function(s){var x=c(this);a[0]=j.call(this,s,b?x.html():v);x.domManip(a,b,d)});if(this[0]){e=a[0]&&a[0].parentNode&&a[0].parentNode.nodeType===11?{fragment:a[0].parentNode}:ra(a,this,n);if(i=e.fragment.firstChild){b=b&&c.nodeName(i,"tr");for(var o=0,m=this.length;o<m;o++)d.call(b?f(this[o],i):this[o],e.cacheable||this.length>1||o>0?e.fragment.cloneNode(true):e.fragment)}n&&c.each(n,
-Ma)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);for(var e=0,i=d.length;e<i;e++){var j=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),j);f=f.concat(j)}return this.pushStack(f,a,d.selector)}});c.each({remove:function(a,b){if(!a||c.filter(a,[this]).length){if(!b&&this.nodeType===1){c.cleanData(this.getElementsByTagName("*"));c.cleanData([this])}this.parentNode&&
-this.parentNode.removeChild(this)}},empty:function(){for(this.nodeType===1&&c.cleanData(this.getElementsByTagName("*"));this.firstChild;)this.removeChild(this.firstChild)}},function(a,b){c.fn[a]=function(){return this.each(b,arguments)}});c.extend({clean:function(a,b,d,f){b=b||r;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||r;var e=[];c.each(a,function(i,j){if(typeof j==="number")j+="";if(j){if(typeof j==="string"&&!gb.test(j))j=b.createTextNode(j);else if(typeof j===
-"string"){j=j.replace(Ga,Ia);var n=(Ha.exec(j)||["",""])[1].toLowerCase(),o=F[n]||F._default,m=o[0];i=b.createElement("div");for(i.innerHTML=o[1]+j+o[2];m--;)i=i.lastChild;if(!c.support.tbody){m=fb.test(j);n=n==="table"&&!m?i.firstChild&&i.firstChild.childNodes:o[1]==="<table>"&&!m?i.childNodes:[];for(o=n.length-1;o>=0;--o)c.nodeName(n[o],"tbody")&&!n[o].childNodes.length&&n[o].parentNode.removeChild(n[o])}!c.support.leadingWhitespace&&V.test(j)&&i.insertBefore(b.createTextNode(V.exec(j)[0]),i.firstChild);
-j=c.makeArray(i.childNodes)}if(j.nodeType)e.push(j);else e=c.merge(e,j)}});if(d)for(a=0;e[a];a++)if(f&&c.nodeName(e[a],"script")&&(!e[a].type||e[a].type.toLowerCase()==="text/javascript"))f.push(e[a].parentNode?e[a].parentNode.removeChild(e[a]):e[a]);else{e[a].nodeType===1&&e.splice.apply(e,[a+1,0].concat(c.makeArray(e[a].getElementsByTagName("script"))));d.appendChild(e[a])}return e},cleanData:function(a){for(var b=0,d;(d=a[b])!=null;b++){c.event.remove(d);c.removeData(d)}}});var hb=/z-?index|font-?weight|opacity|zoom|line-?height/i,
-Ja=/alpha\([^)]*\)/,Ka=/opacity=([^)]*)/,ga=/float/i,ha=/-([a-z])/ig,ib=/([A-Z])/g,jb=/^-?\d+(?:px)?$/i,kb=/^-?\d/,lb={position:"absolute",visibility:"hidden",display:"block"},mb=["Left","Right"],nb=["Top","Bottom"],ob=r.defaultView&&r.defaultView.getComputedStyle,La=c.support.cssFloat?"cssFloat":"styleFloat",ia=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===v)return c.curCSS(d,f);if(typeof e==="number"&&!hb.test(f))e+="px";c.style(d,f,e)})};
-c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return v;if((b==="width"||b==="height")&&parseFloat(d)<0)d=v;var f=a.style||a,e=d!==v;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=Ja.test(a)?a.replace(Ja,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Ka.exec(f.filter)[1])/100+"":""}if(ga.test(b))b=La;b=b.replace(ha,ia);if(e)f[b]=d;return f[b]},css:function(a,
-b,d,f){if(b==="width"||b==="height"){var e,i=b==="width"?mb:nb;function j(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(i,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,"border"+this+"Width",true))||0})}a.offsetWidth!==0?j():c.swap(a,lb,j);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&
-a.currentStyle){f=Ka.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ga.test(b))b=La;if(!d&&e&&e[b])f=e[b];else if(ob){if(ga.test(b))b="float";b=b.replace(ib,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ha,ia);f=a.currentStyle[b]||a.currentStyle[d];if(!jb.test(f)&&kb.test(f)){b=e.left;var i=a.runtimeStyle.left;a.runtimeStyle.left=
-a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=i}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var pb=
-J(),qb=/<script(.|\s)*?\/script>/gi,rb=/select|textarea/i,sb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ja=/\?/,tb=/(\?|&)_=.*?(&|$)/,ub=/^(\w+:)?\/\/([^\/?#]+)/,vb=/%20/g;c.fn.extend({_load:c.fn.load,load:function(a,b,d){if(typeof a!=="string")return this._load(a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=
-c.param(b,c.ajaxSettings.traditional);f="POST"}var i=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(j,n){if(n==="success"||n==="notmodified")i.html(e?c("<div />").append(j.responseText.replace(qb,"")).find(e):j.responseText);d&&i.each(d,[j.responseText,n,j])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&
-(this.checked||rb.test(this.nodeName)||sb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,
-b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:z.XMLHttpRequest&&(z.location.protocol!=="file:"||!z.ActiveXObject)?function(){return new z.XMLHttpRequest}:
-function(){try{return new z.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&e.success.call(o,n,j,w);e.global&&f("ajaxSuccess",[w,e])}function d(){e.complete&&e.complete.call(o,w,j);e.global&&f("ajaxComplete",[w,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}
-function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),i,j,n,o=a&&a.context||e,m=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(m==="GET")N.test(e.url)||(e.url+=(ja.test(e.url)?"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||
-N.test(e.url))){i=e.jsonpCallback||"jsonp"+pb++;if(e.data)e.data=(e.data+"").replace(N,"="+i+"$1");e.url=e.url.replace(N,"="+i+"$1");e.dataType="script";z[i]=z[i]||function(q){n=q;b();d();z[i]=v;try{delete z[i]}catch(p){}A&&A.removeChild(B)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===false&&m==="GET"){var s=J(),x=e.url.replace(tb,"$1_="+s+"$2");e.url=x+(x===e.url?(ja.test(e.url)?"&":"?")+"_="+s:"")}if(e.data&&m==="GET")e.url+=(ja.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&
-c.event.trigger("ajaxStart");s=(s=ub.exec(e.url))&&(s[1]&&s[1]!==location.protocol||s[2]!==location.host);if(e.dataType==="script"&&m==="GET"&&s){var A=r.getElementsByTagName("head")[0]||r.documentElement,B=r.createElement("script");B.src=e.url;if(e.scriptCharset)B.charset=e.scriptCharset;if(!i){var C=false;B.onload=B.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;b();d();B.onload=B.onreadystatechange=null;A&&B.parentNode&&
-A.removeChild(B)}}}A.insertBefore(B,A.firstChild);return v}var E=false,w=e.xhr();if(w){e.username?w.open(m,e.url,e.async,e.username,e.password):w.open(m,e.url,e.async);try{if(e.data||a&&a.contentType)w.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[e.url]);c.etag[e.url]&&w.setRequestHeader("If-None-Match",c.etag[e.url])}s||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",
-e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(fa){}if(e.beforeSend&&e.beforeSend.call(o,w,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");w.abort();return false}e.global&&f("ajaxSend",[w,e]);var g=w.onreadystatechange=function(q){if(!w||w.readyState===0||q==="abort"){E||d();E=true;if(w)w.onreadystatechange=c.noop}else if(!E&&w&&(w.readyState===4||q==="timeout")){E=true;w.onreadystatechange=c.noop;j=q==="timeout"?"timeout":!c.httpSuccess(w)?
-"error":e.ifModified&&c.httpNotModified(w,e.url)?"notmodified":"success";var p;if(j==="success")try{n=c.httpData(w,e.dataType,e)}catch(u){j="parsererror";p=u}if(j==="success"||j==="notmodified")i||b();else c.handleError(e,w,j,p);d();q==="timeout"&&w.abort();if(e.async)w=null}};try{var h=w.abort;w.abort=function(){w&&h.call(w);g("abort")}}catch(k){}e.async&&e.timeout>0&&setTimeout(function(){w&&!E&&g("timeout")},e.timeout);try{w.send(m==="POST"||m==="PUT"||m==="DELETE"?e.data:null)}catch(l){c.handleError(e,
-w,null,l);d()}e.async||g();return w}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=
-f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(j,n){if(c.isArray(n))c.each(n,
-function(o,m){b?f(j,m):d(j+"["+(typeof m==="object"||c.isArray(m)?o:"")+"]",m)});else!b&&n!=null&&typeof n==="object"?c.each(n,function(o,m){d(j+"["+o+"]",m)}):f(j,n)}function f(j,n){n=c.isFunction(n)?n():n;e[e.length]=encodeURIComponent(j)+"="+encodeURIComponent(n)}var e=[];if(b===v)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var i in a)d(i,a[i]);return e.join("&").replace(vb,"+")}});var ka={},wb=/toggle|show|hide/,xb=/^([+-]=)?([\d+-.]+)(.*)$/,
-W,ta=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(ka[d])f=ka[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();
-ka[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&
-c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var i=c.extend({},e),j,n=this.nodeType===1&&c(this).is(":hidden"),
-o=this;for(j in a){var m=j.replace(ha,ia);if(j!==m){a[m]=a[j];delete a[j];j=m}if(a[j]==="hide"&&n||a[j]==="show"&&!n)return i.complete.call(this);if((j==="height"||j==="width")&&this.style){i.display=c.css(this,"display");i.overflow=this.style.overflow}if(c.isArray(a[j])){(i.specialEasing=i.specialEasing||{})[j]=a[j][1];a[j]=a[j][0]}}if(i.overflow!=null)this.style.overflow="hidden";i.curAnim=c.extend({},a);c.each(a,function(s,x){var A=new c.fx(o,i,s);if(wb.test(x))A[x==="toggle"?n?"show":"hide":x](a);
-else{var B=xb.exec(x),C=A.cur(true)||0;if(B){x=parseFloat(B[2]);var E=B[3]||"px";if(E!=="px"){o.style[s]=(x||1)+E;C=(x||1)/A.cur(true)*C;o.style[s]=C+E}if(B[1])x=(B[1]==="-="?-1:1)*x+C;A.custom(C,x,E)}else A.custom(C,x,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",
-1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration==="number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,
-b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==
-null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(i){return e.step(i)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop===
-"width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=
-this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=
-c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=
-null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in r.documentElement?function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),
-f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(s){c.offset.setOffset(this,a,s)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=
-b,e=b.ownerDocument,i,j=e.documentElement,n=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var o=b.offsetTop,m=b.offsetLeft;(b=b.parentNode)&&b!==n&&b!==j;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;i=e?e.getComputedStyle(b,null):b.currentStyle;o-=b.scrollTop;m-=b.scrollLeft;if(b===d){o+=b.offsetTop;m+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){o+=parseFloat(i.borderTopWidth)||
-0;m+=parseFloat(i.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&i.overflow!=="visible"){o+=parseFloat(i.borderTopWidth)||0;m+=parseFloat(i.borderLeftWidth)||0}f=i}if(f.position==="relative"||f.position==="static"){o+=n.offsetTop;m+=n.offsetLeft}if(c.offset.supportsFixedPosition&&f.position==="fixed"){o+=Math.max(j.scrollTop,n.scrollTop);m+=Math.max(j.scrollLeft,n.scrollLeft)}return{top:o,left:m}};c.offset={initialize:function(){var a=r.body,b=r.createElement("div"),
-d,f,e,i=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);
-d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i;a.removeChild(b);c.offset.initialize=c.noop},
-bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),i=parseInt(c.curCSS(a,"top",true),10)||0,j=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,d,e);d={top:b.top-e.top+i,left:b.left-
-e.left+j};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=
-this.offsetParent||r.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],i;if(!e)return null;if(f!==v)return this.each(function(){if(i=ua(this))i.scrollTo(!a?f:c(i).scrollLeft(),a?f:c(i).scrollTop());else this[d]=f});else return(i=ua(e))?"pageXOffset"in i?i[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&i.document.documentElement[d]||i.document.body[d]:e[d]}});
-c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(i){var j=c(this);j[d](f.call(this,i,j[d]()))});return"scrollTo"in e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||
-e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===v?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});z.jQuery=z.$=c})(window);
diff --git a/tools/qdoc3/test/style/style.css b/tools/qdoc3/test/style/style.css
deleted file mode 100644
index dff0772f36..0000000000
--- a/tools/qdoc3/test/style/style.css
+++ /dev/null
@@ -1,1051 +0,0 @@
-@media screen
-{
- html
- {
- color: #000000;
- background: #FFFFFF;
- }
- body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td
- {
- margin: 0;
- padding: 0;
- }
- table
- {
- border-collapse: collapse;
- border-spacing: 0;
- }
- fieldset, img
- {
- border: 0;
- }
- address, caption, cite, code, dfn, em, strong, th, var, optgroup
- {
- font-style: inherit;
- font-weight: inherit;
- }
- del, ins
- {
- text-decoration: none;
- }
- li
- {
- list-style: none;
- }
- caption, th
- {
- text-align: left;
- }
- h1, h2, h3, h4, h5, h6
- {
- font-size: 100%;
- font-weight: normal;
- }
- q:before, q:after
- {
- content: '';
- }
- abbr, acronym
- {
- border: 0;
- font-variant: normal;
- }
- sup
- {
- vertical-align: baseline;
- }
- sub
- {
- vertical-align: baseline;
- }
- .heading
- {
- font: normal 600 16px/1.0 Arial;
- padding-bottom: 15px;
- }
- .subtitle
- {
- font-size: 13px;
- }
- .small-subtitle
- {
- font-size: 13px;
- }
- legend
- {
- color: #000000;
- }
- input, button, textarea, select, optgroup, option
- {
- font-family: inherit;
- font-size: inherit;
- font-style: inherit;
- font-weight: inherit;
- }
- input, button, textarea, select
- {
- font-size: 100%;
- }
- html
- {
- background-color: #e5e5e5;
- }
- body
- {
- background: #e6e7e8 url(../images/page_bg.png) repeat-x 0 0;
- font: normal 13px/1.2 Verdana;
- color: #363534;
- }
- strong
- {
- font-weight: bold;
- }
- em
- {
- font-style: italic;
- }
- a
- {
- color: #00732f;
- text-decoration: none;
- }
- .header, .footer, .wrapper
- {
- min-width: 600px;
- max-width: 1500px;
- margin: 0 30px;
- }
- .wrapper
- {
- background: url(../images/bg_r.png) repeat-y 100% 0;
- }
- .wrapper .hd
- {
- padding-left: 216px;
- height: 15px;
- background: url(../images/page.png) no-repeat 0 0;
- overflow: hidden;
- }
- .offline .wrapper .hd
- {
- background: url(../images/page.png) no-repeat 0 -15px;
- }
- .wrapper .hd span
- {
- height: 15px;
- display: block;
- overflow: hidden;
- background: url(../images/page.png) no-repeat 100% -30px;
- }
- .wrapper .bd
- {
- background: url(../images/bg_l.png) repeat-y 0 0;
- position: relative;
- }
- .offline .wrapper .bd
- {
- background: url(../images/bg_l_blank.png) repeat-y 0 0;
- }
- .wrapper .ft
- {
- padding-left: 216px;
- height: 15px;
- background: url(../images/page.png) no-repeat 0 -75px;
- overflow: hidden;
- }
- .offline .wrapper .ft
- {
- background: url(../images/page.png) no-repeat 0 -90px;
- }
- .wrapper .ft span
- {
- height: 15px;
- display: block;
- background: url(../images/page.png) no-repeat 100% -60px;
- overflow: hidden;
- }
- .header, .footer
- {
- display: block;
- clear: both;
- overflow: hidden;
- }
- .header
- {
- height: 115px;
- position: relative;
- }
- .header .icon
- {
- position: absolute;
- top: 13px;
- left: 0;
- }
- .header .qtref
- {
- position: absolute;
- top: 28px;
- left: 88px;
- width: 302px;
- height: 22px;
- }
- .header .qtref span
- {
- display: block;
- width: 302px;
- height: 22px;
- text-indent: -999em;
- background: url(../images/sprites-combined.png) no-repeat -78px -235px;
- }
-
- .sidebar
- {
- float: left;
- margin-left: 5px;
- width: 200px;
- font-size: 11px;
- }
-
- .offline .sidebar, .offline .feedback, .offline .t_button
- {
- display: none;
- }
-
- .sidebar .searchlabel
- {
- padding: 0 0 2px 17px;
- font: normal bold 11px/1.2 Verdana;
- }
-
- .sidebar .search
- {
- padding: 0 15px 0 16px;
- }
-
- .sidebar .search form
- {
- background: url(../images/sprites-combined.png) no-repeat -6px -348px;
- height:21px;
- padding:2px 0 0 5px;
- width:167px;
- }
-
- .sidebar .search form input#pageType
- {
- width: 158px;
- height: 19px;
- padding: 0;
- border: none;
- outline: none;
- font: 13px/1.2 Verdana;
- }
-
- .sidebar .box
- {
- padding: 17px 15px 5px 16px;
- }
-
- .sidebar .box .first
- {
- background-image: none;
- }
-
- .sidebar .box h2
- {
- font: normal 18px/1.2 Arial;
- padding: 0;
- min-height: 32px;
- }
- .sidebar .box h2 span
- {
- overflow: hidden;
- display: inline-block;
- }
- .sidebar .box#lookup h2
- {
- background-image: none;
- }
- .sidebar #lookup.box h2 span
- {
- background: url(../images/sprites-combined.png) no-repeat -6px -311px;
- width: 27px;
- height: 35px;
- margin-right: 13px;
- }
- .sidebar .box#topics h2
- {
- background-image: none;
- }
- .sidebar #topics.box h2 span
- {
- background: url(../images/sprites-combined.png) no-repeat -94px -311px;
- width: 27px;
- height: 32px;
- margin-right: 13px;
- }
- .sidebar .box#examples h2
- {
- background-image: none;
- }
- .sidebar #examples.box h2 span
- {
- background: url(../images/sprites-combined.png) no-repeat -48px -311px;
- width: 30px;
- height: 31px;
- margin-right: 9px;
- }
-
- .sidebar .box .list
- {
- display: block;
- }
- .sidebar .box .live
- {
- display: none;
- height: 100px;
- overflow: auto;
- }
- .list li a:hover, .live li a:hover
- {
- text-decoration: underline;
- }
- .sidebar .box ul
- {
- }
- .sidebar .box ul li
- {
- padding-left: 12px;
- background: url(../images/bullet_gt.png) no-repeat 0 5px;
- margin-bottom: 15px;
- }
- .sidebar .bottombar
- {
- background: url(../images/box_bg.png) repeat-x 0 bottom;
- }
- .wrap
- {
- margin: 0 5px 0 208px;
- overflow: visible;
- }
- .offline .wrap
- {
- margin: 0 5px 0 5px;
- }
- .wrap .toolbar
- {
- background-color: #fafafa;
- border-bottom: 1px solid #d1d1d1;
- height: 20px;
- position: relative;
- }
- .wrap .toolbar .toolblock
- {
- position: absolute;
- }
- .wrap .toolbar .breadcrumb
- {
- font-size: 11px;
- line-height: 1;
- padding: 0 0 10px 21px;
- height: 10px;
- }
- .wrap .toolbar .toolbuttons
- {
- padding: 0 0 10px 21px;
- right: 5px;
- vertical-align: middle;
- overflow: hidden;
- }
- .wrap .toolbar .toolbuttons .active
- {
- color: #00732F;
- }
- .wrap .toolbar .toolbuttons ul
- {
- float: right;
- }
- .wrap .toolbar .toolbuttons li
- {
- float: left;
- text-indent: -10px;
- margin-top: -5px;
- margin-right: 15px;
- font-weight: bold;
- color: #B0ADAB;
- }
-
- .toolbuttons #print
- {
- border-left: 1px solid #c5c4c4;
- margin-top: 0;
- padding-left: 7px;
- text-indent: 0;
- }
- .toolbuttons #print a
- {
- width: 16px;
- height: 16px;
- }
-
- .toolbuttons #print a span
- {
- width: 16px;
- height: 16px;
- text-indent: -999em;
- display: block;
- overflow: hidden;
- background: url(../images/sprites-combined.png) no-repeat -137px -311px;
- }
-
- .toolbuttons #smallA
- {
- font-size: 10pt;
- }
- .toolbuttons #medA
- {
- font-size: 12pt;
- }
- .toolbuttons #bigA
- {
- font-size: 14pt;
- margin-right: 7px;
- }
-
- #smallA:hover, #medA:hover, #bigA:hover
- {
- color: #00732F;
- }
-
- .offline .wrap .breadcrumb
- {
- }
-
- .wrap .breadcrumb ul
- {
- }
- .wrap .breadcrumb ul li
- {
- float: left;
- background: url(../images/breadcrumb.png) no-repeat 0 3px;
- padding-left: 15px;
- margin-left: 15px;
- font-weight: bold;
- }
- .wrap .breadcrumb ul li.last
- {
- font-weight: normal;
- }
- .wrap .breadcrumb ul li a
- {
- color: #363534;
- }
- .wrap .breadcrumb ul li.first
- {
- background-image: none;
- padding-left: 0;
- margin-left: 0;
- }
- .wrap .content
- {
- padding: 30px;
- }
-
- .wrap .content li
- {
- padding-left: 12px;
- background: url(../images/bullet_sq.png) no-repeat 0 5px;
- font: normal 400 10pt/1 Verdana;
- color: #44a51c;
- margin-bottom: 10px;
- }
- .content li:hover
- {
- text-decoration: underline;
- }
-
- .offline .wrap .content
- {
- padding-top: 15px;
- }
-
- .wrap .content h1
- {
- font: 600 18px/1.2 Arial;
- }
- .wrap .content h2
- {
- font: 600 16px/1.2 Arial;
- }
- .wrap .content h3
- {
- font: 600 14px/1.2 Arial;
- }
- .wrap .content p
- {
- line-height: 20px;
- padding: 10px 5px 10px 5px;
- }
- .wrap .content ul
- {
- padding-left: 25px;
- }
- a:hover
- {
- color: #4c0033;
- text-decoration: underline;
- }
- .content a:visited
- {
- color: #4c0033;
- text-decoration: none;
- }
- .footer
- {
- min-height: 100px;
- color: #797775;
- font: normal 9px/1 Verdana;
- text-align: center;
- padding-top: 40px;
- background-color: #E6E7E8;
- margin: 0;
- }
- .feedback
- {
- float: none;
- position: absolute;
- right: 15px;
- bottom: 10px;
- font: normal 8px/1 Verdana;
- color: #B0ADAB;
- }
- .feedback:hover
- {
- float: right;
- font: normal 8px/1 Verdana;
- color: #00732F;
- text-decoration: underline;
- }
- .header:after, .footer:after, .breadcrumb:after, .wrap .content:after, .group:after
- {
- content: ".";
- display: block;
- height: 0;
- clear: both;
- visibility: hidden;
- }
- #nav-topright
- {
- height: 70px;
- }
-
- #nav-topright ul
- {
- list-style-type: none;
- float: right;
- width: 370px;
- margin-top: 11px;
- }
-
- #nav-topright li
- {
- display: inline-block;
- margin-right: 20px;
- float: left;
- }
-
- #nav-topright li.nav-topright-last
- {
- margin-right: 0;
- }
-
- #nav-topright li a
- {
- background: transparent url(../images/sprites-combined.png) no-repeat;
- height: 18px;
- display: block;
- overflow: hidden;
- text-indent: -9999px;
- }
-
- #nav-topright li.nav-topright-home a
- {
- width: 65px;
- background-position: -2px -91px;
- }
-
- #nav-topright li.nav-topright-home a:hover
- {
- background-position: -2px -117px;
- }
-
-
- #nav-topright li.nav-topright-dev a
- {
- width: 30px;
- background-position: -76px -91px;
- }
-
- #nav-topright li.nav-topright-dev a:hover
- {
- background-position: -76px -117px;
- }
-
-
- #nav-topright li.nav-topright-labs a
- {
- width: 40px;
- background-position: -114px -91px;
- }
-
- #nav-topright li.nav-topright-labs a:hover
- {
- background-position: -114px -117px;
- }
-
- #nav-topright li.nav-topright-doc a
- {
- width: 32px;
- background-position: -162px -91px;
- }
-
- #nav-topright li.nav-topright-doc a:hover, #nav-topright li.nav-topright-doc-active a
- {
- background-position: -162px -117px;
- }
-
- #nav-topright li.nav-topright-blog a
- {
- width: 40px;
- background-position: -203px -91px;
- }
-
- #nav-topright li.nav-topright-blog a:hover, #nav-topright li.nav-topright-blog-active a
- {
- background-position: -203px -117px;
- }
-
- #nav-topright li.nav-topright-shop a
- {
- width: 40px;
- background-position: -252px -91px;
- }
-
- #nav-topright li.nav-topright-shop a:hover, #nav-topright li.nav-topright-shop-active a
- {
- background-position: -252px -117px;
- }
-
- #nav-logo
- {
- background: transparent url(../images/sprites-combined.png ) no-repeat 0 -225px;
- left: -3px;
- position: absolute;
- width: 75px;
- height: 75px;
- top: 13px;
- }
- #nav-logo a
- {
- width: 75px;
- height: 75px;
- display: block;
- text-indent: -9999px;
- overflow: hidden;
- }
-
-
- .shortCut-topleft-inactive
- {
- padding-left: 3px;
- background: transparent url( ../images/sprites-combined.png) no-repeat 0px -58px;
- height: 20px;
- width: 47px;
- }
- .shortCut-topleft-inactive span
- {
- font-variant: normal;
- }
- #shortCut
- {
- padding-top: 10px;
- font-weight: bolder;
- color: #b0adab;
- }
- #shortCut ul
- {
- list-style-type: none;
- float: left;
- width: 347px;
- margin-left: 100px;
- }
- #shortCut li
- {
- display: inline-block;
- margin-right: 25px;
- float: left;
- white-space: nowrap;
- }
- #shortCut li a
- {
- color: #b0adab;
- }
- #shortCut li a:hover
- {
- color: #44a51c;
- }
-
- hr
- {
- background-color: #E6E6E6;
- border: 1px solid #E6E6E6;
- height: 1px;
- width: 100%;
- text-align: left;
- margin: 15px 0px 15px 0px;
- }
-
- .content .alignedsummary
- {
- margin: 15px;
- }
- pre
- {
- border: 1px solid #DDDDDD;
- margin: 0 20px 10px 10px;
- padding: 20px 15px 20px 20px;
- overflow-x: auto;
- }
- table, pre
- {
- -moz-border-radius: 7px 7px 7px 7px;
- background-color: #F6F6F6;
- border: 1px solid #E6E6E6;
- border-collapse: separate;
- font-size: 11px;
- /*min-width: 395px;*/
- margin-bottom: 25px;
- display: inline-block;
- }
- thead
- {
- margin-top: 5px;
- }
- th
- {
- padding: 3px 15px 3px 15px;
- }
- td
- {
- padding: 3px 15px 3px 20px;
- }
- table tr.odd
- {
- border-left: 1px solid #E6E6E6;
- background-color: #F6F6F6;
- color: #66666E;
- }
- table tr.even
- {
- border-left: 1px solid #E6E6E6;
- background-color: #ffffff;
- color: #66666E;
- }
- table tr.odd:hover
- {
- background-color: #E6E6E6;
- }
- table tr.even:hover
- {
- background-color: #E6E6E6;
- }
-
- span.comment
- {
- color: #8B0000;
- font-style: italic;
- }
- span.string, span.char
- {
- color: #254117;
- }
-
- .qmltype
- {
- text-align: center;
- font-size: 160%;
- }
- .qmlreadonly
- {
- padding-left: 3px;
- float: right;
- color: #254117;
- }
-
- .qmldefault
- {
- padding-left: 3px;
- float: right;
- color: red;
- }
-
- .qmldoc
- {
- }
-
- *.qmlitem p
- {
- }
-
- #feedbackBox
- {
- display: none;
- -moz-border-radius: 7px 7px 7px 7px;
- border: 1px solid #DDDDDD;
- position: fixed;
- top: 100px;
- left: 33%;
- height: 190px;
- width: 400px;
- padding: 5px;
- background-color: #e6e7e8;
- z-index: 4;
- }
- #feedcloseX a
- {
- display: inline;
- padding: 5px 5px 0 0;
- margin-bottom: 3px;
- color: #363534;
- font-weight: 600;
- float: right;
- text-decoration: none;
- }
-
- #feedbox
- {
- display: inline;
- width: 370px;
- height: 120px;
- margin: 0px 25px 10px 15px;
- }
- #feedsubmit
- {
- display: inline;
- float: right;
- margin: 4px 32px 0 0;
- }
- #blurpage
- {
- display: none;
- position: fixed;
- float: none;
- top: 0px;
- left: 0px;
- right: 0px;
- bottom: 0px;
- background: transparent url(../images/feedbackground.png) 0 0;
- z-index: 3;
- }
- .toc
- {
- float: right;
- -moz-border-radius: 7px 7px 7px 7px;
- background-color: #F6F6F6;
- border: 1px solid #DDDDDD;
- margin: 0 20px 10px 10px;
- padding: 20px 15px 20px 20px;
- height: auto;
- width: 200px;
- }
-
- .toc h3
- {
- font: 600 12px/1.2 Arial;
- }
-
- .wrap .content .toc ul
- {
- padding-left: 0px;
- }
-
-
- .wrap .content .toc .level2
- {
- margin-left: 15px;
- }
-
- .content .toc li
- {
- font: normal 10px/1.2 Verdana;
- background: url(../images/bullet_dn.png) no-repeat 0 5px;
- }
-
- .relpage
- {
- -moz-border-radius: 7px 7px 7px 7px;
- border: 1px solid #DDDDDD;
- padding: 25px 25px;
- clear: both;
- }
- .relpage ul
- {
- float: none;
- padding: 15px;
- }
- .content .relpage li
- {
- font: normal 11px/1.2 Verdana;
- }
- h3.fn, span.fn
- {
- background-color: #F6F6F6;
- border-width: 1px;
- border-style: solid;
- border-color: #E6E6E6;
- font-weight: bold;
- }
-
-
- /* start index box */
- .indexbox
- {
- width: 100%;
- display:inline-block;
- }
-
- .indexboxcont
- {
- display: block;
- /* overflow: hidden;*/
- }
-
- .indexboxbar
- {
- background: transparent url(../images/horBar.png ) repeat-x left bottom;
- margin-bottom: 25px;
- /* background-image: none;
- border-bottom: 1px solid #e2e2e2;*/
- }
-
- .indexboxcont .section
- {
- display: inline-block;
- width: 49%;
- *width:42%;
- _width:42%;
- padding:0 2% 0 1%;
- vertical-align:top;
-
-}
-
- .indexboxcont .indexIcon
- {
- width: 11%;
- *width:18%;
- _width:18%;
- overflow:hidden;
-
-}
- .indexboxcont .section p
- {
- padding-top: 20px;
- padding-bottom: 20px;
- }
- .indexboxcont .sectionlist
- {
- display: inline-block;
- width: 33%;
- padding: 0;
- }
- .indexboxcont .sectionlist ul
- {
- margin-bottom: 20px;
- }
-
- .indexboxcont .sectionlist ul li
- {
- line-height: 12px;
- }
-
- .content .indexboxcont li
- {
- font: normal 600 13px/1 Verdana;
- }
-
- .indexbox a:hover, .indexbox a:visited:hover
- {
- color: #4c0033;
- text-decoration: underline;
- }
-
- .indexbox a:visited
- {
- color: #00732f;
- text-decoration: none;
- }
-
- .indexboxcont:after
- {
- content: ".";
- display: block;
- height: 0;
- clear: both;
- visibility: hidden;
- }
-
- .indexbox .indexIcon span
- {
- display: block;
- }
-
- .indexbox.guide .indexIcon span
- {
- width: 96px;
- height: 137px;
- background: url(../images/sprites-combined.png) no-repeat -5px -376px;
- padding: 0;
- }
-
- .indexbox.tools .indexIcon span
- {
- width: 115px;
- height: 137px;
- background: url(../images/sprites-combined.png) no-repeat -111px -376px;
- padding: 0;
- }
-
- .lastcol
- {
- display: inline-block;
- vertical-align: top;
- padding: 0;
- max-width: 25%;
- }
-
- .tricol .lastcol
- {
- margin-left: -6px;
- }
- /* end indexbox */
-}
-/* end of screen media */
-
-/* start of print media */
-
-@media print
-{
- input, textarea, .header, .footer, .toolbar, .feedback, .wrapper .hd, .wrapper .bd .sidebar, .wrapper .ft
- {
- display: none;
- background: none;
- }
- .content
- {
- position: absolute;
- top: 0px;
- left: 0px;
- background: none;
- display: block;
- }
-}
-/* end of print media */
diff --git a/tools/qdoc3/test/style/style_ie6.css b/tools/qdoc3/test/style/style_ie6.css
deleted file mode 100644
index 16fb8505df..0000000000
--- a/tools/qdoc3/test/style/style_ie6.css
+++ /dev/null
@@ -1,54 +0,0 @@
-.indexbox, .indexboxcont, .group {
- zoom: 1;
- height: 1%;
-}
-
-.sidebar {
- margin-left: 3px;
- width: 199px;
- overflow: hidden;
-}
-
-.sidebar .search form {
- position: relative;
-}
-
-.sidebar .search form fieldset {
- position: absolute;
- margin-top: -1px;
-}
-
-.sidebar .search form input#searchstring {
- border: 1px solid #fff;
- height: 18px;
-}
-
-.wrap {
- zoom: 1;
-}
-
-.content,
-.toolbar {
- zoom: 1;
- margin-left: -3px;
- position: relative;
-}
-
-.indexbox {
- clear: both;
-}
-
-.indexboxcont .section {
- zoom: 1;
- float: left;
-}
-
-.indexboxcont .sectionlist {
- zoom: 1;
- float: left;
-}
-
-.wrap .toolbar .toolbuttons li {
- text-indent: 0;
- margin-right: 8px;
-} \ No newline at end of file
diff --git a/tools/qdoc3/test/style/style_ie7.css b/tools/qdoc3/test/style/style_ie7.css
deleted file mode 100644
index afbff5f88e..0000000000
--- a/tools/qdoc3/test/style/style_ie7.css
+++ /dev/null
@@ -1,19 +0,0 @@
-.indexbox, .indexboxcont, .group {
- min-height: 1px;
-}
-
-.sidebar .search form input#searchstring {
- border: 1px solid #fff;
- height: 17px;
-}
-
-
-.indexboxcont .section {
- zoom: 1;
- float: left;
-}
-
-.indexboxcont .sectionlist {
- zoom: 1;
- float: left;
-}
diff --git a/tools/qdoc3/test/style/style_ie8.css b/tools/qdoc3/test/style/style_ie8.css
deleted file mode 100644
index e69de29bb2..0000000000
--- a/tools/qdoc3/test/style/style_ie8.css
+++ /dev/null
diff --git a/tools/qdoc3/tokenizer.cpp b/tools/qdoc3/tokenizer.cpp
index 05ad5ee57d..6e7da20716 100644
--- a/tools/qdoc3/tokenizer.cpp
+++ b/tools/qdoc3/tokenizer.cpp
@@ -42,7 +42,6 @@
#include "config.h"
#include "tokenizer.h"
-#include <qdebug.h>
#include <qfile.h>
#include <qhash.h>
#include <qregexp.h>
diff --git a/tools/qdoc3/tokenizer.h b/tools/qdoc3/tokenizer.h
index bd359659bc..1b33f6f5d6 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/tr.h b/tools/qdoc3/tr.h
index 4d601e9ecb..4ba7aa402e 100644
--- a/tools/qdoc3/tr.h
+++ b/tools/qdoc3/tr.h
@@ -46,14 +46,26 @@
#ifndef TR_H
#define TR_H
+#ifndef QT_BOOTSTRAPPED
+# include "qcoreapplication.h"
+#endif
+
#include <qstring.h>
QT_BEGIN_NAMESPACE
-inline QString tr( const char *sourceText, const char * /* comment */ = 0 )
+#if defined(QT_BOOTSTRAPPED) || defined(QT_NO_TRANSLATION)
+inline QString tr(const char *sourceText, const char *comment = 0)
{
+ Q_UNUSED(comment);
return QString( QLatin1String(sourceText) );
}
+#else
+inline QString tr(const char *sourceText, const char *comment = 0)
+{
+ return QCoreApplication::instance()->translate("", sourceText, comment);
+}
+#endif
QT_END_NAMESPACE
diff --git a/tools/qdoc3/tree.cpp b/tools/qdoc3/tree.cpp
index 540ffa9383..ceb1f0f930 100644
--- a/tools/qdoc3/tree.cpp
+++ b/tools/qdoc3/tree.cpp
@@ -54,7 +54,6 @@
#include "tree.h"
#include <limits.h>
-#include <qdebug.h>
QT_BEGIN_NAMESPACE
@@ -591,12 +590,6 @@ void Tree::resolveGroups()
if (fake && fake->subType() == Node::Group) {
fake->addGroupMember(i.value());
}
-#if 0
- else {
- if (prevGroup != i.key())
- i.value()->doc().location().warning(tr("No such group '%1'").arg(i.key()));
- }
-#endif
prevGroup = i.key();
}
@@ -812,6 +805,12 @@ void Tree::readIndexSection(const QDomElement &element,
subtype = Node::Page;
else if (element.attribute("subtype") == "externalpage")
subtype = Node::ExternalPage;
+ else if (element.attribute("subtype") == "qmlclass")
+ subtype = Node::QmlClass;
+ else if (element.attribute("subtype") == "qmlpropertygroup")
+ subtype = Node::QmlPropertyGroup;
+ else if (element.attribute("subtype") == "qmlbasictype")
+ subtype = Node::QmlBasicType;
else
return;
@@ -1986,15 +1985,7 @@ QString Tree::fullDocumentLocation(const Node *node) const
else
parentName = fullDocumentLocation(node->parent());
}
-#if 0
- if (node->type() == Node::QmlProperty) {
- qDebug() << "Node::QmlProperty:" << node->name()
- << "parentName:" << parentName;
- if (parentNode)
- qDebug() << "PARENT NODE" << parentNode->type()
- << parentNode->subType() << parentNode->name();
- }
-#endif
+
switch (node->type()) {
case Node::Class:
case Node::Namespace:
diff --git a/tools/qdoc3/uncompressor.cpp b/tools/qdoc3/uncompressor.cpp
deleted file mode 100644
index afb88e69af..0000000000
--- a/tools/qdoc3/uncompressor.cpp
+++ /dev/null
@@ -1,108 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- uncompressor.cpp
-*/
-
-#include "uncompressor.h"
-
-QT_BEGIN_NAMESPACE
-
-QList<Uncompressor *> Uncompressor::uncompressors;
-
-
-/*!
- \class Uncompressor
-
- \brief The Uncompressor class is a base class for classes that
- know how to uncompress a certain kind of compressed file.
-
- The uncompressor contains a list of the filename extensions
- of the file types that the uncompressor knows how to uncompress.
-
- It maintains a static list of all the instances of Uncompressor
- that have been created. It also has a static function for searching
- that list to find the uncompressor to use for uncompressing a file
- with a certain extension.
- */
-
-/*!
- The constructor takes a list of filename extensions, which it
- copies and saves internally. This uncompressor is prepended
- to the stack list.
- */
-Uncompressor::Uncompressor( const QStringList& extensions )
- : fileExts( extensions )
-{
- uncompressors.prepend( this );
-}
-
-/*!
- The destructor deletes all the filename extensions.
- */
-Uncompressor::~Uncompressor()
-{
- uncompressors.removeAll( this );
-}
-
-/*!
- This function searches the static list of uncompressors to find the
- first one that can handle \a fileName. If it finds an acceptable
- uncompressor, it returns a pointer to it. Otherwise it returns null.
-*/
-Uncompressor*
-Uncompressor::uncompressorForFileName( const QString& fileName )
-{
- int dot = -1;
- while ( (dot = fileName.indexOf(".", dot + 1)) != -1 ) {
- QString ext = fileName.mid( dot + 1 );
- QList<Uncompressor *>::ConstIterator u = uncompressors.begin();
- while ( u != uncompressors.end() ) {
- if ( (*u)->fileExtensions().contains(ext) )
- return *u;
- ++u;
- }
- }
- return 0;
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/uncompressor.h b/tools/qdoc3/uncompressor.h
deleted file mode 100644
index cae675f543..0000000000
--- a/tools/qdoc3/uncompressor.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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- uncompressor.h
-*/
-
-#ifndef UNCOMPRESSOR_H
-#define UNCOMPRESSOR_H
-
-#include <qstringlist.h>
-
-#include "location.h"
-
-QT_BEGIN_NAMESPACE
-
-class Uncompressor
-{
-public:
- Uncompressor( const QStringList& extensions );
- virtual ~Uncompressor();
-
- virtual QString uncompressedFilePath( const QString& filePath ) = 0;
- virtual void uncompressFile( const Location& location,
- const QString& filePath,
- const QString& outputFilePath ) = 0;
-
- static Uncompressor *uncompressorForFileName( const QString& fileName );
-
-protected:
- const QStringList& fileExtensions() const { return fileExts; }
-
-private:
- QStringList fileExts;
-
- static QList<Uncompressor *> uncompressors;
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/tools/qdoc3/webxmlgenerator.cpp b/tools/qdoc3/webxmlgenerator.cpp
deleted file mode 100644
index 6020b1b581..0000000000
--- a/tools/qdoc3/webxmlgenerator.cpp
+++ /dev/null
@@ -1,1195 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- webxmlgenerator.cpp
-*/
-
-#include "codemarker.h"
-#include "pagegenerator.h"
-#include "webxmlgenerator.h"
-#include "node.h"
-#include "separator.h"
-#include "tree.h"
-
-#include <QtCore/qxmlstream.h>
-
-QT_BEGIN_NAMESPACE
-
-#define COMMAND_VERSION Doc::alias("version")
-
-WebXMLGenerator::WebXMLGenerator()
- : PageGenerator()
-{
-}
-
-WebXMLGenerator::~WebXMLGenerator()
-{
-}
-
-void WebXMLGenerator::initializeGenerator(const Config &config)
-{
- Generator::initializeGenerator(config);
-
- project = config.getString(CONFIG_PROJECT);
-
- projectDescription = config.getString(CONFIG_DESCRIPTION);
- if (projectDescription.isEmpty() && !project.isEmpty())
- projectDescription = project + " Reference Documentation";
-
- projectUrl = config.getString(CONFIG_URL);
-
- generateIndex = config.getBool(CONFIG_GENERATEINDEX);
-}
-
-void WebXMLGenerator::terminateGenerator()
-{
- PageGenerator::terminateGenerator();
-}
-
-QString WebXMLGenerator::format()
-{
- return "WebXML";
-}
-
-QString WebXMLGenerator::fileExtension(const Node * /* node */) const
-{
- return "xml";
-}
-
-void WebXMLGenerator::generateTree(const Tree *tree, CodeMarker *marker)
-{
- tre = tree;
- moduleClassMap.clear();
- moduleNamespaceMap.clear();
- serviceClasses.clear();
- findAllClasses(tree->root());
- findAllNamespaces(tree->root());
-
- PageGenerator::generateTree(tree, marker);
-
- if (generateIndex)
- tre->generateIndex(outputDir() + "/" + project.toLower() + ".index",
- projectUrl, projectDescription, false);
-}
-
-void WebXMLGenerator::startText(const Node *relative, CodeMarker *marker)
-{
- inLink = false;
- inContents = false;
- inSectionHeading = false;
- numTableRows = 0;
- sectionNumber.clear();
- PageGenerator::startText(relative, marker);
-}
-
-int WebXMLGenerator::generateAtom(QXmlStreamWriter &writer, const Atom *atom,
- const Node *relative, CodeMarker *marker)
-{
- Q_UNUSED(writer);
-
- int skipAhead = 0;
-
- switch (atom->type()) {
- default:
- PageGenerator::generateAtom(atom, relative, marker);
- }
- return skipAhead;
-}
-
-void WebXMLGenerator::generateClassLikeNode(const InnerNode *inner,
- CodeMarker *marker)
-{
- QByteArray data;
- QXmlStreamWriter writer(&data);
- writer.setAutoFormatting(true);
- writer.writeStartDocument();
- writer.writeStartElement("WebXML");
- writer.writeStartElement("document");
-
- generateIndexSections(writer, inner, marker);
-
- writer.writeEndElement(); // document
- writer.writeEndElement(); // WebXML
- writer.writeEndDocument();
-
- out() << data;
- out().flush();
-}
-
-void WebXMLGenerator::generateFakeNode(const FakeNode *fake, CodeMarker *marker)
-{
- QByteArray data;
- QXmlStreamWriter writer(&data);
- writer.setAutoFormatting(true);
- writer.writeStartDocument();
- writer.writeStartElement("WebXML");
- writer.writeStartElement("document");
-
- generateIndexSections(writer, fake, marker);
-
- writer.writeEndElement(); // document
- writer.writeEndElement(); // WebXML
- writer.writeEndDocument();
-
- out() << data;
- out().flush();
-}
-
-void WebXMLGenerator::generateIndexSections(QXmlStreamWriter &writer,
- const Node *node, CodeMarker *marker)
-{
- if (tre->generateIndexSection(writer, node, true)) {
-
- // Add documentation to this node if it exists.
- writer.writeStartElement("description");
- writer.writeAttribute("path", node->doc().location().filePath());
- writer.writeAttribute("line", QString::number(node->doc().location().lineNo()));
- writer.writeAttribute("column", QString::number(node->doc().location().columnNo()));
-
- if (node->type() == Node::Fake) {
-
- const FakeNode *fake = static_cast<const FakeNode *>(node);
-
- generateRelations(writer, node, marker);
-
- if (fake->subType() == Node::Module) {
- writer.writeStartElement("generatedlist");
- writer.writeAttribute("contents", "classesbymodule");
-
- if (moduleNamespaceMap.contains(fake->name())) {
- writer.writeStartElement("section");
- writer.writeStartElement("heading");
- writer.writeAttribute("level", "1");
- writer.writeCharacters("Namespaces");
- writer.writeEndElement(); // heading
- generateAnnotatedList(writer, fake, marker, moduleNamespaceMap[fake->name()]);
- writer.writeEndElement(); // section
- }
- if (moduleClassMap.contains(fake->name())) {
- writer.writeStartElement("section");
- writer.writeStartElement("heading");
- writer.writeAttribute("level", "1");
- writer.writeCharacters("Classes");
- writer.writeEndElement(); // heading
- generateAnnotatedList(writer, fake, marker, moduleClassMap[fake->name()]);
- writer.writeEndElement(); // section
- }
-
- writer.writeEndElement(); // generatedlist
- }
- }
-
- startText(node, marker);
-
- const Atom *atom = node->doc().body().firstAtom();
- while (atom)
- atom = addAtomElements(writer, atom, node, marker);
-
- QList<Text> alsoList = node->doc().alsoList();
- supplementAlsoList(node, alsoList);
-
- if (!alsoList.isEmpty()) {
- writer.writeStartElement("see-also");
- for (int i = 0; i < alsoList.size(); ++i) {
- const Atom *atom = alsoList.at(i).firstAtom();
- while (atom)
- atom = addAtomElements(writer, atom, node, marker);
- }
- writer.writeEndElement(); // see-also
- }
-
- writer.writeEndElement(); // description
-
- if (node->isInnerNode()) {
- const InnerNode *inner = static_cast<const InnerNode *>(node);
-
- // Recurse to generate an element for this child node and all its children.
- foreach (const Node *child, inner->childNodes())
- generateIndexSections(writer, child, marker);
-
- writer.writeStartElement("related");
- if (inner->relatedNodes().size() > 0) {
- foreach (const Node *child, inner->relatedNodes())
- generateIndexSections(writer, child, marker);
- }
- writer.writeEndElement(); // related
- }
- writer.writeEndElement();
- }
-}
-
-void WebXMLGenerator::generateInnerNode(const InnerNode *node, CodeMarker *marker)
-{
- if (!node->url().isNull())
- return;
-
- if (node->type() == Node::Fake) {
- const FakeNode *fakeNode = static_cast<const FakeNode *>(node);
- if (fakeNode->subType() == Node::ExternalPage)
- return;
- }
-
- if ( node->parent() != 0 ) {
- beginSubPage( node->location(), fileName(node) );
- if ( node->type() == Node::Namespace || node->type() == Node::Class) {
- generateClassLikeNode(node, marker);
- } else if ( node->type() == Node::Fake ) {
- generateFakeNode(static_cast<const FakeNode *>(node), marker);
- }
- endSubPage();
- }
-
- NodeList::ConstIterator c = node->childNodes().begin();
- while ( c != node->childNodes().end() ) {
- if ((*c)->isInnerNode() && (
- (*c)->access() != Node::Private || (*c)->status() == Node::Internal))
- generateInnerNode( (const InnerNode *) *c, marker );
- ++c;
- }
-}
-
-const Atom *WebXMLGenerator::addAtomElements(QXmlStreamWriter &writer,
- const Atom *atom, const Node *relative, CodeMarker *marker)
-{
- switch (atom->type()) {
- case Atom::AbstractLeft:
- case Atom::AbstractRight:
- break;
- case Atom::AutoLink:
- if (!inLink && !inSectionHeading) {
- const Node *node = findNode(atom, relative, marker);
- if (node) {
- startLink(writer, atom, node, relative);
- if (inLink) {
- writer.writeCharacters(atom->string());
- writer.writeEndElement(); // link
- inLink = false;
- }
- } else
- writer.writeCharacters(atom->string());
- } else
- writer.writeCharacters(atom->string());
- break;
- case Atom::BaseName:
- break;
- case Atom::BriefLeft:
-
- writer.writeStartElement("brief");
- switch (relative->type()) {
- case Node::Property:
- writer.writeCharacters("This property");
- break;
- case Node::Variable:
- writer.writeCharacters("This variable");
- break;
- default:
- break;
- }
- if (relative->type() == Node::Property || relative->type() == Node::Variable) {
- QString str;
- const Atom *a = atom->next();
- while (a != 0 && a->type() != Atom::BriefRight) {
- if (a->type() == Atom::String || a->type() == Atom::AutoLink)
- str += a->string();
- a = a->next();
- }
- str[0] = str[0].toLower();
- if (str.right(1) == ".")
- str.chop(1);
-
- QStringList words = str.split(" ");
- if (!(words.first() == "contains" || words.first() == "specifies"
- || words.first() == "describes" || words.first() == "defines"
- || words.first() == "holds" || words.first() == "determines"))
- writer.writeCharacters(" holds ");
- else
- writer.writeCharacters(" ");
- }
- break;
-
- case Atom::BriefRight:
- if (relative->type() == Node::Property || relative->type() == Node::Variable)
- writer.writeCharacters(".");
-
- writer.writeEndElement(); // brief
- break;
-
- case Atom::C:
- writer.writeStartElement("teletype");
- if (inLink)
- writer.writeAttribute("type", "normal");
- else
- writer.writeAttribute("type", "highlighted");
-
- writer.writeCharacters(plainCode(atom->string()));
- writer.writeEndElement(); // teletype
- break;
-
- case Atom::Code:
- writer.writeTextElement("code", trimmedTrailing(plainCode(atom->string())));
- break;
-
-#ifdef QDOC_QML
- case Atom::Qml:
- writer.writeTextElement("qml", trimmedTrailing(plainCode(atom->string())));
-#endif
-
- case Atom::CodeBad:
- writer.writeTextElement("badcode", trimmedTrailing(plainCode(atom->string())));
- break;
-
- case Atom::CodeNew:
- writer.writeTextElement("para", "you can rewrite it as");
- writer.writeTextElement("newcode", trimmedTrailing(plainCode(atom->string())));
- break;
-
- case Atom::CodeOld:
- writer.writeTextElement("para", "For example, if you have code like");
- writer.writeTextElement("oldcode", trimmedTrailing(plainCode(atom->string())));
- break;
-
- case Atom::CodeQuoteArgument:
- if (quoteCommand == "dots") {
- writer.writeAttribute("indent", atom->string());
- writer.writeCharacters("...");
- } else
- writer.writeCharacters(atom->string());
- writer.writeEndElement(); // code
- break;
-
- case Atom::CodeQuoteCommand:
- quoteCommand = atom->string();
- writer.writeStartElement(quoteCommand);
- break;
-
- case Atom::FootnoteLeft:
- writer.writeStartElement("footnote");
- break;
-
- case Atom::FootnoteRight:
- writer.writeEndElement(); // footnote
- break;
-/*
- case Atom::FormatElse:
- writer.writeStartElement("else");
- writer.writeEndElement(); // else
- break;
-*/
- case Atom::FormatEndif:
- writer.writeEndElement(); // raw
- break;
- case Atom::FormatIf:
- writer.writeStartElement("raw");
- writer.writeAttribute("format", atom->string());
- break;
- case Atom::FormattingLeft:
- {
- if (atom->string() == ATOM_FORMATTING_BOLD)
- writer.writeStartElement("bold");
- else if (atom->string() == ATOM_FORMATTING_ITALIC)
- writer.writeStartElement("italic");
- else if (atom->string() == ATOM_FORMATTING_UNDERLINE)
- writer.writeStartElement("underline");
- else if (atom->string() == ATOM_FORMATTING_SUBSCRIPT)
- writer.writeStartElement("subscript");
- else if (atom->string() == ATOM_FORMATTING_SUPERSCRIPT)
- writer.writeStartElement("superscript");
- else if (atom->string() == ATOM_FORMATTING_TELETYPE)
- writer.writeStartElement("teletype");
- else if (atom->string() == ATOM_FORMATTING_PARAMETER)
- writer.writeStartElement("argument");
- else if (atom->string() == ATOM_FORMATTING_INDEX)
- writer.writeStartElement("index");
- }
- break;
-/* out() << formattingLeftMap()[atom->string()];
- if ( atom->string() == ATOM_FORMATTING_PARAMETER ) {
- if ( atom->next() != 0 && atom->next()->type() == Atom::String ) {
- QRegExp subscriptRegExp( "([a-z]+)_([0-9n])" );
- if ( subscriptRegExp.exactMatch(atom->next()->string()) ) {
- out() << subscriptRegExp.cap( 1 ) << "<sub>"
- << subscriptRegExp.cap( 2 ) << "</sub>";
- skipAhead = 1;
- }
- }
- }*/
- case Atom::FormattingRight:
- {
- if (atom->string() == ATOM_FORMATTING_BOLD)
- writer.writeEndElement();
- else if (atom->string() == ATOM_FORMATTING_ITALIC)
- writer.writeEndElement();
- else if (atom->string() == ATOM_FORMATTING_UNDERLINE)
- writer.writeEndElement();
- else if (atom->string() == ATOM_FORMATTING_SUBSCRIPT)
- writer.writeEndElement();
- else if (atom->string() == ATOM_FORMATTING_SUPERSCRIPT)
- writer.writeEndElement();
- else if (atom->string() == ATOM_FORMATTING_TELETYPE)
- writer.writeEndElement();
- else if (atom->string() == ATOM_FORMATTING_PARAMETER)
- writer.writeEndElement();
- else if (atom->string() == ATOM_FORMATTING_INDEX)
- writer.writeEndElement();
- }
- if (inLink) {
- writer.writeEndElement(); // link
- inLink = false;
- }
- break;
-/* if ( atom->string() == ATOM_FORMATTING_LINK ) {
- if (inLink) {
- if ( link.isEmpty() ) {
- if (showBrokenLinks)
- out() << "</i>";
- } else {
- out() << "</a>";
- }
- }
- inLink = false;
- } else {
- out() << formattingRightMap()[atom->string()];
- }*/
- case Atom::GeneratedList:
- writer.writeStartElement("generatedlist");
- writer.writeAttribute("contents", atom->string());
- writer.writeEndElement(); // generatedlist
-/*
- if (atom->string() == "annotatedclasses") {
- generateAnnotatedList(relative, marker, nonCompatClasses);
- } else if (atom->string() == "classes") {
- generateCompactList(relative, marker, nonCompatClasses);
- } else if (atom->string().contains("classesbymodule")) {
- QString arg = atom->string().trimmed();
- QString moduleName = atom->string().mid(atom->string().indexOf(
- "classesbymodule") + 15).trimmed();
- if (moduleClassMap.contains(moduleName))
- generateAnnotatedList(relative, marker, moduleClassMap[moduleName]);
- } else if (atom->string().contains("classesbyedition")) {
- QString arg = atom->string().trimmed();
- QString editionName = atom->string().mid(atom->string().indexOf(
- "classesbyedition") + 16).trimmed();
- if (editionModuleMap.contains(editionName)) {
- QMap<QString, const Node *> editionClasses;
- foreach (const QString &moduleName, editionModuleMap[editionName]) {
- if (moduleClassMap.contains(moduleName))
- editionClasses.unite(moduleClassMap[moduleName]);
- }
- generateAnnotatedList(relative, marker, editionClasses);
- }
- } else if (atom->string() == "classhierarchy") {
- generateClassHierarchy(relative, marker, nonCompatClasses);
- } else if (atom->string() == "compatclasses") {
- generateCompactList(relative, marker, compatClasses);
- } else if (atom->string() == "functionindex") {
- generateFunctionIndex(relative, marker);
- } else if (atom->string() == "legalese") {
- generateLegaleseList(relative, marker);
- } else if (atom->string() == "mainclasses") {
- generateCompactList(relative, marker, mainClasses);
- } else if (atom->string() == "services") {
- generateCompactList(relative, marker, serviceClasses);
- } else if (atom->string() == "overviews") {
- generateOverviewList(relative, marker);
- } else if (atom->string() == "namespaces") {
- generateAnnotatedList(relative, marker, namespaceIndex);
- } else if (atom->string() == "related") {
- const FakeNode *fake = static_cast<const FakeNode *>(relative);
- if (fake && !fake->groupMembers().isEmpty()) {
- QMap<QString, const Node *> groupMembersMap;
- foreach (Node *node, fake->groupMembers()) {
- if (node->type() == Node::Fake)
- groupMembersMap[fullName(node, relative, marker)] = node;
- }
- generateAnnotatedList(fake, marker, groupMembersMap);
- }
- } else if (atom->string() == "relatedinline") {
- const FakeNode *fake = static_cast<const FakeNode *>(relative);
- if (fake && !fake->groupMembers().isEmpty()) {
- // Reverse the list into the original scan order.
- // Should be sorted. But on what? It may not be a
- // regular class or page definition.
- QList<const Node *> list;
- foreach (const Node *node, fake->groupMembers())
- list.prepend(node);
- foreach (const Node *node, list)
- generateBody(node, marker );
- }
- }
- break;
-*/
- break;
- case Atom::Image:
- writer.writeStartElement("image");
- writer.writeAttribute("href", imageFileName(relative, atom->string()));
- writer.writeEndElement(); // image
- break;
-
- case Atom::InlineImage:
- writer.writeStartElement("inlineimage");
- writer.writeAttribute("href", imageFileName(relative, atom->string()));
- writer.writeEndElement(); // inlineimage
- break;
-
- case Atom::ImageText:
- break;
-
- case Atom::LegaleseLeft:
- writer.writeStartElement("legalese");
- break;
-
- case Atom::LegaleseRight:
- writer.writeEndElement(); // legalese
- break;
-
- case Atom::Link:
- case Atom::LinkNode:
- if (!inLink) {
- const Node *node = findNode(atom, relative, marker);
- if (node)
- startLink(writer, atom, node, relative);
- }
- break;
-
- case Atom::ListLeft:
- writer.writeStartElement("list");
-
- if (atom->string() == ATOM_LIST_BULLET)
- writer.writeAttribute("type", "bullet");
- else if (atom->string() == ATOM_LIST_TAG)
- writer.writeAttribute("type", "definition");
- else if (atom->string() == ATOM_LIST_VALUE)
- writer.writeAttribute("type", "enum");
- else {
- writer.writeAttribute("type", "ordered");
- if (atom->string() == ATOM_LIST_UPPERALPHA)
- writer.writeAttribute("start", "A");
- else if (atom->string() == ATOM_LIST_LOWERALPHA)
- writer.writeAttribute("start", "a");
- else if (atom->string() == ATOM_LIST_UPPERROMAN)
- writer.writeAttribute("start", "I");
- else if (atom->string() == ATOM_LIST_LOWERROMAN)
- writer.writeAttribute("start", "i");
- else // (atom->string() == ATOM_LIST_NUMERIC)
- writer.writeAttribute("start", "1");
- }
- break;
-
- case Atom::ListItemNumber:
- break;
-
- case Atom::ListTagLeft:
- {
- writer.writeStartElement("definition");
-
- writer.writeTextElement("term", plainCode(
- marker->markedUpEnumValue(atom->next()->string(), relative)));
- }
- break;
-
- case Atom::ListTagRight:
- writer.writeEndElement(); // definition
- break;
-
- case Atom::ListItemLeft:
- writer.writeStartElement("item");
- break;
-
- case Atom::ListItemRight:
- writer.writeEndElement(); // item
- break;
-
- case Atom::ListRight:
- writer.writeEndElement(); // list
- break;
-
- case Atom::Nop:
- break;
-
- case Atom::ParaLeft:
- writer.writeStartElement("para");
- break;
-
- case Atom::ParaRight:
- writer.writeEndElement(); // para
- break;
-
- case Atom::QuotationLeft:
- writer.writeStartElement("quote");
- break;
-
- case Atom::QuotationRight:
- writer.writeEndElement(); // quote
- break;
-
- case Atom::RawString:
- writer.writeCharacters(atom->string());
- break;
-
- case Atom::SectionLeft:
- writer.writeStartElement("section");
- writer.writeAttribute("id", Doc::canonicalTitle(Text::sectionHeading(atom).toString()));
- break;
-
- case Atom::SectionRight:
- writer.writeEndElement(); // section
- break;
-
- case Atom::SectionHeadingLeft:
- writer.writeStartElement("heading");
- writer.writeAttribute("level", atom->string()); // + hOffset(relative)
- inSectionHeading = true;
- break;
-
- case Atom::SectionHeadingRight:
- writer.writeEndElement(); // heading
- inSectionHeading = false;
- break;
-
- case Atom::SidebarLeft:
- case Atom::SidebarRight:
- break;
-
- case Atom::SnippetCommand:
- writer.writeStartElement(atom->string());
- break;
-
- case Atom::SnippetIdentifier:
- writer.writeAttribute("identifier", atom->string());
- writer.writeEndElement(); // snippet
- break;
-
- case Atom::SnippetLocation:
- writer.writeAttribute("location", atom->string());
- break;
-
- case Atom::String:
- writer.writeCharacters(atom->string());
- break;
-
- case Atom::TableLeft:
- writer.writeStartElement("table");
- if (atom->string().contains("%"))
- writer.writeAttribute("width", atom->string());
- break;
-
- case Atom::TableRight:
- writer.writeEndElement(); // table
- break;
-
- case Atom::TableHeaderLeft:
- writer.writeStartElement("header");
- break;
-
- case Atom::TableHeaderRight:
- writer.writeEndElement(); // header
- break;
-
- case Atom::TableRowLeft:
- writer.writeStartElement("row");
- break;
-
- case Atom::TableRowRight:
- writer.writeEndElement(); // row
- break;
-
- case Atom::TableItemLeft:
- {
- writer.writeStartElement("item");
- QStringList spans = atom->string().split(",");
- if (spans.size() == 2) {
- if (spans.at(0) != "1")
- writer.writeAttribute("colspan", spans.at(0).trimmed());
- if (spans.at(1) != "1")
- writer.writeAttribute("rowspan", spans.at(1).trimmed());
- }
- }
- break;
-
- case Atom::TableItemRight:
- writer.writeEndElement(); // item
- break;
-
- case Atom::TableOfContents:
- writer.writeStartElement("tableofcontents");
- writer.writeAttribute("details", atom->string());
- {
- int numColumns = 1;
- const Node *node = relative;
-
- Doc::SectioningUnit sectioningUnit = Doc::Section4;
- QStringList params = atom->string().split(",");
- QString columnText = params.at(0);
- QStringList pieces = columnText.split(" ", QString::SkipEmptyParts);
- if (pieces.size() >= 2) {
- columnText = pieces.at(0);
- pieces.pop_front();
- QString path = pieces.join(" ").trimmed();
- node = findNode(path, relative, marker);
- if (node)
- writer.writeAttribute("href", fileName(node));
- }
-
- if (params.size() == 2) {
- numColumns = qMax(columnText.toInt(), numColumns);
- sectioningUnit = (Doc::SectioningUnit)params.at(1).toInt();
- writer.writeAttribute("columns", QString::number(numColumns));
- writer.writeAttribute("unit", QString::number(sectioningUnit));
- }
-
- if (node)
- generateTableOfContents(writer, node, sectioningUnit, numColumns,
- relative);
- }
- writer.writeEndElement(); // tableofcontents
- break;
-
- case Atom::Target:
- writer.writeStartElement("target");
- writer.writeAttribute("name", Doc::canonicalTitle(atom->string()));
- writer.writeEndElement(); // target
- break;
-
- case Atom::UnhandledFormat:
- case Atom::UnknownCommand:
- writer.writeCharacters(atom->typeString());
- break;
- default:
- break;
- }
-
- if (atom)
- return atom->next();
-
- return 0;
-}
-/*
- QDomElement atomElement = document.createElement(atom->typeString().toLower());
- QDomText atomValue = document.createTextNode(atom->string());
- atomElement.appendChild(atomValue);
- descriptionElement.appendChild(atomElement);
-*/
-
-/*
- ### Warning: findNode() is a modified version of HtmlGenerator::getLink().
-*/
-const Node *WebXMLGenerator::findNode(const Atom *atom, const Node *relative, CodeMarker *marker)
-{
- return findNode(atom->string(), relative, marker);
-}
-
-const Node *WebXMLGenerator::findNode(const QString &title, const Node *relative, CodeMarker *marker)
-{
- QString link;
- if (title.contains(":") &&
- (title.startsWith("file:")
- || title.startsWith("http:")
- || title.startsWith("https:")
- || title.startsWith("ftp:")
- || title.startsWith("mailto:"))) {
-
- return 0;
- } else if (title.count('@') == 1) {
- return 0;
- } else {
- QStringList path;
- if (title.contains('#')) {
- path = title.split('#');
- } else {
- path.append(title);
- }
-
- const Node *node = 0;
- Atom *targetAtom = 0;
-
- QString first = path.first().trimmed();
- if (first.isEmpty()) {
- node = relative;
- } else if (first.endsWith(".html")) {
- node = tre->root()->findNode(first, Node::Fake);
- } else {
- node = marker->resolveTarget(first, tre, relative);
- if (!node)
- node = tre->findFakeNodeByTitle(first);
- if (!node)
- node = tre->findUnambiguousTarget(first, targetAtom);
- }
-
- if (node) {
- if (!node->url().isEmpty())
- return node;
- else
- path.removeFirst();
- } else {
- return 0;
- }
-
- while (!path.isEmpty()) {
- targetAtom = tre->findTarget(path.first(), node);
- if (targetAtom == 0)
- break;
- path.removeFirst();
- }
-/* We would ideally treat targets as nodes to be consistent.
- if (targetAtom && node && node->isInnerNode()) {
- Node *parentNode = const_cast<Node *>(node);
- node = new TargetNode(static_cast<InnerNode*>(parentNode), first);
- }
-*/
- return node;
- }
- return 0;
-}
-
-void WebXMLGenerator::startLink(QXmlStreamWriter &writer, const Atom *atom,
- const Node *node, const Node *relative)
-{
- QString location = tre->fullDocumentLocation(node);
- if (!location.isEmpty()) {
- writer.writeStartElement("link");
- writer.writeAttribute("raw", atom->string());
- if (atom->string().contains("#") || node == relative) {
- QString target = atom->string().split("#").last();
- Atom *targetAtom = tre->findTarget(target, node);
- if (targetAtom)
- location += "#" + Doc::canonicalTitle(target);
- }
- writer.writeAttribute("href", location);
- QString type = targetType(node);
- writer.writeAttribute("type", type);
- switch (node->type()) {
- case Node::Enum:
- writer.writeAttribute("enum", tre->fullDocumentName(node));
- break;
- case Node::Fake:
- writer.writeAttribute("page", tre->fullDocumentName(node));
- break;
- case Node::Property:
- {
- const PropertyNode *propertyNode = static_cast<const PropertyNode *>(node);
- if (propertyNode->getters().size() > 0)
- writer.writeAttribute("getter", tre->fullDocumentName(propertyNode->getters()[0]));
- }
- default:
- ;
- }
- inLink = true;
- }
-}
-
-QString WebXMLGenerator::targetType(const Node *node)
-{
- switch (node->type()) {
- case Node::Namespace:
- return "namespace";
- break;
- case Node::Class:
- return "class";
- break;
- case Node::Fake:
- return "page";
- break;
- case Node::Enum:
- return "enum";
- break;
- case Node::Typedef:
- return "typedef";
- break;
- case Node::Property:
- return "property";
- break;
- case Node::Function:
- return "function";
- break;
- case Node::Variable:
- return "variable";
- break;
- case Node::Target:
- return "target";
- break;
- default:
- return "";
- }
- return "";
-}
-
-void WebXMLGenerator::generateRelations(QXmlStreamWriter &writer, const Node *node, CodeMarker *marker)
-{
- if (node && !node->links().empty()) {
- QPair<QString,QString> linkPair;
- QPair<QString,QString> anchorPair;
- const Node *linkNode;
-
- foreach (Node::LinkType relation, node->links().keys()) {
-
- linkPair = node->links()[relation];
- linkNode = findNode(linkPair.first, node, marker);
-
- if (!linkNode)
- linkNode = node;
-
- if (linkNode == node)
- anchorPair = linkPair;
- else
- anchorPair = anchorForNode(linkNode);
-
- writer.writeStartElement("relation");
- writer.writeAttribute("href", anchorPair.first);
- writer.writeAttribute("type", targetType(linkNode));
-
- switch (relation) {
- case Node::StartLink:
- writer.writeAttribute("meta", "start");
- break;
- case Node::NextLink:
- writer.writeAttribute("meta", "next");
- break;
- case Node::PreviousLink:
- writer.writeAttribute("meta", "previous");
- break;
- case Node::ContentsLink:
- writer.writeAttribute("meta", "contents");
- break;
- case Node::IndexLink:
- writer.writeAttribute("meta", "index");
- break;
- default:
- writer.writeAttribute("meta", "");
- }
- writer.writeAttribute("description", anchorPair.second);
- writer.writeEndElement(); // link
- }
- }
-}
-
-// Classes adapted from HtmlGenerator.
-
-void WebXMLGenerator::generateTableOfContents(QXmlStreamWriter &writer, const Node *node,
- Doc::SectioningUnit sectioningUnit,
- int numColumns, const Node *relative)
-
-{
- if (!node->doc().hasTableOfContents())
- return;
- QList<Atom *> toc = node->doc().tableOfContents();
- if (toc.isEmpty())
- return;
-
- QString nodeName = "";
- if (node != relative)
- nodeName = node->name();
-
- QStringList sectionNumber;
- int columnSize = 0;
-
- if (numColumns > 1) {
- writer.writeStartElement("table");
- writer.writeAttribute("width", "100%");
- writer.writeStartElement("row");
- writer.writeStartElement("item");
- writer.writeAttribute("width", QString::number((100 + numColumns - 1) / numColumns) + "%");
- }
-
- // disable nested links in table of contents
- inContents = true;
- inLink = true;
-
- for (int i = 0; i < toc.size(); ++i) {
- Atom *atom = toc.at(i);
-
- int nextLevel = atom->string().toInt();
- if (nextLevel > (int)sectioningUnit)
- continue;
-
- if (sectionNumber.size() < nextLevel) {
- do {
- writer.writeStartElement("list");
- sectionNumber.append("1");
- } while (sectionNumber.size() < nextLevel);
- } else {
- while (sectionNumber.size() > nextLevel) {
- writer.writeEndElement();
- sectionNumber.removeLast();
- }
- sectionNumber.last() = QString::number(sectionNumber.last().toInt() + 1);
- }
- Text headingText = Text::sectionHeading(atom);
-
- if (sectionNumber.size() == 1 && columnSize > toc.size() / numColumns) {
- writer.writeEndElement(); // list
- writer.writeEndElement(); // item
- writer.writeStartElement("item");
- writer.writeAttribute("width", QString::number((100 + numColumns - 1) / numColumns) + "%");
- writer.writeStartElement("list");
- columnSize = 0;
- }
-
- writer.writeStartElement("item");
- writer.writeStartElement("para");
- writer.writeStartElement("link");
- writer.writeAttribute("href", nodeName + "#" + Doc::canonicalTitle(headingText.toString()));
- writer.writeAttribute("type", "page");
- writer.writeCharacters(headingText.toString());
- writer.writeEndElement(); // link
- writer.writeEndElement(); // para
- writer.writeEndElement(); // item
-
- ++columnSize;
- }
- while (!sectionNumber.isEmpty()) {
- writer.writeEndElement(); // list
- sectionNumber.removeLast();
- }
-
- if (numColumns > 1) {
- writer.writeEndElement(); // item
- writer.writeEndElement(); // row
- writer.writeEndElement(); // table
- }
-
- inContents = false;
- inLink = false;
-}
-
-void WebXMLGenerator::generateAnnotatedList(QXmlStreamWriter &writer,
- const Node *relative, CodeMarker *marker, const QMap<QString, const Node *> &nodeMap)
-{
- writer.writeStartElement("table");
- writer.writeAttribute("width", "100%");
-
- foreach (QString name, nodeMap.keys()) {
- const Node *node = nodeMap[name];
-
- writer.writeStartElement("row");
- writer.writeStartElement("heading");
- generateFullName(writer, node, relative, marker);
- writer.writeEndElement(); // heading
-
- writer.writeStartElement("item");
- writer.writeCharacters(node->doc().briefText().toString());
- writer.writeEndElement(); // item
- writer.writeEndElement(); // row
- }
- writer.writeEndElement(); // table
-}
-
-void WebXMLGenerator::generateFullName(QXmlStreamWriter &writer,
- const Node *apparentNode, const Node *relative, CodeMarker *marker,
- const Node *actualNode)
-{
- if ( actualNode == 0 )
- actualNode = apparentNode;
- writer.writeStartElement("link");
- writer.writeAttribute("href", tre->fullDocumentLocation(actualNode));
- writer.writeAttribute("type", targetType(actualNode));
- writer.writeCharacters(fullName(apparentNode, relative, marker));
- writer.writeEndElement(); // link
-}
-
-// Classes copied (and slightly adapted) from the HtmlGenerator. These need
-// refactoring into a common ancestor class.
-
-void WebXMLGenerator::findAllClasses(const InnerNode *node)
-{
- NodeList::const_iterator c = node->childNodes().constBegin();
- while (c != node->childNodes().constEnd()) {
- if ((*c)->access() != Node::Private && (*c)->url().isEmpty()) {
- if ((*c)->type() == Node::Class && !(*c)->doc().isEmpty()) {
- QString className = (*c)->name();
- if ((*c)->parent() && (*c)->parent()->type() == Node::Namespace &&
- !(*c)->parent()->name().isEmpty())
- className = (*c)->parent()->name()+"::"+className;
-
- QString moduleName = (*c)->moduleName();
- if (!moduleName.isEmpty())
- moduleClassMap[moduleName].insert((*c)->name(), *c);
-
- QString serviceName =
- (static_cast<const ClassNode *>(*c))->serviceName();
- if (!serviceName.isEmpty())
- serviceClasses.insert(serviceName, *c);
- } else if ((*c)->isInnerNode()) {
- findAllClasses(static_cast<InnerNode *>(*c));
- }
- }
- ++c;
- }
-}
-
-void WebXMLGenerator::findAllNamespaces(const InnerNode *node)
-{
- NodeList::ConstIterator c = node->childNodes().begin();
- while (c != node->childNodes().end()) {
- if ((*c)->access() != Node::Private) {
- if ((*c)->isInnerNode() && (*c)->url().isEmpty()) {
- findAllNamespaces(static_cast<const InnerNode *>(*c));
- if ((*c)->type() == Node::Namespace) {
- const NamespaceNode *nspace = static_cast<const NamespaceNode *>(*c);
- // Ensure that the namespace's name is not empty (the root
- // namespace has no name).
- if (!nspace->name().isEmpty()) {
- namespaceIndex.insert(nspace->name(), *c);
- QString moduleName = (*c)->moduleName();
- if (!moduleName.isEmpty())
- moduleNamespaceMap[moduleName].insert((*c)->name(), *c);
- }
- }
- }
- }
- ++c;
- }
-}
-
-const QPair<QString,QString> WebXMLGenerator::anchorForNode(const Node *node)
-{
- QPair<QString,QString> anchorPair;
-
- anchorPair.first = PageGenerator::fileName(node);
- if (node->type() == Node::Fake) {
- const FakeNode *fakeNode = static_cast<const FakeNode*>(node);
- anchorPair.second = fakeNode->title();
- }
-
- return anchorPair;
-}
-
-QT_END_NAMESPACE
diff --git a/tools/qdoc3/webxmlgenerator.h b/tools/qdoc3/webxmlgenerator.h
deleted file mode 100644
index 071896a36b..0000000000
--- a/tools/qdoc3/webxmlgenerator.h
+++ /dev/null
@@ -1,127 +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 tools applications 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$
-**
-****************************************************************************/
-
-/*
- WebXMLGenerator.h
-*/
-
-#ifndef WEBXMLGENERATOR_H
-#define WEBXMLGENERATOR_H
-
-#include <QtCore/qxmlstream.h>
-
-#include "codemarker.h"
-#include "config.h"
-#include "pagegenerator.h"
-
-QT_BEGIN_NAMESPACE
-
-class QXmlStreamReader;
-class QXmlStreamWriter;
-
-class WebXMLGenerator : public PageGenerator
-{
-public:
- WebXMLGenerator();
- ~WebXMLGenerator();
-
- virtual void initializeGenerator(const Config &config);
- virtual void terminateGenerator();
- virtual QString format();
- virtual void generateTree(const Tree *tree, CodeMarker *marker);
-
-protected:
- virtual void startText( const Node *relative, CodeMarker *marker );
- virtual int generateAtom(QXmlStreamWriter &writer, const Atom *atom,
- const Node *relative, CodeMarker *marker );
- virtual void generateClassLikeNode(const InnerNode *inner, CodeMarker *marker);
- virtual void generateFakeNode(const FakeNode *fake, CodeMarker *marker);
- virtual QString fileExtension(const Node *node) const;
-
- virtual const Atom *addAtomElements(QXmlStreamWriter &writer, const Atom *atom,
- const Node *relative, CodeMarker *marker);
- virtual void generateIndexSections(QXmlStreamWriter &writer, const Node *node,
- CodeMarker *marker);
- virtual void generateInnerNode( const InnerNode *node, CodeMarker *marker );
-
-private:
- const QPair<QString,QString> anchorForNode(const Node *node);
- void findAllClasses(const InnerNode *node);
- void findAllNamespaces(const InnerNode *node);
- const Node *findNode(const Atom *atom, const Node *relative, CodeMarker *marker);
- const Node *findNode(const QString &title, const Node *relative, CodeMarker *marker);
- void generateAnnotatedList(QXmlStreamWriter &writer, const Node *relative,
- CodeMarker *marker, const QMap<QString,
- const Node *> &nodeMap);
- void generateFullName(QXmlStreamWriter &writer, const Node *apparentNode,
- const Node *relative, CodeMarker *marker,
- const Node *actualNode = 0);
- void generateRelations(QXmlStreamWriter &writer, const Node *node, CodeMarker *marker);
- void generateTableOfContents(QXmlStreamWriter &writer, const Node *node,
- Doc::SectioningUnit sectioningUnit,
- int numColumns, const Node *relative);
- void startLink(QXmlStreamWriter &writer, const Atom *atom, const Node *node,
- const Node *relative);
- QString targetType(const Node *node);
-
- const Tree *tre;
- bool generateIndex;
- bool inLink;
- bool inContents;
- bool inSectionHeading;
- bool inTableHeader;
- int numTableRows;
- bool threeColumnEnumValueTable;
- QMap<QString, QMap<QString, const Node *> > moduleClassMap;
- QMap<QString, QMap<QString, const Node *> > moduleNamespaceMap;
- QMap<QString, const Node *> namespaceIndex;
- QMap<QString, const Node *> serviceClasses;
- QString link;
- QString project;
- QString projectDescription;
- QString projectUrl;
- QString quoteCommand;
- QStringList sectionNumber;
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/tools/qmeegographicssystemhelper/qmeegofencesync.cpp b/tools/qmeegographicssystemhelper/qmeegofencesync.cpp
new file mode 100644
index 0000000000..499e10292f
--- /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 0000000000..2d3f5c5841
--- /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/qdoc3/sgmlgenerator.h b/tools/qmeegographicssystemhelper/qmeegofencesync_p.h
index ef1f07fe5d..8a5d26e5a5 100644
--- a/tools/qdoc3/sgmlgenerator.h
+++ b/tools/qmeegographicssystemhelper/qmeegofencesync_p.h
@@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the tools applications of the Qt Toolkit.
+** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -39,29 +39,22 @@
**
****************************************************************************/
-/*
- sgmlgenerator.h
-*/
+#include "qmeegofencesync.h"
-#ifndef SGMLGENERATOR_H
-#define SGMLGENERATOR_H
+#ifndef QMEEGOFENCESYNC_P_H
+#define QMEEGOFENCESYNC_P_H
-#include "bookgenerator.h"
-
-QT_BEGIN_NAMESPACE
-
-class SgmlGenerator : public BookGenerator
+class QMeeGoFenceSyncPrivate
{
public:
- SgmlGenerator();
- ~SgmlGenerator();
+ Q_DECLARE_PUBLIC(QMeeGoFenceSync);
+ QMeeGoFenceSyncPrivate();
- virtual QString format();
+ virtual ~QMeeGoFenceSyncPrivate();
-protected:
- // ###
-};
+ void* syncObject;
-QT_END_NAMESPACE
+ QMeeGoFenceSync *q_ptr;
+};
#endif
diff --git a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.cpp b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.cpp
index d348e70c9d..b660eb37ea 100644
--- a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.cpp
+++ b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.cpp
@@ -46,6 +46,7 @@
#include <private/qgraphicssystem_runtime_p.h>
#include <private/qpixmap_raster_p.h>
#include "qmeegoruntime.h"
+#include "qmeegoswitchevent.h"
QString QMeeGoGraphicsSystemHelper::runningGraphicsSystemName()
{
@@ -81,8 +82,16 @@ void QMeeGoGraphicsSystemHelper::switchToMeeGo()
if (QApplicationPrivate::instance()->graphics_system_name != QLatin1String("runtime"))
qWarning("Can't switch to meego - switching only supported with 'runtime' graphics system.");
else {
+ QMeeGoSwitchEvent willSwitchEvent(QLatin1String("meego"), QMeeGoSwitchEvent::WillSwitch);
+ foreach (QWidget *widget, QApplication::topLevelWidgets())
+ QCoreApplication::sendEvent(widget, &willSwitchEvent);
+
QApplication *app = static_cast<QApplication *>(QCoreApplication::instance());
app->setGraphicsSystem(QLatin1String("meego"));
+
+ QMeeGoSwitchEvent didSwitchEvent(QLatin1String("meego"), QMeeGoSwitchEvent::DidSwitch);
+ foreach (QWidget *widget, QApplication::topLevelWidgets())
+ QCoreApplication::sendEvent(widget, &didSwitchEvent);
}
}
@@ -94,8 +103,16 @@ void QMeeGoGraphicsSystemHelper::switchToRaster()
if (QApplicationPrivate::instance()->graphics_system_name != QLatin1String("runtime"))
qWarning("Can't switch to raster - switching only supported with 'runtime' graphics system.");
else {
+ QMeeGoSwitchEvent willSwitchEvent(QLatin1String("raster"), QMeeGoSwitchEvent::WillSwitch);
+ foreach (QWidget *widget, QApplication::topLevelWidgets())
+ QCoreApplication::sendEvent(widget, &willSwitchEvent);
+
QApplication *app = static_cast<QApplication *>(QCoreApplication::instance());
app->setGraphicsSystem(QLatin1String("raster"));
+
+ QMeeGoSwitchEvent didSwitchEvent(QLatin1String("raster"), QMeeGoSwitchEvent::DidSwitch);
+ foreach (QWidget *widget, QApplication::topLevelWidgets())
+ QCoreApplication::sendEvent(widget, &didSwitchEvent);
}
}
diff --git a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h
index 2bb75eb9b6..d47c8291ed 100644
--- a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h
+++ b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h
@@ -102,6 +102,9 @@ public:
When running with the 'runtime' graphics system, sets the currently active
system to 'meego'. The window surface and all the resources are automatically
migrated to OpenGL. Will fail if the active graphics system is not 'runtime'.
+ Calling this function will emit QMeeGoSwitchEvent to the top level widgets.
+ Two events will be emitted for each switch -- one before the switch (QMeeGoSwitchEvent::WillSwitch)
+ and one after the switch (QMeeGoSwitchEvent::DidSwitch).
*/
static void switchToMeeGo();
@@ -111,6 +114,9 @@ public:
system to 'raster'. The window surface and the graphics resources (including the
EGL shared image resources) are automatically migrated back to the CPU. All OpenGL
resources (surface, context, cache, font cache) are automaticall anihilated.
+ Calling this function will emit QMeeGoSwitchEvent to the top level widgets.
+ Two events will be emitted for each switch -- one before the switch (QMeeGoSwitchEvent::WillSwitch)
+ and one after the switch (QMeeGoSwitchEvent::DidSwitch).
*/
static void switchToRaster();
@@ -147,7 +153,7 @@ public:
//! Destroys an EGL shared image.
/*!
Destroys an EGLSharedImage previously created with an ::imageToEGLSharedImage call.
- Returns true if the image was found and the destruction was successfull. Notice that
+ Returns true if the image was found and the destruction was successful. Notice that
this destroys the image for all processes using it.
*/
static bool destroyEGLSharedImage(Qt::HANDLE handle);
diff --git a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro
index 4d69fac17d..360847ee21 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
+HEADERS = qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h qmeegofencesync.h qmeegofencesync_p.h qmeegoswitchevent.h
+SOURCES = qmeegographicssystemhelper.cpp qmeegooverlaywidget.cpp qmeegoruntime.cpp qmeegolivepixmap.cpp qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h qmeegofencesync.h qmeegofencesync_p.h qmeegofencesync.cpp qmeegoswitchevent.cpp qmeegoswitchevent.h
diff --git a/tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp b/tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp
index b9dbb2b015..9700581f69 100644
--- a/tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp
+++ b/tools/qmeegographicssystemhelper/qmeegolivepixmap.cpp
@@ -40,15 +40,13 @@
****************************************************************************/
#include "qmeegolivepixmap.h"
-#include <private/qimage_p.h>
-#include <private/qpixmap_raster_p.h>
#include "qmeegolivepixmap_p.h"
+#include "qmeegofencesync_p.h"
#include "qmeegoruntime.h"
-#include <QSharedMemory>
/* QMeeGoLivePixmapPrivate */
-QMeeGoLivePixmapPrivate::QMeeGoLivePixmapPrivate(Qt::HANDLE h) : handle(h)
+QMeeGoLivePixmapPrivate::QMeeGoLivePixmapPrivate()
{
}
@@ -60,7 +58,7 @@ QMeeGoLivePixmapPrivate::~QMeeGoLivePixmapPrivate()
QMeeGoLivePixmap* QMeeGoLivePixmap::livePixmapWithSize(int w, int h, Format format)
{
- QImage::Format qtFormat;
+ QImage::Format qtFormat;
if (format == Format_RGB16)
qtFormat = QImage::Format_RGB16;
else if (format == Format_ARGB32_Premultiplied)
@@ -69,17 +67,17 @@ QMeeGoLivePixmap* QMeeGoLivePixmap::livePixmapWithSize(int w, int h, Format form
qWarning("Unsupported live pixmap format!");
return 0;
}
-
- Qt::HANDLE liveTextureHandle = QMeeGoRuntime::createLiveTexture(w, h, qtFormat);
- if (! liveTextureHandle) {
+
+ QPixmapData *pmd = QMeeGoRuntime::pixmapDataWithNewLiveTexture(w, h, qtFormat);
+ if (! pmd) {
qWarning("Failed to create a live texture with given size!");
return NULL;
}
- return QMeeGoLivePixmap::fromHandle(liveTextureHandle);
+ return new QMeeGoLivePixmap(pmd);
}
-QMeeGoLivePixmap::QMeeGoLivePixmap(QPixmapData *p, Qt::HANDLE h) : QPixmap(p), d_ptr(new QMeeGoLivePixmapPrivate(h))
+QMeeGoLivePixmap::QMeeGoLivePixmap(QPixmapData *p) : QPixmap(p), d_ptr(new QMeeGoLivePixmapPrivate())
{
Q_D(QMeeGoLivePixmap);
d->q_ptr = this;
@@ -87,57 +85,33 @@ QMeeGoLivePixmap::QMeeGoLivePixmap(QPixmapData *p, Qt::HANDLE h) : QPixmap(p), d
QMeeGoLivePixmap* QMeeGoLivePixmap::fromHandle(Qt::HANDLE liveTextureHandle)
{
- Qt::HANDLE eglImage = QMeeGoRuntime::liveTextureToEGLImage(liveTextureHandle);
- if (! eglImage) {
- qWarning("Failed to bind the live texture as an egl image!");
- return NULL;
- }
-
- QPixmapData *pmd = QMeeGoRuntime::pixmapDataFromEGLImage(eglImage);
+ QPixmapData *pmd = QMeeGoRuntime::pixmapDataFromLiveTextureHandle(liveTextureHandle);
if (! pmd) {
- qWarning("Failed to allocate a pixmap data from a given live texture egl image!");
+ qWarning("Failed to create a live texture from given handle!");
return NULL;
}
-
- return new QMeeGoLivePixmap(pmd, liveTextureHandle);
+
+ return new QMeeGoLivePixmap(pmd);
}
Qt::HANDLE QMeeGoLivePixmap::handle()
{
- Q_D(QMeeGoLivePixmap);
- return d->handle;
+ return QMeeGoRuntime::getLiveTextureHandle(this);
}
QMeeGoLivePixmap::~QMeeGoLivePixmap()
{
}
-QImage* QMeeGoLivePixmap::lock()
+QImage* QMeeGoLivePixmap::lock(QMeeGoFenceSync *fenceSync)
{
- Q_D(QMeeGoLivePixmap);
-
- void *data = NULL;
- int pitch = 0;
-
- if (! QMeeGoRuntime::lockLiveTexture(d->handle)) {
- qWarning("Failed to lock a live texture!");
- return new QImage();
- }
-
- QMeeGoRuntime::queryLiveTexture(d->handle, &data, &pitch);
- if (data == NULL || pitch == 0) {
- qWarning("Failed to query the live texture!");
- return new QImage();
- }
-
- // FIXME Bug here! FIX FIX FIX FIX FIX FIX
- return new QImage((uchar *) data, width(), height(), QImage::Format_RGB16);
+ if (fenceSync)
+ return QMeeGoRuntime::lockLiveTexture(this, fenceSync->d_func()->syncObject);
+ else
+ return QMeeGoRuntime::lockLiveTexture(this, NULL);
}
-
+
void QMeeGoLivePixmap::release(QImage *img)
{
- Q_D(QMeeGoLivePixmap);
- // FIXME Make sure we're locked!
- QMeeGoRuntime::unlockLiveTexture(d->handle);
- delete img;
+ QMeeGoRuntime::releaseLiveTexture(this, img);
}
diff --git a/tools/qmeegographicssystemhelper/qmeegolivepixmap.h b/tools/qmeegographicssystemhelper/qmeegolivepixmap.h
index 12fe994bc4..51b5976e1f 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;
@@ -52,7 +53,7 @@ class QImage;
/*!
*/
-class QMeeGoLivePixmap : public QPixmap
+class Q_DECL_EXPORT QMeeGoLivePixmap : public QPixmap
{
public:
enum Format {
@@ -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.
/*!
@@ -96,7 +101,7 @@ public:
virtual ~QMeeGoLivePixmap();
private:
- QMeeGoLivePixmap(QPixmapData *p, Qt::HANDLE h);
+ QMeeGoLivePixmap(QPixmapData *p);
Q_DISABLE_COPY(QMeeGoLivePixmap)
Q_DECLARE_PRIVATE(QMeeGoLivePixmap)
diff --git a/tools/qmeegographicssystemhelper/qmeegolivepixmap_p.h b/tools/qmeegographicssystemhelper/qmeegolivepixmap_p.h
index 22347d6be3..78d955321e 100644
--- a/tools/qmeegographicssystemhelper/qmeegolivepixmap_p.h
+++ b/tools/qmeegographicssystemhelper/qmeegolivepixmap_p.h
@@ -48,11 +48,9 @@ class QMeeGoLivePixmapPrivate
{
public:
Q_DECLARE_PUBLIC(QMeeGoLivePixmap);
- QMeeGoLivePixmapPrivate(Qt::HANDLE handle);
+ QMeeGoLivePixmapPrivate();
virtual ~QMeeGoLivePixmapPrivate();
-
- Qt::HANDLE handle;
-
+
QMeeGoLivePixmap *q_ptr;
};
diff --git a/tools/qmeegographicssystemhelper/qmeegooverlaywidget.cpp b/tools/qmeegographicssystemhelper/qmeegooverlaywidget.cpp
index f9f14ae88a..b42a7ea7fe 100644
--- a/tools/qmeegographicssystemhelper/qmeegooverlaywidget.cpp
+++ b/tools/qmeegographicssystemhelper/qmeegooverlaywidget.cpp
@@ -42,7 +42,8 @@
#include <QDebug>
#include <QEvent>
#include <QMouseEvent>
-#include <QCoreApplication>
+#include <QApplication>
+#include <QDesktopWidget>
#include "qmeegooverlaywidget.h"
#include "qmeegographicssystemhelper.h"
#include "qmeegoruntime.h"
@@ -54,10 +55,12 @@ QMeeGoOverlayWidget::QMeeGoOverlayWidget(int surfaceWidth, int surfaceHeight, QW
if (! QMeeGoGraphicsSystemHelper::isRunningMeeGo())
qFatal("QMeeGoOverlayWidget can only be used when running with 'meego' graphics system!");
+ const QRect desktop = QApplication::desktop()->screenGeometry(parent);
+
QMeeGoRuntime::setSurfaceFixedSize(surfaceWidth, surfaceHeight);
- scaleW = sw / 864.0;
- scaleH = sh / 480.0;
+ scaleW = sw / desktop.width();
+ scaleH = sh / desktop.height();
installEventFilter(this);
}
diff --git a/tools/qmeegographicssystemhelper/qmeegooverlaywidget.h b/tools/qmeegographicssystemhelper/qmeegooverlaywidget.h
index c2c08b44fd..e67f59b99c 100644
--- a/tools/qmeegographicssystemhelper/qmeegooverlaywidget.h
+++ b/tools/qmeegographicssystemhelper/qmeegooverlaywidget.h
@@ -48,7 +48,7 @@
/*!
*/
-class QMeeGoOverlayWidget : public QWidget
+class Q_DECL_EXPORT QMeeGoOverlayWidget : public QWidget
{
public:
//! Constructs a new scaling widget.
diff --git a/tools/qmeegographicssystemhelper/qmeegoruntime.cpp b/tools/qmeegographicssystemhelper/qmeegoruntime.cpp
index 44f9f585a6..2d3ee3c2bd 100644
--- a/tools/qmeegographicssystemhelper/qmeegoruntime.cpp
+++ b/tools/qmeegographicssystemhelper/qmeegoruntime.cpp
@@ -44,6 +44,7 @@
#include <private/qlibrary_p.h>
#include <private/qfactoryloader_p.h>
#include <private/qgraphicssystemplugin_p.h>
+#include <stdio.h>
#define ENSURE_INITIALIZED {if (!initialized) initialize();}
@@ -51,36 +52,35 @@ bool QMeeGoRuntime::initialized = false;
typedef int (*QMeeGoImageToEglSharedImageFunc) (const QImage&);
typedef QPixmapData* (*QMeeGoPixmapDataFromEglSharedImageFunc) (Qt::HANDLE handle, const QImage&);
-typedef QPixmapData* (*QMeeGoPixmapDataFromEglImageFunc) (Qt::HANDLE handle);
typedef QPixmapData* (*QMeeGoPixmapDataWithGLTextureFunc) (int w, int h);
typedef bool (*QMeeGoDestroyEGLSharedImageFunc) (Qt::HANDLE handle);
typedef void (*QMeeGoUpdateEglSharedImagePixmapFunc) (QPixmap*);
typedef void (*QMeeGoSetSurfaceFixedSizeFunc) (int w, int h);
typedef void (*QMeeGoSetSurfaceScalingFunc) (int x, int y, int w, int h);
typedef void (*QMeeGoSetTranslucentFunc) (bool translucent);
-typedef Qt::HANDLE (*QMeeGoLiveTextureCreateFunc) (int w, int h, QImage::Format format);
-typedef bool (*QMeeGoLiveTextureLockFunc) (Qt::HANDLE h);
-typedef bool (*QMeeGoLiveTextureUnlockFunc) (Qt::HANDLE h);
-typedef void (*QMeeGoLiveTextureDestroyFunc) (Qt::HANDLE h);
-typedef void (*QMeeGoLiveTextureQueryFunc) (Qt::HANDLE h, void **data, int *pitch);
-typedef Qt::HANDLE (*QMeeGoLiveTextureToEglImageFunc) (Qt::HANDLE h);
+typedef QPixmapData* (*QMeeGoPixmapDataWithNewLiveTextureFunc) (int w, int h, QImage::Format format);
+typedef QPixmapData* (*QMeeGoPixmapDataFromLiveTextureHandleFunc) (Qt::HANDLE h);
+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;
-static QMeeGoPixmapDataFromEglImageFunc qt_meego_pixmapdata_from_egl_image = NULL;
static QMeeGoPixmapDataWithGLTextureFunc qt_meego_pixmapdata_with_gl_texture = NULL;
static QMeeGoDestroyEGLSharedImageFunc qt_meego_destroy_egl_shared_image = NULL;
static QMeeGoUpdateEglSharedImagePixmapFunc qt_meego_update_egl_shared_image_pixmap = NULL;
static QMeeGoSetSurfaceFixedSizeFunc qt_meego_set_surface_fixed_size = NULL;
static QMeeGoSetSurfaceScalingFunc qt_meego_set_surface_scaling = NULL;
static QMeeGoSetTranslucentFunc qt_meego_set_translucent = NULL;
-static QMeeGoLiveTextureCreateFunc qt_meego_live_texture_create = NULL;
+static QMeeGoPixmapDataWithNewLiveTextureFunc qt_meego_pixmapdata_with_new_live_texture = NULL;
+static QMeeGoPixmapDataFromLiveTextureHandleFunc qt_meego_pixmapdata_from_live_texture_handle = NULL;
static QMeeGoLiveTextureLockFunc qt_meego_live_texture_lock = NULL;
-static QMeeGoLiveTextureUnlockFunc qt_meego_live_texture_unlock = NULL;
-static QMeeGoLiveTextureDestroyFunc qt_meego_live_texture_destroy = NULL;
-static QMeeGoLiveTextureQueryFunc qt_meego_live_texture_query = NULL;
-static QMeeGoLiveTextureToEglImageFunc qt_meego_live_texture_to_egl_image = 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()
{
@@ -96,27 +96,30 @@ void QMeeGoRuntime::initialize()
if (success) {
qt_meego_image_to_egl_shared_image = (QMeeGoImageToEglSharedImageFunc) library.resolve("qt_meego_image_to_egl_shared_image");
qt_meego_pixmapdata_from_egl_shared_image = (QMeeGoPixmapDataFromEglSharedImageFunc) library.resolve("qt_meego_pixmapdata_from_egl_shared_image");
- qt_meego_pixmapdata_from_egl_image = (QMeeGoPixmapDataFromEglImageFunc) library.resolve("qt_meego_pixmapdata_from_egl_image");
qt_meego_pixmapdata_with_gl_texture = (QMeeGoPixmapDataWithGLTextureFunc) library.resolve("qt_meego_pixmapdata_with_gl_texture");
qt_meego_destroy_egl_shared_image = (QMeeGoDestroyEGLSharedImageFunc) library.resolve("qt_meego_destroy_egl_shared_image");
qt_meego_update_egl_shared_image_pixmap = (QMeeGoUpdateEglSharedImagePixmapFunc) library.resolve("qt_meego_update_egl_shared_image_pixmap");
qt_meego_set_surface_fixed_size = (QMeeGoSetSurfaceFixedSizeFunc) library.resolve("qt_meego_set_surface_fixed_size");
qt_meego_set_surface_scaling = (QMeeGoSetSurfaceScalingFunc) library.resolve("qt_meego_set_surface_scaling");
qt_meego_set_translucent = (QMeeGoSetTranslucentFunc) library.resolve("qt_meego_set_translucent");
- qt_meego_live_texture_create = (QMeeGoLiveTextureCreateFunc) library.resolve("qt_meego_live_texture_create");
+ qt_meego_pixmapdata_with_new_live_texture = (QMeeGoPixmapDataWithNewLiveTextureFunc) library.resolve("qt_meego_pixmapdata_with_new_live_texture");
+ qt_meego_pixmapdata_from_live_texture_handle = (QMeeGoPixmapDataFromLiveTextureHandleFunc) library.resolve("qt_meego_pixmapdata_from_live_texture_handle");
qt_meego_live_texture_lock = (QMeeGoLiveTextureLockFunc) library.resolve("qt_meego_live_texture_lock");
- qt_meego_live_texture_unlock = (QMeeGoLiveTextureUnlockFunc) library.resolve("qt_meego_live_texture_unlock");
- qt_meego_live_texture_destroy = (QMeeGoLiveTextureDestroyFunc) library.resolve("qt_meego_live_texture_destroy");
- qt_meego_live_texture_query = (QMeeGoLiveTextureQueryFunc) library.resolve("qt_meego_live_texture_query");
- qt_meego_live_texture_to_egl_image = (QMeeGoLiveTextureToEglImageFunc) library.resolve("qt_meego_live_texture_to_egl_image");
+ 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_from_egl_image &&
+ 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_live_texture_create && qt_meego_live_texture_lock && qt_meego_live_texture_unlock &&
- qt_meego_live_texture_destroy && qt_meego_live_texture_query && qt_meego_live_texture_to_egl_image)
+ 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_create_fence_sync && qt_meego_destroy_fence_sync)
{
qDebug("Successfully resolved MeeGo graphics system: %s %s\n", qPrintable(libraryPrivate->fileName), qPrintable(libraryPrivate->fullVersion));
+ } else {
+ Q_ASSERT(false);
}
} else {
Q_ASSERT(false);
@@ -139,13 +142,6 @@ QPixmapData* QMeeGoRuntime::pixmapDataFromEGLSharedImage(Qt::HANDLE handle, cons
return qt_meego_pixmapdata_from_egl_shared_image(handle, softImage);
}
-QPixmapData* QMeeGoRuntime::pixmapDataFromEGLImage(Qt::HANDLE handle)
-{
- ENSURE_INITIALIZED;
- Q_ASSERT(qt_meego_pixmapdata_from_egl_image);
- return qt_meego_pixmapdata_from_egl_image(handle);
-}
-
QPixmapData* QMeeGoRuntime::pixmapDataWithGLTexture(int w, int h)
{
ENSURE_INITIALIZED;
@@ -188,45 +184,51 @@ void QMeeGoRuntime::setTranslucent(bool translucent)
qt_meego_set_translucent(translucent);
}
-Qt::HANDLE QMeeGoRuntime::createLiveTexture(int w, int h, QImage::Format format)
+QPixmapData* QMeeGoRuntime::pixmapDataWithNewLiveTexture(int w, int h, QImage::Format format)
{
ENSURE_INITIALIZED;
- Q_ASSERT(qt_meego_live_texture_create);
- return qt_meego_live_texture_create(w, h, format);
+ Q_ASSERT(qt_meego_pixmapdata_with_new_live_texture);
+ return qt_meego_pixmapdata_with_new_live_texture(w, h, format);
}
-bool QMeeGoRuntime::lockLiveTexture(Qt::HANDLE h)
+QPixmapData* QMeeGoRuntime::pixmapDataFromLiveTextureHandle(Qt::HANDLE h)
{
ENSURE_INITIALIZED;
- Q_ASSERT(qt_meego_live_texture_lock);
- return qt_meego_live_texture_lock(h);
+ Q_ASSERT(qt_meego_pixmapdata_from_live_texture_handle);
+ return qt_meego_pixmapdata_from_live_texture_handle(h);
}
-bool QMeeGoRuntime::unlockLiveTexture(Qt::HANDLE h)
+QImage* QMeeGoRuntime::lockLiveTexture(QPixmap *p, void* fenceSync)
{
ENSURE_INITIALIZED;
- Q_ASSERT(qt_meego_live_texture_unlock);
- return qt_meego_live_texture_unlock(h);
+ Q_ASSERT(qt_meego_live_texture_lock);
+ return qt_meego_live_texture_lock(p, fenceSync);
}
-void QMeeGoRuntime::destroyLiveTexture(Qt::HANDLE h)
+bool QMeeGoRuntime::releaseLiveTexture(QPixmap *p, QImage *i)
{
ENSURE_INITIALIZED;
- Q_ASSERT(qt_meego_live_texture_destroy);
- qt_meego_live_texture_destroy(h);
+ Q_ASSERT(qt_meego_live_texture_release);
+ return qt_meego_live_texture_release(p, i);
}
-void QMeeGoRuntime::queryLiveTexture(Qt::HANDLE h, void **data, int *pitch)
+Qt::HANDLE QMeeGoRuntime::getLiveTextureHandle(QPixmap *pixmap)
{
ENSURE_INITIALIZED;
- Q_ASSERT(qt_meego_live_texture_query);
- qt_meego_live_texture_query(h, data, pitch);
+ Q_ASSERT(qt_meego_live_texture_get_handle);
+ return qt_meego_live_texture_get_handle(pixmap);
}
-Qt::HANDLE QMeeGoRuntime::liveTextureToEGLImage(Qt::HANDLE handle)
+void* QMeeGoRuntime::createFenceSync()
{
ENSURE_INITIALIZED;
- Q_ASSERT(qt_meego_live_texture_to_egl_image);
- return qt_meego_live_texture_to_egl_image(handle);
+ 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 048b9be2fb..be6ff6b259 100644
--- a/tools/qmeegographicssystemhelper/qmeegoruntime.h
+++ b/tools/qmeegographicssystemhelper/qmeegoruntime.h
@@ -49,19 +49,19 @@ public:
static Qt::HANDLE imageToEGLSharedImage(const QImage &image);
static QPixmapData* pixmapDataFromEGLSharedImage(Qt::HANDLE handle, const QImage &softImage);
- static QPixmapData* pixmapDataFromEGLImage(Qt::HANDLE handle);
static QPixmapData* pixmapDataWithGLTexture(int w, int h);
static bool destroyEGLSharedImage(Qt::HANDLE handle);
static void updateEGLSharedImagePixmap(QPixmap *p);
static void setSurfaceFixedSize(int w, int h);
static void setSurfaceScaling(int x, int y, int w, int h);
static void setTranslucent(bool translucent);
- static Qt::HANDLE createLiveTexture(int w, int h, QImage::Format format);
- static bool lockLiveTexture(Qt::HANDLE h);
- static bool unlockLiveTexture(Qt::HANDLE h);
- static void destroyLiveTexture(Qt::HANDLE h);
- static void queryLiveTexture(Qt::HANDLE h, void **data, int *pitch);
- static Qt::HANDLE liveTextureToEGLImage(Qt::HANDLE);
+ static QPixmapData* pixmapDataWithNewLiveTexture(int w, int h, QImage::Format format);
+ static QPixmapData* pixmapDataFromLiveTextureHandle(Qt::HANDLE h);
+ 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;
diff --git a/tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp b/tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp
new file mode 100644
index 0000000000..22ea0fe7a2
--- /dev/null
+++ b/tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp
@@ -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 plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmeegoswitchevent.h"
+
+static int switchEventNumber = -1;
+
+QMeeGoSwitchEvent::QMeeGoSwitchEvent(const QString &graphicsSystemName, QMeeGoSwitchEvent::State s) : QEvent(QMeeGoSwitchEvent::eventNumber())
+{
+ name = graphicsSystemName;
+ switchState = s;
+}
+
+QString QMeeGoSwitchEvent::graphicsSystemName() const
+{
+ return name;
+}
+
+QMeeGoSwitchEvent::State QMeeGoSwitchEvent::state() const
+{
+ return switchState;
+}
+
+QEvent::Type QMeeGoSwitchEvent::eventNumber()
+{
+ if (switchEventNumber < 0)
+ switchEventNumber = QEvent::registerEventType();
+
+ return (QEvent::Type) switchEventNumber;
+} \ No newline at end of file
diff --git a/tools/qdoc3/mangenerator.h b/tools/qmeegographicssystemhelper/qmeegoswitchevent.h
index 0fca342584..0ddbd3d814 100644
--- a/tools/qdoc3/mangenerator.h
+++ b/tools/qmeegographicssystemhelper/qmeegoswitchevent.h
@@ -4,7 +4,7 @@
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
-** This file is part of the tools applications of the Qt Toolkit.
+** This file is part of the plugins of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
@@ -39,41 +39,53 @@
**
****************************************************************************/
-/*
- mangenerator.h
-*/
-
-#ifndef MANGENERATOR_H
-#define MANGENERATOR_H
+#include <QEvent>
+#include <QString>
-#include "pagegenerator.h"
+//! A custom event representing a graphics system switch.
+/*!
+ This event is sent two times -- before the actual switch and after the switch.
+ The current mode of the event can be detected by looking at the State of the
+ event.
-QT_BEGIN_NAMESPACE
+ The end-user application can use the event to drop it's own allocated GL resources
+ when going to software mode.
+*/
-class ManGenerator : public PageGenerator
+class QMeeGoSwitchEvent : public QEvent
{
public:
- ManGenerator();
- ~ManGenerator();
- virtual QString format();
+ //! The state represented by this event.
+ enum State {
+ WillSwitch,
+ DidSwitch
+ };
-protected:
- virtual int generateAtom( const Atom *atom, const Node *relative,
- CodeMarker *marker );
- virtual void generateClassLikeNode(const InnerNode *node, CodeMarker *marker);
- virtual void generateFakeNode( const FakeNode *fake, CodeMarker *marker );
- virtual QString fileExtension(const Node *node) const;
+ //! Constructor for the event.
+ /*!
+ Creates a new event with the given name and the given state.
+ */
+ QMeeGoSwitchEvent(const QString &graphicsSystemName, State s);
-private:
- void generateHeader( const QString& name );
- void generateFooter();
- QString protectArg( const QString& str );
- QString protectTextLine( const QString& str );
+ //! Returns the name of the target graphics system.
+ /*!
+ Depending on the state, the name represents the system we're about to swtich to,
+ or the system we just switched to.
+ */
+ QString graphicsSystemName() const;
- QString date;
-};
+ //! Returns the state represented by this event.
+ State state() const;
-QT_END_NAMESPACE
+ //! Returns the event type/number for QMeeGoSwitchEvent.
+ /*!
+ The type is registered on first access. Use this to detect incoming
+ QMeeGoSwitchEvents.
+ */
+ QEvent::Type eventNumber();
-#endif
+private:
+ QString name;
+ State switchState;
+};
diff --git a/tools/qml/main.cpp b/tools/qml/main.cpp
index 00d43c1a7d..209c72fa8a 100644
--- a/tools/qml/main.cpp
+++ b/tools/qml/main.cpp
@@ -155,7 +155,11 @@ void usage()
qWarning(" -I <directory> ........................... prepend to the module import search path,");
qWarning(" display path if <directory> is empty");
qWarning(" -P <directory> ........................... prepend to the plugin search path");
+#if defined(Q_WS_MAC)
+ qWarning(" -no-opengl ............................... don't use a QGLWidget for the viewport");
+#else
qWarning(" -opengl .................................. use a QGLWidget for the viewport");
+#endif
qWarning(" -script <path> ........................... set the script to use");
qWarning(" -scriptopts <options>|help ............... set the script options to use");
@@ -172,6 +176,7 @@ void scriptOptsUsage()
qWarning(" play ..................................... playback an existing script");
qWarning(" testimages ............................... record images or compare images on playback");
qWarning(" testerror ................................ test 'error' property of root item on playback");
+ qWarning(" testskip ................................ test 'skip' property of root item on playback");
qWarning(" snapshot ................................. file being recorded is static,");
qWarning(" only one frame will be recorded or tested");
qWarning(" exitoncomplete ........................... cleanly exit the viewer on script completion");
@@ -305,6 +310,8 @@ static void parseScriptOptions()
scriptOptions |= QDeclarativeViewer::TestImages;
} else if (option == QLatin1String("testerror")) {
scriptOptions |= QDeclarativeViewer::TestErrorProperty;
+ } else if (option == QLatin1String("testskip")) {
+ scriptOptions |= QDeclarativeViewer::TestSkipProperty;
} else if (option == QLatin1String("exitoncomplete")) {
scriptOptions |= QDeclarativeViewer::ExitOnComplete;
} else if (option == QLatin1String("exitonfailure")) {
@@ -367,8 +374,13 @@ static void parseCommandLineOptions(const QStringList &arguments)
} else if (arg == "-translation") {
if (lastArg) usage();
opts.translationFile = arguments.at(++i);
+#if defined(Q_WS_MAC)
+ } else if (arg == "-no-opengl") {
+ opts.useGL = false;
+#else
} else if (arg == "-opengl") {
opts.useGL = true;
+#endif
} else if (arg == "-qmlbrowser") {
opts.useNativeFileBrowser = false;
} else if (arg == "-warnings") {
diff --git a/tools/qml/qdeclarativetester.cpp b/tools/qml/qdeclarativetester.cpp
index 9864df63ce..e3a1f596fb 100644
--- a/tools/qml/qdeclarativetester.cpp
+++ b/tools/qml/qdeclarativetester.cpp
@@ -52,6 +52,7 @@
QT_BEGIN_NAMESPACE
+extern Q_GUI_EXPORT bool qt_applefontsmoothing_enabled;
QDeclarativeTester::QDeclarativeTester(const QString &script, QDeclarativeViewer::ScriptOptions opts,
QDeclarativeView *parent)
@@ -61,6 +62,12 @@ QDeclarativeTester::QDeclarativeTester(const QString &script, QDeclarativeViewer
parent->viewport()->installEventFilter(this);
parent->installEventFilter(this);
QUnifiedTimer::instance()->setConsistentTiming(true);
+
+ //Font antialiasing makes tests system-specific, so disable it
+ QFont noAA = QApplication::font();
+ noAA.setStyleStrategy(QFont::NoAntialias);
+ QApplication::setFont(noAA);
+
if (options & QDeclarativeViewer::Play)
this->run();
start();
@@ -136,8 +143,25 @@ void QDeclarativeTester::imagefailure()
{
hasFailed = true;
- if (options & QDeclarativeViewer::ExitOnFailure)
- exit(-1);
+ if (options & QDeclarativeViewer::ExitOnFailure){
+ testSkip();
+ exit(hasFailed?-1:0);
+ }
+}
+
+void QDeclarativeTester::testSkip()
+{
+ if (options & QDeclarativeViewer::TestSkipProperty){
+ QString e = m_view->rootObject()->property("skip").toString();
+ if (!e.isEmpty()) {
+ if(hasFailed){
+ qWarning() << "Test failed, but skipping it: " << e;
+ }else{
+ qWarning() << "Test skipped: " << e;
+ }
+ hasFailed = 0;
+ }
+ }
}
void QDeclarativeTester::complete()
@@ -149,7 +173,10 @@ void QDeclarativeTester::complete()
hasFailed = true;
}
}
- if (options & QDeclarativeViewer::ExitOnComplete)
+
+
+ testSkip();
+ if (options & QDeclarativeViewer::ExitOnComplete)
QApplication::exit(hasFailed?-1:0);
if (hasCompleted)
@@ -247,7 +274,16 @@ void QDeclarativeTester::updateCurrentTime(int msec)
if (options & QDeclarativeViewer::TestImages) {
img.fill(qRgb(255,255,255));
+
+#ifdef Q_WS_MAC
+ bool oldSmooth = qt_applefontsmoothing_enabled;
+ qt_applefontsmoothing_enabled = false;
+#endif
QPainter p(&img);
+#ifdef Q_WS_MAC
+ qt_applefontsmoothing_enabled = oldSmooth;
+#endif
+
m_view->render(&p);
}
@@ -258,7 +294,7 @@ void QDeclarativeTester::updateCurrentTime(int msec)
fe.msec = msec;
if (msec == 0 || !(options & QDeclarativeViewer::TestImages)) {
// Skip first frame, skip if not doing images
- } else if (0 == (m_savedFrameEvents.count() % 60) || snapshot) {
+ } else if (0 == ((m_savedFrameEvents.count()-1) % 60) || snapshot) {
fe.image = img;
} else {
QCryptographicHash hash(QCryptographicHash::Md5);
@@ -309,14 +345,14 @@ void QDeclarativeTester::updateCurrentTime(int msec)
if (QDeclarativeVisualTestFrame *frame = qobject_cast<QDeclarativeVisualTestFrame *>(event)) {
if (frame->msec() < msec) {
if (options & QDeclarativeViewer::TestImages && !(options & QDeclarativeViewer::Record)) {
- qWarning() << "QDeclarativeTester: Extra frame. Seen:"
+ qWarning() << "QDeclarativeTester(" << m_script << "): Extra frame. Seen:"
<< msec << "Expected:" << frame->msec();
imagefailure();
}
} else if (frame->msec() == msec) {
if (!frame->hash().isEmpty() && frame->hash().toUtf8() != fe.hash.toHex()) {
if (options & QDeclarativeViewer::TestImages && !(options & QDeclarativeViewer::Record)) {
- qWarning() << "QDeclarativeTester: Mismatched frame hash at" << msec
+ qWarning() << "QDeclarativeTester(" << m_script << "): Mismatched frame hash at" << msec
<< ". Seen:" << fe.hash.toHex()
<< "Expected:" << frame->hash().toUtf8();
imagefailure();
@@ -328,9 +364,14 @@ void QDeclarativeTester::updateCurrentTime(int msec)
if (options & QDeclarativeViewer::TestImages && !(options & QDeclarativeViewer::Record) && !frame->image().isEmpty()) {
QImage goodImage(frame->image().toLocalFile());
+ if (frame->msec() == 16 && goodImage.size() != img.size()){
+ //Also an image mismatch, but this warning is more informative. Only checked at start though.
+ qWarning() << "QDeclarativeTester(" << m_script << "): Size mismatch. This test must be run at " << goodImage.size();
+ imagefailure();
+ }
if (goodImage != img) {
QString reject(frame->image().toLocalFile() + ".reject.png");
- qWarning() << "QDeclarativeTester: Image mismatch. Reject saved to:"
+ qWarning() << "QDeclarativeTester(" << m_script << "): Image mismatch. Reject saved to:"
<< reject;
img.save(reject);
bool doDiff = (goodImage.size() == img.size());
diff --git a/tools/qml/qdeclarativetester.h b/tools/qml/qdeclarativetester.h
index 021869d93a..0cf508ab40 100644
--- a/tools/qml/qdeclarativetester.h
+++ b/tools/qml/qdeclarativetester.h
@@ -228,6 +228,7 @@ private:
void imagefailure();
void complete();
+ void testSkip();
enum Destination { View, ViewPort };
void addKeyEvent(Destination, QKeyEvent *);
diff --git a/tools/qml/qmlruntime.cpp b/tools/qml/qmlruntime.cpp
index 5e169d8a83..7ea77d1613 100644
--- a/tools/qml/qmlruntime.cpp
+++ b/tools/qml/qmlruntime.cpp
@@ -1012,7 +1012,7 @@ void QDeclarativeViewer::addPluginPath(const QString& plugin)
void QDeclarativeViewer::reload()
{
- open(currentFileOrUrl);
+ launch(currentFileOrUrl);
}
void QDeclarativeViewer::openFile()
@@ -1383,6 +1383,8 @@ void QDeclarativeViewer::appAboutToQuit()
// avoid crashes if messages are received after app has closed
delete loggerWindow;
loggerWindow = 0;
+ delete tester;
+ tester = 0;
}
void QDeclarativeViewer::autoStartRecording()
@@ -1518,6 +1520,7 @@ void QDeclarativeViewer::updateSizeHints(bool initial)
//qWarning() << "USH: R2V: setting free size ";
layout()->setSizeConstraint(QLayout::SetNoConstraint);
layout()->activate();
+ setMinimumSize(QSize(1,1));
setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX));
canvas->setMinimumSize(QSize(0,0));
canvas->setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX));
diff --git a/tools/qml/qmlruntime.h b/tools/qml/qmlruntime.h
index d1ec26d268..b43aa54476 100644
--- a/tools/qml/qmlruntime.h
+++ b/tools/qml/qmlruntime.h
@@ -83,7 +83,8 @@ public:
SaveOnExit = 0x00000010,
ExitOnComplete = 0x00000020,
ExitOnFailure = 0x00000040,
- Snapshot = 0x00000080
+ Snapshot = 0x00000080,
+ TestSkipProperty = 0x00000100
};
Q_DECLARE_FLAGS(ScriptOptions, ScriptOption)
void setScript(const QString &s) { m_script = s; }
diff --git a/tools/qtconfig/mainwindow.cpp b/tools/qtconfig/mainwindow.cpp
index 9675f99611..4fe2868e92 100644
--- a/tools/qtconfig/mainwindow.cpp
+++ b/tools/qtconfig/mainwindow.cpp
@@ -81,7 +81,7 @@ QT_BEGIN_NAMESPACE
// external use ignore them
// extern bool Q_CORE_EXPORT qt_resolve_symlinks;
-static const char *appearance_text =
+static const char *appearance_text = QT_TRANSLATE_NOOP("MainWindow",
"<p><b><font size+=2>Appearance</font></b></p>"
"<hr>"
"<p>Use this tab to customize the appearance of your Qt applications.</p>"
@@ -95,9 +95,9 @@ static const char *appearance_text =
"To customize colors further, press the Tune Palette button to open "
"the advanced palette editor."
"<p>The Preview Window shows what the selected Style and colors look "
-"like.";
+"like.");
-static const char *font_text =
+static const char *font_text = QT_TRANSLATE_NOOP("MainWindow",
"<p><b><font size+=2>Fonts</font></b></p>"
"<hr>"
"<p>Use this tab to select the default font for your Qt applications. "
@@ -114,9 +114,9 @@ static const char *font_text =
"Korean characters that are not found in the Lucida font will be taken "
"from the Mincho font. Because the font substitutions are "
"lists, you can also select multiple families, such as Song Ti (for "
-"use with Chinese text).";
+"use with Chinese text).");
-static const char *interface_text =
+static const char *interface_text = QT_TRANSLATE_NOOP("MainWindow",
"<p><b><font size+=2>Interface</font></b></p>"
"<hr>"
"<p>Use this tab to customize the feel of your Qt applications.</p>"
@@ -131,10 +131,10 @@ static const char *interface_text =
"at 0 will disable the Global Strut feature</p>"
"<p>XIM (Extended Input Methods) are used for entering characters in "
"languages that have large character sets, for example, Chinese and "
-"Japanese.";
+"Japanese.");
// ### What does the 'Enhanced support for languages written R2L do?
-static const char *printer_text =
+static const char *printer_text = QT_TRANSLATE_NOOP("MainWindow",
"<p><b><font size+=2>Printer</font></b></p>"
"<hr>"
"<p>Use this tab to configure the way Qt generates output for the printer."
@@ -145,14 +145,14 @@ static const char *printer_text =
"size will be bigger."
"<p>When using font embedding you can select additional directories where "
"Qt should search for embeddable font files. By default, the X "
-"server font path is used.";
+"server font path is used.");
-static const char *phonon_text =
+static const char *phonon_text = QT_TRANSLATE_NOOP("MainWindow",
"<p><b><font size+=2>Phonon</font></b></p>"
"<hr>"
"<p>Use this tab to configure the Phonon GStreamer multimedia backend. "
"<p>It is reccommended to leave all settings on \"Auto\" to let "
-"Phonon determine your settings automatically.";
+"Phonon determine your settings automatically.");
static QColorGroup::ColorRole centralFromItem( int item )
{
diff --git a/tools/qtestlib/wince/cetest/activesyncconnection.cpp b/tools/qtestlib/wince/cetest/activesyncconnection.cpp
index 98062ed4c1..812ed477c1 100644
--- a/tools/qtestlib/wince/cetest/activesyncconnection.cpp
+++ b/tools/qtestlib/wince/cetest/activesyncconnection.cpp
@@ -247,7 +247,7 @@ bool ActiveSyncConnection::copyFileFromDevice(const QString &deviceSource, const
wprintf(L"\n");
if (!readUntilEnd) {
- debugOutput(QString::fromLatin1(" an error occured during copy"), 2);
+ debugOutput(QString::fromLatin1(" an error occurred during copy"), 2);
return false;
}
diff --git a/tools/qtestlib/wince/cetest/main.cpp b/tools/qtestlib/wince/cetest/main.cpp
index 4272a83158..ec62af13ad 100644
--- a/tools/qtestlib/wince/cetest/main.cpp
+++ b/tools/qtestlib/wince/cetest/main.cpp
@@ -283,7 +283,7 @@ int main(int argc, char **argv)
cout << "Error: Can only test executables!" << endl;
return -1;
}
- // Check wether the project is still in debug/release mode after reading
+ // Check whether the project is still in debug/release mode after reading
// If .pro specifies to be one mode only, we need to accept this
if (project.isActiveConfig("debug") && !project.isActiveConfig("release")) {
TestConfiguration::testDebug = true;
diff --git a/tools/qvfb/qvfb.cpp b/tools/qvfb/qvfb.cpp
index b4ccebc21e..a3b1964b8f 100644
--- a/tools/qvfb/qvfb.cpp
+++ b/tools/qvfb/qvfb.cpp
@@ -1038,7 +1038,7 @@ void AnimationSaveWidget::convertToMpeg(QString filename)
// ### can't use QProcess, not in Qt 2.3
// ### but it's certainly in Qt 4! use it?
- // Execute the ppmtompeg command as a seperate process to do the encoding
+ // Execute the ppmtompeg command as a separate process to do the encoding
pid_t pid = ::fork();
if ( !pid ) {
// Child process
diff --git a/tools/runonphone/symbianutils/tcftrkdevice.h b/tools/runonphone/symbianutils/tcftrkdevice.h
index 67955e5f1e..f56a86e675 100644
--- a/tools/runonphone/symbianutils/tcftrkdevice.h
+++ b/tools/runonphone/symbianutils/tcftrkdevice.h
@@ -65,7 +65,7 @@ struct Breakpoint;
/* Command error handling in TCF:
* 1) 'Severe' errors (JSON format, parameter format): Trk emits a
- * nonstandard message (\3\2 error paramaters) and closes the connection.
+ * nonstandard message (\3\2 error parameters) and closes the connection.
* 2) Protocol errors: 'N' without error message is returned.
* 3) Errors in command execution: 'R' with a TCF error hash is returned
* (see TcfTrkCommandError). */
diff --git a/tools/runonphone/symbianutils/tcftrkmessage.h b/tools/runonphone/symbianutils/tcftrkmessage.h
index 510b485c08..929a9e6206 100644
--- a/tools/runonphone/symbianutils/tcftrkmessage.h
+++ b/tools/runonphone/symbianutils/tcftrkmessage.h
@@ -123,7 +123,7 @@ struct SYMBIANUTILS_EXPORT RunControlContext {
QByteArray parentId; // Parent process id of a thread.
};
-// Module load information occuring with 'RunControl contextSuspended' events
+// Module load information occurring with 'RunControl contextSuspended' events
struct SYMBIANUTILS_EXPORT ModuleLoadEventInfo {
ModuleLoadEventInfo();
void clear();
diff --git a/tools/shared/symbian/epocroot.cpp b/tools/shared/symbian/epocroot.cpp
index ae1dcb1ec0..eabae98276 100644
--- a/tools/shared/symbian/epocroot.cpp
+++ b/tools/shared/symbian/epocroot.cpp
@@ -39,13 +39,13 @@
**
****************************************************************************/
-#include <iostream>
-
#include <QtCore/qdir.h>
#include <QtCore/qxmlstream.h>
-#include "epocroot.h"
-#include "../windows/registry.h"
+#include "epocroot_p.h"
+#include "../windows/registry_p.h"
+
+QT_BEGIN_NAMESPACE
// Registry key under which the location of the Symbian devices.xml file is
// stored.
@@ -64,35 +64,26 @@
// Stored as a static value in order to avoid unnecessary re-evaluation.
static QString epocRootValue;
-#ifdef QT_BUILD_QMAKE
-std::ostream &operator<<(std::ostream &s, const QString &val) {
- s << val.toLocal8Bit().data();
- return s;
-}
-#else
-// Operator implemented in configureapp.cpp
-std::ostream &operator<<(std::ostream &s, const QString &val);
-#endif
-
-QString getDevicesXmlPath()
+static QString getDevicesXmlPath()
{
// Note that the following call will return a null string on platforms other
// than Windows. If support is required on other platforms for devices.xml,
// an alternative mechanism for retrieving the location of this file will
// be required.
- return readRegistryKey(SYMBIAN_SDKS_REG_HANDLE, SYMBIAN_SDKS_REG_SUBKEY);
+ return qt_readRegistryKey(SYMBIAN_SDKS_REG_HANDLE, QLatin1String(SYMBIAN_SDKS_REG_SUBKEY));
}
/**
* Checks whether epocRootValue points to an existent directory.
* If not, epocRootValue is set to an empty string and an error message is printed.
*/
-void checkEpocRootExists(const QString &source)
+static void checkEpocRootExists(const QString &source)
{
if (!epocRootValue.isEmpty()) {
QDir dir(epocRootValue);
if (!dir.exists()) {
- std::cerr << "Warning: " << source << " is set to an invalid path: " << epocRootValue << std::endl;
+ qWarning("Warning: %s is set to an invalid path: '%s'", qPrintable(source),
+ qPrintable(epocRootValue));
epocRootValue = QString();
}
}
@@ -103,32 +94,30 @@ void checkEpocRootExists(const QString &source)
*/
static void fixEpocRoot(QString &path)
{
- path.replace("\\", "/");
+ path.replace(QLatin1Char('\\'), QLatin1Char('/'));
- if (!path.size() || path[path.size()-1] != QChar('/')) {
- path += QChar('/');
+ if (!path.size() || path[path.size()-1] != QLatin1Char('/')) {
+ path += QLatin1Char('/');
}
}
/**
* Determine the epoc root for the currently active SDK.
*/
-QString epocRoot()
+QString qt_epocRoot()
{
if (epocRootValue.isEmpty()) {
// 1. If environment variable EPOCROOT is set and points to an existent
// directory, this is returned.
- epocRootValue = qgetenv("EPOCROOT");
- checkEpocRootExists("EPOCROOT");
+ epocRootValue = QString::fromLocal8Bit(qgetenv("EPOCROOT").constData());
+ checkEpocRootExists(QLatin1String("EPOCROOT environment variable"));
if (epocRootValue.isEmpty()) {
// 2. The location of devices.xml is specified by a registry key. If this
// file exists, it is parsed.
QString devicesXmlPath = getDevicesXmlPath();
- if (devicesXmlPath.isEmpty()) {
- std::cerr << "Error: Symbian SDK registry key not found" << std::endl;
- } else {
- devicesXmlPath += "/devices.xml";
+ if (!devicesXmlPath.isEmpty()) {
+ devicesXmlPath += QLatin1String("/devices.xml");
QFile devicesFile(devicesXmlPath);
if (devicesFile.open(QIODevice::ReadOnly)) {
@@ -138,87 +127,90 @@ QString epocRoot()
// 4. If a device element marked as default is found in devices.xml and its
// epocroot value points to an existent directory, this is returned.
- const QString epocDeviceValue = qgetenv("EPOCDEVICE");
+ const QString epocDeviceValue = QString::fromLocal8Bit(qgetenv("EPOCDEVICE").constData());
bool epocDeviceFound = false;
QXmlStreamReader xml(&devicesFile);
while (!xml.atEnd()) {
xml.readNext();
- if (xml.isStartElement() && xml.name() == "devices") {
- if (xml.attributes().value("version") == "1.0") {
- while (!(xml.isEndElement() && xml.name() == "devices") && !xml.atEnd()) {
+ if (xml.isStartElement() && xml.name() == QLatin1String("devices")) {
+ if (xml.attributes().value(QLatin1String("version")) == QLatin1String("1.0")) {
+ while (!(xml.isEndElement() && xml.name() == QLatin1String("devices")) && !xml.atEnd()) {
xml.readNext();
- if (xml.isStartElement() && xml.name() == "device") {
- const bool isDefault = xml.attributes().value("default") == "yes";
- const QString id = xml.attributes().value("id").toString();
- const QString name = xml.attributes().value("name").toString();
- const QString alias = xml.attributes().value("alias").toString();
- bool epocDeviceMatch = (id + ":" + name) == epocDeviceValue;
+ if (xml.isStartElement() && xml.name() == QLatin1String("device")) {
+ const bool isDefault = xml.attributes().value(QLatin1String("default")) == QLatin1String("yes");
+ const QString id = xml.attributes().value(QLatin1String("id")).toString();
+ const QString name = xml.attributes().value(QLatin1String("name")).toString();
+ const QString alias = xml.attributes().value(QLatin1String("alias")).toString();
+ bool epocDeviceMatch = QString(id + QLatin1String(":") + name) == epocDeviceValue;
if (!alias.isEmpty())
epocDeviceMatch |= alias == epocDeviceValue;
epocDeviceFound |= epocDeviceMatch;
if((epocDeviceValue.isEmpty() && isDefault) || epocDeviceMatch) {
// Found a matching device
- while (!(xml.isEndElement() && xml.name() == "device") && !xml.atEnd()) {
+ while (!(xml.isEndElement() && xml.name() == QLatin1String("device")) && !xml.atEnd()) {
xml.readNext();
- if (xml.isStartElement() && xml.name() == "epocroot") {
+ if (xml.isStartElement() && xml.name() == QLatin1String("epocroot")) {
epocRootValue = xml.readElementText();
const QString deviceSource = epocDeviceValue.isEmpty()
- ? "default device"
- : "EPOCDEVICE (" + epocDeviceValue + ")";
+ ? QLatin1String("default device")
+ : QString(QLatin1String("EPOCDEVICE (") + epocDeviceValue + QLatin1String(")"));
checkEpocRootExists(deviceSource);
}
}
if (epocRootValue.isEmpty())
- xml.raiseError("No epocroot element found");
+ xml.raiseError(QLatin1String("No epocroot element found"));
}
}
}
} else {
- xml.raiseError("Invalid 'devices' element version");
+ xml.raiseError(QLatin1String("Invalid 'devices' element version"));
}
}
}
if (xml.hasError()) {
- std::cerr << "Error: \"" << xml.errorString() << "\" when parsing devices.xml" << std::endl;
+ qWarning("Warning: Error \"%s\" when parsing devices.xml",
+ qPrintable(xml.errorString()));
} else {
if (epocRootValue.isEmpty()) {
if (!epocDeviceValue.isEmpty()) {
if (epocDeviceFound) {
- std::cerr << "Error: missing or invalid epocroot attribute "
- << "in device '" << epocDeviceValue << "'";
+ qWarning("Warning: Missing or invalid epocroot attribute in device '%s' in devices.xml.",
+ qPrintable(epocDeviceValue));
} else {
- std::cerr << "Error: no device matching EPOCDEVICE ("
- << epocDeviceValue << ")";
+ qWarning("Warning: No device matching EPOCDEVICE (%s) in devices.xml.",
+ qPrintable(epocDeviceValue));
}
} else {
if (epocDeviceFound) {
- std::cerr << "Error: missing or invalid epocroot attribute "
- << "in default device";
+ qWarning("Warning: Missing or invalid epocroot attribute in default device in devices.xml.");
} else {
- std::cerr << "Error: no default device";
+ qWarning("Warning: No default device set in devices.xml.");
}
}
- std::cerr << " found in devices.xml file." << std::endl;
}
}
} else {
- std::cerr << "Error: could not open file " << devicesXmlPath << std::endl;
+ qWarning("Warning: Could not open file: '%s'.", qPrintable(devicesXmlPath));
}
}
}
if (epocRootValue.isEmpty()) {
// 5. An empty string is returned.
- std::cerr << "Error: failed to find epoc root" << std::endl
- << "Either" << std::endl
- << " 1. Set EPOCROOT environment variable to a valid value" << std::endl
- << " or 2. Ensure that the HKEY_LOCAL_MACHINE\\" SYMBIAN_SDKS_REG_SUBKEY
- " registry key is set, and then" << std::endl
- << " a. Set EPOCDEVICE environment variable to a valid device" << std::endl
- << " or b. Specify a default device in the devices.xml file." << std::endl;
+ qWarning("Warning: failed to resolve epocroot."
+#ifdef Q_OS_WIN32
+ "\nEither\n"
+ " 1. Set EPOCROOT environment variable to a valid value.\n"
+ " or 2. Ensure that the HKEY_LOCAL_MACHINE\\" SYMBIAN_SDKS_REG_SUBKEY
+ " registry key is set, and then\n"
+ " a. Set EPOCDEVICE environment variable to a valid device\n"
+ " or b. Specify a default device in the devices.xml file.");
+#else
+ " Set EPOCROOT environment variable to a valid value.");
+#endif
} else {
fixEpocRoot(epocRootValue);
}
@@ -227,3 +219,4 @@ QString epocRoot()
return epocRootValue;
}
+QT_END_NAMESPACE
diff --git a/tools/shared/symbian/epocroot.pri b/tools/shared/symbian/epocroot.pri
new file mode 100644
index 0000000000..f0f0dab535
--- /dev/null
+++ b/tools/shared/symbian/epocroot.pri
@@ -0,0 +1,11 @@
+# Epocroot resolving is only required for tools, so omit it from all mobile/embedded builds
+!symbian:!wince*:!embedded {
+HEADERS += \
+ $$QT_SOURCE_TREE/tools/shared/symbian/epocroot_p.h \
+ $$QT_SOURCE_TREE/tools/shared/windows/registry_p.h
+SOURCES += \
+ $$QT_SOURCE_TREE/tools/shared/symbian/epocroot.cpp \
+ $$QT_SOURCE_TREE/tools/shared/windows/registry.cpp
+INCLUDEPATH += $$QT_SOURCE_TREE/tools/shared
+DEFINES += QLIBRARYINFO_EPOCROOT
+}
diff --git a/tools/shared/symbian/epocroot.h b/tools/shared/symbian/epocroot_p.h
index 9846485aab..c97b5938b6 100644
--- a/tools/shared/symbian/epocroot.h
+++ b/tools/shared/symbian/epocroot_p.h
@@ -39,11 +39,24 @@
**
****************************************************************************/
-#ifndef SYMBIAN_EPOCROOT_H
-#define SYMBIAN_EPOCROOT_H
+#ifndef QT_SYMBIAN_EPOCROOT_H
+#define QT_SYMBIAN_EPOCROOT_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
#include <QtCore/qstring.h>
+QT_BEGIN_NAMESPACE
+
/**
* Determine the epoc root for the currently active SDK.
*
@@ -62,6 +75,9 @@
* Any return value other than the empty string therefore is guaranteed to
* point to an existent directory.
*/
-QString epocRoot();
+QString qt_epocRoot();
+
+QT_END_NAMESPACE
+
+#endif // QT_SYMBIAN_EPOCROOT_H
-#endif // EPOCROOT_H
diff --git a/tools/shared/windows/registry.cpp b/tools/shared/windows/registry.cpp
index 67d9b563cb..f520910377 100644
--- a/tools/shared/windows/registry.cpp
+++ b/tools/shared/windows/registry.cpp
@@ -40,8 +40,11 @@
****************************************************************************/
#include <QtCore/qstringlist.h>
-#include "registry.h"
+#include "registry_p.h"
+QT_BEGIN_NAMESPACE
+
+#ifdef Q_OS_WIN32
/*!
Returns the path part of a registry key.
e.g.
@@ -73,12 +76,13 @@ static QString keyName(const QString &rKey)
return rKey;
QString res(rKey.mid(idx + 1));
- if (res == "Default" || res == ".")
- res = "";
+ if (res == QLatin1String("Default") || res == QLatin1String("."))
+ res = QString();
return res;
}
+#endif
-QString readRegistryKey(HKEY parentHandle, const QString &rSubkey)
+QString qt_readRegistryKey(HKEY parentHandle, const QString &rSubkey)
{
QString result;
@@ -128,7 +132,7 @@ QString readRegistryKey(HKEY parentHandle, const QString &rSubkey)
break;
l.append(s);
}
- result = l.join(", ");
+ result = l.join(QLatin1String(", "));
break;
}
@@ -153,9 +157,13 @@ QString readRegistryKey(HKEY parentHandle, const QString &rSubkey)
}
RegCloseKey(handle);
+#else
+ Q_UNUSED(parentHandle);
+ Q_UNUSED(rSubkey)
#endif
return result;
}
+QT_END_NAMESPACE
diff --git a/tools/shared/windows/registry.h b/tools/shared/windows/registry_p.h
index 3896527cb2..4aae5f93e3 100644
--- a/tools/shared/windows/registry.h
+++ b/tools/shared/windows/registry_p.h
@@ -39,8 +39,21 @@
**
****************************************************************************/
-#ifndef WINDOWS_REGISTRY_H
-#define WINDOWS_REGISTRY_H
+#ifndef QT_WINDOWS_REGISTRY_H
+#define QT_WINDOWS_REGISTRY_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+QT_BEGIN_NAMESPACE
#include <QtCore/qglobal.h>
@@ -59,6 +72,9 @@
* if this code is compiled for a platform other than Windows), a null
* string is returned.
*/
-QString readRegistryKey(HKEY parentHandle, const QString &rSubkey);
+QString qt_readRegistryKey(HKEY parentHandle, const QString &rSubkey);
+
+QT_END_NAMESPACE
+
+#endif // QT_WINDOWS_REGISTRY_H
-#endif // WINDOWS_REGISTRY_H
diff --git a/translations/assistant_de.ts b/translations/assistant_de.ts
index 95fabaf220..3648fddfa2 100644
--- a/translations/assistant_de.ts
+++ b/translations/assistant_de.ts
@@ -67,7 +67,7 @@ Grund:
</message>
<message>
<source>Error reading collection file &apos;%1&apos;: %2.</source>
- <translation>Fehler beim Lesen der Katalogdatei &apos;%1&apos;: %2</translation>
+ <translation>Fehler beim Lesen der Katalogdatei &apos;%1&apos;: %2.</translation>
</message>
<message>
<source>Error creating collection file &apos;%1&apos;: %2.</source>
@@ -741,7 +741,7 @@ Grund:
</message>
<message>
<source>Input File</source>
- <translation>Eingabedatei:</translation>
+ <translation>Datei eingeben</translation>
</message>
<message>
<source>Specify the .adp or .dcf file you want to convert to the new Qt help project format and/or collection format.</source>
@@ -989,7 +989,7 @@ Grund:
</message>
<message>
<source>&lt;center&gt;&lt;h3&gt;%1&lt;/h3&gt;&lt;p&gt;Version %2&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;center&gt;&lt;h3&gt;%1&lt;/h3&gt;&lt;p&gt;Version %2&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation und/oder ihre Tochtergesellschaft(en).&lt;/p&gt;</translation>
</message>
<message>
<source>Could not register file &apos;%1&apos;: %2</source>
@@ -1354,7 +1354,19 @@ qcollectiongenerator &lt;collection-config-file&gt; [options]
qcollectiongenerator.
</source>
- <translation type="unfinished"></translation>
+ <translation>
+Aufruf:
+
+qcollectiongenerator &lt;collection-Konfigurationsdatei&gt; [Optionen]
+
+ -o &lt;collection-Datei&gt; Erstellt eine Collection-Datei mit
+ dem Namen &lt;collection-Datei&gt;. Wenn
+ diese Option nicht angegeben ist, wird
+ der Standardname verwendet.
+ -v Zeigt die Versionsnummer von
+ qcollectiongenerator an.
+
+</translation>
</message>
<message>
<source>Could not open %1.
@@ -1435,7 +1447,22 @@ qhelpgenerator &lt;help-project-file&gt; [options]
qhelpgenerator.
</source>
- <translation type="unfinished"></translation>
+ <translation>
+Aufruf:
+
+qhelpgenerator &lt;Hilfe-Projektdatei&gt; [Optionen]
+ -o &lt;komprimierte-Datei&gt; Erstellt eine komprimierte
+ Qt-Hilfedatei mit dem Namen
+ &lt;komprimierte-Datei&gt;. Wenn diese
+ Option nicht angegeben ist, wird
+ ein Standardname verwendet.
+ -c Prüft, ob alle Verknüpfungen in
+ HTML-Dateien auf Dateien in diesem
+ Hilfeprojekt verweisen.
+ -v Zeigt die Versionsnummer von
+ qhelpgenerator an.
+
+</translation>
</message>
<message>
<source>Could not open %1.
diff --git a/translations/assistant_ja.ts b/translations/assistant_ja.ts
index c449e00775..c449e00775 100755..100644
--- a/translations/assistant_ja.ts
+++ b/translations/assistant_ja.ts
diff --git a/translations/assistant_ru.ts b/translations/assistant_ru.ts
index f5ba461931..61c8d6c704 100644
--- a/translations/assistant_ru.ts
+++ b/translations/assistant_ru.ts
@@ -76,10 +76,6 @@ Reason:
<translation>Ошибка создания файла коллекции справки &apos;%1&apos;: %2.</translation>
</message>
<message>
- <source>Error reading collection file &apos;%1&apos;: %2</source>
- <translation>Ошибка чтения файла коллекции справки &apos;%1&apos;: %2</translation>
- </message>
- <message>
<source>Cannot load sqlite database driver!</source>
<translation>Не удалось загрузить драйвер баз данных sqlite!</translation>
</message>
@@ -112,6 +108,17 @@ Reason:
</message>
</context>
<context>
+ <name>BookmarkItem</name>
+ <message>
+ <source>New Folder</source>
+ <translation>Новая папка</translation>
+ </message>
+ <message>
+ <source>Untitled</source>
+ <translation>Безымянная</translation>
+ </message>
+</context>
+<context>
<name>BookmarkManager</name>
<message>
<source>Remove</source>
@@ -131,7 +138,7 @@ Reason:
</message>
<message>
<source>Untitled</source>
- <translation>Неозаглавлено</translation>
+ <translation>Безымянная</translation>
</message>
<message>
<source>Manage Bookmarks...</source>
@@ -329,6 +336,64 @@ Reason:
<translation>Файл коллекции справки &apos;%1&apos; не существует.</translation>
</message>
<message>
+ <source>Usage: assistant [Options]
+
+-collectionFile file Uses the specified collection
+ file instead of the default one
+-showUrl url Shows the document with the
+ url.
+-enableRemoteControl Enables Assistant to be
+ remotely controlled.
+-show widget Shows the specified dockwidget
+ which can be &quot;contents&quot;, &quot;index&quot;,
+ &quot;bookmarks&quot; or &quot;search&quot;.
+-activate widget Activates the specified dockwidget
+ which can be &quot;contents&quot;, &quot;index&quot;,
+ &quot;bookmarks&quot; or &quot;search&quot;.
+-hide widget Hides the specified dockwidget
+ which can be &quot;contents&quot;, &quot;index&quot;
+ &quot;bookmarks&quot; or &quot;search&quot;.
+-register helpFile Registers the specified help file
+ (.qch) in the given collection
+ file.
+-unregister helpFile Unregisters the specified help file
+ (.qch) from the give collection
+ file.
+-setCurrentFilter filter Set the filter as the active filter.
+-remove-search-index Removes the full text search index.
+-rebuild-search-index Re-builds the full text search index (potentially slow).
+-quiet Does not display any error or
+ status message.
+-help Displays this help.
+</source>
+ <translation>Использование: assistant [ОПЦИИ]
+
+-collectionFile файл Использовать указанный файл коллекции,
+ вместо стандартного
+-showUrl ссылка Отобразить документ по ссылке.
+-enableRemoteControl Включение удалённого управления Assistant.
+-show виджет Отображение указанного прикрепляемого виджета,
+ который может быть &quot;contents&quot;, &quot;index&quot;,
+ &quot;bookmarks&quot; или &quot;search&quot;.
+-activate виджет Включение указанного прикрепляемого виджета,
+ который может быть &quot;contents&quot;, &quot;index&quot;,
+ &quot;bookmarks&quot; или &quot;search&quot;.
+-hide виджет Скрытие указанного прикрепляемого виджета,
+ который может быть &quot;contents&quot;, &quot;index&quot;,
+ &quot;bookmarks&quot; или &quot;search&quot;.
+-register файлСправки Регистрация указанного файла справки (.qch)
+ в данном файле коллекции.
+-unregister файлСправки Отмена регистрации указанного файла
+ справки (.qch) в данном файле коллекции.
+-setCurrentFilter фильтр Активация указанного фильтра.
+-remove-search-index Удаление индекса полнотекстового поиска.
+-rebuild-search-index Пересоздание индекса полнотекстового поиска
+ (потенциально медленно).
+-quiet Не отображать сообщения об ошибках и состояниях.
+-help Показать эту справку.
+</translation>
+ </message>
+ <message>
<source>Missing collection file.</source>
<translation>Отсутствует файл коллекции справки.</translation>
</message>
@@ -377,6 +442,56 @@ Reason:
</message>
</context>
<context>
+ <name>ConversionWizard</name>
+ <message>
+ <source>Help Conversion Wizard</source>
+ <translation>Мастер преобразования справки</translation>
+ </message>
+ <message>
+ <source>Converting %1...</source>
+ <translation>Преобразование %1...</translation>
+ </message>
+ <message>
+ <source>Writing help collection file...</source>
+ <translation>Запись файла коллекции справки...</translation>
+ </message>
+ <message>
+ <source>Done.</source>
+ <translation>Готово.</translation>
+ </message>
+</context>
+<context>
+ <name>FilesPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Files:</source>
+ <translation>Файлы:</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Удалить</translation>
+ </message>
+ <message>
+ <source>Remove All</source>
+ <translation>Удалить всё</translation>
+ </message>
+ <message>
+ <source>Unreferenced Files</source>
+ <translation>Невостребованные файлы</translation>
+ </message>
+ <message>
+ <source>Remove files which are neither referenced by a keyword nor by the TOC.</source>
+ <translation>Удаление файлов, на которые нет ссылок ни по ключевым словам, ни в содержании.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;&lt;b&gt;Warning:&lt;/b&gt; When removing images or stylesheets, be aware that those files are not directly referenced by the .adp or .dcf file.&lt;/p&gt;</source>
+ <translation>&lt;p&gt;&lt;b&gt;Внимание:&lt;/b&gt; при удалении изображений или таблиц стилей следует убедиться, что на эти файлы напрямую не ссылается файл .adp или .dcf.&lt;/p&gt;</translation>
+ </message>
+</context>
+<context>
<name>FilterNameDialogClass</name>
<message>
<source>Add Filter Name</source>
@@ -388,6 +503,66 @@ Reason:
</message>
</context>
<context>
+ <name>FilterPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Filter attributes for current documentation (comma separated list):</source>
+ <translation>Атрибуты фильтра для текущей документации (список, разделённый запятыми):</translation>
+ </message>
+ <message>
+ <source>Custom Filters</source>
+ <translation>Пользовательские фильтры</translation>
+ </message>
+ <message>
+ <source>1</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>2</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Добавить</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Удалить</translation>
+ </message>
+ <message>
+ <source>Filter Settings</source>
+ <translation>Настройки фильтра</translation>
+ </message>
+ <message>
+ <source>Specify the filter attributes for the documentation. If filter attributes are used, also define a custom filter for it. Both the filter attributes and the custom filters are optional.</source>
+ <translation>Укажите атрибуты фильтра для документации. Если атрибуты фильтра используются, также укажите пользовательский фильтр для них. Атрибуты и пользовательский фильтр необязательны.</translation>
+ </message>
+ <message>
+ <source>Filter Name</source>
+ <translation>Название фильтра</translation>
+ </message>
+ <message>
+ <source>Filter Attributes</source>
+ <translation>Атрибуты фильтра</translation>
+ </message>
+ <message>
+ <source>The custom filter &apos;%1&apos; is defined multiple times.</source>
+ <translation>Пользовательский фильтр &quot;%1&quot; определён несколько раз.</translation>
+ </message>
+ <message>
+ <source>The attributes for custom filter &apos;%1&apos; are defined multiple times.</source>
+ <translation>Атрибуты для пользовательского фильтра &quot;%1&quot; определены несколько раз.</translation>
+ </message>
+ <message>
+ <source>unfiltered</source>
+ <comment>list of available documentation</comment>
+ <translation>вся документация</translation>
+ </message>
+</context>
+<context>
<name>FindWidget</name>
<message>
<source>Previous</source>
@@ -407,6 +582,17 @@ Reason:
</message>
</context>
<context>
+ <name>FinishPage</name>
+ <message>
+ <source>Converting File</source>
+ <translation>Преобразование файла</translation>
+ </message>
+ <message>
+ <source>Creating the new Qt help files from the old ADP file.</source>
+ <translation>Создание файлов справки Qt из старых файлов ADP.</translation>
+ </message>
+</context>
+<context>
<name>FontPanel</name>
<message>
<source>Font</source>
@@ -430,6 +616,59 @@ Reason:
</message>
</context>
<context>
+ <name>GeneralPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Namespace:</source>
+ <translation>Пространство имён:</translation>
+ </message>
+ <message>
+ <source>Virtual Folder:</source>
+ <translation>Виртуальный каталог:</translation>
+ </message>
+ <message>
+ <source>General Settings</source>
+ <translation>Основные настройки</translation>
+ </message>
+ <message>
+ <source>Specify the namespace and the virtual folder for the documentation.</source>
+ <translation>Укажите пространство имён и виртуальный каталог для документации.</translation>
+ </message>
+ <message>
+ <source>Namespace Error</source>
+ <translation>Ошибка пространства имён</translation>
+ </message>
+ <message>
+ <source>The namespace contains some invalid characters.</source>
+ <translation>Пространство имён содержит недопустимые символы.</translation>
+ </message>
+ <message>
+ <source>Virtual Folder Error</source>
+ <translation>Ошибка виртуального каталога</translation>
+ </message>
+ <message>
+ <source>The virtual folder contains some invalid characters.</source>
+ <translation>Виртуальный каталог содержит недопустимые символы.</translation>
+ </message>
+</context>
+<context>
+ <name>HelpEngineWrapper</name>
+ <message>
+ <source>Unfiltered</source>
+ <translation>Вся документация</translation>
+ </message>
+</context>
+<context>
+ <name>HelpGenerator</name>
+ <message>
+ <source>Warning: %1</source>
+ <translation>Предупреждение: %1</translation>
+ </message>
+</context>
+<context>
<name>HelpViewer</name>
<message>
<source>&lt;title&gt;about:blank&lt;/title&gt;</source>
@@ -453,6 +692,40 @@ Reason:
</message>
</context>
<context>
+ <name>HelpWindow</name>
+ <message>
+ <source>&lt;center&gt;&lt;b&gt;Wizard Assistant&lt;/b&gt;&lt;/center&gt;</source>
+ <translation>&lt;center&gt;&lt;b&gt;Помощь по мастеру преобразования справки&lt;/b&gt;&lt;/center&gt;</translation>
+ </message>
+</context>
+<context>
+ <name>IdentifierPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Create identifiers</source>
+ <translation>Создавать идентификаторы</translation>
+ </message>
+ <message>
+ <source>Global prefix:</source>
+ <translation>Глобальный префикс:</translation>
+ </message>
+ <message>
+ <source>Inherit prefix from file names</source>
+ <translation>Наследовать префикс из имён файлов</translation>
+ </message>
+ <message>
+ <source>Identifiers</source>
+ <translation>Идентификаторы</translation>
+ </message>
+ <message>
+ <source>This page allows you to create identifiers from the keywords found in the .adp or .dcf file.</source>
+ <translation>Данная страница позволяет создавать идентификаторы из ключевых слов найденных в файле .adp или .dcf.</translation>
+ </message>
+</context>
+<context>
<name>IndexWindow</name>
<message>
<source>&amp;Look for:</source>
@@ -468,6 +741,53 @@ Reason:
</message>
</context>
<context>
+ <name>InputPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>File name:</source>
+ <translation>Имя файла:</translation>
+ </message>
+ <message>
+ <source>...</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Input File</source>
+ <translation>Исходный файл</translation>
+ </message>
+ <message>
+ <source>Specify the .adp or .dcf file you want to convert to the new Qt help project format and/or collection format.</source>
+ <translation>Укажите файл .adp или .dcf, который необходимо преобразовать в формат нового проекта справки Qt или коллекции.</translation>
+ </message>
+ <message>
+ <source>Open file</source>
+ <translation>Открыть файл</translation>
+ </message>
+ <message>
+ <source>Qt Help Files (*.adp *.dcf)</source>
+ <translation>Файлы справки Qt (*.adp *.dcf)</translation>
+ </message>
+ <message>
+ <source>File Open Error</source>
+ <translation>Ошибка открытия файла</translation>
+ </message>
+ <message>
+ <source>The specified file could not be opened!</source>
+ <translation>Не удалось открыть указанный файл!</translation>
+ </message>
+ <message>
+ <source>File Parsing Error</source>
+ <translation>Ошибка обработки файла</translation>
+ </message>
+ <message>
+ <source>Parsing error in line %1!</source>
+ <translation>Возникла ошибка обработки на строке %1!</translation>
+ </message>
+</context>
+<context>
<name>InstallDialog</name>
<message>
<source>Install Documentation</source>
@@ -715,6 +1035,10 @@ Reason:
<translation>&amp;Закладки</translation>
</message>
<message>
+ <source>&lt;center&gt;&lt;h3&gt;%1&lt;/h3&gt;&lt;p&gt;Version %2&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;</source>
+ <translation>&lt;center&gt;&lt;h3&gt;%1&lt;/h3&gt;&lt;p&gt;Версия %2&lt;/p&gt;&lt;/center&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;</translation>
+ </message>
+ <message>
<source>Could not register file &apos;%1&apos;: %2</source>
<translation>Не удалось зарегистрировать файл &apos;%1&apos;: %2</translation>
</message>
@@ -776,7 +1100,93 @@ Reason:
</message>
<message>
<source>Updating search index</source>
- <translation>Обновление поискового индекса</translation>
+ <translation>Обновление индекса полнотекстового поиска</translation>
+ </message>
+</context>
+<context>
+ <name>OutputPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>Project file name:</source>
+ <translation>Имя файла проекта:</translation>
+ </message>
+ <message>
+ <source>Collection file name:</source>
+ <translation>Имя файла коллекции:</translation>
+ </message>
+ <message>
+ <source>Output File Names</source>
+ <translation>Имена выходных файлов</translation>
+ </message>
+ <message>
+ <source>Specify the file names for the output files.</source>
+ <translation>Укажите имена выходных файлов.</translation>
+ </message>
+ <message>
+ <source>Convert...</source>
+ <translation>Преобразовать...</translation>
+ </message>
+ <message>
+ <source>Qt Help Project File</source>
+ <translation>Файл проекта справки Qt</translation>
+ </message>
+ <message>
+ <source>Qt Help Collection Project File</source>
+ <translation>Файл проекта коллекции справки Qt</translation>
+ </message>
+ <message>
+ <source>The specified file %1 already exist.
+
+Do you want to remove it?</source>
+ <translation>Файл %1 уже существует.
+
+Желаете удалить его?</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Удалить</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+</context>
+<context>
+ <name>PathPage</name>
+ <message>
+ <source>Form</source>
+ <translation>Форма</translation>
+ </message>
+ <message>
+ <source>File filters:</source>
+ <translation>Фильтры файлов:</translation>
+ </message>
+ <message>
+ <source>Documentation source file paths:</source>
+ <translation>Пути к исходным файлам документации:</translation>
+ </message>
+ <message>
+ <source>Add</source>
+ <translation>Добавить</translation>
+ </message>
+ <message>
+ <source>Remove</source>
+ <translation>Удалить</translation>
+ </message>
+ <message>
+ <source>Source File Paths</source>
+ <translation>Пути к исходным файлам</translation>
+ </message>
+ <message>
+ <source>Specify the paths where the sources files are located. By default, all files in those directories matched by the file filter will be included.</source>
+ <translation>Укажите пути, где расположены исходные файлы. По умолчанию, будут включены все файлы в каталогах, соответствующие фильтру файлов.</translation>
+ </message>
+ <message>
+ <source>Source File Path</source>
+ <translation>Путь к исходному файлу</translation>
</message>
</context>
<context>
@@ -914,6 +1324,165 @@ Reason:
</message>
</context>
<context>
+ <name>QCollectionGenerator</name>
+ <message>
+ <source>Unknown token at line %1.</source>
+ <translation>Неизвестный токен в строке %1.</translation>
+ </message>
+ <message>
+ <source>Unknown token at line %1. Expected &quot;QtHelpCollectionProject&quot;.</source>
+ <translation>Неизвестный токен в строке %1. Ожидался &quot;QtHelpCollectionProject&quot;.</translation>
+ </message>
+ <message>
+ <source>Missing end tags.</source>
+ <translation>Отсутствуют завершающие теги.</translation>
+ </message>
+ <message>
+ <source>Missing input or output file for help file generation.</source>
+ <translation>Отсутствует входной или выходной файл для создания файла справки.</translation>
+ </message>
+ <message>
+ <source>Missing output file name.</source>
+ <translation>Отсутствует имя выходного файла.</translation>
+ </message>
+ <message>
+ <source>Qt Collection Generator version 1.0 (Qt %1)
+</source>
+ <translation>Генератор коллекций Qt версии 1.0 (Qt %1)
+</translation>
+ </message>
+ <message>
+ <source>Missing collection config file.</source>
+ <translation>Отсутствует файл настроек коллекции.</translation>
+ </message>
+ <message>
+ <source>
+Usage:
+
+qcollectiongenerator &lt;collection-config-file&gt; [options]
+
+ -o &lt;collection-file&gt; Generates a collection file
+ called &lt;collection-file&gt;. If
+ this option is not specified
+ a default name will be used.
+ -v Displays the version of
+ qcollectiongenerator.
+
+</source>
+ <translation>
+Использование:
+
+qcollectiongenerator &lt;файл-конфигурации-коллекции&gt; [ОПЦИИ]
+
+ -o &lt;файл-коллекции&gt; Создание файла коллекции с именем
+ &lt;файл-коллекции&gt;. Если эта опция не указана,
+ будет использовано имя по умолчанию.
+ -v Показать версию qcollectiongenerator.
+
+</translation>
+ </message>
+ <message>
+ <source>Could not open %1.
+</source>
+ <translation>Не удалось открыть %1.</translation>
+ </message>
+ <message>
+ <source>Reading collection config file...
+</source>
+ <translation>Чтение файла конфигурации коллекции...
+</translation>
+ </message>
+ <message>
+ <source>Collection config file error: %1
+</source>
+ <translation>Ошибка файла конфигурации коллекции: %1
+</translation>
+ </message>
+ <message>
+ <source>Generating help for %1...
+</source>
+ <translation>Создание справки для %1...</translation>
+ </message>
+ <message>
+ <source>Creating collection file...
+</source>
+ <translation>Создание файла коллекции...</translation>
+ </message>
+ <message>
+ <source>The file %1 cannot be overwritten.
+</source>
+ <translation>Файл %1 не может быть перезаписан.</translation>
+ </message>
+ <message>
+ <source>Cannot open %1.
+</source>
+ <translation>Не удалось открыть %1.</translation>
+ </message>
+ <message>
+ <source>Cannot open referenced image file %1.
+</source>
+ <translation>Не удалось открыть необходимый файл изображения %1.
+</translation>
+ </message>
+</context>
+<context>
+ <name>QHelpGenerator</name>
+ <message>
+ <source>Missing output file name.</source>
+ <translation>Отсутствует имя выходного файла.</translation>
+ </message>
+ <message>
+ <source>Qt Help Generator version 1.0 (Qt %1)
+</source>
+ <translation>Генератор справки Qt, версия 1.0 (Qt %1)
+</translation>
+ </message>
+ <message>
+ <source>Missing Qt help project file.</source>
+ <translation>Отсутствует файл проекта справки Qt.</translation>
+ </message>
+ <message>
+ <source>
+Usage:
+
+qhelpgenerator &lt;help-project-file&gt; [options]
+
+ -o &lt;compressed-file&gt; Generates a Qt compressed help
+ file called &lt;compressed-file&gt;.
+ If this option is not specified
+ a default name will be used.
+ -c Checks whether all links in HTML files
+ point to files in this help project.
+ -v Displays the version of
+ qhelpgenerator.
+
+</source>
+ <translation>
+Использование:
+
+qhelpgenerator &lt;файл-проекта-справки&gt; [ОПЦИИ]
+
+ -o &lt;сжатый-файл&gt; Создание сжатого файла справки Qt под именем
+ &lt;сжатый-файл&gt;. Если эта опция не указана,
+ будет использоваться имя по умолчанию.
+ -c Проверка на то, чтобы все ссылки в файлах
+ HTML указывали на файлы в этом проекте.
+ -v Отображение версии qhelpgenerator.
+
+</translation>
+ </message>
+ <message>
+ <source>Could not open %1.
+</source>
+ <translation>Не удалось открыть %1.</translation>
+ </message>
+ <message>
+ <source>Could not create output directory: %1
+</source>
+ <translation>Не удалось создать каталог: %1</translation>
+ </message>
+</context>
+<context>
<name>RemoteControl</name>
<message>
<source>Debugging Remote Control</source>
diff --git a/translations/designer_ru.ts b/translations/designer_ru.ts
index 89977b1057..d6ab18eb8d 100644
--- a/translations/designer_ru.ts
+++ b/translations/designer_ru.ts
@@ -25,6 +25,49 @@
</message>
</context>
<context>
+ <name>AbstractItemEditor</name>
+ <message>
+ <source>Selectable</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Editable</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>DragEnabled</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>DropEnabled</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>UserCheckable</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Enabled</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Tristate</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Unchecked</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>PartiallyChecked</source>
+ <translation></translation>
+ </message>
+ <message>
+ <source>Checked</source>
+ <translation></translation>
+ </message>
+</context>
+<context>
<name>AddLinkDialog</name>
<message>
<source>Insert Link</source>
@@ -304,7 +347,7 @@
</message>
<message>
<source>Change Z-order of &apos;%1&apos;</source>
- <translation type="unfinished">Изменить порядок удалённости &apos;%1&apos;</translation>
+ <translation>Изменить порядок удалённости &apos;%1&apos;</translation>
</message>
<message>
<source>Raise &apos;%1&apos;</source>
@@ -324,11 +367,11 @@
</message>
<message>
<source>Promote to custom widget</source>
- <translation type="unfinished">Преобразовать в пользовательский виджет</translation>
+ <translation>Преобразовать в пользовательский виджет</translation>
</message>
<message>
<source>Demote from custom widget</source>
- <translation type="unfinished">Преобразовать из пользовательского виджета</translation>
+ <translation>Преобразовать из пользовательского виджета</translation>
</message>
<message>
<source>Lay out using grid</source>
@@ -348,7 +391,7 @@
</message>
<message>
<source>Simplify Grid Layout</source>
- <translation type="unfinished">Упрощённая компоновка по сетке</translation>
+ <translation>Упрощённая компоновка по сетке</translation>
</message>
<message>
<source>Move Page</source>
@@ -396,7 +439,7 @@
</message>
<message>
<source>Add Dock Window</source>
- <translation type="unfinished">Добавить прикрепляемое окно</translation>
+ <translation>Добавить прикрепляемое окно</translation>
</message>
<message>
<source>Adjust Size of &apos;%1&apos;</source>
@@ -404,11 +447,11 @@
</message>
<message>
<source>Change Form Layout Item Geometry</source>
- <translation type="unfinished">Изменить геометрию элементов компоновки столбцами</translation>
+ <translation>Изменить геометрию элемента компоновки столбцами</translation>
</message>
<message>
<source>Change Layout Item Geometry</source>
- <translation type="unfinished">Изменить геометрию элементов компоновки</translation>
+ <translation>Изменить геометрию элемента компоновки</translation>
</message>
<message>
<source>Delete Subwindow</source>
@@ -653,7 +696,7 @@
</message>
<message>
<source>Promoted Widgets</source>
- <translation type="unfinished">Преобразованные виджеты</translation>
+ <translation>Преобразованные виджеты</translation>
</message>
<message>
<source>Unable to launch %1.</source>
@@ -777,7 +820,7 @@
<message>
<source>Embedded Design</source>
<extracomment>Tab in preferences dialog</extracomment>
- <translation type="unfinished">Оформление портативных устройств</translation>
+ <translation>Оформление портативных устройств</translation>
</message>
<message>
<source>Device Profiles</source>
@@ -852,6 +895,7 @@ Parsing grid layout minimum size values</extracomment>
<name>FormEditorOptionsPage</name>
<message>
<source>%1 %</source>
+ <extracomment>Zoom percentage</extracomment>
<translation>%1 %</translation>
</message>
<message>
@@ -876,7 +920,7 @@ Parsing grid layout minimum size values</extracomment>
<name>FormLayoutRowDialog</name>
<message>
<source>Add Form Layout Row</source>
- <translation type="unfinished">Добавление строки компоновщика формы</translation>
+ <translation>Добавление строки компоновщика столбцами (QFormLayout)</translation>
</message>
<message>
<source>&amp;Label text:</source>
@@ -962,7 +1006,7 @@ Parsing grid layout minimum size values</extracomment>
</message>
<message>
<source>Embedded Design</source>
- <translation type="unfinished">Оформление портативных устройств</translation>
+ <translation>Оформление портативных устройств</translation>
</message>
</context>
<context>
@@ -1131,7 +1175,7 @@ Parsing grid layout minimum size values</extracomment>
<message>
<source>Not used</source>
<extracomment>Usage of promoted widgets</extracomment>
- <translation>Не используется</translation>
+ <translation>Не используются</translation>
</message>
</context>
<context>
@@ -1205,11 +1249,11 @@ This indicates an inconsistency in the ui-file.</source>
<name>QAxWidgetTaskMenu</name>
<message>
<source>Set Control</source>
- <translation>Установить элемент управления</translation>
+ <translation>Задать элемент управления</translation>
</message>
<message>
<source>Reset Control</source>
- <translation type="unfinished">Удалить элемент управления</translation>
+ <translation>Сбросить элемент управления</translation>
</message>
<message>
<source>Licensed Control</source>
@@ -1224,7 +1268,7 @@ This indicates an inconsistency in the ui-file.</source>
<name>QCoreApplication</name>
<message>
<source>%1 is not a promoted class.</source>
- <translation type="unfinished">%1 не является преобразованным классом.</translation>
+ <translation>%1 не является преобразованным классом.</translation>
</message>
<message>
<source>The base class %1 is invalid.</source>
@@ -1236,7 +1280,7 @@ This indicates an inconsistency in the ui-file.</source>
</message>
<message>
<source>Promoted Widgets</source>
- <translation type="unfinished">Преобразованные виджеты</translation>
+ <translation>Преобразованные виджеты</translation>
</message>
<message>
<source>The class %1 cannot be removed</source>
@@ -1567,11 +1611,11 @@ Would you like to retry?</source>
<name>QDesignerAxWidget</name>
<message>
<source>Reset control</source>
- <translation type="unfinished">Сбросить элемент управления</translation>
+ <translation>Сбросить элемент управления</translation>
</message>
<message>
<source>Set control</source>
- <translation>Установить элемент управления</translation>
+ <translation>Задать элемент управления</translation>
</message>
<message>
<source>Control loaded</source>
@@ -1579,7 +1623,7 @@ Would you like to retry?</source>
</message>
<message>
<source>A COM exception occurred when executing a meta call of type %1, index %2 of &quot;%3&quot;.</source>
- <translation type="unfinished">Возникло исключение COM при выполнении мета-вызова типа %1, индекс %2 &quot;%3&quot;.</translation>
+ <translation>Возникло исключение COM при выполнении мета-вызова типа %1, индекс %2 в &quot;%3&quot;.</translation>
</message>
</context>
<context>
@@ -1838,7 +1882,7 @@ Container pages should only be added by specifying them in XML returned by the d
</message>
<message>
<source>Backup Information</source>
- <translation type="unfinished">Информация о резервированых копиях</translation>
+ <translation>Информация о резервных копиях</translation>
</message>
<message>
<source>The last session of Designer was not terminated correctly. Backup files were left behind. Do you want to load them?</source>
@@ -2232,27 +2276,27 @@ Empty class name passed to widget factory method</extracomment>
</message>
<message>
<source>Linear</source>
- <translation type="unfinished">Линейный</translation>
+ <translation>Линейный</translation>
</message>
<message>
<source>Radial</source>
- <translation type="unfinished">Радиальный</translation>
+ <translation>Радиальный</translation>
</message>
<message>
<source>Conical</source>
- <translation type="unfinished">Конический</translation>
+ <translation>Конический</translation>
</message>
<message>
<source>Pad</source>
- <translation type="unfinished">Равномерная</translation>
+ <translation>Равномерная</translation>
</message>
<message>
<source>Repeat</source>
- <translation type="unfinished">Цикличная</translation>
+ <translation>Цикличная</translation>
</message>
<message>
<source>Reflect</source>
- <translation type="unfinished">Зеркальная</translation>
+ <translation>Зеркальная</translation>
</message>
<message>
<source>Form</source>
@@ -2514,6 +2558,10 @@ Empty class name passed to widget factory method</extracomment>
<context>
<name>QtLocalePropertyManager</name>
<message>
+ <source>&lt;Invalid&gt;</source>
+ <translation>&lt;Некорректное значение&gt;</translation>
+ </message>
+ <message>
<source>%1, %2</source>
<translation>%1, %2</translation>
</message>
@@ -2651,7 +2699,7 @@ Do you want to replace it?</source>
</message>
<message>
<source>newPrefix</source>
- <translation type="unfinished">newPrefix</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
<source>&lt;p&gt;&lt;b&gt;Warning:&lt;/b&gt; The file&lt;/p&gt;&lt;p&gt;%1&lt;/p&gt;&lt;p&gt;is outside of the current resource file&apos;s parent directory.&lt;/p&gt;</source>
@@ -2883,7 +2931,7 @@ to
<name>QtSizePolicyPropertyManager</name>
<message>
<source>&lt;Invalid&gt;</source>
- <translation>&lt;Неверный&gt;</translation>
+ <translation>&lt;Некорректное значение&gt;</translation>
</message>
<message>
<source>[%1, %2, %3, %4]</source>
@@ -3174,23 +3222,23 @@ Do you want overwrite the template?</source>
</message>
<message>
<source>Dock views</source>
- <translation type="unfinished">Прикрепляемые панели</translation>
+ <translation>Прикрепляемые панели</translation>
</message>
<message>
<source>File</source>
- <translation type="unfinished">Файл</translation>
+ <translation>Файл</translation>
</message>
<message>
<source>Edit</source>
- <translation type="unfinished">Правка</translation>
+ <translation>Правка</translation>
</message>
<message>
<source>Tools</source>
- <translation type="unfinished">Инструменты</translation>
+ <translation>Инструменты</translation>
</message>
<message>
<source>Form</source>
- <translation type="unfinished">Форма</translation>
+ <translation>Форма</translation>
</message>
<message>
<source>Toolbars</source>
@@ -3220,11 +3268,11 @@ Do you want overwrite the template?</source>
<name>VideoPlayerTaskMenu</name>
<message>
<source>Available Mime Types</source>
- <translation type="unfinished">Доступные типы данных</translation>
+ <translation>Доступные типы данных</translation>
</message>
<message>
<source>Display supported mime types...</source>
- <translation type="unfinished">Показывать поддерживаемые типы данных...</translation>
+ <translation>Показать поддерживаемые типы данных...</translation>
</message>
<message>
<source>Load...</source>
@@ -3306,11 +3354,11 @@ Do you want overwrite the template?</source>
</message>
<message>
<source>Icon View</source>
- <translation type="unfinished">Значки</translation>
+ <translation>Значки</translation>
</message>
<message>
<source>Detailed View</source>
- <translation type="unfinished">Подробно</translation>
+ <translation>Подробно</translation>
</message>
<message>
<source>New action</source>
@@ -3902,7 +3950,7 @@ Do you want overwrite the template?</source>
<name>qdesigner_internal::FormLayoutMenu</name>
<message>
<source>Add form layout row...</source>
- <translation>Добавить строку компоновщика формы...</translation>
+ <translation>Добавить строку компоновки в 2 столбца...</translation>
</message>
</context>
<context>
@@ -3953,7 +4001,7 @@ Do you want overwrite the template?</source>
</message>
<message>
<source>Cannot paste widgets. Designer could not find a container without a layout to paste into.</source>
- <translation type="unfinished">Не удалось вставить виджеты. Qt Designer не смог найти контейнер без компоновщика для вставки виджетов.</translation>
+ <translation>Не удалось вставить виджеты. Qt Designer не смог найти контейнер без компоновщика для вставки виджетов.</translation>
</message>
<message>
<source>Break the layout of the container you want to paste into, select this container and then paste again.</source>
@@ -4083,11 +4131,11 @@ Do you want overwrite the template?</source>
</message>
<message>
<source>Lay Out in a &amp;Form Layout</source>
- <translation>Скомпоновать в &amp;две колонки</translation>
+ <translation>Скомпоновать в &amp;два столбца</translation>
</message>
<message>
<source>Lays out the selected widgets in a form layout</source>
- <translation>Компонует выделенные виджеты в две колонки (QFormLayout)</translation>
+ <translation>Компонует выделенные виджеты в два столбца (QFormLayout)</translation>
</message>
<message>
<source>Lay Out in a &amp;Grid</source>
@@ -4548,7 +4596,7 @@ Please select another name.</source>
</message>
<message>
<source>Embedded Design</source>
- <translation type="unfinished">Оформление портативных устройств</translation>
+ <translation>Оформление портативных устройств</translation>
</message>
<message>
<source>Device:</source>
@@ -4567,7 +4615,7 @@ Please select another name.</source>
</message>
<message>
<source>New Promoted Class</source>
- <translation type="unfinished">Новый преобразованный класс</translation>
+ <translation>Новый преобразованный класс</translation>
</message>
<message>
<source>Base class name:</source>
@@ -4575,7 +4623,7 @@ Please select another name.</source>
</message>
<message>
<source>Promoted class name:</source>
- <translation type="unfinished">Имя преобразованного класса:</translation>
+ <translation>Имя преобразованного класса:</translation>
</message>
<message>
<source>Header file:</source>
@@ -4644,7 +4692,7 @@ Please select another name.</source>
</message>
<message>
<source>Compute Details</source>
- <translation type="unfinished">Расчитывать детали</translation>
+ <translation type="unfinished">Рассчитывать детали</translation>
</message>
<message>
<source>Quick</source>
@@ -4671,7 +4719,7 @@ Please select another name.</source>
<name>qdesigner_internal::PaletteEditorButton</name>
<message>
<source>Change Palette</source>
- <translation type="unfinished">Изменить палитру</translation>
+ <translation>Изменить палитру</translation>
</message>
</context>
<context>
@@ -4742,6 +4790,14 @@ Please select another name.</source>
<translation>Поиск вновь установленных модулей пользовательских виджетов.</translation>
</message>
<message>
+ <source>Loaded Plugins</source>
+ <translation>Загруженные модули</translation>
+ </message>
+ <message>
+ <source>Failed Plugins</source>
+ <translation>Незагруженные модули</translation>
+ </message>
+ <message>
<source>Qt Designer couldn&apos;t find any plugins</source>
<translation>Qt Designer не может найти ни одного модуля</translation>
</message>
@@ -4898,7 +4954,7 @@ ate the goose who was loose.</source>
</message>
<message>
<source>Global include</source>
- <translation>Глобальное включение</translation>
+ <translation type="unfinished">Глобальное включение</translation>
</message>
<message>
<source>Usage</source>
@@ -4909,11 +4965,11 @@ ate the goose who was loose.</source>
<name>qdesigner_internal::PromotionTaskMenu</name>
<message>
<source>Promoted widgets...</source>
- <translation type="unfinished">Преобразованные виджеты...</translation>
+ <translation>Преобразованные виджеты...</translation>
</message>
<message>
<source>Promote to ...</source>
- <translation type="unfinished">Преобразовать в ...</translation>
+ <translation>Преобразовать в ...</translation>
</message>
<message>
<source>Change signals/slots...</source>
@@ -4921,11 +4977,11 @@ ate the goose who was loose.</source>
</message>
<message>
<source>Promote to</source>
- <translation type="unfinished">Преобразовать в</translation>
+ <translation>Преобразовать в</translation>
</message>
<message>
<source>Demote to %1</source>
- <translation type="unfinished">Преобразовать в %1</translation>
+ <translation>Преобразовать в %1</translation>
</message>
</context>
<context>
@@ -4988,15 +5044,15 @@ Class: %2</source>
<name>qdesigner_internal::QDesignerPromotionDialog</name>
<message>
<source>Promoted Widgets</source>
- <translation type="unfinished">Преобразованные виджеты</translation>
+ <translation>Преобразованные виджеты</translation>
</message>
<message>
<source>Promoted Classes</source>
- <translation type="unfinished">Преобразованные классы</translation>
+ <translation>Преобразованные классы</translation>
</message>
<message>
<source>Promote</source>
- <translation type="unfinished">Преобразовать</translation>
+ <translation>Преобразовать</translation>
</message>
<message>
<source>Change signals/slots...</source>
@@ -5227,7 +5283,7 @@ Class: %2</source>
</message>
<message>
<source>Source</source>
- <translation type="unfinished">Исходник</translation>
+ <translation>Исходник</translation>
</message>
<message>
<source>&amp;OK</source>
@@ -5600,7 +5656,7 @@ Class: %2</source>
</message>
<message>
<source>Edit Tree Widget</source>
- <translation type="unfinished">Изменение виджета Дерево</translation>
+ <translation>Изменение виджета Дерево</translation>
</message>
<message>
<source>&amp;Items</source>
@@ -5681,7 +5737,7 @@ Class: %2</source>
<name>qdesigner_internal::WidgetBoxTreeWidget</name>
<message>
<source>Scratchpad</source>
- <translation type="unfinished">Блокнот</translation>
+ <translation>Блокнот</translation>
</message>
<message>
<source>Custom Widgets</source>
@@ -5742,7 +5798,7 @@ Class: %2</source>
</message>
<message>
<source>The current page of the container &apos;%1&apos; (%2) could not be determined while creating a layout.This indicates an inconsistency in the ui-file, probably a layout being constructed on a container widget.</source>
- <translation type="unfinished">При создании компоновщика не удалось определить текущую страницу контейнера &apos;%1&apos; (%2). Это указывает на некорректность файла ui - возможно, компоновщик был создан для контейнерного виджета.</translation>
+ <translation>При создании компоновщика не удалось определить текущую страницу контейнера &apos;%1&apos; (%2). Это указывает на некорректность файла ui - возможно, компоновщик был создан для виджета контейнерного типа.</translation>
</message>
<message>
<source>Attempt to add a layout to a widget &apos;%1&apos; (%2) which already has an unmanaged layout of type %3.
diff --git a/translations/linguist_ja.ts b/translations/linguist_ja.ts
index 2f948e8253..2f948e8253 100755..100644
--- a/translations/linguist_ja.ts
+++ b/translations/linguist_ja.ts
diff --git a/translations/linguist_ru.ts b/translations/linguist_ru.ts
index 2d06f25758..3b448a0351 100644
--- a/translations/linguist_ru.ts
+++ b/translations/linguist_ru.ts
@@ -258,6 +258,191 @@ Will assume a single universal form.</source>
</message>
</context>
<context>
+ <name>LConvert</name>
+ <message>
+ <source>
+Usage:
+ lconvert [options] &lt;infile&gt; [&lt;infile&gt;...]
+
+lconvert is part of Qt&apos;s Linguist tool chain. It can be used as a
+stand-alone tool to convert and filter translation data files.
+The following file formats are supported:
+
+%1
+If multiple input files are specified, they are merged with
+translations from later files taking precedence.
+
+Options:
+ -h
+ --help Display this information and exit.
+
+ -i &lt;infile&gt;
+ --input-file &lt;infile&gt;
+ Specify input file. Use if &lt;infile&gt; might start with a dash.
+ This option can be used several times to merge inputs.
+ May be &apos;-&apos; (standard input) for use in a pipe.
+
+ -o &lt;outfile&gt;
+ --output-file &lt;outfile&gt;
+ Specify output file. Default is &apos;-&apos; (standard output).
+
+ -if &lt;informat&gt;
+ --input-format &lt;format&gt;
+ Specify input format for subsequent &lt;infile&gt;s.
+ The format is auto-detected from the file name and defaults to &apos;ts&apos;.
+
+ -of &lt;outformat&gt;
+ --output-format &lt;outformat&gt;
+ Specify output format. See -if.
+
+ --input-codec &lt;codec&gt;
+ Specify encoding for QM and PO input files. Default is &apos;Latin1&apos;
+ for QM and &apos;UTF-8&apos; for PO files. UTF-8 is always tried as well for
+ QM, corresponding to the possible use of the trUtf8() function.
+
+ --output-codec &lt;codec&gt;
+ Specify encoding for PO output files. Default is &apos;UTF-8&apos;.
+
+ --drop-tags &lt;regexp&gt;
+ Drop named extra tags when writing TS or XLIFF files.
+ May be specified repeatedly.
+
+ --drop-translations
+ Drop existing translations and reset the status to &apos;unfinished&apos;.
+ Note: this implies --no-obsolete.
+
+ --source-language &lt;language&gt;[_&lt;region&gt;]
+ Specify/override the language of the source strings. Defaults to
+ POSIX if not specified and the file does not name it yet.
+
+ --target-language &lt;language&gt;[_&lt;region&gt;]
+ Specify/override the language of the translation.
+ The target language is guessed from the file name if this option
+ is not specified and the file contents name no language yet.
+
+ --no-obsolete
+ Drop obsolete messages.
+
+ --no-finished
+ Drop finished messages.
+
+ --sort-contexts
+ Sort contexts in output TS file alphabetically.
+
+ --locations {absolute|relative|none}
+ Override how source code references are saved in TS files.
+ Default is absolute.
+
+ --no-ui-lines
+ Drop line numbers from references to UI files.
+
+ --verbose
+ be a bit more verbose
+
+Long options can be specified with only one leading dash, too.
+
+Return value:
+ 0 on success
+ 1 on command line parse failures
+ 2 on read failures
+ 3 on write failures
+</source>
+ <translation>
+Использование:
+ lconvert [параметры] &lt;входной файл&gt; [&lt;входной файл&gt;...]
+
+lconvert - это один из инструментов Qt Linguist. Он может быть использован как
+для преобразования файлов переводов, так и для обработки файлов переводов.
+
+Поддерживаются файлы следующих форматов:
+
+%1
+Если задано несколько входных файлов, то они будут объединены, причем, каждый
+последующий файл имеет приоритет над предыдущим.
+
+Параметры:
+ -h
+ --help Отображение данной справки и выход.
+
+ -i &lt;файл&gt;
+ --input-file &lt;файл&gt;
+ Указание входного файл. Следует использовать, если &lt;входной файл&gt;
+ начинается с дефиса. Этот параметр может быть использован несколько
+ раз для объединения файлов.
+ Допустимо значение &quot;-&quot; (стандартный ввод) для использования каналов.
+
+ -o &lt;файл&gt;
+ --output-file &lt;файл&gt;
+ Указание выходного файла.
+ По умолчанию значение &quot;-&quot; (стандартный вывод).
+
+ -if &lt;формат&gt;
+ --input-format &lt;формат&gt;
+ Указание формата для последующих входных файлов.
+ Формат определяется автоматически из имени файла.
+ По умолчанию предполагается &quot;ts&quot;.
+
+ -of &lt;формат&gt;
+ --output-format &lt;формат&gt;
+ Указание формата выходного файла. См. -if.
+
+ --input-codec &lt;кодировка&gt;
+ Указание кодировки входных файлов QM и PO. По умолчанию,
+ используется &quot;Latin1&quot; для QM и &quot;UTF-8&quot; для PO файлов. Так же UTF-8
+ всегда применяется для QM, где возможно использование
+ функции trUtf8().
+
+ --output-codec &lt;кодировка&gt;
+ Указание кодировки выходных файлов формата PO. По умолчанию &quot;UTF-8&quot;.
+
+ --drop-tags &lt;regexp&gt;
+ Опустить дополнительные теги, соответствующие регулярному выражению
+ regexp, при записи файлов TS или XLIFF.
+ Можно указывать несколько раз.
+
+ --drop-translations
+ Опустить существующие переводы и сбросить их статус в &quot;незавершено&quot;.
+ Включает действие --no-obsolete.
+
+ --source-language &lt;язык&gt;[_&lt;регион&gt;]
+ Задание/изменение языка исходных строк. По умолчанию POSIX, если не
+ указано и файл не содержит язык исходных строк в своём имени.
+
+ --target-language &lt;язык&gt;[_&lt;регион&gt;]
+ Задание/изменение языка переводов.
+ Этот язык определяется из имени файла, если этот параметр не задан
+ или язык не указан внутри файла.
+
+ --no-obsolete
+ Опустить устаревшие переводы.
+
+ --no-finished
+ Опустить завершённые переводы.
+
+ --sort-contexts
+ Упорядочить по алфавиту контекст выходного TS файла.
+
+ --locations {absolute|relative|none}
+ Изменение метода сохранения ссылок на исходные тексты в TS файлах.
+ По умолчанию absolute.
+
+ --no-ui-lines
+ Опустить номера строк в ссылках на UI файлы.
+
+ --verbose
+ Выводить чуть больше информации.
+
+Длинные параметры также можно указывать и с одним дефисом.
+
+Возвращаемые результаты:
+ 0 в случае успеха
+ 1 в случае ошибки в командной строке
+ 2 при ошибке чтения
+ 3 при ошибки записи
+</translation>
+ </message>
+</context>
+<context>
<name>LRelease</name>
<message numerus="yes">
<source>Dropped %n message(s) which had no ID.</source>
@@ -291,6 +476,763 @@ Will assume a single universal form.</source>
<numerusform> Пропущено %n непереведённых исходных текстов</numerusform>
</translation>
</message>
+ <message>
+ <source>Usage:
+ lrelease [options] project-file
+ lrelease [options] ts-files [-qm qm-file]
+
+lrelease is part of Qt&apos;s Linguist tool chain. It can be used as a
+stand-alone tool to convert XML-based translations files in the TS
+format into the &apos;compiled&apos; QM format used by QTranslator objects.
+
+Options:
+ -help Display this information and exit
+ -idbased
+ Use IDs instead of source strings for message keying
+ -compress
+ Compress the QM files
+ -nounfinished
+ Do not include unfinished translations
+ -removeidentical
+ If the translated text is the same as
+ the source text, do not include the message
+ -markuntranslated &lt;prefix&gt;
+ If a message has no real translation, use the source text
+ prefixed with the given string instead
+ -silent
+ Do not explain what is being done
+ -version
+ Display the version of lrelease and exit
+</source>
+ <translation>Использование:
+ lrelease [параметры] &lt;файл-проекта&gt;
+ lrelease [параметры] &lt;ts-файлы&gt; [-qm &lt;qm-файлы&gt;]
+
+lrelease - это один из инструментов Qt Linguist. Он может быть использован для
+преобразования переводов, основанных на формате TS в &quot;скомпилированный&quot;
+формат QM, используемый объектами QTranslator.
+
+Параметры:
+ -help
+ Отобразить данную справку и выйти
+ -idbased
+ Использовать ID вместо исходных строк для индексирования сообщений
+ -compress
+ Сжать файл QM
+ -nounfinished
+ Не включать незавершённые переводы
+ -removeidentical
+ Не включать переводы, совпадающие с исходным текстом
+ -markuntranslated &lt;приставка&gt;
+ Если сообщение не имеет перевода, то использовать исходный текст
+ с указанной приставкой
+ -silent
+ Не отчитываться о производимых действиях
+ -version
+ Отобразить текущую версию lrelease и выйти
+</translation>
+ </message>
+ <message>
+ <source>lrelease error: %1</source>
+ <translation>lrelease ошибка: %1</translation>
+ </message>
+ <message>
+ <source>Updating &apos;%1&apos;...
+</source>
+ <translation>Обновление &apos;%1&apos;...
+</translation>
+ </message>
+ <message>
+ <source>Removing translations equal to source text in &apos;%1&apos;...
+</source>
+ <translation>Удаление переводов для &apos;%1&apos;...
+</translation>
+ </message>
+ <message>
+ <source>lrelease error: cannot create &apos;%1&apos;: %2
+</source>
+ <translation>lrelease ошибка: не удалось создать &apos;%1&apos;: %2</translation>
+ </message>
+ <message>
+ <source>lrelease error: cannot save &apos;%1&apos;: %2</source>
+ <translation>lrelease ошибка: не удалось сохранить &apos;%1&apos;: %2</translation>
+ </message>
+ <message>
+ <source>lrelease version %1
+</source>
+ <translation>lrelease версия %1
+</translation>
+ </message>
+ <message>
+ <source>lrelease error: cannot read project file &apos;%1&apos;.
+</source>
+ <translation>lrelease ошибка: не удалось прочитать файл проекта &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <source>lrelease error: cannot process project file &apos;%1&apos;.
+</source>
+ <translation>lrelease ошибка: не удалось обработать файл проекта &apos;%1&apos;.</translation>
+ </message>
+ <message>
+ <source>lrelease warning: Met no &apos;TRANSLATIONS&apos; entry in project file &apos;%1&apos;
+</source>
+ <translation>lrelease ошибка: в файле проекта &apos;%1&apos; отсутствует запись &apos;TRANSLATIONS&apos;</translation>
+ </message>
+</context>
+<context>
+ <name>LUpdate</name>
+ <message>
+ <source>Parenthesis/bracket/brace mismatch between #if and #else branches; using #if branch
+</source>
+ <translation>Несовпадение скобок (круглых, квадратных или фигурных) между ветками #if и #else; используется ветка #if
+</translation>
+ </message>
+ <message>
+ <source>Parenthesis/brace mismatch between #if and #else branches; using #if branch
+</source>
+ <translation>Несовпадение скобок (круглых или фигурных) между ветками #if и #else; используется ветка #if
+</translation>
+ </message>
+ <message>
+ <source>Unterminated C++ comment
+</source>
+ <translation>Незавершённый комментарий C++
+</translation>
+ </message>
+ <message>
+ <source>Unterminated C++ string
+</source>
+ <translation>Незавершённая строка C++
+</translation>
+ </message>
+ <message>
+ <source>Excess closing brace in C++ code (or abuse of the C++ preprocessor)
+</source>
+ <translation>Лишняя закрывающая фигурная скобка в C++ коде (или злоупотребление препроцессором C++)
+</translation>
+ </message>
+ <message>
+ <source>Excess closing parenthesis in C++ code (or abuse of the C++ preprocessor)
+</source>
+ <translation>Лишняя закрывающая круглая скобка в C++ коде (или злоупотребление препроцессором C++)
+</translation>
+ </message>
+ <message>
+ <source>Excess closing bracket in C++ code (or abuse of the C++ preprocessor)
+</source>
+ <translation>Лишняя закрывающая квадратная скобка в C++ коде (или злоупотребление препроцессором C++)
+</translation>
+ </message>
+ <message>
+ <source>circular inclusion of %1
+</source>
+ <translation>цикличное включение %1
+</translation>
+ </message>
+ <message>
+ <source>Cannot open %1: %2
+</source>
+ <translation>Невозможно открыть %1: %2
+</translation>
+ </message>
+ <message>
+ <source>//% cannot be used with tr() / QT_TR_NOOP(). Ignoring
+</source>
+ <translation>//% не может быть использовано совместно с tr() / QT_TR_NOOP(). Пропускается
+</translation>
+ </message>
+ <message>
+ <source>Qualifying with unknown namespace/class %1::%2
+</source>
+ <translation>Уточнение с неизвестным пространством имён/классом %1::%2
+</translation>
+ </message>
+ <message>
+ <source>tr() cannot be called without context
+</source>
+ <translation>tr() не может быть вызван без контекста
+</translation>
+ </message>
+ <message>
+ <source>Class &apos;%1&apos; lacks Q_OBJECT macro
+</source>
+ <translation>У класса &quot;%1&quot; отсутствует макрос Q_OBJECT
+</translation>
+ </message>
+ <message>
+ <source>It is not recommended to call tr() from within a constructor &apos;%1::%2&apos;
+</source>
+ <translation>Не рекомендуется вызывать tr() в теле конструктора &quot;%1::%2&quot;
+</translation>
+ </message>
+ <message>
+ <source>//% cannot be used with translate() / QT_TRANSLATE_NOOP(). Ignoring
+</source>
+ <translation>//% не может быть использовано совместно с translate() / QT_TRANSLATE_NOOP(). Пропускается
+</translation>
+ </message>
+ <message>
+ <source>//= cannot be used with qtTrId() / QT_TRID_NOOP(). Ignoring
+</source>
+ <translation>//= не может быть использовано совместно с qtTrId() / QT_TRID_NOOP(). Пропускается
+</translation>
+ </message>
+ <message>
+ <source>Unexpected character in meta string
+</source>
+ <translation>Неожиданный символ в мета-строке
+</translation>
+ </message>
+ <message>
+ <source>Unterminated meta string
+</source>
+ <translation>Незавершённая мета-строка
+</translation>
+ </message>
+ <message>
+ <source>Cannot invoke tr() like this
+</source>
+ <translation>Использование tr() в том виде, как здесь, не допускается
+</translation>
+ </message>
+ <message>
+ <source>Discarding unconsumed meta data
+</source>
+ <translation>Отбрасываются неиспользуемые мета-данные
+</translation>
+ </message>
+ <message>
+ <source>Unbalanced opening brace in C++ code (or abuse of the C++ preprocessor)
+</source>
+ <translation>Лишняя открывающая фигурная скобка в C++ коде (или злоупотребление препроцессором C++)
+</translation>
+ </message>
+ <message>
+ <source>Unbalanced opening parenthesis in C++ code (or abuse of the C++ preprocessor)
+</source>
+ <translation>Лишняя открывающая круглая скобка в C++ коде (или злоупотребление препроцессором C++)
+</translation>
+ </message>
+ <message>
+ <source>Unbalanced opening bracket in C++ code (or abuse of the C++ preprocessor)
+</source>
+ <translation>Лишняя открывающая квадратная скобка в C++ коде (или злоупотребление препроцессором C++)
+</translation>
+ </message>
+ <message>
+ <source>Cannot open %1: %2</source>
+ <translation>Невозможно открыть %1: %2</translation>
+ </message>
+ <message>
+ <source>Unterminated Java comment.
+</source>
+ <translation>Незавершённый комментарий Java.
+</translation>
+ </message>
+ <message>
+ <source>Invalid Unicode value.
+</source>
+ <translation>Неверное значение Unicode.
+</translation>
+ </message>
+ <message>
+ <source>Unterminated string.
+</source>
+ <translation>Незавершённая строка.
+</translation>
+ </message>
+ <message>
+ <source>String used in translation can contain only literals concatenated with other literals, not expressions or numbers.
+</source>
+ <translation>Строка, используемая в переводе, может содержать только строковые литералы (возможно, соединённые с другими литералами), но не выражения или числа.
+</translation>
+ </message>
+ <message>
+ <source>&apos;class&apos; must be followed by a class name.
+</source>
+ <translation>После слова &quot;class&quot; должно идти имя класса.
+</translation>
+ </message>
+ <message>
+ <source>Excess closing brace.
+</source>
+ <translation>Лишняя закрывающая фигурная скобка.
+</translation>
+ </message>
+ <message>
+ <source>&apos;package&apos; must be followed by package name.
+</source>
+ <translation>После слова &quot;package&quot; должно идти имя пакета.
+</translation>
+ </message>
+ <message>
+ <source>Unbalanced opening brace.
+</source>
+ <translation>Лишняя открывающая фигурная скобка.
+</translation>
+ </message>
+ <message>
+ <source>Unbalanced opening parenthesis.
+</source>
+ <translation>Лишняя открывающая круглая скобка.
+</translation>
+ </message>
+ <message>
+ <source>Usage:
+ lupdate [options] [project-file]...
+ lupdate [options] [source-file|path|@lst-file]... -ts ts-files|@lst-file
+
+lupdate is part of Qt&apos;s Linguist tool chain. It extracts translatable
+messages from Qt UI files, C++, Java and JavaScript/QtScript source code.
+Extracted messages are stored in textual translation source files (typically
+Qt TS XML). New and modified messages can be merged into existing TS files.
+
+Options:
+ -help Display this information and exit.
+ -no-obsolete
+ Drop all obsolete strings.
+ -extensions &lt;ext&gt;[,&lt;ext&gt;]...
+ Process files with the given extensions only.
+ The extension list must be separated with commas, not with whitespace.
+ Default: &apos;%1&apos;.
+ -pluralonly
+ Only include plural form messages.
+ -silent
+ Do not explain what is being done.
+ -no-sort
+ Do not sort contexts in TS files.
+ -no-recursive
+ Do not recursively scan the following directories.
+ -recursive
+ Recursively scan the following directories (default).
+ -I &lt;includepath&gt; or -I&lt;includepath&gt;
+ Additional location to look for include files.
+ May be specified multiple times.
+ -locations {absolute|relative|none}
+ Specify/override how source code references are saved in TS files.
+ Default is absolute.
+ -no-ui-lines
+ Do not record line numbers in references to UI files.
+ -disable-heuristic {sametext|similartext|number}
+ Disable the named merge heuristic. Can be specified multiple times.
+ -pro &lt;filename&gt;
+ Name of a .pro file. Useful for files with .pro file syntax but
+ different file suffix. Projects are recursed into and merged.
+ -source-language &lt;language&gt;[_&lt;region&gt;]
+ Specify the language of the source strings for new files.
+ Defaults to POSIX if not specified.
+ -target-language &lt;language&gt;[_&lt;region&gt;]
+ Specify the language of the translations for new files.
+ Guessed from the file name if not specified.
+ -ts &lt;ts-file&gt;...
+ Specify the output file(s). This will override the TRANSLATIONS
+ and nullify the CODECFORTR from possibly specified project files.
+ -codecfortr &lt;codec&gt;
+ Specify the codec assumed for tr() calls. Effective only with -ts.
+ -version
+ Display the version of lupdate and exit.
+ @lst-file
+ Read additional file names (one per line) from lst-file.
+</source>
+ <translation>Использование:
+ lupdate [параметры] [файл-проекта]...
+ lupdate [параметры] [исходный-файл|путь|@lst-файл]... -ts ts-файлы|@lst-файл
+
+lupdate - это один из инструментов Qt Linguist. Он извлекает переводимые строки
+из файлов Qt UI, исходных текстов C++, Java и JavaScript/QtScript. Эти строки
+сохраняются в текстовых исходных файлах перевода (обычно, Qt TS XML). Новые
+или изменённые сообщения могут быть добавлены в существующие TS файлы.
+
+Параметры:
+ -help Отобразить эту информацию и выйти.
+ -no-obsolete
+ Удалить все устаревшие строки.
+ -extensions &lt;ext&gt;[,&lt;ext&gt;]...
+ Обрабатывать файлы, имеющие только указанные расширения.
+ Список расширений должен быть разделён запятыми, а не пробелами.
+ По умолчанию:
+ &quot;%1&quot;.
+ -pluralonly
+ Включать только множественную форму сообщений.
+ -silent
+ Не показывать выполняемые действия.
+ -no-sort
+ Не упорядочивать контекст в TS файлах.
+ -no-recursive
+ Не сканировать каталоги рекурсивно.
+ -recursive
+ Сканировать каталоги рекурсивно (по умолчанию).
+ -I &lt;путь&gt; or -I&lt;путь&gt;
+ Дополнительное расположение подключаемых файлов.
+ Можно указать несколько раз.
+ -locations {absolute|relative|none}
+ Изменение метода сохранения ссылок на исходные тексты в TS файлах.
+ По умолчанию absolute.
+ -no-ui-lines
+ Не сохранять номера строк в ссылках на UI файлы.
+ -disable-heuristic {sametext|similartext|number}
+ Отключить указанный метод объединения:
+ sametext - тот же текст
+ similartext - похожий текст
+ number - числа
+ Может указываться несколько раз.
+ -pro &lt;имя файла&gt;
+ Название .pro файла. Используется для файлов в формате .pro, но
+ имеющих другое расширение. Проекты будут объединены и обработаны
+ рекурсивно.
+ --source-language &lt;язык&gt;[_&lt;регион&gt;]
+ Задание/замена языка исходных строк. По умолчанию, POSIX, если не
+ указано, и файл не содержит его в своём имени.
+ --target-language &lt;язык&gt;[_&lt;регион&gt;]
+ Задание/замена языка переводов.
+ Этот язык определяется из имени файла, если этот параметр не задан
+ или язык не указан внутри файла.
+ -ts &lt;ts-файл&gt;...
+ Указание выходного файла(ов). В этом случае будет заменена
+ переменная TRANSLATIONS и обнулена CODECFORTR в указанном файле
+ проекта.
+ -codecfortr &lt;кодировка&gt;
+ Указание кодировки, применимой к tr().
+ Используется только вместе с -ts.
+ -version
+ Отобразить версию lupdate и выйти.
+ @lst-файл
+ Прочитать дополнительные имена файлов (по одному на строке) из
+ файла lst-файл.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: Codec for tr() &apos;%1&apos; disagrees with existing file&apos;s codec &apos;%2&apos;. Expect trouble.
+</source>
+ <translation>Предупреждение lupdate: Кодировка для tr() &quot;%1&quot; не совпадает с кодировкой существующего файла &quot;%2&quot;. Возможны проблемы.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: Specified target language &apos;%1&apos; disagrees with existing file&apos;s language &apos;%2&apos;. Ignoring.
+</source>
+ <translation>Предупреждение lupdate: Указанный целевой язык &quot;%1&quot; не совпадает с языком существующего файла &quot;%2&quot;. Пропускается.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: Specified source language &apos;%1&apos; disagrees with existing file&apos;s language &apos;%2&apos;. Ignoring.
+</source>
+ <translation>Предупреждение lupdate: Указанный исходный язык &quot;%1&quot; не совпадает с языком существующего файла &quot;%2&quot;. Пропускается.
+</translation>
+ </message>
+ <message>
+ <source>Updating &apos;%1&apos;...
+</source>
+ <translation>Обновление &quot;%1&quot;...
+</translation>
+ </message>
+ <message>
+ <source>Stripping non plural forms in &apos;%1&apos;...
+</source>
+ <translation>Удаление немножественных форм из &quot;%1&quot;...
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: Codec for source &apos;%1&apos; is invalid. Falling back to codec for tr().
+</source>
+ <translation>Предупреждение lupdate: Некорректная кодировка для исходника &quot;%1&quot;. Используется кодировка для tr().
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: TS files from command line will override TRANSLATIONS in %1.
+</source>
+ <translation>Предупреждение lupdate: TS файлы командной строки заменят TRANSLATIONS в %1.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: TS files from command line prevent recursing into %1.
+</source>
+ <translation>Предупреждение lupdate: TS файлы командной строки отключают рекурсию в %1.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: no TS files specified. Only diagnostics will be produced for &apos;%1&apos;.
+</source>
+ <translation>Предупреждение lupdate: TS файлы не указаны. Будет произведена только диагностика &quot;%1&quot;.
+</translation>
+ </message>
+ <message>
+ <source>The option -target-language requires a parameter.
+</source>
+ <translation>Параметр -target-language требует значение.
+</translation>
+ </message>
+ <message>
+ <source>The option -source-language requires a parameter.
+</source>
+ <translation>Параметр -source-language требует значение.
+</translation>
+ </message>
+ <message>
+ <source>The option -disable-heuristic requires a parameter.
+</source>
+ <translation>Параметр -disable-heuristic требует значение.
+</translation>
+ </message>
+ <message>
+ <source>Invalid heuristic name passed to -disable-heuristic.
+</source>
+ <translation>Неверное имя метода передано в -disable-heuristic.
+</translation>
+ </message>
+ <message>
+ <source>The option -locations requires a parameter.
+</source>
+ <translation>Параметр -locations требует значения.</translation>
+ </message>
+ <message>
+ <source>Invalid parameter passed to -locations.
+</source>
+ <translation>Неверное значение передано в -locations.
+</translation>
+ </message>
+ <message>
+ <source>The -codecfortr option should be followed by a codec name.
+</source>
+ <translation>Параметру -codecfortr требуется название кодировки.
+</translation>
+ </message>
+ <message>
+ <source>The -extensions option should be followed by an extension list.
+</source>
+ <translation>Параметру -extensions требуется список расширений.
+</translation>
+ </message>
+ <message>
+ <source>The -pro option should be followed by a filename of .pro file.
+</source>
+ <translation>Параметру -pro требуется имя .pro файла.
+</translation>
+ </message>
+ <message>
+ <source>The -I option should be followed by a path.
+</source>
+ <translation>Параметру -I требуется путь.
+</translation>
+ </message>
+ <message>
+ <source>Unrecognized option &apos;%1&apos;.
+</source>
+ <translation>Неопознанный параметр &quot;%1&quot;.
+</translation>
+ </message>
+ <message>
+ <source>lupdate error: List file &apos;%1&apos; is not readable.
+</source>
+ <translation>Ошибка lupdate: Не удалось прочитать файл списка &quot;%1&quot;.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: For some reason, &apos;%1&apos; is not writable.
+</source>
+ <translation>Предупреждение lupdate: По какой-то причине не удалось записать в &quot;%1&quot;.
+</translation>
+ </message>
+ <message>
+ <source>lupdate error: File &apos;%1&apos; has no recognized extension.
+</source>
+ <translation>Ошибка lupdate: Расширение файла &quot;%1&quot; не опознано.
+</translation>
+ </message>
+ <message>
+ <source>lupdate error: File &apos;%1&apos; does not exist.
+</source>
+ <translation>Ошибка lupdate: Файл &quot;%1&quot; не существует.
+</translation>
+ </message>
+ <message>
+ <source>Scanning directory &apos;%1&apos;...
+</source>
+ <translation>Сканирование каталога &quot;%1&quot;...
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: -target-language usually only makes sense with exactly one TS file.
+</source>
+ <translation>Предупреждение lupdate: -target-language имеет смысл для одного TS файла.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: -codecfortr has no effect without -ts.
+</source>
+ <translation>Предупреждение lupdate: -codecfortr не имеет смысла без -ts.
+</translation>
+ </message>
+ <message>
+ <source>lupdate warning: no TS files specified. Only diagnostics will be produced.
+</source>
+ <translation>Предупреждение lupdate: TS файлы не указаны. Будет произведена только диагностика.
+</translation>
+ </message>
+ <message>
+ <source>lupdate error: Both project and source files / include paths specified.
+</source>
+ <translation>Ошибка lupdate: Указаны и проект, и исходный файл / включаемые пути.
+</translation>
+ </message>
+ <message numerus="yes">
+ <source> Found %n source text(s) (%1 new and %2 already existing)
+</source>
+ <translation>
+ <numerusform> Обнаружен %n исходный текст (%1 новых и %2 уже имеющихся)
+</numerusform>
+ <numerusform> Обнаружено %n исходных текста (%1 новых и %2 уже имеющихся)
+</numerusform>
+ <numerusform> Обнаружено %n исходных текстов (%1 новых и %2 уже имеющихся)
+</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source> Removed %n obsolete entries
+</source>
+ <translation>
+ <numerusform>Удалена %n устаревшая запись
+</numerusform>
+ <numerusform>Удалены %n устаревших записи
+</numerusform>
+ <numerusform>Удалено %n устаревших записей
+</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source> Kept %n obsolete entries
+</source>
+ <translation>
+ <numerusform>Сохранена %n устаревшая запись
+</numerusform>
+ <numerusform>Сохранены %n устаревшие записи
+</numerusform>
+ <numerusform>Сохранено %n устаревших записей
+</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source> Number heuristic provided %n translation(s)
+</source>
+ <translation>
+ <numerusform> Эвристика number добавила %n перевод
+</numerusform>
+ <numerusform> Эвристика number добавила %n перевода
+</numerusform>
+ <numerusform> Эвристика number добавила %n переводов
+</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source> Same-text heuristic provided %n translation(s)
+</source>
+ <translation>
+ <numerusform> Эвристика same-text добавила %n перевод
+</numerusform>
+ <numerusform> Эвристика same-text добавила %n перевода
+</numerusform>
+ <numerusform> Эвристика same-text добавила %n переводов
+</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <source> Similar-text heuristic provided %n translation(s)
+</source>
+ <translation>
+ <numerusform> Эвристика similar-text добавила %n перевод
+</numerusform>
+ <numerusform> Эвристика similar-text добавила %n перевода
+</numerusform>
+ <numerusform> Эвристика similar-text добавила %n переводов
+</numerusform>
+ </translation>
+ </message>
+ <message>
+ <source>Illegal character</source>
+ <translation>Недопустимый символ</translation>
+ </message>
+ <message>
+ <source>Unclosed string at end of line</source>
+ <translation>Незавершенный текст в конце строки</translation>
+ </message>
+ <message>
+ <source>Illegal escape squence</source>
+ <translation>Неверная esc-последовательность</translation>
+ </message>
+ <message>
+ <source>Illegal unicode escape sequence</source>
+ <translation>Неверная esc-последовательность unicode</translation>
+ </message>
+ <message>
+ <source>Unclosed comment at end of file</source>
+ <translation>Незакрытый комментарий в конце файла</translation>
+ </message>
+ <message>
+ <source>Illegal syntax for exponential number</source>
+ <translation>Неверный синтаксис для числа в экспоненциальной форме</translation>
+ </message>
+ <message>
+ <source>Identifier cannot start with numeric literal</source>
+ <translation>Идентификатор не может начинаться с цифры</translation>
+ </message>
+ <message>
+ <source>Unterminated regular expression literal</source>
+ <translation>Незавершённый литерал регулярного выражения</translation>
+ </message>
+ <message>
+ <source>//% cannot be used with %1(). Ignoring
+</source>
+ <translation>//% не может быть использовано совместно с %1(). Пропускается
+</translation>
+ </message>
+ <message>
+ <source>%1() requires at least two arguments.
+</source>
+ <translation>для %1() требуется как минимум два параметра.
+</translation>
+ </message>
+ <message>
+ <source>%1(): both arguments must be literal strings.
+</source>
+ <translation>%1(): оба параметра должны быть строковыми литералами.
+</translation>
+ </message>
+ <message>
+ <source>%1() requires at least one argument.
+</source>
+ <translation>для %1() требуется как минимум один параметр.
+</translation>
+ </message>
+ <message>
+ <source>%1(): text to translate must be a literal string.
+</source>
+ <translation>%1(): переводимый текст должен быть строковым литералом.
+</translation>
+ </message>
+ <message>
+ <source>//= cannot be used with %1(). Ignoring
+</source>
+ <translation>//= не может быть использовано совместно с %1(). Пропускается
+</translation>
+ </message>
+ <message>
+ <source>%1(): identifier must be a literal string.
+</source>
+ <translation>%1(): идентификатор должен быть строковым литералом.
+</translation>
+ </message>
+ <message>
+ <source>Expected </source>
+ <extracomment>Beginning of the string that contains comma-separated list of expected tokens</extracomment>
+ <translation>Ожидается </translation>
+ </message>
+ <message>
+ <source>XML error: Parse error at line %1, column %2 (%3).</source>
+ <translation>Ошибка XML: Ошибка разбора в строке %1, столбце %2 (%3).</translation>
+ </message>
+ <message>
+ <source>Parse error in UI file</source>
+ <translation>Ошибка разбора UI файла</translation>
+ </message>
</context>
<context>
<name>MainWindow</name>
@@ -1289,6 +2231,13 @@ Line: %2</source>
</message>
</context>
<context>
+ <name>PhraseBook</name>
+ <message>
+ <source>Parse error at line %1, column %2 (%3).</source>
+ <translation>Ошибка разбора в строке %1, столбце %2 (%3).</translation>
+ </message>
+</context>
+<context>
<name>PhraseBookBox</name>
<message>
<source></source>
@@ -1460,6 +2409,12 @@ Line: %2</source>
<source>XLIFF localization files</source>
<translation>Файлы локализации XLIFF</translation>
</message>
+ <message>
+ <source>lupdate version %1
+</source>
+ <translation>lupdate версия %1
+</translation>
+ </message>
</context>
<context>
<name>SourceCodeView</name>
diff --git a/translations/qt_de.ts b/translations/qt_de.ts
index 3b9bbb04e0..d167434c28 100644
--- a/translations/qt_de.ts
+++ b/translations/qt_de.ts
@@ -3700,7 +3700,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
</message>
<message>
<source>&lt;h3&gt;About Qt&lt;/h3&gt;&lt;p&gt;This program uses Qt version %1.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;h3&gt;Über Qt&lt;/h3&gt;&lt;p&gt;Dieses Programm verwendet Qt Version %1.&lt;/p&gt;</translation>
</message>
<message>
<source>&lt;p&gt;Qt is a C++ toolkit for cross-platform application development.&lt;/p&gt;&lt;p&gt;Qt provides single-source portability across MS&amp;nbsp;Windows, Mac&amp;nbsp;OS&amp;nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qt for Embedded Linux and Qt for Windows CE.&lt;/p&gt;&lt;p&gt;Qt is available under three different licensing options designed to accommodate the needs of our various users.&lt;/p&gt;&lt;p&gt;Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 2.1 or GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions of the GNU LGPL version 2.1.&lt;/p&gt;&lt;p&gt;Qt licensed under the GNU General Public License version 3.0 is appropriate for the development of Qt applications where you wish to use such applications in combination with software subject to the terms of the GNU GPL version 3.0 or where you are otherwise willing to comply with the terms of the GNU GPL version 3.0.&lt;/p&gt;&lt;p&gt;Please see &lt;a href=&quot;http://qt.nokia.com/products/licensing&quot;&gt;qt.nokia.com/products/licensing&lt;/a&gt; for an overview of Qt licensing.&lt;/p&gt;&lt;p&gt;Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).&lt;/p&gt;&lt;p&gt;Qt is a Nokia product. See &lt;a href=&quot;http://qt.nokia.com/&quot;&gt;qt.nokia.com&lt;/a&gt; for more information.&lt;/p&gt;</source>
@@ -5186,7 +5186,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
</message>
<message>
<source>Find &amp;Previous</source>
- <translation>Vorhergehende Fundstelle</translation>
+ <translation>&amp;Vorhergehende Fundstelle</translation>
</message>
<message>
<source>Shift+F3</source>
diff --git a/translations/qt_ja.ts b/translations/qt_ja.ts
index 095631e13a..095631e13a 100755..100644
--- a/translations/qt_ja.ts
+++ b/translations/qt_ja.ts
diff --git a/translations/qt_ru.ts b/translations/qt_ru.ts
index 5fbd6e384a..b445c5d8d6 100644
--- a/translations/qt_ru.ts
+++ b/translations/qt_ru.ts
@@ -302,6 +302,14 @@ have libgstreamer-plugins-base installed.</source>
<translation>Ошибка открытия адреса URL</translation>
</message>
<message>
+ <source>Error opening resource</source>
+ <translation>Ошибка открытия ресурса</translation>
+ </message>
+ <message>
+ <source>Error opening source: resource not opened</source>
+ <translation>Ошибка открытия источника: ресурс не был открыт</translation>
+ </message>
+ <message>
<source>Setting volume failed</source>
<translation>Не удалось установить уровень громкости</translation>
</message>
@@ -313,6 +321,10 @@ have libgstreamer-plugins-base installed.</source>
<source>Playback complete</source>
<translation>Воспроизведение завершено</translation>
</message>
+ <message>
+ <source>Download error</source>
+ <translation>Ошибка загрузки</translation>
+ </message>
</context>
<context>
<name>Phonon::MMF::AbstractVideoPlayer</name>
@@ -421,6 +433,14 @@ have libgstreamer-plugins-base installed.</source>
<translation>Ошибка открытия источника: тип не поддерживается</translation>
</message>
<message>
+ <source>Error opening source: resource is compressed</source>
+ <translation>Ошибка открытия источника: сжатый ресурс</translation>
+ </message>
+ <message>
+ <source>Error opening source: resource not valid</source>
+ <translation>Ошибка открытия источника: некорректный ресурс</translation>
+ </message>
+ <message>
<source>Error opening source: media type could not be determined</source>
<translation>Ошибка открытия источника: не удалось определить тип медиа-данных</translation>
</message>
@@ -1360,7 +1380,7 @@ to
<name>QDeclarativeBinding</name>
<message>
<source>Binding loop detected for property &quot;%1&quot;</source>
- <translation type="unfinished">Обнаружена цикличная привязка для свойства &quot;%1&quot;</translation>
+ <translation type="unfinished">Обнаружено зацикливание привязки для свойства &quot;%1&quot;</translation>
</message>
</context>
<context>
@@ -1574,6 +1594,10 @@ to
<translation type="unfinished">Некорректное присваивание свойства: ожидается сценарий</translation>
</message>
<message>
+ <source>Cannot assign multiple values to a singular property</source>
+ <translation type="unfinished">Невозможно присвоить множество значений свойству, принимающему только одно</translation>
+ </message>
+ <message>
<source>Cannot assign object to property</source>
<translation type="unfinished">Невозможно назначить объектсвойству</translation>
</message>
@@ -1666,8 +1690,16 @@ to
<translation type="unfinished">Некорректное размещение псевдонима</translation>
</message>
<message>
+ <source>Invalid alias reference. An alias reference must be specified as &lt;id&gt;, &lt;id&gt;.&lt;property&gt; or &lt;id&gt;.&lt;value property&gt;.&lt;property&gt;</source>
+ <translation type="unfinished">Некорректная ссылка на псевдоним. Ссылка на псевдоним должна быть указана, как &lt;id&gt;, &lt;id&gt;.&lt;свойство&gt; или &lt;id&gt;.&lt;свойство значения&gt;.&lt;свойство&gt;</translation>
+ </message>
+ <message>
+ <source>Alias property exceeds alias bounds</source>
+ <translation type="unfinished">Свойство псевдонима выходит за границы</translation>
+ </message>
+ <message>
<source>Invalid alias reference. An alias reference must be specified as &lt;id&gt; or &lt;id&gt;.&lt;property&gt;</source>
- <translation type="unfinished">Некорректная ссылка на псевдоним. Ссылка на псевдоним должна быть указана, как &lt;id&gt; или &lt;id&gt;.&lt;property&gt;</translation>
+ <translation type="obsolete">Некорректная ссылка на псевдоним. Ссылка на псевдоним должна быть указана, как &lt;id&gt; или &lt;id&gt;.&lt;property&gt;</translation>
</message>
<message>
<source>Invalid alias reference. Unable to find id &quot;%1&quot;</source>
@@ -1682,29 +1714,10 @@ to
</message>
</context>
<context>
- <name>QDeclarativeCompositeTypeManager</name>
- <message>
- <source>Resource %1 unavailable</source>
- <translation>Ресурс &quot;%1&quot; недоступен</translation>
- </message>
- <message>
- <source>Namespace %1 cannot be used as a type</source>
- <translation>Пространство имён &quot;%1&quot; не может быть использовано в качестве типа</translation>
- </message>
- <message>
- <source>%1 %2</source>
- <translation>%1 %2</translation>
- </message>
- <message>
- <source>Type %1 unavailable</source>
- <translation>Тип &quot;%1&quot; недоступен</translation>
- </message>
-</context>
-<context>
<name>QDeclarativeConnections</name>
<message>
<source>Cannot assign to non-existent property &quot;%1&quot;</source>
- <translation type="unfinished">Невозможно назначить несуществующему свойству &quot;%1&quot;</translation>
+ <translation>Невозможно назначить несуществующему свойству &quot;%1&quot;</translation>
</message>
<message>
<source>Connections: nested objects not allowed</source>
@@ -1760,6 +1773,10 @@ to
<context>
<name>QDeclarativeImportDatabase</name>
<message>
+ <source>cannot load module &quot;%1&quot;: File name case mismatch for &quot;%2&quot;</source>
+ <translation type="unfinished">невозможно загрузить модуль &quot;%1&quot;: Регистр имени файла не соответствует &quot;%2&quot;</translation>
+ </message>
+ <message>
<source>module &quot;%1&quot; definition &quot;%2&quot; not readable</source>
<translation type="unfinished">невозможно прочитать определение &quot;%2&quot; модуля &quot;%1&quot;</translation>
</message>
@@ -1815,6 +1832,10 @@ to
<source>is not a type</source>
<translation>не является типом</translation>
</message>
+ <message>
+ <source>File name case mismatch for &quot;%2&quot;</source>
+ <translation type="unfinished">Регистр имени файла не соответствует &quot;%2&quot;</translation>
+ </message>
</context>
<context>
<name>QDeclarativeKeyNavigationAttached</name>
@@ -1918,7 +1939,7 @@ to
<name>QDeclarativeParser</name>
<message>
<source>Illegal unicode escape sequence</source>
- <translation type="unfinished">Неверная unicode esc-последовательность</translation>
+ <translation>Недопустимая unicode esc-последовательность</translation>
</message>
<message>
<source>Illegal character</source>
@@ -1930,7 +1951,7 @@ to
</message>
<message>
<source>Illegal escape squence</source>
- <translation type="unfinished">Неверная esc-последовательность</translation>
+ <translation>Недопустимая esc-последовательность</translation>
</message>
<message>
<source>Unclosed comment at end of file</source>
@@ -1938,7 +1959,7 @@ to
</message>
<message>
<source>Illegal syntax for exponential number</source>
- <translation type="unfinished">Недопустимый синтаксис для экспоненциального числа</translation>
+ <translation>Недопустимый синтаксис для экспоненциального числа</translation>
</message>
<message>
<source>Identifier cannot start with numeric literal</source>
@@ -1986,15 +2007,15 @@ to
</message>
<message>
<source>Reserved name &quot;Qt&quot; cannot be used as an qualifier</source>
- <translation type="unfinished">Зарезервированное имя &quot;Qt&quot; не может быть использовано в качестве спецификатора</translation>
+ <translation>Зарезервированное имя &quot;Qt&quot; не может быть использовано в качестве спецификатора</translation>
</message>
<message>
<source>Script import qualifiers must be unique.</source>
- <translation type="unfinished">Спецификаторы импорта сценария должны быть уникальными.</translation>
+ <translation>Спецификаторы импорта сценария должны быть уникальными.</translation>
</message>
<message>
<source>Script import requires a qualifier</source>
- <translation type="unfinished">Для импорта сценария требуется спецификатор</translation>
+ <translation>Для импорта сценария требуется спецификатор</translation>
</message>
<message>
<source>Library import requires a version</source>
@@ -2081,6 +2102,25 @@ to
</message>
</context>
<context>
+ <name>QDeclarativeTypeLoader</name>
+ <message>
+ <source>Script %1 unavailable</source>
+ <translation>Сценарий %1 недоступен</translation>
+ </message>
+ <message>
+ <source>Type %1 unavailable</source>
+ <translation>Тип &quot;%1&quot; недоступен</translation>
+ </message>
+ <message>
+ <source>Namespace %1 cannot be used as a type</source>
+ <translation>Пространство имён &quot;%1&quot; не может быть использовано в качестве типа</translation>
+ </message>
+ <message>
+ <source>%1 %2</source>
+ <translation>%1 %2</translation>
+ </message>
+</context>
+<context>
<name>QDeclarativeVME</name>
<message>
<source>Unable to create object of type %1</source>
@@ -3298,18 +3338,10 @@ Please verify the correct directory name was given.</source>
<context>
<name>QLibrary</name>
<message>
- <source>Could not mmap &apos;%1&apos;: %2</source>
- <translation>Не удалось выполнить mmap &quot;%1&quot;: %2</translation>
- </message>
- <message>
<source>Plugin verification data mismatch in &apos;%1&apos;</source>
<translation>Проверочная информация для модуля &quot;%1&quot; не совпадает</translation>
</message>
<message>
- <source>Could not unmap &apos;%1&apos;: %2</source>
- <translation>Не удалось выполнить unmap &quot;%1&quot;: %2</translation>
- </message>
- <message>
<source>The plugin &apos;%1&apos; uses incompatible Qt library. (%2.%3.%4) [%5]</source>
<translation>Модуль &quot;%1&quot; использует несоместимую библиотеку Qt. (%2.%3.%4) [%5]</translation>
</message>
@@ -6071,7 +6103,7 @@ Please choose a different file name.</source>
</message>
<message>
<source>Voice Dial</source>
- <extracomment>Button to trigger voice dialling</extracomment>
+ <extracomment>Button to trigger voice dialing</extracomment>
<translation type="unfinished">Голосовой вызов</translation>
</message>
<message>
@@ -8381,11 +8413,11 @@ Please choose a different file name.</source>
</message>
<message>
<source>W3C XML Schema identity constraint selector</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Переключатель ограничений типа шаблона W3C XML</translation>
</message>
<message>
<source>W3C XML Schema identity constraint field</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Поле ограничений типа шаблона W3C XML</translation>
</message>
<message>
<source>A construct was encountered which is disallowed in the current language(%1).</source>
@@ -9557,15 +9589,15 @@ Please choose a different file name.</source>
</message>
<message>
<source>Data of type %1 are not allowed to be empty.</source>
- <translation type="unfinished"></translation>
+ <translation>Данные типа %1 не могут быть пустыми.</translation>
</message>
<message>
<source>Element %1 is missing child element.</source>
- <translation type="unfinished"></translation>
+ <translation>У элемента %1 отсутствует дочерний элемент.</translation>
</message>
<message>
<source>There is one IDREF value with no corresponding ID: %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Присутствует одно значение IDREF без соответствующего ID: %1.</translation>
</message>
<message>
<source>Loaded schema file is invalid.</source>
@@ -9593,7 +9625,7 @@ Please choose a different file name.</source>
</message>
<message>
<source>Specified type %1 is not known to the schema.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Указанный тип %1 шаблону не известен.</translation>
</message>
<message>
<source>Element %1 is not defined in this scope.</source>
@@ -9601,15 +9633,15 @@ Please choose a different file name.</source>
</message>
<message>
<source>Declaration for element %1 does not exist.</source>
- <translation type="unfinished"></translation>
+ <translation>Отсутствует объявление элемента %1.</translation>
</message>
<message>
<source>Element %1 contains invalid content.</source>
- <translation type="unfinished"></translation>
+ <translation>В элементе %1 находится неверное содержимое.</translation>
</message>
<message>
<source>Element %1 is declared as abstract.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 объявлен абстрактным.</translation>
</message>
<message>
<source>Element %1 is not nillable.</source>
@@ -9617,7 +9649,7 @@ Please choose a different file name.</source>
</message>
<message>
<source>Attribute %1 contains invalid data: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Атрибут %1 содержит неверные данные: %2</translation>
</message>
<message>
<source>Element contains content although it is nillable.</source>
@@ -9625,7 +9657,7 @@ Please choose a different file name.</source>
</message>
<message>
<source>Fixed value constraint not allowed if element is nillable.</source>
- <translation type="unfinished"></translation>
+ <translation>Для обнуляемых элементов недопустимо ограничение фиксированным значением.</translation>
</message>
<message>
<source>Element %1 cannot contain other elements, as it has a fixed content.</source>
@@ -9633,75 +9665,75 @@ Please choose a different file name.</source>
</message>
<message>
<source>Specified type %1 is not validly substitutable with element type %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Указанный тип %1 не может быть корректно замещён элементом типа %2.</translation>
</message>
<message>
<source>Complex type %1 is not allowed to be abstract.</source>
- <translation type="unfinished"></translation>
+ <translation>Недопустимо, чтобы сложный тип %1 был абстрактным.</translation>
</message>
<message>
<source>Element %1 contains not allowed attributes.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 содержит недопустимые атрибуты.</translation>
</message>
<message>
<source>Element %1 contains not allowed child element.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 содержит недопустимый дочерний элемент.</translation>
</message>
<message>
<source>Content of element %1 does not match its type definition: %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Содержимое элемента %1 не соответствует его определению типа: %2.</translation>
</message>
<message>
<source>Content of element %1 does not match defined value constraint.</source>
- <translation type="unfinished"></translation>
+ <translation>Содержимое элемента %1 не соответствует определённому ограничению значения.</translation>
</message>
<message>
<source>Element %1 contains not allowed child content.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Элемент %1 содержит недопустимое дочернее содержимое.</translation>
</message>
<message>
<source>Element %1 contains not allowed text content.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 содержит недопустимое текстовое содержимое.</translation>
</message>
<message>
<source>Element %1 is missing required attribute %2.</source>
- <translation type="unfinished"></translation>
+ <translation>У элемента %1 отсутствует необходимый атрибут %2.</translation>
</message>
<message>
<source>Attribute %1 does not match the attribute wildcard.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Атрибут %1 не соответствует шаблону.</translation>
</message>
<message>
<source>Declaration for attribute %1 does not exist.</source>
- <translation type="unfinished"></translation>
+ <translation>Отсутствует объявление атрибута %1.</translation>
</message>
<message>
<source>Element %1 contains two attributes of type %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 содержит два атрибута типа %2.</translation>
</message>
<message>
<source>Attribute %1 contains invalid content.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 содержит неверное содержимое.</translation>
</message>
<message>
<source>Element %1 contains unknown attribute %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Элемент %1 содержит неизвестный атрибут %2.</translation>
</message>
<message>
<source>Content of attribute %1 does not match its type definition: %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Содержимое атрибута %1 не соответствует его определению типа: %2.</translation>
</message>
<message>
<source>Content of attribute %1 does not match defined value constraint.</source>
- <translation type="unfinished"></translation>
+ <translation>Содержимое атрибута %1 не соответствует определённому ограничению значения.</translation>
</message>
<message>
<source>Non-unique value found for constraint %1.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Обнаружено неуникальное значение для ограничения %1.</translation>
</message>
<message>
<source>Key constraint %1 contains absent fields.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Ограничение на ключ %1 содержит недостающие поля.</translation>
</message>
<message>
<source>Key constraint %1 contains references nillable element %2.</source>
@@ -9717,7 +9749,7 @@ Please choose a different file name.</source>
</message>
<message>
<source>Field %1 has no simple type.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Поле %1 имеет не простой тип.</translation>
</message>
<message>
<source>ID value &apos;%1&apos; is not unique.</source>
diff --git a/translations/qt_zh_CN.ts b/translations/qt_zh_CN.ts
index df23f435a1..6fe8c60e7b 100644
--- a/translations/qt_zh_CN.ts
+++ b/translations/qt_zh_CN.ts
@@ -921,7 +921,7 @@ to
<message>
<location line="-8"/>
<source>&amp;Select All</source>
- <translation>选择关部(&amp;S)</translation>
+ <translation>选择全部(&amp;S)</translation>
</message>
</context>
<context>
diff --git a/translations/qtconfig_ru.ts b/translations/qtconfig_ru.ts
index 7137d21db6..ea1671f2e4 100644
--- a/translations/qtconfig_ru.ts
+++ b/translations/qtconfig_ru.ts
@@ -4,6 +4,26 @@
<context>
<name>MainWindow</name>
<message>
+ <source>&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Appearance&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;Use this tab to customize the appearance of your Qt applications.&lt;/p&gt;&lt;p&gt;You can select the default GUI Style from the drop down list and customize the colors.&lt;/p&gt;&lt;p&gt;Any GUI Style plugins in your plugin path will automatically be added to the list of built-in Qt styles. (See the Library Paths tab for information on adding new plugin paths.)&lt;/p&gt;&lt;p&gt;When you choose 3-D Effects and Window Background colors, the Qt Configuration program will automatically generate a palette for you. To customize colors further, press the Tune Palette button to open the advanced palette editor.&lt;p&gt;The Preview Window shows what the selected Style and colors look like.</source>
+ <translation type="unfinished">&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Внешний вид&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;На этой вкладке можно настроить внешний вид приложений Qt.&lt;/p&gt;&lt;p&gt;Позволяет выбрать стиль интерфейса по умолчанию из выпадающего списка и настроить используемые стилем цвета.&lt;/p&gt;&lt;p&gt;Каждый стиль интерфейса, содержащийся в модулях, найденных в путях к модулям, автоматически добавляется в список встроенных стилей Qt (на вкладке Пути к библиотекам имеется более подробная информация о добавлении путей к модулям).&lt;/p&gt;&lt;p&gt;При выборе эффектов 3D и фоновых цветов окна программа настройки Qt автоматически создаст подходящую палитру. Для дальнейшей настройки цветов следует зайти в расширенный редактор палитры, нажав кнопку Настроить палитру.&lt;p&gt;В окне предпросмотра можно увидеть как будет выглядеть интерфейс с выбранными стилем и цветами.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Fonts&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;Use this tab to select the default font for your Qt applications. The selected font is shown (initially as &apos;Sample Text&apos;) in the line edit below the Family, Style and Point Size drop down lists.&lt;/p&gt;&lt;p&gt;Qt has a powerful font substitution feature that allows you to specify a list of substitute fonts. Substitute fonts are used when a font cannot be loaded, or if the specified font doesn&apos;t have a particular character.&lt;p&gt;For example, if you select the font Lucida, which doesn&apos;t have Korean characters, but need to show some Korean text using the Mincho font family you can do so by adding Mincho to the list. Once Mincho is added, any Korean characters that are not found in the Lucida font will be taken from the Mincho font. Because the font substitutions are lists, you can also select multiple families, such as Song Ti (for use with Chinese text).</source>
+ <translation type="unfinished">&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Шрифты&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;На этой вкладке можно выбрать шрифт по умолчанию для приложений Qt. Выбранный шрифт отображается в строке редактирования ниже выпадающих списков &quot;Шрифт&quot;, &quot;Начертание&quot; и &quot;Размер&quot; (по умолчанию это текст &quot;Текст для примера (Sample Text)&quot;).&lt;/p&gt;&lt;p&gt;Qt обладает мощным механизмом подмены шрифтов, который позволяет задавать список подставляемых шрифтов. Подставляемые шрифты используются, когда шрифт не удаётся загрузить или в нём отсутствуют необходимые символы.&lt;p&gt;Например, если требуется, чтобы при выборе шрифта Lucida, в котором отсутствуют корейские иероглифы, для отображения корейского текста использовался шрифт Mincho,то можно добавить его в список. После этого все корейские символы, отсутствующие в шрифте Lucida, будут браться из шрифта Mincho. Так как для замены используется список, то можно добавлять несколько шрифтов, например, можно также добавить шрифт Song Ti для отображения китайского текста.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Interface&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;Use this tab to customize the feel of your Qt applications.&lt;/p&gt;&lt;p&gt;If the Resolve Symlinks checkbox is checked Qt will follow symlinks when handling URLs. For example, in the file dialog, if this setting is turned on and /usr/tmp is a symlink to /var/tmp, entering the /usr/tmp directory will cause the file dialog to change to /var/tmp. With this setting turned off, symlinks are not resolved or followed.&lt;/p&gt;&lt;p&gt;The Global Strut setting is useful for people who require a minimum size for all widgets (e.g. when using a touch panel or for users who are visually impaired). Leaving the Global Strut width and height at 0 will disable the Global Strut feature&lt;/p&gt;&lt;p&gt;XIM (Extended Input Methods) are used for entering characters in languages that have large character sets, for example, Chinese and Japanese.</source>
+ <translation type="unfinished">&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Интерфейс&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;На этой вкладке можно настроить поведение приложений Qt.&lt;/p&gt;&lt;p&gt;Если включено &quot;Разрешать символьные ссылки&quot;, Qt будет следовать по символьным ссылкам при обработке путей URL. Например, если эта функция включена и /usr/tmp является символьной ссылкой на /var/tmp, то в диалоге выбора файла при вводе пути к каталогу /usr/tmp он будет изменён на /var/tmp.&lt;/p&gt;&lt;p&gt;Функция &quot;Минимальные размеры&quot; предназначены для тех, кому необходимо чтобы элементы интерфейса были не менее заданного размера (например, при использовании сенсорной панели или для людей с проблемами зрения). Если задать 0 в полях &quot;минимальная ширина&quot; и &quot;минимальная высота&quot;, то данная функция будет отключена.&lt;/p&gt;&lt;p&gt;Метод ввода XIM (расширенные методы ввода) используется для ввода символов на языках с большим набором символов (например, китайском или японском).</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Printer&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;Use this tab to configure the way Qt generates output for the printer.You can specify if Qt should try to embed fonts into its generated output.If you enable font embedding, the resulting postscript will be more portable and will more accurately reflect the visual output on the screen; however the resulting postscript file size will be bigger.&lt;p&gt;When using font embedding you can select additional directories where Qt should search for embeddable font files. By default, the X server font path is used.</source>
+ <translation type="unfinished">&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Принтер&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;На этой вкладке можно настроить способ, которым Qt будет подготавливать данные для печати. Можно указать следует ли встраивать шрифты - в этом случае напечатанные документы будут более похожи на те, что на экране, но при этом увеличится объём данных, передаваемых на печатающее устройство.&lt;p&gt;При использовании встраивания шрифтов можно указать дополнительные каталоги, в которых Qt будет искать файлы шрифтов для встраивания. По умолчанию используется путь к шрифтам X сервера.</translation>
+ </message>
+ <message>
+ <source>&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Phonon&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;Use this tab to configure the Phonon GStreamer multimedia backend. &lt;p&gt;It is reccommended to leave all settings on &quot;Auto&quot; to let Phonon determine your settings automatically.</source>
+ <translation type="unfinished">&lt;p&gt;&lt;b&gt;&lt;font size+=2&gt;Phonon&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;На этой вкладке можно настроить мультимедийную подсистему Phonon GStreamer.&lt;p&gt;Рекомендуется оставить значение &quot;Автоматически&quot; для всех настроек, чтобы Phonon определил параметры самостоятельно.</translation>
+ </message>
+ <message>
<source>Desktop Settings (Default)</source>
<translation>Настройки рабочего стола (по умолчанию)</translation>
</message>
@@ -236,7 +256,7 @@
</message>
<message>
<source>Feel Settings</source>
- <translation type="unfinished">Настройка указателя</translation>
+ <translation type="unfinished">Настройки поведения</translation>
</message>
<message>
<source> ms</source>
@@ -260,7 +280,7 @@
</message>
<message>
<source>Wheel &amp;Scroll Lines:</source>
- <translation type="unfinished">&amp;Прокручивать строк при повороте колёсика:</translation>
+ <translation>&amp;Прокручивать строк при повороте колёсика:</translation>
</message>
<message>
<source>Resolve symlinks in URLs</source>
@@ -268,7 +288,7 @@
</message>
<message>
<source>GUI Effects</source>
- <translation type="unfinished">Эффекты пользовательского интерфейса</translation>
+ <translation>Эффекты интерфейса</translation>
</message>
<message>
<source>&amp;Enable</source>
@@ -284,15 +304,15 @@
</message>
<message>
<source>C&amp;omboBox Effect:</source>
- <translation type="unfinished">Эффект &amp;выпадающего списка:</translation>
+ <translation>Эффект &amp;выпадающего списка:</translation>
</message>
<message>
<source>&amp;ToolTip Effect:</source>
- <translation type="unfinished">Эффект &amp;подсказки:</translation>
+ <translation>Эффект &amp;подсказки:</translation>
</message>
<message>
<source>Tool&amp;Box Effect:</source>
- <translation type="unfinished">Эффект панели &amp;инструментов:</translation>
+ <translation>Эффект панели &amp;инструментов:</translation>
</message>
<message>
<source>Disable</source>
@@ -308,7 +328,7 @@
</message>
<message>
<source>Global Strut</source>
- <translation type="unfinished">Минимальные размеры</translation>
+ <translation>Минимальные размеры</translation>
</message>
<message>
<source>Minimum &amp;Width:</source>
@@ -519,59 +539,59 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Build inactive palette from active</source>
- <translation type="unfinished">Создать неактивную палитру из активной</translation>
+ <translation>Создать неактивную палитру из активной</translation>
</message>
<message>
<source>Build disabled palette from active</source>
- <translation type="unfinished">Создать выключенную палитру из активной</translation>
+ <translation>Создать выключенную палитру из активной</translation>
</message>
<message>
<source>Central color &amp;roles</source>
- <translation type="unfinished">Роли &amp;цветов</translation>
+ <translation>Основные роли &amp;цветов</translation>
</message>
<message>
<source>Choose central color role</source>
- <translation type="unfinished">Выберите роль цвета</translation>
+ <translation>Выберите основную роль цвета</translation>
</message>
<message>
<source>&lt;b&gt;Select a color role.&lt;/b&gt;&lt;p&gt;Available central roles are: &lt;ul&gt; &lt;li&gt;Window - general background color.&lt;/li&gt; &lt;li&gt;WindowText - general foreground color. &lt;/li&gt; &lt;li&gt;Base - used as background color for e.g. text entry widgets, usually white or another light color. &lt;/li&gt; &lt;li&gt;Text - the foreground color used with Base. Usually this is the same as WindowText, in what case it must provide good contrast both with Window and Base. &lt;/li&gt; &lt;li&gt;Button - general button background color, where buttons need a background different from Window, as in the Macintosh style. &lt;/li&gt; &lt;li&gt;ButtonText - a foreground color used with the Button color. &lt;/li&gt; &lt;li&gt;Highlight - a color to indicate a selected or highlighted item. &lt;/li&gt; &lt;li&gt;HighlightedText - a text color that contrasts to Highlight. &lt;/li&gt; &lt;li&gt;BrightText - a text color that is very different from WindowText and contrasts well with e.g. black. &lt;/li&gt; &lt;/ul&gt; &lt;/p&gt;</source>
- <translation type="unfinished">&lt;b&gt;Выбор роли цвета.&lt;/b&gt;&lt;p&gt;Доступны следующие роли: &lt;ul&gt;&lt;li&gt;Window - основной цвет фона.&lt;/li&gt; &lt;li&gt;WindowText - основной цвет текста.&lt;/li&gt; &lt;li&gt;Base - используется в качестве фона для, например, виджетов с текстовыми полями, обычно, белый или другой светлый цвет.&lt;/li&gt; &lt;li&gt;Text - цвет текста используемый совместно с Base. Обычно, он совпадает с WindowText, так как в этом случае получается максимальный контраст и с Window, и с Base.&lt;/li&gt; &lt;li&gt;Button - основной цвет фона кнопки, которой требуется цвет отличный от Window, например, в стиле Macintosh.&lt;/li&gt; &lt;li&gt;ButtonText - цвет текста используемый совместно с Button.&lt;/li&gt; &lt;li&gt;Highlight - цвет для обозначения выбранного или выделенного элемента.&lt;/li&gt; &lt;li&gt;HighlightedText - цвет текста контрастирующий с Highlight.&lt;/li&gt; &lt;li&gt;BrightText - цвет текста, который отличается от WindowText и хорошо контрастирует с черным.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;</translation>
+ <translation>&lt;b&gt;Выбор роли цвета.&lt;/b&gt;&lt;p&gt;Доступны следующие роли: &lt;ul&gt;&lt;li&gt;&lt;b&gt;Окно&lt;/b&gt; - основной цвет фона.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Текст окна&lt;/b&gt; - основной цвет текста.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Фон&lt;/b&gt; - используется в качестве фона для, например, виджетов с текстовыми полями, обычно, белый или другой светлый цвет.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Текст&lt;/b&gt; - цвет текста используемый совместно с &lt;b&gt;Фон&lt;/b&gt;. Обычно, он совпадает с &lt;b&gt;Текст окна&lt;/b&gt;, так как в этом случае получается максимальный контраст и с &lt;b&gt;Окно&lt;/b&gt;, и с &lt;b&gt;Фон&lt;/b&gt;.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Кнопка&lt;/b&gt; - основной цвет фона кнопки, которой требуется цвет отличный от &lt;b&gt;Окно&lt;/b&gt;, например, в стиле Macintosh.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Текст кнопки&lt;/b&gt; - цвет текста используемый совместно с &lt;b&gt;Кнопка&lt;/b&gt;.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Выделение&lt;/b&gt; - цвет для обозначения выбранного или выделенного элемента.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Выделенный текст&lt;/b&gt; - цвет текста контрастирующий с &lt;b&gt;Выделение&lt;/b&gt;.&lt;/li&gt; &lt;li&gt;&lt;b&gt;Яркий текст&lt;/b&gt; - цвет текста, который отличается от &lt;b&gt;Текст окна&lt;/b&gt; и хорошо контрастирует с черным.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;</translation>
</message>
<message>
<source>Window</source>
- <translation type="unfinished"></translation>
+ <translation>Окно</translation>
</message>
<message>
<source>WindowText</source>
- <translation type="unfinished"></translation>
+ <translation>Текст окна</translation>
</message>
<message>
<source>Button</source>
- <translation type="unfinished"></translation>
+ <translation>Кнопка</translation>
</message>
<message>
<source>Base</source>
- <translation type="unfinished"></translation>
+ <translation>Фон</translation>
</message>
<message>
<source>Text</source>
- <translation type="unfinished"></translation>
+ <translation>Текст</translation>
</message>
<message>
<source>BrightText</source>
- <translation type="unfinished"></translation>
+ <translation>Светлый текст</translation>
</message>
<message>
<source>ButtonText</source>
- <translation type="unfinished"></translation>
+ <translation>Текст на кнопке</translation>
</message>
<message>
<source>Highlight</source>
- <translation type="unfinished"></translation>
+ <translation>Выделение</translation>
</message>
<message>
<source>HighlightedText</source>
- <translation type="unfinished"></translation>
+ <translation>Выделенный текст</translation>
</message>
<message>
<source>&amp;Select Color:</source>
@@ -595,39 +615,39 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Generate shadings</source>
- <translation type="unfinished">Создание полутонов</translation>
+ <translation>Создание полутонов</translation>
</message>
<message>
<source>Check to let 3D-effect colors be calculated from button-color.</source>
- <translation type="unfinished">Включите, чтобы цвета эффекта трёхмерности были получены из цвета кнопки.</translation>
+ <translation>Создать цвета эффекта трёхмерности из цвета кнопки.</translation>
</message>
<message>
<source>Choose 3D-effect color role</source>
- <translation type="unfinished">Выбор роли цвета дял эффекта трёхмерности</translation>
+ <translation>Выбор роли цвета дял эффекта трёхмерности</translation>
</message>
<message>
<source>&lt;b&gt;Select a color role.&lt;/b&gt;&lt;p&gt;Available effect roles are: &lt;ul&gt; &lt;li&gt;Light - lighter than Button color. &lt;/li&gt; &lt;li&gt;Midlight - between Button and Light. &lt;/li&gt; &lt;li&gt;Mid - between Button and Dark. &lt;/li&gt; &lt;li&gt;Dark - darker than Button. &lt;/li&gt; &lt;li&gt;Shadow - a very dark color. &lt;/li&gt; &lt;/ul&gt;</source>
- <translation>&lt;b&gt;Выбор роли цвета.&lt;/b&gt;&lt;p&gt;Доступны следующие роли: &lt;ul&gt; &lt;li&gt;Light - светлее цвета Button. &lt;/li&gt; &lt;li&gt;Midlight - среднее между Light и Button. &lt;/li&gt; &lt;li&gt;Mid - среднее между Button и Dark. &lt;/li&gt; &lt;li&gt;Dark - темнее цвета Button. &lt;/li&gt; &lt;li&gt;Shadow - очень темный цвет. &lt;/li&gt; &lt;/ul&gt;</translation>
+ <translation>&lt;b&gt;Выбор роли цвета.&lt;/b&gt;&lt;p&gt;Доступны следующие роли: &lt;ul&gt; &lt;li&gt;&lt;b&gt;Светлый&lt;/b&gt; - светлее цвета &lt;b&gt;Кнопка&lt;/b&gt;. &lt;/li&gt; &lt;li&gt;&lt;b&gt;Полусветлый&lt;/b&gt; - среднее между &lt;b&gt;Светлый&lt;/b&gt; и &lt;b&gt;Кнопка&lt;/b&gt;. &lt;/li&gt; &lt;li&gt;&lt;b&gt;Полутёмный&lt;/b&gt; - среднее между &lt;b&gt;Кнопка&lt;/b&gt; и &lt;b&gt;Тёмный&lt;/b&gt;. &lt;/li&gt; &lt;li&gt;&lt;b&gt;Тёмный&lt;/b&gt; - темнее цвета &lt;b&gt;Кнопка&lt;/b&gt;. &lt;/li&gt; &lt;li&gt;&lt;b&gt;Тень&lt;/b&gt; - очень темный цвет. &lt;/li&gt; &lt;/ul&gt;</translation>
</message>
<message>
<source>Light</source>
- <translation type="unfinished"></translation>
+ <translation>Светлый</translation>
</message>
<message>
<source>Midlight</source>
- <translation type="unfinished"></translation>
+ <translation>Полусветлый</translation>
</message>
<message>
<source>Mid</source>
- <translation type="unfinished"></translation>
+ <translation>Полутёмный</translation>
</message>
<message>
<source>Dark</source>
- <translation type="unfinished"></translation>
+ <translation>Тёмный</translation>
</message>
<message>
<source>Shadow</source>
- <translation type="unfinished"></translation>
+ <translation>Тень</translation>
</message>
<message>
<source>Select Co&amp;lor:</source>
@@ -635,7 +655,7 @@ p, li { white-space: pre-wrap; }
</message>
<message>
<source>Choose a color for the selected effect color role.</source>
- <translation type="unfinished">Выбор цвета для указанной роли.</translation>
+ <translation>Выбор цвета для указанной роли.</translation>
</message>
<message>
<source>OK</source>
diff --git a/translations/qvfb_ru.ts b/translations/qvfb_ru.ts
index a1988de994..db9ff2ae28 100644
--- a/translations/qvfb_ru.ts
+++ b/translations/qvfb_ru.ts
@@ -262,6 +262,126 @@
<context>
<name>QVFb</name>
<message>
+ <source>&amp;File</source>
+ <translation>&amp;Файл</translation>
+ </message>
+ <message>
+ <source>&amp;Configure...</source>
+ <translation>&amp;Настройки...</translation>
+ </message>
+ <message>
+ <source>&amp;Save image...</source>
+ <translation>&amp;Сохранить изображение...</translation>
+ </message>
+ <message>
+ <source>&amp;Animation...</source>
+ <translation>&amp;Анимация...</translation>
+ </message>
+ <message>
+ <source>&amp;Quit</source>
+ <translation>В&amp;ыход</translation>
+ </message>
+ <message>
+ <source>&amp;View</source>
+ <translation>&amp;Вид</translation>
+ </message>
+ <message>
+ <source>Show &amp;Cursor</source>
+ <translation>Отображать &amp;курсор</translation>
+ </message>
+ <message>
+ <source>&amp;Refresh Rate...</source>
+ <translation>&amp;Частота обновлений...</translation>
+ </message>
+ <message>
+ <source>&amp;No rotation</source>
+ <translation>&amp;Без поворота</translation>
+ </message>
+ <message>
+ <source>&amp;90° rotation</source>
+ <translation>Поворот на &amp;90°</translation>
+ </message>
+ <message>
+ <source>1&amp;80° rotation</source>
+ <translation>Поворот на 1&amp;80°</translation>
+ </message>
+ <message>
+ <source>2&amp;70° rotation</source>
+ <translation>Поворот на 2&amp;70°</translation>
+ </message>
+ <message>
+ <source>Zoom scale &amp;0.5</source>
+ <translation>Масштаб &amp;0.5</translation>
+ </message>
+ <message>
+ <source>Zoom scale 0.7&amp;5</source>
+ <translation>Масштаб 0.7&amp;5</translation>
+ </message>
+ <message>
+ <source>Zoom scale &amp;1</source>
+ <translation>Масштаб &amp;1</translation>
+ </message>
+ <message>
+ <source>Zoom scale &amp;2</source>
+ <translation>Масштаб &amp;2</translation>
+ </message>
+ <message>
+ <source>Zoom scale &amp;3</source>
+ <translation>Масштаб &amp;3</translation>
+ </message>
+ <message>
+ <source>Zoom scale &amp;4</source>
+ <translation>Масштаб &amp;4</translation>
+ </message>
+ <message>
+ <source>Zoom &amp;scale...</source>
+ <translation>&amp;Масштаб...</translation>
+ </message>
+ <message>
+ <source>&amp;Help</source>
+ <translation>&amp;Справка</translation>
+ </message>
+ <message>
+ <source>&amp;About...</source>
+ <translation>&amp;О программе...</translation>
+ </message>
+ <message>
+ <source>Save Main Screen image</source>
+ <translation>Сохранить снимок основного экрана</translation>
+ </message>
+ <message>
+ <source>snapshot.png</source>
+ <translation>снимок.png</translation>
+ </message>
+ <message>
+ <source>Portable Network Graphics (*.png)</source>
+ <translation>Portable Network Graphics (*.png)</translation>
+ </message>
+ <message>
+ <source>Save Main Screen Image</source>
+ <translation>Сохранить снимок основного экрана</translation>
+ </message>
+ <message>
+ <source>Save failed. Check that you have permission to write to the target directory.</source>
+ <translation>Не удалось сохранить. Убедитесь, что Вы имеете права на запись в целевой каталог.</translation>
+ </message>
+ <message>
+ <source>Save Second Screen image</source>
+ <translation>Сохранить снимок дополнительного экрана</translation>
+ </message>
+ <message>
+ <source>Save Second Screen Image</source>
+ <translation>Сохранить снимок дополнительного экрана</translation>
+ </message>
+ <message>
+ <source>About QVFB</source>
+ <translation>О QVFB</translation>
+ </message>
+ <message>
+ <source>&lt;h2&gt;The Qt for Embedded Linux Virtual X11 Framebuffer&lt;/h2&gt;&lt;p&gt;This application runs under Qt for X11, emulating a simple framebuffer, which the Qt for Embedded Linux server and clients can attach to just as if it was a hardware Linux framebuffer. &lt;p&gt;With the aid of this development tool, you can develop Qt for Embedded Linux applications under X11 without having to switch to a virtual console. This means you can comfortably use your other development tools such as GUI profilers and debuggers.</source>
+ <translation>&lt;h2&gt;Qt для Embedded Linux Virtual X11 Framebuffer&lt;/h2&gt;&lt;p&gt;Данное приложение работает под Qt для X11, эмулируя простой фрэймбуфер, к которому сервер и клиенты Qt для Embedded Linux могут соединяться как если бы это был аппаратный фрэймбуфер Linux. &lt;p&gt;С помощью данного инструмента Вы можете разрабатывать приложения Qt для Embedded Linux под X11 без необходимости переключаться в виртуальную консоль, что делает более удобным использование других инструментов с графическим интерфейсом - как то профайлеров и отладчиков.</translation>
+ </message>
+ <message>
<source>Browse...</source>
<translation>Обзор...</translation>
</message>
@@ -274,4 +394,23 @@
<translation>Все обложки QVFB (*.skin)</translation>
</message>
</context>
+<context>
+ <name>QVFbRateDialog</name>
+ <message>
+ <source>Target frame rate:</source>
+ <translation>Частота смены кадров:</translation>
+ </message>
+ <message>
+ <source>%1fps</source>
+ <translation>%1 к/с</translation>
+ </message>
+ <message>
+ <source>OK</source>
+ <translation>ОК</translation>
+ </message>
+ <message>
+ <source>Cancel</source>
+ <translation>Отмена</translation>
+ </message>
+</context>
</TS>
diff --git a/util/normalize/main.cpp b/util/normalize/main.cpp
index 4658b5ee07..65b8d5102c 100644
--- a/util/normalize/main.cpp
+++ b/util/normalize/main.cpp
@@ -159,7 +159,7 @@ int main(int argc, char *argv[])
printf("usage: normalize [--modify] <path>\n");
printf(" <path> can be a single file or a directory (default: look for *.cpp recursively)");
printf(" Outputs all filenames that contain non-normalized SIGNALs and SLOTs\n");
- printf(" with --modify: fix all occurences of non-normalized SIGNALs and SLOTs\n");
+ printf(" with --modify: fix all occurrences of non-normalized SIGNALs and SLOTs\n");
return 1;
}
diff --git a/util/s60pixelmetrics/pm_mapperapp.cpp b/util/s60pixelmetrics/pm_mapperapp.cpp
index a88499da29..b0c4eafcea 100644
--- a/util/s60pixelmetrics/pm_mapperapp.cpp
+++ b/util/s60pixelmetrics/pm_mapperapp.cpp
@@ -166,6 +166,7 @@ void CPixelMetricsMapperAppUi::HandleCommandL( TInt aCommand )
else
bufferPtr.Append(_L("screen."));
ShowL( *buffer, last );
+ CleanupStack::PopAndDestroy( buffer );
}
break;
case ECmdStatus:
@@ -257,7 +258,7 @@ void CPixelMetricsMapperAppUi::HandleCommandL( TInt aCommand )
bufferPtr.Append(_L("Orientation cannot be changed."));
ShowL( *buffer, last );
bufferPtr.Zero();
- delete buffer;
+ CleanupStack::PopAndDestroy( buffer );
break;
}
#endif //__SERIES60_31__
@@ -278,7 +279,7 @@ void CPixelMetricsMapperAppUi::HandleCommandL( TInt aCommand )
bufferPtr.Append(_L("Orientation changed."));
ShowL( *buffer, last );
bufferPtr.Zero();
- delete buffer;
+ CleanupStack::PopAndDestroy( buffer );
break;
}
case ECmdStartCalculations:
@@ -298,7 +299,7 @@ void CPixelMetricsMapperAppUi::HandleCommandL( TInt aCommand )
TInt height = screenRect.Height();
TInt width = screenRect.Width();
TBuf16<32> tgt;
- // HEIGTH
+ // HEIGHT
tgt.Append(_L("height: \t"));
tgt.AppendNum(height, EDecimal); // put max height into text file
ShowL( tgt, last );
@@ -787,11 +788,14 @@ void CPixelMetricsMapperAppUi::CreateHeaderFileL() const
CleanupStack::PopAndDestroy(); //sourceFile
}
- bufferLayoutHdr = bufferLayoutHdr.Left(bufferLayoutHdr.Length()-2);
- bufferPMData = bufferPMData.Left(bufferPMData.Length()-2);
- textFile.Write(bufferLayoutHdr);
- textFile.Write(KCRLF);
- textFile.Write(bufferPMData);
+ if (fileCount > 0)
+ {
+ bufferLayoutHdr = bufferLayoutHdr.Left(bufferLayoutHdr.Length()-2);
+ bufferPMData = bufferPMData.Left(bufferPMData.Length()-2);
+ textFile.Write(bufferLayoutHdr);
+ textFile.Write(KCRLF);
+ textFile.Write(bufferPMData);
+ }
delete dirList;
CleanupStack::PopAndDestroy(); //file